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

3. Операторы цикла.

Цикл - это повторяющаяся последовательность операторов. Операторы, которые выполняются в ходе цикла, называются телом цикла. В Pascal имеется три типа циклов: while –цикл с предусловием, repeat – цикл с постусловием, for- цикл с параметром. Все операторы цикла могут быть вложенными.

3.1. Цикл While.

Оператор while организует выполнение оператора или группы операторов неизвестное заранее число раз. Выход из цикла осуществляется, если условие завершения цикла окажется ложным. Формат оператора:

WHILE_условие_DO_тело цикла;

Условие – булевское выражение, тело цикла – простой или составной оператор. Перед каждым выполнением тела цикла вычисляется условие, если условие выполняется, то тело цикла выполняется и снова вычисляется значение условия. Если условие не выполняется, то происходит выход из цикла и переход к первому после WHILE оператору. В этом операторе цикла программист сам должен заботиться об изменении переменных, определяющих выход из цикла. Если необходимо выполнить более одного оператора после ключевого слова do, то надо записать составной оператор begin ... end. Блок-схема рассмотренного оператора показана на рис. 3.1.

Рис. 3.1. Блок-схема цикла WHILE.

3.2. Цикл Repeat.

Оператор repeat имеет следующие характерные особенности: тело цикла выполняется, по крайней мере, один раз. Формат оператора:

REPEAT

тело цикла;

UNTIL_условие;

Условие – выражение булевского типа, при его написании допустимы булевские операции и операции отношения. Тело цикла – простой или составной оператор. Вначале выполняется тело цикла, затем проверяется условие выхода из цикла. Если условие не выполняется, то операторы тела цикла выполняются еще раз, если выполняется – происходит выход из цикла (см рис. 3.2).

Рис. 3.2. Блок-схема цикла Repeat.

3.3. Цикл for.

Оператор повтора FOR может иметь два формата:

1. FOR_параметр-цикла:=S1_TO_S2_DO_оператор;

2.FOR_параметр-цикла:=S1_DOWNTO_S2_DO_оператор;

где S1 и S2 – выражения, определяющие начальное и конечное значение параметра цикла. FOR…DO – заголовок цикла, оператор – тело цикла. Тело цикла может быть простым или составным оператором. Оператор FOR обеспечивает выполнение тела цикла с увеличением параметра цикла (TO) или с уменьшением параметра цикла (DOWNTO) на единицу.

В операторе повтора FOR Паскаль не допускает изменения параметра цикла на величину, отличную от единицы. В составе оператора запрещены операторы, меняющие значение параметра цикла. Если необходимо выполнить более одного оператора после ключевого слова do, то надо записать составной оператор begin … end;

3.4. Примеры программ.

1. Найти все натуральные числа от 1 до n, используя оператор цикла while.

Program example1;

Var i,n:integer;

begin

writeln(‘введите количество натуральных чисел ’);

readln(n);

i:=1;

while i<=n do

begin writel(‘ ’,i);

i:=i+1

end

end.

2. Найти все натуральные числа от 1 до n, используя оператор цикла repeat.

Program example2;

Var i, n: integer;

begin

writeln(‘введите количество натуральных чисел ’);

readln (n);

i:=1;

repeat write(‘ ’,i);

i:=i+1;

until i>n

end.

3. Написать программу приближённого вычисления суммы

с точностью

По условию задачи считается, что нужное приближение получено, если вычислена сумма нескольких первых слагаемых, и очередное слагаемое по модулю меньше, чем данное малое положительное число - это и все последующие слагаемые уже не надо учитывать. В таких задачах следует вычислять каждый член последовательности из предыдущего с помощью рекуррентного соотношения. В данном примере, если уже получено значение выражения xi-1/(i-1)!, то для получения xi/i! достаточно умножить значение предыдущего выражения на x/i.

Program example3;

Var i:integer;

x, eps, a,s:real; {а - очередной член ряда}

begin

writeln(‘введите x ’);

readln(x);

writeln(‘введите eps ’);

readln(eps);

i:=0; s:=0; a:=1;

while abs(a)>=eps do

begin

s:=s+a;

i:=i+1;

a:=a*x/i

end;

write(‘s=’,s) end.

4. Написать программу для вычисления суммы

Знак в формуле означает суммирование слагаемых, каждый из которых имеет вид , где n принимает значения от 1 до k.

Program example4;

Var i,n:integer;

x, s, a :real; {а - очередной член ряда}

begin

writeln(‘введите n’);

readln(n);

writeln(‘введите x ’);

readln(x);

s:=0; a:=-1;

for i:=1 to n do begin

begin

a:=-a*x/i

s:=s+a;

end;

write(‘s=’,s)

end.