Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование.docx
Скачиваний:
6
Добавлен:
26.09.2019
Размер:
1.2 Mб
Скачать

Структурированные операторы языка паскаль.Операторы for, while, repeat.Особенности.

Структурированными являются такие операторы, которые состоят из других операторов. К ним относятся:

  • составной оператор;

  • условный оператор IF;

  • условный оператор CASE;

  • оператор цикла REPEAT;

  • оператор цикла WHILE;

  • оператор цикла FOR;

  • оператор над записями WITH.

Оператор над записями WITH будет рассмотрен в разделе 6.4, остальные - в данном разделе.

5.2.1. Составной оператор

Составной оператор представляет собой совокупность последовательно выполняемых операторов, заключенных в операторные скобки begin и end:

begin   <оператор 1>;   <оператор 2>;   . . .   <оператор N>  end;

Он может потребоваться в тех случаях, когда в соответствии с правилам! построения конструкций языка можно использовать один оператор, а выполнить нужно несколько действий. В такой составной оператор входит ряд операторов выполняющих требуемые действия.

В дальнейшем везде, где будет указываться, что можно использовать один оператор, им может быть и составной оператор.

Отдельные операторы внутри составного оператора отделяются друг от друга точкой с запятой (см. пример в п. 5.1.2, где тело цикла представляет составной оператор). Так как завершающее составной оператор слово end не является отдельным предложением, то перед ним точку с запятой можно не ставить, в противном случае компилятор будет считать, что перед словом end стоит пустой оператор.

Можно считать, что и само тело программы, т. к. оно заключено в операторные скобки begin и end, тоже является составным оператором.

5.2.2. Условный оператор if

Оператор IF реализует алгоритмическую конструкцию РАЗВИЛКА и изменяет порядок выполнения операторов в зависимости от истинности или ложности некоторого условия. Существует два варианта оператора:

if S then A   else В;            {полная развилка} и if S then А;         {укороченная развилка}

В этих операторах: S - некоторое логическое выражение, истинность которого проверяется;  А - оператор, который выполняется, если выражение S истинно; В - оператор, который выполняется, если выражение S ложно.

Так как условный оператор IF является единым предложением, ни перед then, ни перед else точку с запятой ставить нельзя. Примеры использования оператора:

if X < 0 then X := -Y; if X < 1.5 then Z := X + Y  else Z := 1.5;

Пример. Ввести целое число и вывести символ, соответствующий этому числу в кодировке ASCII, если такой символ есть, или сообщение, что такого символа нет (управляющие символы не учитываются).

program EXAMPLE5;  var X: Integer;  begin   Write('Введите целое число: ');   ReadLn(X);   if (X > 31) and (X < 256) then       WriteLn('Соответствующий символ - ', Chr(X))   else       WriteLn('Такого символа НЕТ') end.

5.2.3. Условный оператор case

С помощью этого оператора можно выбрать вариант из любого количества вариантов. Структура этого оператора в Turbo Pascal:

case S of    C1:Instruction1;     C2:Instruction2;    CN: InstructionN;  else Instruction  end;

В этой структуре:

S - выражение порядкового типа, значение которого вычисляется;

C1, C2, ..., CN - константы, с которыми сравнивается значение выражения S;

Instruction1, Instruction2, ..., InstructionN - операторы, из которых выполняется ТОТ, с константой которого совпадает значение выражения S;

Instruction - оператор, который выполняется, если значение выражения S не совпадает ни с одной из констант С1, ..., CN.

Ветвь оператора else является необязательной. Если она отсутствует и значение выражения S не совпадет ни с одной из перечисленных констант, весь оператор рассматривается как пустой. В отличие от оператора IF перед словом else точку с запятой можно ставить.

Если для нескольких констант нужно выполнять один и тот же оператор, их можно перечислить через запятую (или даже указать диапазон, если возможно), сопроводив их одним оператором.

Пример.

case I of    0, 2, 4, 6, 8: WriteLnC'Четная цифра');    1, 3, 5, 7, 9: WriteLn('Нечетная цифра');     10..100: WriteLn('Число от 10 до 100'); else    WriteLn('Отрицательное число или больше 100') end;

Пример использования оператора CASE приведен также в п. 16.3.21.