Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка по Turbo Pascal.doc
Скачиваний:
24
Добавлен:
21.04.2015
Размер:
347.65 Кб
Скачать

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

Условный оператор позволяет выполнить один из входящих в его состав

операторов в зависимости от выполнения какого либо условия.

3.3.4.1. Оператор if

Оператор IF определяет, что тот или иной оператор должен выполняться лишь в том случае, если справедливо заданное условие /то есть соответствующее булевское выражение принимает значение true /истина/.

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

Некоторую двусмысленность, возникающую при интерпретации синтаксических конструкций, следующего вида:

if expr1 then

if expr2 then

smit1

else

smit2;,

где expr - выржение, smit –оператор,

можно устранить, оформив данную конструкцию следующим образом:

if expr1 then

begin

if expr2 then

smit

else

smit2

end.

Предложение else оператора if-относится обычно к последнему оператору if, у которого нет предложения else.

Пример использования оператора IF. Определить наибольшее значение из переменных a, b, c:

if a>b then if a>c then max := a

else max := c

else if c>b then max := c

else max := b;

3.3.4.2. Оператор выбора /Case/

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

Case <индекс выбора> of

метки 1: Si;

- - - - - - - - -

метки n: Sn;

end;,

где Case (выбор), of (из), end – служебное слово оператора;

индекс выбора – выражение любого скалярного типа, кроме вещественного;

S – простой или составной исполнимый оператор;

i – список значений индекса выбора.

Метка выбора не описывается в разделе описания. На нее нельзя ссылаться в операторе goto.

Оператор выбора выбирает для исполнения тот оператор Si, одна из меток которого равна текущему значению индекса выбора.

Пример. Определить значение У в зависимости от значения текущей переменной К:

Sin(x), при К = 1, 8

У = Cos(x), при К = 3

Ln(x), при К = 4, 6

Фрагмент программы принимает вид

Case K of 1, 8 : y:=sin(x);

3 : y:=cos(x);

4, 6 : y:=ln(x);

end;

Тип индекса выбора и тип меток должны быть одинаковыми.

3.3.4.3. Операторы повтора for, while и repeat

Операторы повтора указывают на то, что определенную группу операторов следует выполнить несколько раз. Если количество повторных выполнений заданной группы операторов известно заранее, то в такой ситуации вполне подходит оператор FOR.

Если количество повторов неизвестно, то следует использовать операторы while или repeat.

Оператор For

Оператор for указывает на то, что составной оператор следует выполнять повторно до тех пор, пока не будут перебраны все значения управляющей переменой, задаваемые прогрессией. Прогрессия может быть возрастающей: to или убывающей: downto. Вычисления проводятся до тех пор, пока управляющая не примет конечное значение /задаваемое в операторе/.

Управляющая переменная, начальное и конечное значение должны быть одного и того же типа. Допускаются все простые типы, то есть все скалярные типы, за исключением вещественного.

Примеры:

for i := i1 to i2 do S; цикл может не выполняться, если i1>i2

for i := i1 dowto i2 do S; цикл может не выполняться, если i1<i2.

Пример. Вычислить сумму элементов вектора Х.

Program summa;

Var S: Real;

i, n: Integer;

x: array[1..100] of real;

begin

write(‘n=’); readln(n);

for i:=1 to n do begin

write (‘x[‘,i:2, ‘]=’);

readln (x[i]); end;

S:=0.0;

for i:=1 to n do S:=S+x[i];

writeln (‘сумма=’, S);

End.

Заметим, что составной оператор, повторно выполняемый при помощи оператора for, не должен содержать операторов, присваивающих значения управляющей переменной. Если необходимо завершить повторное выполнение составного оператора прежде, чем управляющая переменная примет конечное значение, то можно воспользоваться оператором goto. В таких случаях лучше воспользоваться оператором while или repeat.

После завершения выполнения операторов for значение управляющей переменной равно конечному значению, если же это не так, то значит цикл не был выполнен вообще. В этих случаях никакие значения управляющей переменной вообще не присваивались.