Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Операторы (теория)

.pdf
Скачиваний:
9
Добавлен:
13.03.2016
Размер:
690 Кб
Скачать

Операторы

В разделе переменных описываем две переменных действительного типа.

Var x,y: real;

Begin

Write(‘Введите значение x’); {выводим на экран подсказку для ввода}

Readln(x);

{вводим значение x}

If x<=-1 then y:=ln(abs(x))

 

Else if x>=1 then y:=ln(x)

 

Else y:=5;

 

Writeln(‘x=’, x:8:3, ‘

y=‘, y:8:3);

Readln;

{ожидание нажатия Enter}

End

 

~ 11 ~

Операторы

3.6. Оператор варианта

Оператор варианта (casе) состоит из выражения (переключателя) и списка операторов, каждому из которых предшествует одна или более констант (они называются константами выбора) или ключевое слово else. Переключатель (селектор) должен иметь порядковый тип (размером в байт или слово). Таким образом, строковый тип и длинный целый тип являются недопустимыми типами переключателя. Все константы выбора должны быть уникальными и иметь порядковый тип, совместимый с типом переключателя. В общем виде оператор case записывается следующим образом:

case выражение of

список значений 1: оператор1;

список значений 2: оператор2;

список значений n: операторn;

else

оператор;

end;

Оператор варианта case приводит к выполнению оператора, которому предшествует константа выбора, равная значению переключателя или диапазону выбора, в котором находится значение переключателя. Если такой константы выбора или такого диапазона выбора не существует и присутствует ветвь else, то выполнится оператор, следующий за ключевым словом else. Если же ветвь else отсутствует, то никакой оператор не выполняется. Примеры оператора варианта:

~ 12 ~

Операторы

case Operator of plus: X := X+Y; minus:X := X–Y; times:X := X*Y;

end;

case I of

0, 2, 4, 6, 8: Writeln('Четная цифра'); 1, 3, 5, 7, 9: Writeln('Нечетная цифра');

10..100: Writeln('Между 10 и 100'); end;

~ 13 ~

Операторы

3.7. Цикл с предусловием

Структура while do используется для организации циклического выполнения оператора, пока выполняется некоторое условие. Синтаксис:

while <условие> do <оператор>;

Сначала вычисляется <условие>, которое должно возвращать значение булева типа. Если условие выполняется, то выполняется тело цикла, после чего опять вычисляется выражение, определяющее условие. Цикл выполняется до тех пор, пока условие не перестанет выполняться. После этого управление передается следующему за структурой while do оператору.

Так как проверка условия осуществляется перед выполнением тело цикла, то если условие сразу ложно, оператор не будет выполнен ни одного раза.

Этот оператор можно использовать для организации поиска среди множества объектов объекта, обладающего определенными свойствами. При это не исключается, что множество объектов может быть пустым.

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

Если выражение с самого начала принимает значение false, то оператор, содержащийся внутри оператора цикла с предусловием, не выполняется. Примерами операторов цикла с предусловием могут служить следующие операторы:

while I > 0 do begin

if Odd(I) then Z := Z * X;

I := I div 2;

X := Sqr(X);

end;

~ 14 ~

Операторы

while not Eof(InFile) do begin

Readln(InFile,Line);

Process(Line);

end;

while Data[I] <> X do I := I + 1;

Пример 3.7.1. Вычислить значение функции на отрезке [-3;3] с шагом 0,5

Var x,y: real;

Begin

x:=-3;

while x<=3 do begin

If (x>=-1) and (x<=1) then y:=1-sqr(x) else y:=abs(x)-1;

Writeln(‘x=’, x:8:3, ‘

y=‘, y:8:3);

x:=x+0.5;

 

end;

 

Readln;

{ожидание нажатия Enter}

End.

 

~ 15 ~

Операторы

Пример 3.7.2. Вычислим значения функции на отрезке [-9;9] с

шагом 1.

Var x,y: real;

 

Begin

 

x:=-9;

 

while x<=9 do begin

 

If x<=-1 then y:=ln(abs(x))

 

Else if x>=1 then y:=ln(x)

 

Else y:=5;

 

Writeln(‘x=’, x:8:3, ‘

y=‘, y:8:3);

x:=x+1;

 

end;

 

Readln;

{ожидание нажатия Enter}

End.

 

~ 16 ~

Операторы

3.8. Цикл с постусловием

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

repeat

<операторы>

until <условие>;

В операторе цикла с постусловием выражение, которое управляет повторным выполнением последовательности операторов, содержится внутри оператора repeat.

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

Примеры оператора цикла с постусловием:

repeat

K := I mod J;

I := J;

J := K; until J = 0;

repeat

Write('Введите значение (0..9):');

Readln(I);

until (I >= 0) and (I <= 9);

~ 17 ~

Операторы

Этот оператор можно использовать для организации поиска среди множества объектов того объекта, который обладает каким-то определенным свойством. Причем заранее должно быть известно, что множество объектов не пустое. Должен быть критерий, позволяющий проверить, не является ли текущий объект последним. Тогда тело цикла включает операторы перехода к новому объекту, а условие включает проверку, является ли объект последним или текущий объект обладает искомым свойством. Если множество проверяемых объектов может быть пустым, то следует использовать оператор while.

Пример 3.8.1. Вычислить значение функции на отрезке [-3;3] с шагом 0,5

Var x,y: real;

Begin

x:=-3; repeat

If (x>=-1) and (x<=1) then y:=1-sqr(x) else y:=abs(x)-1;

Writeln(‘x=’, x:8:3, ‘

y=‘, y:8:3);

x:=x+0.5;

 

until x>3;

 

Readln;

{ожидание нажатия Enter}

End.

 

~ 18 ~

Операторы

Пример 3.8.2. Вычислим значения функции на отрезке [-9;9] с

шагом 1.

Var x,y: real;

 

Begin

 

x:=-9;

 

repeat

 

If x<=-1 then y:=ln(abs(x))

 

Else if x>=1 then y:=ln(x)

 

Else y:=5;

 

Writeln(‘x=’, x:8:3, ‘

y=‘, y:8:3);

x:=x+1;

 

until x>9;

 

Readln;

{ожидание нажатия Enter}

End.

 

~ 19 ~

Операторы

3.9. Цикл с параметром

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

for <счетчик>:=<нач. значение> to <кон.значение> do <оператор>;

for <счетчик>:=<нач. значение> downto <кон. значение>

do <оператор>;

<счетчик> – локальная переменная порядкового типа. В начале выполнения оператора for ей присваивается <начальное значение>. После каждого очередного выполнения тела цикла ее значение увеличивается или уменьшается на единицу. Когда значение управляющей переменной достигает <конечного значения>, тело цикла выполняется последний раз,

после чего управление передается оператору, следующему за структурой for.

<начальное значение> и <конечное значение> являются выражениями,

совместимыми по типу с управляющей переменной.

Если <начальное значение> = <конечное значение>, то тело цикла выполнится один раз. Если в форме to <начальное значение> > <конечное значение> или в форме downto <начальное значение> < <конечное значение>, то тело цикла не выполнится ни разу. Внутри цикла значение счетчика цикла может использоваться в выражениях. После окончания выполнения структуры for значение управляющей переменной не определено, если только выполнение оператора for не было прервано с помощью оператора перехода.

~ 20 ~