Условные операции и конструкции
Условные операции
Для проверки проверить истинности некоторого условия в языке Си оперируют понятиями истина/верно и ложь/неверно. Причем истина соответствует значению 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.
Самостоятельная работа
Задачи
Задача 1
Напишите программу, которая сравнивает две переменных и выводит сообщение если они равны.
Задача 2
Напишите программу, которая получает от пользователя три числа. Если значение первого числа больше второго и одновременно меньше третьего, то на консоль вывести 1, в противном случае 0.
- Данные на входе: Три целых числа через пробел
- Данные на выходе: 0 или 1
Пример №1:
- Данные на входе: 4 5 10
- Данные на выходе: 1
Пример №2:
- Данные на входе: 100 49 30
- Данные на выходе: 0
Задача 3
Напишите программу, которая получает от пользователя число от 0 до 9 и выводит текстовое название числа.
- Данные на входе: Целое число
- Данные на выходе: слово
Пример №1:
- Данные на входе: 4
- Данные на выходе: четыре
Пример №2:
- Данные на входе: 1
- Данные на выходе: один