then <оператор 1> else <оператор 2>;if <условие> then <оператор>; если <условие> то <оператор 1> иначе <оператор 2>;если <условие> то <оператор>; Оператор условий if выполняется следующим образом. Сначала вычисляется выражение, записанное в условии. В результате его вычисления получается значение логического типа. В первом случае, если значение выражения есть истина, выполняется <оператор 1>, указанный после слова then (то). Если результат вычисления выражения в условии есть ложь, выполняется <оператор 2>. Во втором – если результат выражения есть истина, выполняется <оператор>, если ложь –оператор, следующий сразу за оператором if. Операторы if могут быть вложенными.Пример фрагмента программы с оператором условия if: Read (N) ;if N<>0 then begin F:=1 / N ; Writeln(' Значение функции 1 / N = ', F:0:2) ;end;else Writeln(' Деление на ноль невозможно! ') ;В данном примере с клавиатуры вводится действительное число. Затем проверяется условие N<>0, (знак «<>» обозначает не равно). Если оно выполняется, производится вычисление числа, обратного данному и вывод полученного числа на экран с округлением до двух знаков после запятой. Если условие не выполняется, то выводится соответствующее сообщение. Примечание:При использовании вложенных условных операторов может возникнуть синтаксическая неоднозначность, иллюстрируемая следующей схемой:if <условие 1> then if< условие 2> then <оператор 1>else <оператор 2> Возникающая двусмысленность, к какому опера- тору if принадлежит часть else <оператор 2>, разрешается тем, что служебное слово else всегда ассоциируется (связывается) с ближайшим по тексту служебным словом if, которое еще не связано со служебным словом else. В связи с этим следует проявлять аккуратность при записи вложенных операторов условия. Оператор выбора case Если один оператор if может обеспечить выбор из двух альтернатив, то оператор выбора case позволяет сделать выбор из произвольного числа имеющихся вариантов. Он состоит из выражения, называемого селектором (selection – выбор альтернативы), и списка параметров, каждому из которых предшествует список констант выбора (список может выглядеть из одной константы). Синтаксическая диаграмма оператора case выглядит следующим образом: else опера-тор case селек-тор of кон-станта : опера-тор end Следуя данной диаграмме, получим следующий формат записи:case <выражение-селектор> of<список 1>: <оператор 1;><список 2>: <оператор 2;>. . .<список N>: <оператор N;>else <оператор >end;Оператор case работает следующим образом. Сначала вычисляется значение выражения-селектора, затем обеспечи- вается реализация того оператора, константа выбора которого равна текущему значению селектора. Если ни одна константа не равна текущему значению селектора, выполняется опера- тор, стоящий за словом else. Если слово else отсутствует, ак-тивизируется оператор, находящийся за словом end, т.е. пер-вый оператор за границей case. Приведем типичные формы записи оператора case.Селектор интервального типа:case I of 1 .. 10: Writeln(' число ', I : 4, ' в диапазоне 1 – 10 '); 11 .. 20: Writeln(' число ', I : 4, ' в диапазоне 11 – 20 ' ); 21 .. 30: Writeln(' число ', I : 4, ' в диапазоне 21 – 30 ')else Writeln(' число ', I : 4, ' вне предела контроля ')end;Селектор целочисленного типа:case I of 1 : Z := I + 10; 2 : Z := I + 100; 3 : Z := I + 1000end; Селектор перечисляемого пользовательского типа:varSeason:(winter, spring, summer, autumn); begincase Season ofwinter: writeln('зима');spring: writeln('весна');summer: writeln('лето');autumn: writeln('осень'); end; end. Операторы повтора Если в программе возникает необходимость неоднократно выполнить некоторые операторы, то используются операторы повтора (циклы). В языке Паскаль различают три вида операторов цикла:Они используются для организации циклов различных типов. Выражение, управляющее повторением, должно иметь логический тип.Если число повторений оператора (составного опера- тора) заранее неизвестно, а задано лишь условие его повторения (или окончания), используют операторы while, repeat. Оператор for используется, если число повторений заранее известно. while repeat for Оператор while Оператор while (пока) часто называют оператором цикла с предусловием за то, что проверка условия выполнения тела цикла производится в самом начале оператора.Синтаксическая диаграмма для данного оператора выглядит следующим образом: while выражение оператор do Формат записи:while <условие продолжения повторений> do<тело цикла>Условие – логическое выражение, тело цикла – простой или составной оператор. Перед каждым выполнением тела цикла вычисляется значение выражения условия Если результат истинен, то тело цикла выполняется и снова вычисляется выражение условия. Если результат ложен, происходят выход из цикла и переход к первому после while оператору.Приведем программу, демонстрирующую работу цикла while. Вычисление факториала введенного числа. var n, i : integer; fn : longint;beginwriteln ('Введите натуральное число ...') ; read (n) ;fn := 1 ;while i < n do begin i := i + 1; fn := fn * i ; end;writeln ('... его факториал равен', fn : 10);end. Оператор повтора repeat Оператор повтора repeat аналогичен оператору while, но отличается от него, во-первых, тем, что условие проверяется после очередного выполнения операторов тела цикла, а во-вторых, тем, что критерием прекращения цикла является равенство выражения истине. За это цикл repeat часто называют циклом с постусловием, или циклом “ ДО”, так как он прекращается выполняться, как только значение выражения условия, записанного, после слова until становится истина.Оператор условия repeat состоит из заголовка repeat, тела цикла и условия окончания until.Синтаксическая диаграмма для данного оператора выглядит следующим образом: Формат записи:repeat <оператор;> . . . <оператор;>until <условие окончания цикла> ;Операторы, заключенные между словами repeat и until, являются телом цикла. Вначале выполняется тело цикла, за- тем проверяется условие выхода из цикла. Именно по этому цикл, организованный с помощью оператора repeat, в любом случае выполнится хотя бы один раз. Если результат логичес- кого выражения ложен, то тело цикла повторяется еще раз; если результат истина, происходит выход из цикла. repeat оператор выражение until ; При программировании операторов тела циклов следует обеспечить влияние по крайней мере одного из операторов тела цикла на значение условия, иначе цикл будет выполнятся беско- нечно.Примером действия оператора repeat служит следующая программа, суммирующая числа, вводимые с клавиатуры, если пользователь ввел 0, то выводится сумма.var x,sum : integer ;beginsum:=0;repeatwrite ('Значение Х=') ;readln (x) ;if x < > 0 then sum := sum + x ;until x = 0;writeln('Сумма введенных чисел = ', sum);end. Оператор повтора for В случаях, когда число повторений может быть зара- нее известно, для организации циклической обработки ин- формации применяется оператор повтора for. Часто этот оператор называют оператором цикла с параметром, так как число повторений задается переменной, называемой пара- метром цикла, или управляющей переменной.Оператор повтора for состоит из заголовка и тела цикла.Синтаксическая диаграмма для данного оператора выглядит следующим образом: for идентификаторпеременной := выражение to downto оператор do выражение Как видно из диаграммы он может быть представлен в двух формах:for <параметр цикла> :=to do <оператор> ;for <параметр цикла> := to downto <оператор> ;где S1 и S2 – выражения, определяющие соответственно на- чальное и конечное значение параметра цикла;for …do – заголовок цикла;<оператор> – тело цикла.Тело цикла может бать простым или составным опера- тором. Оператор for обеспечивает выполнение тела цикла до тех пор, пока не будут перебраны все значения параметра цик- ла от начального до конечного.Заголовок оператора повтора for определяет: диапазон изменения значений управляющей переменной (па- раметра цикла) и одновременно число повторений оператора, содержащегося в теле цикла; направление изменения значения параметра цикла (возрастание –to или убывание – downto).П Р И М Е Р:for I := 1 to 10 do Read (M[I]) ; {Чтение элементов массива}for I := 10 downto 1 do Write (M[I]) ;{Вывод элементов массива}При первом обращении к оператору for вначале вычисляют- ся выражения S1 и осуществляется присваивание <параметр цикла> := S1.После этого циклически повторяются следующие действия:1. Проверяется условие <параметр цикла>: <= S2.2. Если условие выполнено, то оператор for продолжает работу (выполняется оператор в теле цикла), если условие <параметр цикла>: <= S2 не выполнено, то оператор for завершает работу, и управление в программе передается на оператор, следующий за циклом.3. Значение управляющей переменной изменяется на +1 (to) или –1 (downto) и далее с пункта 1. Обратите внимание, что шаг изменения управляющей переменной – единица. На использование управляющей переменной (пара- метра цикла) в цикле for накладываются следующие ограни- чения.1. В качестве параметра должна использоваться простая переменная, описанная в текущем блоке.2. Управляющая переменная должна иметь дискретный тип.3. Начальное и конечное значение диапазона должны иметь тип, совместимый с типом управляющей переменной. При этом допустим любой скалярный тип, кроме вещественного.4. В теле цикла запрещается явное изменение значения уп- равляющей переменной (например, оператором присваива- ния).5. После завершения оператора значение управляющей пе- ременной становится неопределенным, если только выпол-нение оператора не было прервано оператором перехода.Приведем пример действия оператора for на примере перевода температуры из «Цельсия» (C) в «Фаренгейт» (F). По формуле F = C*1.8 + 32, на отрезке от15єC до 30єC c шагом 1єC. var I : integer; F : real ; beginwriteln (' Т Е М П Е Р Т У Р А ') ;for I := 15 to 30 dobeginF := I*1.8 + 32 ;writeln ('По Цельсию = ',I,' по Фаренгейту = ',F:5:1) ;end;end.Допускается вкладывание одного цикла в другой с соб- людением всех правил.