Оператор цикла While

While является оператором цикла с предусловием. Он имеет следующий вид:

While <логическое выражение> do <оператор>;

Оператор While содержит логическое выражение, значение которого (True/False) управляет повторным выполнением  оператора (после слова Do), который может быть и составным. Значение выражения вычисляется перед выполнением оператора. Если результат равен True, то оператор выполняется, при значении False нет. Таким образом, если в начале логическое выражение имеет значение False, оператор после Do вообще не выполняется. В операторе (составном операторе) обязательно предусматривается изменение значений переменных, влияющих на значение логического выражения. При невыполнении этого условия получаем пример того, что называется «зацикливанием». Простейший пример бесконечного цикла:

While True Do <оператор>;

Пример задачи:

Дано натуральное число n. Подсчитать количество цифр данного числа.

Особенность данной задачи в том, что количество цифр в числе n заранее неизвестно. Именно поэтому необходимо использовать оператор While. Использование For потребовало бы введения дополнительных переменных, или искусственного выхода из цикла. Подсчет количества цифр начнем с последней цифры. Увеличим счетчик цифр k на единицу. Число m уменьшим в 10 раз, убирая тем самым из него последнюю цифру (подсчитанную). С получившимся числом проделаем ту же последовательность действий и так далее, пока число не станет равным нулю.

Для этого примера и всех заданий данного занятия требуется выполнить ручную трассировку. Пусть введено число n=65387; присвоим это значение переменной с именем m; значение счетчика цифр k=0. Выполним действия, описанные выше;

k=0 m=65387

k=1 6538

k=2 m=653

k=3 m=65

k=4 m=6

k=5 m=0

Окончательное значение k=5 — в заданном числе 5 цифр.

Program d1;

var m,n,k: Integer;

begin

writeln(‘Введите целое число’);

readln(n);

m:=n;

k:=0;

while m<>0 do begin

k:=k+1;

m:=m div 10;

end;

writeln(‘в числе’,n,’,k-,’цифр!’);

end.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Анти-спам: выполните заданиеWordPress CAPTCHA