| Программирование ветвлений на ПаскалеОператор ветвления на ПаскалеВ языке Паскаль имеется оператор ветвления. Другое его название - условный оператор. Формат полного оператора ветвления следующий: if  <логическое   выражение>  then  <оператор1>else <оператор2>
 Здесь if - "если", then - "то", else - "иначе". Программирование полного и неполного ветвленияСравните запись алгоритма БИД1 из предыдущего параграфа с соответствующей программой.
 
   | алг  БИД1 вещ А, В, С
 нач ввод А, В
 если А>В
 то С:=А
 иначе С:=В
 кв
 вывод С
 кон
 | Program BID1; var А, В, С : real;
 begin readln(А, В);
 if A>B
 then C:=A
 else C:=B;
 writeln(С)
 end.
 |  Очень похоже на перевод с русского языка на английский. Обратите внимание на следующее отличие: в программе нет специального служебного слова, обозначающего конец ветвления. Здесь признаком конца оператора ветвления является точка с запятой. (Разумеется, оставлять в программе пустую строку совсем не обязательно. Здесь это сделано только  ради наглядности.) Простой формой логического выражения является операция отношения. Как и в АЯ, в Паскале допускаются все виды отношений (ниже указаны их знаки): 
   | <  (меньше); >  (больше);
 <= (меньше или равно);
 | <= (больше или равно); =  (равно);
 <> (не равно).
 |  А теперь запрограммируем на Паскале алгоритм БИД2, в котором использовано неполное ветвление. 
   | алг БИД2 вещ А, В, С
 нач ввод А, В
 С:=А
 если В > А
 то С:=B
 кв
 вывод С
 кон
 | Program BID2; var    А,   В,   С   :   real;
 begin readln(А, В);
 С:=А;
 if  B>A
 then C:=B;
 write(С)
 end.
 |  Опять все очень похоже. Ветвь else в операторе ветвления может отсутствовать. Программирование вложенных ветвленийЗапишем на Паскале программу определения большего из трех чисел, блок-схема которой показана на рис. 3.10. Структура этого алгоритма - вложенные ветвления. Алгоритм на АЯ (БИТ2) приведен в предыдущем параграфе. 
 
   |  |  
   | Рис. 3.10. Блок-схема алгоритма "БИТ" с вложенными ветвлениями |  
 
 
Program BIT2; var А,   В,   С,   D:   real;
 begin  readln(А,   В,   С);
 if A>B
 then  if A>C   then   D:=A  else   D:=B
 else  if  B>C   then  D:=B  else   D:=C;
 writeln(D)
 end.
 Обратите внимание на то, что перед else точка с запятой не ставится. Вся ветвящаяся часть структуры алгоритма заканчивается на точке с запятой после оператора D:=C. Составим программу упорядочения значений двух переменных. 
   | алг СОРТИРОВКА вещ X, Y, С
 нач ввод X, Y
 если X>Y
 то С:=Х
 X:=Y
 Y:=C
 кв
 вывод X, Y
 кон
 | Program SORTING; var X, Y, С : real;
 begin readln(X, Y) ;
 if  X>Y
 then begin С : =X;
 X:=Y;
 Y:=C
 end;
 write(X,Y)
 end.
 |  Этот пример иллюстрирует следующее правило Паскаля: если на какой-то из ветвей оператора ветвления находится несколько последовательных операторов, то их нужно записывать между служебными словами begin и end. Конструкция такого вида: begin  <Последовательность   операторов>  end называется составным оператором. Следовательно, в описанной выше общей форме ветвления <оператор1> и <опера-тор2> могут быть простыми (один) и составными операторами. Логические операцииНаконец, составим еще один, третий вариант программы определения большего числа из трех. Program BIT3; var А,В,С,D:   real;
 begin readln(А,В,С);
 if   (A>=B)   and   (A>=C) then D:=A;
 if   (B>=A)   and   (B>=C) then D:=B;
 if   (C>=A)   and   (C>=B) then D:=C;
 writeln(D)
 end.
 Нетрудно понять смысл этой программы. Здесь использованы три последовательных неполных ветвления. А условия ветвлений представляют собой сложные логические выражения, включающие логическую операцию and (И). С логическими операциями вы встречались, работая с базами данных и с электронными таблицами. Напомним, что операция and называется логическим умножением или конъюнкцией. Ее результат - "истина", если значения обоих операндов - "истина". Очевидно, что если А>=В  и А>=С, то А имеет наибольшее значение и т. д. В Паскале присутствуют все три основные логические операции:and - И (конъюнкция),
or - ИЛИ (дизъюнкция),
not - НЕ (отрицание). Сложные логические выраженияОбратите внимание на то, что отношения, связываемые логическими операциями, заключаются в скобки. Так надо делать всегда! Например, требуется определить, есть ли среди чисел А, В, С хотя бы одно отрицательное. Эту задачу решает следующий оператор ветвления: if   (A < 0)or(B < 0)or(C < 0)then write ( 'YES ')   else write( 'NO ');
 Выражение, истинное для отрицательного числа, может быть записано еще и так: not ( A >= 0) Вопросы и задания 1.	Как программируется на Паскале полное и неполное ветвление? 2.	Что такое составной оператор? В каких случаях составной оператор используется в операторе ветвления? 3.	Выполните на компьютере все программы, приведенные в данном параграфе. 4.	Составьте не менее трех вариантов программы определения наименьшего из трех данных чисел. 5.	Составьте программу сортировки по возрастанию значений в трех переменных: А, В, С. 6.	Составьте программу вычисления корней квадратного уравнения по данным значениям его коэффициентов. 
 
 |