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

4.3. Циклы с предварительной и последующей проверкой условия

Рассмотрим такую задачу.

Определить количество натуральных чисел, сумма которых превысит 100, если суммирование началось с единицы и каждое слагаемое на единицу больше предыдущего.

Чем отличается задание от предыдущих?

Алгоритм суммирования тот же самый, но в данном случае неизвестно количество слагаемых. Конструкция цикла со счетчиком для заданий такого типа не годится.

Для решения такого рода задач в языке Турбо Паскаль имеются две конструкции: конструкция цикла с предварительной проверкой условия и конструкция цикла с последующей проверкой условия.

Цикл с предварительной проверкой условия.

WHILE <условие> DO

пока

оператор;

{или группа операторов в операторных скобках BEGIN - END}

До тех пор пока условие является истиным, выполняются операторы цикла.

О чем надо помнить:

  1. Если условие ложно, сразу же при первом обращении к циклу, то тело цикла не выполнится ни разу.

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

Рассмотрим сказанное выше на конкретных примерах.

Решим задачу о сумме натуральных чисел. Нам необходимо найти количество чисел, сумма которых превысит 100. Ниже представлена схема алгоритма решения задачи. Конструкции WHILE в схеме соответствует ромб.

Рис.4.4. Схеме алгоритма подсчета количества слагаемых, сумма которых меньше 100.

Текст программы.

PROGRAM WHILE1;

USES CRT;

VAR

K: integer;

S: integer;

BEGIN

clrscr;

S := 0;

K := 0;

WHILE S<=100 DO

BEGIN

K := K + 1;

S := S + K

END;

writeln('Количество слагаемых ', K, ' их сумма = ', S);

writeln('Нажмите любую клавишу для выхода...');

readln;

END.

О ЧЕМ НАДО ПОМНИТЬ:

  1. Выход из цикла осуществляется только в том случае, когда значение переменной S превысит 100.

  2. Обратите внимание: начальное значение переменной K=0, в этом случае оператор присваивания K:=K+1 расположен до оператора присваивания S=S+K, в этом случае значение переменной K при выходе из цикла показывает номер слагаемого, на котором произойдет превышение суммы. Очень часто начальное значение K задают равным 1, тогда при выходе из цикла необходимо уменьшить K на единицу, чтобы получить номер слагаемого, на котором произошло превышение суммы.

Задача 2. Вычислить сумму первых 10 натуральных чисел.

Это задание было разобрано при изучении оператора FOR. Рассмотрим вариант, когда конструкция WHILE работает со счетчиком.

PROGRAM WHILE10N;

USES CRT;

VAR

i: integer; {очередное слагаемое-счетчик}

S: integer; {сумма}

BEGIN

clrscr;

i := 1;

S := 0;

WHILE i <= 10 DO

BEGIN

S := S+i;

i := i+1

END;

writeln('сумма = ', S);

writeln('Нажмите любую клавишу для выхода...');

readln;

END.

Задача 3. Вычислить сумму четных чисел на отрезке от 10 до 30.

PROGRAM SUM10N30;

USES CRT;

VAR

K: integer; {очередное слагаемое}

S: integer; {сумма}

BEGIN

clrscr;

K:=10;

S:=0;

WHILE K <= 30 DO

BEGIN

S:=S+K;

K:=K+2

END;

writeln('сумма четных чисел от 10 до 30 = ', S);

writeln('Нажмите любую клавишу для выхода...');

readln;

END.