Лекция 3
|
 |
 |
|
Операторы языка Паскаль. Часть 2.
|
|
Оператор
цикла используется для организации многократного повторения
выполнения одних и тех же операторов. В языке Паскаль существует
три типа оператора цикла. |
|
а)
оператор цикла с предусловием |
где <условие> -
булевское выражение;
|
<оператор>
- любой оператор языка Паскаль, называемый «телом цикла». |
|
Выполнение:
вычисляется значение выражения, стоящего в условии. Если это
значение истинно, то выполняется оператор и снова происходит
возврат к вычислению значения булевского выражения. Как только
условие станет ложным, выполнение цикла завершается и
выполняется оператор, следующий за телом цикла. |
|
Оператор
цикла с предусловием может быть не выполнен ни разу в том
случае, если при первом же вычислении значения условия оно будет
ложным. |
|
Оператор,
стоящий в теле цикла, обязательно должен изменять значение
условия, иначе цикл будет выполняться бесконечное число раз. |
|
б)
оператор цикла с постусловием |
где
<условие> - булевское выражение;
|
<оператор>
- любой оператор языка Паскаль. |
|
Выполнение:
выполняется оператор, стоящий в теле цикла, затем вычисляется
значение выражения, стоящего в условии. Если это значение ложно,
то происходит переход к выполнению оператора, стоящего в теле
цикла. Как только условие станет истинным, выполнение цикла
завершается. |
|
Для
оператора цикла с постусловием справедливо замечание, сделанное
выше. |
|
Отличие
циклов с предусловием и с постусловием: |
|
ü |
при
выполнении цикла с предусловием тело цикла выполняется, если
условие истинно, а в цикле с постусловием повторение
осуществляется, если значение условия ложно; |
|
ü |
тело цикла
с постусловием обязательно будет выполнено хотя бы один раз
независимо от значения условия, тогда как тело цикла с
предусловием может быть не выполнено ни разу; |
|
ü |
если в теле
цикла с предусловием используется составной оператор, то он
заключается в операторные скобки. При использовании составного
оператора в теле цикла с постусловием роль операторных скобок
выполняют служебные слова repeat и until. |
|
в)
оператор цикла с параметром |
|
Оператор
цикла с параметром целесообразно применять тогда, когда заранее
известно количество повторений цикла. Оператор цикла с
параметром используется в двух видах: |
|
for <имя
перем.>:= <выражение 1> to <выражение 2> do |
где
<имя переменной> - идентификатор переменной целого типа, называемой
параметром цикла;
|
<выражение
1> и <выражение 2> - выражения, задающие начальное и конечное
значения параметра цикла; |
|
<оператор>
- любой оператор языка Паскаль. |
|
Для
объяснения выполнения обозначим: |
|
i – имя
переменной, z1 и z2 – выражения 1 и 2 соответственно, s –
оператор, образующий тело цикла. |
|
Выполнение:
вычисляются значения выражений z1 и z2. Если z1>z2, то
выполнение оператора цикла завершается. Если z1<=z2, то
переменной i присваивается значение z1 и выполняется оператор s.
Затем значение переменной I увеличивается на 1 и вычисляется
значение булевского выражения i<=z2. Если это значение истинно,
то вновь выполняется оператор s, берется следующее значение
параметра цикла и т.д. Выполнение оператора цикла с параметром
завершается тогда, когда станет ложным значение булевского
выражения i<=z2. |
|
for <имя
перем.>:= <выражение 1> downto <выражение 2> do |
|
В
обозначениях из предыдущего раздела оператор цикла принимает
следующий вид: |
|
for i:= z1 downto
z2 do s; |
|
В этом
случае z1>z2 и значение параметра цикла при каждом повторении
цикла не увеличивается, а уменьшается на 1. |
|
Выполнение:
вычисляются значения выражений z1 и z2. Если z1<z2, то
выполнение оператора цикла завершается. Если z1>=z2, то
переменной i присваивается значение z1 и выполняется оператор s.
Затем значение переменной i уменьшается на 1 и вычисляется
значение булевского выражения i>=z2. Если это значение истинно,
то вновь выполняется оператор s, берется следующее значение
параметра цикла и т.д. Выполнение оператора цикла с параметром
завершается тогда, когда станет ложным значение булевского
выражения i>=z2. |
|
После
завершения выполнения оператора цикла значение параметра цикла
не определено. |
|
4) |
Примеры использования структурных операторов. |
|
1. |
Вычислить
значение факториала числа. |
Program
factorial;
uses crt;
var n, i:integer; p:longint;
Begin
clrscr;
readln(n);
p:=1;
for i:=1 to n do
p:=p*i;
write(n,'! = ', p);
End.
|
2. |
Вычислить
наибольший общий делитель двух целых чисел a и b. |
Program
NOD;
uses crt;
var a,b: integer;
Begin
clrscr;
readln(a,b);
a1:=a;
b1:=b;
while a<>b do
if a>b then a:=a-b
else b:=b-a;
writeln('НОД(',a1,',',b1,')
= ',a);
readln;
End.
|
3. |
Вычислить
наименьшее из 20 целых чисел. |
Program
min_of_20;
uses crt;
var n, min, i: integer;
Begin
clrscr;
writeln('Введите первое число');
readln(n);
min:=n;
for i:=2 to 20 do
begin
writeln('Введите
',i , '-е число');
readln(n);
if n<min then min:=n
end;
writeln('min = ', min);
readln;
End.
 |