Программирование ветвлений на Паскале
Оператор ветвления на Паскале
В языке Паскаль имеется оператор ветвления. Другое его название - условный оператор. Формат полного оператора ветвления следующий: 
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.	Составьте программу вычисления корней квадратного уравнения по данным значениям его коэффициентов. 
  
       |