3.1. Организация ветвящихся процессов: оператор if
Программа - это описание средствами языка программирования алгоритма решения задачи. Любой алгоритм можно разделить на следования, ветвления и циклы. В простейшем случае имеют место только следования.
Если имеет место проверка условий и выбор одного из возможных направлений продолжения вычислений, то имеет место ветвление (Рис.2.1).
Да Нет
Рис.3.1
Ветвления в программах осуществляются с помощью оператора условия if. Этот оператор используется в двух формах:
а) в полной форме:
if(выражение) (if - если, else - иначе)
оператор_1;
оператор_2;
Правило выполнения: если выражение в скобках (здесь некоторое условие) не равно нулю, т.е. “истина”, то выполняется оператор_1. В противном случае выполняется оператор_2.
б) в сокращенной форме:
if (выражение)
оператор_1;
Если выражение в скобках (…) не равно нулю, то выполняется оператор_1, в противном случае управление передается следующему оператору программы.
Операторы_1 и _2 могут быть как простыми, так и составными. В последнем случае группа операторов должна заключаться в фигурные скобки:
{
оператор_1;
оператор_2;
…………
оператор_n;
}.
Каждый оператор внутри скобок должен заканчиваться “;”.
Пример 3.1:
# include <conio.h>
void main ( void)
{
clrscr ();
float a, b, rez ;
printf (“Введите значение а и b: “);
scanf (“%f %f “, &a, &b);
if (b= =0)
printf (“Отношение a / b не определено \n “);
{
rez = a / b;
printf (“Отношение a / b равно %6, 3f\n”, rez);
}
getch( );
}
Еще один фрагмент:
. . . . . . . . .
if ( (ch = getch( ) )= =’g’)
puts (“Конец работы \n”);
puts (“Работа продолжается \n”);
Выражение после слова if может состоять из нескольких операций присваивания, разделяемых запятыми. Значение всего выражения будет определяться последним присваиванием. Это справедливо для любого составного выражения. Например:
if (с=сh,ch=getch( ) ).
При использовании вложенных конструкций действует правило: конструктор else всегда соответствует ближайшему слева конструктору if, не имеющему части else.
Пример 3.2:
if (x >1)
if (y= =2)
z =5;
else
z = 6;
Здесь часть else относится ко второму оператору if.
Пример3.3: Программа функции sqn(x). Она вычисляет знак введенного числа х, т.е. sgn(x) принимает значение 1, если х > 0, значение -1, если x < 0, и значение 0, если х=0.
Часто встречается необходимость использовать конструкцию if – else – if:
if (условие) оператор;
else if(условие) оператор;
else if((условие)оператор;
…..
else оператор;
В этой форме условия проверяются сверху вниз. Как только какое-либо из условий принимает значение “истинно”, выполнится оператор, следующий за этим условием., а вся остальная конструкция будет проигнорирована.
Запишем фрагмент программы примера 3.3 с использованием оператора else.