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

Синтаксис оператора цикла с предусловием while

while выражение do оператор;

выражение, стоящее после ключевого слова while (англ., while – пока), является условием повторения цикла. Оно должно иметь логический тип, это может быть выражение, содержащее операцию отношения (например, Оператор цикла с предусловием while - student2.ru ), или просто логическая переменная (например,varflag:boolean). выражение обязательно должно содержать переменную цикла (параметр цикла), а в теле цикла должен присутствовать оператор, изменяющий значение переменной цикла таким образом, чтобы условие выхода из цикла было достижимо (иначе цикл будет выполняться бесконечное число раз). После ключевого слова do (англ., do – делай) следует оператор, который многократно повторяется в цикле. В качестве оператора может быть любой оператор языка программирования Паскаль (if, for, while, repeat и др.), в т.ч. составной оператор. Если в теле цикла требуется выполнить несколько операторов, они должны быть заключены в блок с помощью операторных скобок beginend.

Рассмотрим порядок выполнения оператора цикла с предусловием while. Сначала до оператора цикла (до служебного слова while) необходимо задать начальное значение переменной цикла. Во время выполнения цикла перед каждой итерацией цикла находится значение логического выражения, стоящего после ключевого слова while. Если логическое выражение принимает значение истина (true), тогда выполняется оператор, стоящий после ключевого слова do.Если логическое выражение принимает значение ложь (false), тогда происходит выход из цикла. После окончания цикла управление передается на следующий за ним оператор. Таким образом, пока выражение, стоящее после ключевого слова while, принимает значение истина, выполняется оператор, стоящий после ключевого слова do. Как только значение выражения стало ложным, осуществляется выход из цикла. Блок-схема оператора цикла с предусловием while приведена на рис. 5.3.

Выражение
Тело цикла
Истина
Ложь

Рис. 5.3. Блок-схема, соответствующая оператору цикла с предусловием

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

Для корректного выполнения оператора цикла while должны выполняться следующие правила:

1) до оператора цикла (т.е. до служебного слова while) обязательно нужно задать начальное значение переменной цикла;

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

Конец
Начало
a,b,h
x=a;b
y=cos(x)
x=x+h
Да
x,y
Конец
Начало
a,b,h
x>b
y=cos(x)
Нет
x=a
x=x+h
Да
x,y
Конец
Начало
a,b,h
x<=b
y=cos(x)
Нет
x=a


а) б) в)

Рис. 5.4. Блок-схема алгоритма построения значения функции:

а – цикл с предусловием; б – универсальная блок-схема; в – цикл с постусловием

Пример 5.8. Таблица значений функции. Составить таблицу значений функции Оператор цикла с предусловием while - student2.ru , для аргумента, изменяющегося на отрезке Оператор цикла с предусловием while - student2.ru с постоянным шагом Оператор цикла с предусловием while - student2.ru , где Оператор цикла с предусловием while - student2.ru , Оператор цикла с предусловием while - student2.ru , Оператор цикла с предусловием while - student2.ru – вещественные числа, Оператор цикла с предусловием while - student2.ru , Оператор цикла с предусловием while - student2.ru . Блок-схема алгоритма построения значения функции для цикла с предусловием приведена на рис. 5.4, а, б.

program prog;

var x,y,a,b,h:real;

begin

writeln('Введите a,b,h');

read(a,b,h);

x:=a;//переменной цикла присваивается начальное значение

whilex<=bdo//проверяется условие выхода из цикла

begin

y:=cos(x);

writeln('х=',x:5:2,' y=',y:5:2);

x:=x+h;{значение переменной цикла увеличивается на величину шага}

end;

end.

Далее приведены результаты выполнения программы при Оператор цикла с предусловием while - student2.ru , Оператор цикла с предусловием while - student2.ru , Оператор цикла с предусловием while - student2.ru :

х=4.00 y=-0.653643620863612

х=4.20 y=-0.490260821340699

х=4.40 y=-0.307332869978419

х=4.60 y=-0.112152526935054

х=4.80 y=0.0874989834394473

x=5.00 y=0.283662185463226

Пример 5.9. Наибольшее значения функции на отрезке. Вычислить наибольшее значение функции Оператор цикла с предусловием while - student2.ru на отрезке Оператор цикла с предусловием while - student2.ru c шагом Оператор цикла с предусловием while - student2.ru .

program prog;

const h=0.1;

var x,y,max,a,b:real;

begin

x:=1;//переменной цикла присваивается начальное значение

max:=sqr(x)+cos(x);

whilex<2do//проверяется условие выхода из цикла

begin

x:=x+h;{значение переменной цикла увеличивается на величину шага}

y:=sqr(x)+cos(x);

if y>max then

max:=y;

end;

writeln('max=',max:5:2)

end.

Пример 5.10. Наименьшее значения функции на отрезке. Вычислить наименьшее значение функции Оператор цикла с предусловием while - student2.ru на отрезке Оператор цикла с предусловием while - student2.ru c шагом Оператор цикла с предусловием while - student2.ru , где Оператор цикла с предусловием while - student2.ru , Оператор цикла с предусловием while - student2.ru , Оператор цикла с предусловием while - student2.ru – вещественные числа, Оператор цикла с предусловием while - student2.ru , Оператор цикла с предусловием while - student2.ru .

program prog;

var x,y,min,a,b,h:real;

begin

writeln('Введитеа,b,h');

read(a,b,h);

x:=a;

min:=sqr(x)+cos(x);

while x<b do

begin

x:=x+h;

y:=sqr(x)+cos(x);

if y<min then

min:=y;

end;

writeln('min=',min:5:2)

end.



Наши рекомендации