Пример 2.4

Else

Else

Else

Var

. . . . . . . .

Begin

Var

Else

. . . . . . . .

Begin

Var

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

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

Begin

. . . . . . . .

Begin

. . . . . . . .

Begin

Составной оператор и пустой оператор

ОПЕРАТОРЫ ЯЗЫКА

С одним из наиболее часто используемых операторов языка Турбо Паскаль – оператором присваивания мы уже познакомились. Ниже рассматриваются остальные операторы языка.

 

Составной оператор – это последовательность произвольных операторов программы, заключенная в операторные скобки – зарезервированные слова begin . . . end. Составные операторы – важный инструмент Турбо Паскаля, дающий возможность писать программы по современной технологии структурного программирования (без операторов перехода GOTO).

Язык Турбо Паскаль не накладывает никаких ограничений на характер операторов, входящих в составной оператор. Среди них могут быть и другие составные операторы – Турбо Паскаль допускает произвольную глубину их вложенности:

end;

end;

end;

Фактически, весь раздел операторов, обрамленный словами begin ... end, представляет собой один составной оператор. Поскольку зарезервированное слово end является закрывающей операторной скобкой, оно одновременно указывает и конец предыдущего оператора, поэтому ставить перед ним символ «;» необязательно, и далее во всех примерах мы не будем этого делать. Наличие точки с запятой перед end в предыдущих примерах означало, что между последним оператором и операторной скобкой end располагается пустой оператор. Пустой оператор не содержит никаких действий, просто в программу добавляется лишняя точка с запятой. В основном пустой оператор используется для передачи управления в конец составного оператора.

 

Условный оператор позволяет проверить некоторое условие и в зависимости от результатов проверки выполнить то или иное действие. Таким образом, условный оператор – это средство ветвления вычислительного процесса.

Структура условного оператора имеет следующий вид:

IF <условие> THEN <оператор1> ELSE <оператор2>,

где IF, THEN, ELSE – зарезервированные слова (если, то, иначе);

<условие> – произвольное выражение логического типа;

<оператор1>, <оператор2> – любые операторы языка Турбо Паскаль.

Условный оператор работает по следующему алгоритму. Вначале вычисляется условное выражение <условие>. Если результат есть TRUE (истина), то выполняется <оператор1>, а <оператор2> пропускается; если результат есть FALSE (ложь), наоборот, <оператор1> пропускается, а выполняется <оператор2>. Например:

х, у, max: Integer;

if x > max then

у := max

y := x;

При выполнении этого фрагмента переменная Y получит значение переменной X, если только это значение не превышает МАХ, в противном случае Y станет равно МАХ.

Часть ELSE <оператор2> условного оператора может быть опущена. Тогда при значении TRUE условного выражения выполняется <оператор1>, в противном случае этот оператор пропускается:

х, у, max: Integer;

if x > max then

max := x;

у := x;

В этом примере переменная Y всегда будет иметь значение переменной X, а в МАХ запоминается максимальное значение X.

Поскольку любой из операторов <оператор1> и <оператор2> может быть любого типа, в том числе и условным, а в то же время не каждый из «вложенных» условных операторов может иметь часть ELSE <оператор2>, то возникает неоднозначность трактовки условий. Эта неоднозначность в Турбо Паскале решается следующим образом: любая встретившаяся часть ELSE соответствует ближайшей к ней «сверху» части THEN условного оператора. Например:

a,b,c,d : Integer;

begin

a := 1; b := 2; с := 3; d := 4;

if a > b then

if с < d then

if с < 0 then

с := 0

a := b; {а равно 1}

if a > b then

if с then

if с then

с := 0

else

a := b; {а равно 2}

Рассмотрим программу (пример 2.4), которая вводит произвольное десятичное целое число в диапазоне 0...15, преобразует его к шестнадцатеричному и выводит на экран полученный результат.

Program Hex;

{Программа вводит с клавиатуры целое число в диапазоне от 0 до 15, преобразует его к шестнадцатеричной системе счисления и выводит результат на экран}