Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Оператор цикла с постусловием

Поиск

Часто встречаются задачи, когда число повторений в цикле неизвестно, а задано некоторое условие его продолжения или окончания.

Для программирования таких алгоритмов в Паскале существуют два типа операторов – оператор с предусловием и оператор с постусловием.

Оператор цикла с постусловием это оператор Repeat (ПОВТОРЯТЬ), который в общем виде записывается так:

Repeat

Операторы

Until условие;

Схема его работы представлена на рис. 4.5.

В теле цикла записывается один или несколько операторов, которые будут выполняться многократно. Они располагаются между служебными словами Repeat и Until, поэтому обрамлять их словами Begin и End не нужно. После слова Until записывается условие выхода из цикла (по значению параметра).

При этом необходимо обязательно изменять параметр внутри цикла, иначе цикл будет выполняться бесконечно (произойдет "зацикливание"). В соответствии со схемой цикл выполняется по крайней мере 1 раз.

 

Пример 4.7 Изобразить степени двойки, не превышающие 10000.

 

Program Two;

Var

Num: Integer;

Begin

Num:=2;

Repeat

Writeln (Num);

Num:=Num*2;

Until Num>1000;

End.

Пример 4.8 Определить является ли число простым.

Program Prim;

Var

I,n: integer;

Begin

Writeln(‘ввидите число’);

Read(n);

Write(n,’-‘);

I:=1;

Repiat

I:=i+1;

Until n nod i=0;

If i=n then writeln(‘простое число!’)

Else writeln(‘делится на ’,i);

End.

Оператор цикла с предусловием

Он отличается от оператора Repeat тем, что условие выполнения цикла проверяется до начала. Цикл выполняется, если оно истинно. Оператор с пред-условием начинается служебным словом While. Общая форма его записи:

While условие do

Оператор1;

Схема работы оператора приведена на рис. 4.6.

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

Begin

Операторы

End;

В отличие от Repeat цикл While может не выполняться ни разу.

Пример 4.9 Вычисление множителей последовательности целых чисел

Program Dividers;

Const

d=2;

Var

Num, Del,P: Integer;

Begin

Writeln ('Введите число');

Readln(Num);

While Num <>0 Do

Begin

P:= 0; { число простое }

For Del:= d To Num Div d Do

Begin

If Num Mod Del=0 Then

Begin

Write(Del);

P:= 1; { число не простое }

End;

End;

If P=0 Then{ п.2.3 }

Writeln('Число ',Num,' - простое');

Writeln('Введите число');

Read(Num);

End;

End.

Пример 4.10 Нахождение делителей целого положительного числа (кроме 1 и самого числа). Х- исходное число, half – половина введенного числа, divider – делитель, I – счетчик.

Program Divid;

Var

Divider, half, I, x: integer;

Begin

Repeat

Write(‘введите положительное число’);

Read(x);

If x<=0 then writeln (‘неправильный ввод’)

Until x>0;

Half:=x div 2;

While Divider <=half do

Begin

If x mod divider=0 then

Begin

I:=i+1;

Writeln(I,’ – й делитель равен’,divider)

End;

Divider:=divider +1;

End;

If i=0 then writeln (‘делителей нет’);

Writeln(‘конец решения’);

End.

Итерационные циклы

Среди циклов с неизвестным числом повторений большое место занимают итерационные. В этих циклах количество повторений заранее неизвестно. Выход из цикла происходит, если достигнута заданная точность результата или появилась стандартная ситуация (конец данных). Такие циклы используются при решении задач численными методами: приближенное вычисление функций, определенных интегралов, решение уравнений и т.д.

Основной особенностью итерационных циклов является то, что новое значение искомой величины (Yслед) вычисляется с использованием старого (Yпред) по формуле: Yслед=f(Yпред)

Обычно для вычисляемой величины Y задается некоторое начальное значение (приближение) Yoи погрешность вычисления результата (Y) в виде: E=(0,5; 1)*10-m, где m – целое число. Как правило, E=(0,1; 0,5, 0,01; 0,05, 0,001 и т.д.). Считается, что заданная точность достигнута, если найденные значения Yпреди Yследотличаются на величину, меньшую E, т.е. условие окончания вычислений можно записать так:

|Yслед– Yпред|<E

Для программирования итерационных циклов в Паскале используются операторы While и Repeat.

Пример 4.11 Вычислить значение арифметического выражения:

Вычисление непрерывных радикалов производится в цикле, начиная от внутреннего радикала. В данной задаче начальное значение . Каждое следующее значение радикала будет вычисляться через предыдущее значение радикала по формуле , число изменяется от начального значения 5 до конечного значения 98 с шагом 3.

var r,a:real;

begin r:=sqrt(2); a:=5; while a<=98 do begin r:=sqrt(a+r); a:=a+3; end; writeln('R=',r);end.


Поделиться:


Последнее изменение этой страницы: 2017-02-17; просмотров: 212; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.133.129.110 (0.007 с.)