
Операция с тремя операндами (Условная операция)
(Выражение-операнд1) ? (Выражение-операнд2) : (Выражение-операнд3)
Выполнение условной операции начинается с вычисления значения Выражения –операнда1.
Если его значение оказывается отличным от 0, то вычисляется значение Выражение –операнд2, которое и становится значением выражения.
Если значение первого операнда оказывается равным 0, то вычисляется значение третьего операнда, и тогда это значение становится значением выражения.
float y;
float x=12;
y=(x<10)? x: (x+10); // Результат y=22
1оп 2 оп 3оп
Структура множественного выбора switch
Используется для организации работы программы по одному из нескольких
направлений. Общая форма записи этого оператора имеет следующий вид:
switch (выражение) // выражение должно быть целочисленным или символьным
{
case const_1: группа_операторов_1; //соnst_1,const_2 – тот же тип, что и выражение
break;
case const_2: группа_операторов_2;
break;
.....................
case const_N: группа_операторов_N;
break;
default:
default-операторы;// не обязательно
}
Каждая последовательность операторов может состоять из одного или
нескольких операторов.
Раздел default необязателен.
Работа оператора switch заключается в сравнении элемента выражения с константами. При обнаружении совпадения выполняется соответствующая последовательность операторов
Каждая метка case действует только как метка строки и не является разграничителем между вариантами.
Оператор break завершает выполнение кода.
Если в выполняемой последовательности операторов нет оператора break, программа перейдет к выполнению операторов, относящихся к следующей директиве case.
Если не обнаружится никакое совпадение, то при наличии директивы default будет выполняться последовательность операторов, относящаяся к этой директиве. В противном случае (при отсутствии директивы default) никакие действия выполнены не будут. В следующем примере анализируется и выполняется команда меню:
switch(ch) {
case 'e': сase 'E': { enter(); break;}
case 'l': case 'L': {list(); break;}
case 's': case 'S': {sort(); break;}
case 'q': case 'Q': {exit(0); break;}
default : printf("Неизвестная команда!\n");
}
|
|
---|---|
|
|
В теле оператора switch можно использовать вложенные операторы switch, при этом в ключевых словах case можно использовать одинаковые константные выражения.
Пример:
:
switch (a)
{
case 1: b=c; break;
case 2:
switch (d)
{ case 0: f=s; break;
case 1: f=9; break;
case 2: f-=9; break;
}
case 3: b-=c; break;
}
ЦИКЛЫ
Структура повторения for
Цикл for обеспечивает циклическое повторение некоторого оператора или группы операторов заданное число раз. Это наиболее общий способ организации цикла.
Общая форма записи такова:
for (инициализация счетчика; условие; инкремент)
{
блок_операторов; //тело цикла
}
Инициализация счетчика |
Устанавливает переменную управления циклом (счётчик) равной ее начальному значению |
Условие |
Оператор отношения, сравнивающий значение переменной цикла с ее конечным значением |
Инкремент |
Инкрементирует (или декрементирует) значение переменной цикла Под инкрементом (++) понимается операция увеличения счётчика на 1. Под декрементом (--) понимается операция уменьшения счётчика на 1. |
Сначала выполняется инициализация переменной цикла
Проверяется условие продолжения цикла
Если условие истинно (ненулевое значение), то выполняется тело цикла
После завершения тела цикла выполняется изменение переменной цикла (инкремент/ декремент)
Проверяется условие продолжения цикла
…..
Если условие возвращает false (нулевое значение) – цикл прерывается и управление передается оператору, расположенному за структурой for.
Если условие дает ложное значение (0) сразу после
инициализации, тело цикла for ни разу не будет выполнено.