Операторы управления
Операторы управления определяют, в какой последовательности выполняется программа.
К ним относятся:
операторы выбора (условный оператор if…else , переключатель switch );
операторы циклов (c предусловием while , с постусловием do..while , итерационный for );
операторы перехода (безусловный переход goto, выход из текущей итерации continue , выход из цикла или переключателя break , возврат из функции return ).
Операторы выбора
К операторам выбора относятся условный оператор if…else , переключатель switch .
Они позволяют выбрать один из вариантов выполнения действий в зависимости от каких-либо условий.
Условие – это логическое выражение, результатом которого является значение 1 (истина) или 0 (ложь).
Условный оператор if…else
Условный оператор if…else выбирает один из двух вариантов последовательности вычислений и имеет следующий синтаксис:
If (выражение_1) выражение_2 else выражение_3
Если выражение_1 – истина, то выполняется выражение_2 , если – ложь, то – выражение_3 .
Выражение_1 должно быть скалярным. Если выражение_1 равно 0 , то условие считается ложью. Любое другое значение выражения считается истиной. Выражение_2 и выражение_3 могут быть составными операторами и блоками.
Рис.3 – Блок-схема работы условного оператора
Такие алгоритмы называются разветвлением.
Пример. Переменной а присвоить значение максимума из двух величин х и y:
if (x>y) a=x;
else a=y;
Пример. Переменным а присвоить значение максимума, b – минимума из двух величин х и y:
if (x>y){a=x; b=y;
puts(“x больше y”);}
else { a=y; b=x;
puts(“x меньше y”); }
Допустима сокращенная форма условного оператора, в котором отсутствует else оператор_3 . В этом случае, если проверяемое условие равно 0 , то никакие действия не выполняются.
Рис.4. – Блок-схема работы неполного условного оператора
Пример. Переменной abs присвоить абсолютное значение числа х
if (x<0) x=–x;
abs=x;
Выражение_2 и выражение_3 могут также быть условными. В этом случае получаем вложенные условные операторы. Причем, каждое else соответствует ближайшему if .
Пример 2.2 . Определение максимального числа из трех переменных a, b, c:
#include <stdio.h>
void main()
{int a,b,c;
puts(“Введите три числа”); //ввод трех чисел с клавиатуры
scanf(“%d %d %d”,&a,&b,&c);
if (a>b&&a>c) printf(“MAX a=%d\n”, a);
else if(b>c) printf(“MAX b=%d\n”, b);
else printf(“MAX c=%d\n”, c);
}
Пример 2.3 . Определение равных чисел из трех переменных a, b, c:
#include <stdio.h>
void main()
{int a,b,c;
puts(“Введите три числа”);
scanf(“%d %d %d”,&a,&b,&c);
if(a==b&&a==c) printf(“Все числа равны %d\n”,a);
else if(a==b) printf(“Числа 1-е и 2-е равны %d\n”,a);
else if(a==c) printf(“Числа 1-е и 3-е равны %d\n”,a);
else if(b==c) printf(“Числа 2-е и 3-е равны %d\n”,b);
else printf(“Нет равных чисел”);
}
Здесь можно иногда ошибиться:
Пример 2.4 .
#include <stdio.h>
void main()
{int x,y;
scanf(“%d %d”,&x,&y); // значение x,y может быть 0 или 1
if(x==0)
if(y==0) printf(“CO”); // если х=0, у=0 , то выведется CODA
else printf(“BO”); // если х=0, у=1 , то выведется BODA
puts(“DA”); // если х=1 , переменная у не проверяется и выведется DA
}
Но если применить фигурные скобки, то else будет относиться к внешнему if .
Пример 2.5 .
#include <stdio.h>
void main()
{int x,y;
scanf(“%d %d”,&x,&y); //значение x,y может быть 0 или 1
if(x==0)
if(y==0) printf(“CO”); // если х=0, у=0 , то выведется CODA
else printf(“BO”); // если х=1 переменная у не проверяется, выведется BODA
puts(“DA”); // если х=0, у=1 , то выведется только DA ,
}