Циклы с предусловием
Как правило, некоторую цепочку операторов необходимо повторять не бесконечно, а до тех пор, пока выполняется некоторое условие: ПОКА (условие) ВЫПОЛНЯТЬ цепочка; Такой цикл называется циклом с предусловием (циклом ПОКА) и изображается следующей схемой:
Условие – это логическое выражение, зависящее от переменных, входящих в цепочку. Цикл повторяется до тех пор, пока условие истинно. Значит, данное условие является условием продолжения цикла. Выполнение цикла заканчивается, если операторы цепочки изменяют значения переменных, входящих в условие, и оно становится ложным. Цикл не выполняется ни разу, если условие было ложным с самого начала. Цикл ПОКА превращается в бесконечный, если условие подобрано так, что оно всегда истинно. В Паскале цикл с предусловием реализуется оператором цикла While: While (условие) Do оператор; или While (условие) Do Begin оператор; оператор; оператор; … End; Операторы, находящиеся между Begin и End, называются телом цикла. Внимание! После слова Do точка с запятой не ставится! Если поставить точку с запятой после слова Do, то этот цикл, как правило, превращается в бесконечный, потому что в этом случае условие изменяться не будет. Операторные скобки Begin … End используются в том случае, если после слова Do должна следовать цепочка операторов. Действия оператора While: 1. проверяется выполнение условия, 2. если оно истинно, то выполняется оператор (цепочка), стоящий после Do, 3. после его выполнения снова проверяется условие, и если оно снова истинно, то цикл повторяется, 4. если условие становится ложным, то цикл заканчивает работу. Примеры: 1. вычислить сумму ста первых натуральных чисел: s = 1 + 2 + 3 + … + 98 + 99 + 100 Пусть s – искомая сумма, i – очередное число (изменяется от 1 до 100). Тогда алгоритм решения задачи можно описать следующим образом: a. обнуляем сумму s – в ней ничего нет, b. берем первое число: i = 1, c. добавляем в сумму очередное число, пока оно не достигнет 100. Представим этот алгоритм так: s = 0; i = 1; ПОКА (i ≤ 100) ВЫПОЛНЯТЬ НАЧАЛО s = s + i; i = i + 1; КОНЕЦ; Программа: Program Gauss; Uses CRT; Var i, s : Word; Begin ClrScr; s := 0; i := 1; While (i <= 100) Do Begin s := s + i; i := i + 1; End; WriteLn(‘s = ‘, s); ReadLn; End. 2. вычислить сумму s всех цифр заданного натурального числа n Пусть s – искомая сумма, i – очередная цифра числа. Тогда алгоритм решения задачи можно описать следующим образом: a. обнуляем сумму s, b. берем последнюю цифру числа, для чего определяем остаток от деления исходного числа на 10: i = n Mod 10, c. добавляем в сумму найденную цифру: s = s + i, d. уменьшаем число в 10 раз: n = n Div 10, e. повторяем цикл до тех пор, пока n > 0 – это и будет условием продолжения цикла. Схема алгоритма: Программа: Program Sum; Uses CRT; Var i, s, n : Word; Begin ClrScr; Write(‘n=‘); ReadLn(n); s := 0; While (n > 0) Do Begin i := n Mod 10; s := s + i; n := n Div 10; End; WriteLn(‘s = ‘, s); ReadLn; End.
3. ввести с клавиатуры по одному последовательность целых чисел (конец последовательности – число 0). Определить их сумму, максимальное и минимальное число, количество введенных чисел и их среднее арифметическое. Пусть s – искомая сумма, min, max – минимальное и максимальное из введенных чисел, count – количество введенных чисел, sred – среднее арифметическое, n – очередное число. Тогда алгоритм решения задачи можно описать следующим образом: a. обнуляем сумму s , b. вводим первое число n, c. если оно не равно нулю, то · принимаем его значение за min и max · количество введенных чисел count = 1 · увеличиваем сумму на введенное число s = s + n · входим в цикл ввода: d. вводим очередное число n, если оно не равно нулю, то · количество введенных чисел увеличиваем на 1: count = count+1 · увеличиваем сумму на введенное число s = s + n · если оно меньше min, то min = n, · если оно больше max, то max = n, e. повторяем цикл до тех пор, пока n # 0 – это и будет условием продолжения цикла. Создадим интерфейс этой задачи – взаимодействие программы с пользователем, то есть что должно выводиться на экран: Первое число: 3 Очередное число: 8 Очередное число: 1 ©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.
|