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

6

Лекция 4

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

Оператор IF в Турбо Паскале допускается в двух вариантах: полный оператор IF и укороченная форма оператора.

У

TRUE

TRUE

короченная форма

I

FALSE

F <логическое выражение> THEN <оператор>;

Полный оператор IF

I

FALSE

F <логическое выражение> THEN <оператор1> ELSE <оператор2>

Примеры:

  1. x   if x < 0 then x:=-x;

  2. y=sign(x)  if x < 0 then y:=-1 else

if x=0 then y:=0 else y:=1;

Что будет напечатано в результате выполнения следующего фрагмента программы

read(x,y);

z:=0;

if x>0 then if y>0 then z:=1 else z:=-1;

Если вводить 1) х=1,у=1; 2) х=1, у=-1; 3) х=-1, у=1.

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

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

CASE S OF

C1:<оператор1>;

C2:<оператор2>;

Cn:<операторN>;

ELSE <оператор>

END;

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

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

оператор1, оператор2,…,операторN – операторы, из которых выполняется тот, с константой которого совпадает значение выражения S;

оператор – оператор, который выполняется, если значение выражения S не совпадает ни с одной из констант C1, C2,…,Cn.

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

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

Пример.

Р

N

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

W

E

S

В качестве команд рассмотрим следующие значения FORWARD – вперед, RIGHT – направо, BACK – назад и LEFT – налево.

program polet;

type kurs=(N,E,S,W); {перечислимый тип курс}

com=( FORWARD, RIGHT, BACK, LEFT);

var

k1,k2:kurs;

b:com;

begin

read(b);

case b of

FORWARD: k2:=k1;

{движение прежним курсом}

RIGHT: if k1=W then k2:=N

else k2:=succ(k1);

BACK: if k1=S then k2:=N

else if k1=W then k2:=E

else k2:=succ(succ(k1));

LEFT: if k1=N then k2:=W

else k2:=pred(k1)

end

end.

5.2.4. Оператор цикла WHILE

Цикл – это компактная запись вычислительного процесса продолжающегося сколь угодно долго.

Оператор цикла WHILE организует выполнение одного оператора неизвестное количество раз. Выход из цикла происходит, если значение некоторого логического выражения окажется ложным. Так как истинность логического выражения проверяется в начале каждой итерации, оператор цикла может не выполниться ни разу. Структура оператора цикла имеет вид:

WHILE S DO <OPERATOR>;

Здесь S – логическое выражение, истинность которого проверяется в начале каждой итерации; OPERATOR – выполняемый оператор цикла.

Пример.

Вычислить

y:=0;

i:=n;

while i>0 do

begin

y:=sqrt(y=3*i);

i:=i-1

end;

5.2.4. Оператор цикла REPEAT

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

REPEAT

operator1;

operator2;

operatorN

UNTIL S;

В этой структуре: operator1,operator2,…,operatorN – выполняемые операторы, составляющие тело цикла; S – логическое выражение, которое проверяется в конце каждой итерации.

Пример.

Алгоритм Евклида для нахождения наибольшего общего делителя чисел m, n (m>n):

repeat

l:=m mod n;

m:=n;

n:=l

until l=0;{результат находится в m}

5.2.5. Оператор цикла FOR

Оператор цикла FOR организует выполнение одного оператора заранее известное число раз. Существует два варианта оператора:

FOR param:=start TO finish DO operator;

FOR param:=start DOWNTO finish DO operator;

Здесь:

param – параметр цикла, являющийся переменной порядкового типа;

start – выражение, определяющее начальное значение параметра цикла

finish - выражение, определяющее конечное значение параметра цикла;

operator – выполняемый оператор.

start и finish должны быть совместимы для присваивания с параметром цикла.

При выполнении оператора цикла параметр цикла сначала принимает значение выражения start, а затем при каждой очередной итерации принимает последующее (при первом варианте) или предыдущее значение (при втором варианте), вплоть до значения выражения finish.

Пример.

Вычислить s=nxn-1+(n-1)xn-2+…+2x+1;

s:=0;

p:=1;

for i:=1 to n do

begin

s:=s+p*i;

p:=p*x

end;

Или

s:=0;

for i:=n downto 1 do s:=s*x+i;{схема Горнера}

Задача.

Определить чему будет равно значение S в каждом из следующих случаев:

а) s:=0;

i:=0;

while i<5 do i:=i+1;

s:=s+1/i; ответ 0.2

b) s:=0;

i:=1;

while i>1 do

begin

s:=s+1/i;

i:=i-1;

end; ответ 0

c) s:=0;

i:=1;

repeat

s:=s+1/i;

i:=i-1

until i <=1; ответ 1.0

d) s:=1;

n:=1;

for i:=2 to n do s:=s+1/i; ответ 1.0

Кафедра информатики

Иванов Борис Алексеевич. Файл

Соседние файлы в папке Lecture_Pascal