Этот и следующий выпуски будут посвящены управляющим операторам, которые почти всегда используются совместно с
условными операциями.
Для того чтобы узнать, что такое условные операции, я рекомендую дополнительно
ознакомиться вот с
этой
статьей. А
тут
рассказывается что такое алгебра логики, понимание основных
принципов которой крайне важно для изучения логических операций и понимания приципов
работы управляющих операторов.
Управляющие операторы
Управляющие операторы используются для реализации ветвления и циклов в
алгоритме программ,
а также в некоторых случаях и для реализации подпрограмм (оператор goto).
Все управляющие операторы можно разделить на три категории:
Условные операторы if, if-else и switch-case
Операторы цикла for, while и do-while
Оператор безусловного перехода goto
Условные операторы if и switch
Выражения с использованием условных операторов имеют несколько базовых синтаксических
форм. Первая из них это:
if (<условие>)
{
//-- блок из одного или более операторов
}
Если условие (выражение в круглых скобках) верно, то выполняется
заданный внутри фигурных скобок блок операторов.
Второй вариант это:
if (<условие>)
{
// блок 1, из одного или более операторов
} else
{
// блок 2, из одного или более операторов
}
Если условие истинно, выполняется блок 1, иначе блок 2. В качестве условия применяются
выражения с использованием
операций отношения,
либо логических операций,
возможно в сочетании с другими операциями.
Примеры:
#include<cstdio>
#include<cstdlib>
using namespace std;
int main(int argc, char *argv[])
{
// объявим переменные i и j, присвоив им значения 1 и 5, соответственно.
int i=1;
int j=5;
// Вариант 1
if(i>j){
// этот блок не выполнится никогда,
// тк 1>5 ложное высказывание (выражение)
printf("1>5 о_О\n");
}
if(i<j){
// будет выполняться этот блок заместо предыдущего
// тк выражение 1<5 истинно
printf("1<5 Ok!\n");
}
// Вариант 2 почти тоже самое, но немного короче и понятнее
// Следует только заметить, что оператор else означает любой
// другой случай, те он будет выполнен также если i == j.
if(i>j){
// этот блок не выполнится никогда,
// тк 1>5 ложное высказывание (выражение)
printf("1>5 о_О\n");
}
else{
// выполняется этот блок, как альтернатива первому
// тк выражение 1<5 истинно
printf("else 1<5 Ok!\n");
}
system("PAUSE");
}
Третий вариант немного сложнее чем два предыдущих. Здесь условие может принимать
более двух значений таких как истина/ложь, в зависимости от этого может выполниться
один из нескольких блоков в данном случае a, b или с или блок по-умолчанию default.
Однобайтовая переменная символ может принимать значения от 0 до 255, соответственно
может быть использованно столько же блоков
case. Пример:
switch(<переменная-символ>){
case 'a':
// случай а
break;
case 'b':
// случай b
break;
case 'c':
// случай с
break;
default:
// случай по-умолчанию
}
Блок по-умолчанию default может отсутствовать если в нем нет необходимости, его
содержимое выполняется только тогда, когда не найдено других соответствий значению
переменной-символу в операторе switch. Оператор break прерывает
дальнейшую проверку на соответствие другим значениям case сразу после первого
совпадения, к примеру для того, чтобы не выполнялся блок default если значение
уже было найдено.
Напоследок хочется заметить, что операторы if-else и switch-case выглядят похожим
образом в самых разных языках, например в javascript используется синтаксическая
конструкция полностью соответствующая описанным конструкциям для языка Си.
Продолжение следует...
С уважением, Владимир Чистов - ведущий рассылки.
До встречи в следующем выпуске!
Если у вас возникли какие-нибудь вопросы, обязательно пишите мне или заходите на сайт рассылки.