Оператор цикла WHILE (цикл ПОКА)

Формат оператора:
WHILE логическое выражение DO;

Оператор будет повторятся пока истинно логическое выражение. Перед каждым повторением оператора значение логического выражения вычисляется заново. Если необходимо повторить несколько операторов, их следует объединить в составной оператор, т.е. заключить в операторные скобки begin... end. Этот цикл может не выполниться ни разу, если условие при входе в него оказалось ложным. Таким образом, цикл ПОКА содержит условие повторения цикла.

Пример 1. Программа подсчета суммы S первых 1000 членов гармонического ряда 1+1/2+1/3+1/4+...1/N.

Program Summa;
Var S:real;
N:integer;
Begin
S:=0;N:=0;
While n<1000 do
Begin
N:=n+1;
S:=s+1/n
End;
Writeln(s);
Readln
End.

Пример 2. Вычислить наибольший общий делитель двух натуральных чисел А и В.

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

Program NOD;
Var a,b:integer;
Begin
Write ('введите два натуральных числа')
Readln(a,b)
While a<>b do If a>b then a:=a-b else b:=b-a;
Writeln('НОД=',a);
Readln
End.

Пример 3. Начав тренировки, лыжник в первый день пробегал 10 км. Каждый следующий день он увеличивал длину пробега на 10% от предыдущего дня. Определить в какой день он пробежит больше 20 км, в какой день суммарный пробег за все дни превысит 100км.

Program prim_10;
Var S:real;
N:integer;
Begin
S:=10;N:=1;
While s<20 do
Begin
N:=n+1;
S:=s*0.1
End;
Writeln(' дневной пробег больше 20 км на ',n,' день');
S:=10;N:=1;
While s<100 do
Begin
N:=n+1;
S:=s+s*0.1 {накапливаем суммарный пробег}
End;
Writeln('за ',n,' пробежит больше 100 км');
Readln
End.

Тренировочные задания.
1. Даны целые числа а и b (а>b). Определить:
a. Результат целочисленного деления a на b, не используя стандартную операцию целочисленного деления;
b. Остаток от деления а на b не используя стандартную операцию вычисления остатка.

2. Известны оценки по информатике каждого из 20 учеников класса. В начале списка перечислены все пятерки, затем все остальные оценки. Сколько учеников имеют по информатике оценку "5"?. Условный оператор не использовать.

3. Напечатать минимальное число, большее 200, которое нацело делится на 17.

4. Гражданин 1 марта открыл счет в банке, вложив 1000 руб. Через каждый месяц размер вклада увеличивается на 2% от имеющейся суммы. Определить: за какой месяц величина ежемесячного увеличения вклада превысит 30 руб.; через сколько месяцев размер вклада превысит 1200 руб.

5. *В некоторой стране используются денежные купюры достоинством в 1, 2, 4, 8, 16, 32 и 64. дано натуральное число N. Как наименьшим количеством таких денежных купюр можно выплатить сумму N (указать количество каждой из используемых для выплаты купюр)? Предполагается, что имеется достаточно большое количество купюр всех достоинств.

Урок 11

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: