2025-04-06 06:02:00

Урок 5. Условные операции.

Для проверки проверить истинности некоторого условия в языке Си оперируют понятиями "истина"/"верно" и "ложь"/"неверно". Причем "истина" соответствует значению 1, а "ложь" - значению 0. К условным операциям относят операции сравнения и логические операции. Оба этих вида операций применяются к арифметическим операндам, то есть числам.

Операции сравнения:

  • ==перация "равно". Возвращает 1, если оба операнда равны, и 0, если они не равны)
  • !=  (Операция "не равно". Возвращает 1, если первый операнд не равен второму, и 0, если оба операнда равны)
  • >   (Операция "больше чем". Возвращает 1, если первый операнд больше второго, и 0 в противном случае)
  •   (Операция "меньше чем". Возвращает 1, если первый операнд меньше второго, и 0 в противном случае)
  • <= (Операция "меньше или равно". Возвращает 1, если первый операнд меньше или равен второму)
  • >= (Операция "больше или равно". Возвращает 1, если первый операнд больше или равен второму)

Логические операции:

  • ! (операция отрицания) Если операнд равен 0, то возвращает 1, иначе возвращает 0.
  • && (конъюнкция, логическое умножение) Возвращает 1, если оба операнда не равны 0. Возвращает 0, если хотя бы один операнд равен 0.
  • || (дизъюнкция, логическое сложение) Возвращает 1, если хотя бы один операнд не равен 0. Возвращает 0, если оба операнда равны 0.

Условные конструкции.

Условные конструкции языка Си позволяют направить выполнение программы по одному из возможных путей в зависимости от условия. Существует несколько таких конструкций.

if...else

Оператор if проверяет истинность условия 1, и если оно истинно, выполняет блок инструкций 1, в противном случае выполняется проверка условия 2 и при его истинности выполняется блок инструкций 2. Если ни одно из условий не является истинным, то выполняется блок инструкций 3.

if (условие 1)
    инструкция_1
else if (условие 2)
    инструкция_2
else 
    инструкция_3

В большинстве случаев используется сокращенная форма конструкции только с одним условием:

if (условие)
    инструкция

Пример кода:

#include <stdio.h>
int main( void )
{
    int x = 100;
    int y = 200;
    if(x > 20 && y < 300)
    {
        printf("the condition is true\n");
    }
    return 0;
}

switch...case.

Еще одной условной конструкцией, позволяющей организовать ветвление программы является switch...case. Форма ветвления выглядит следующим образом:

switch (выражение)
    case(константа 1):
      инструкция 1;
      break;
    case(константа 2):
      инструкция 2;
      break;
    default:
      инструкция 3;

После ключевого слова switch в скобках идет сравниваемое выражение. Значение этого выражения последовательно сравнивается со значениями после операторов сase. Если значения совпадают, то будет выполняться данный блок сase.

В качестве констант после оператора case могут выступать значения типов char, int и unsigned. Проверим с помощью данной конструкции значение некоторого числа:

#include <stdio.h>
 
int main(void)
{
    int x = 2;
     
    switch(x)
    {
        case 1:
            printf("x = 1 \n");
            break;
        case 2:
            printf("x = 2 \n");
            break;
        case 3:
            printf("x = 3 \n");
            break;
    }
    return 0;
}

При определении блоков case следует не забывать про добавление операторов break.Если блок не завершается оператором break будут выполняться все последующие блоки case до первого оператора break или до конца всей конструкции switch

Тернарный оператор.

Сократить запись простейших условных конструкций if можно при помощи тернарного оператора ?: Запись этого оператора имеет следующую форму:

[первый операнд - условие] ? [второй операнд] : [третий операнд]

Оператор использует сразу три операнда. Если условие равно 1 (то есть истинно), то возвращается второй операнд; если условие равно 0 (то есть ложно), то третий. Например:

#include <stdio.h>
main( void ) {
    int x=5;
    int y=2;
    int z = x > y ? x-y : x+y;
    printf("z = %d", z)
    return 0;
}

Поскольку в данном случае условие x < y истинно (то есть x больше чем y), то будет выполняться вычитание x - y, и переменная z получит его результат - число 3.

Комментарии ()