Программа
End.
Begin
Begin
End.
Begin
Begin
НАЧАЛО
Begin
While (условие) Do
While (условие) Do
оператор;
или
оператор;
оператор;
оператор;
…
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;
ClrScr;
s := 0;
i := 1;
While (i <= 100) Do
s := s + i;
i := i + 1;
End;
WriteLn(‘s = ‘, s);
ReadLn;
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;
ClrScr;
Write(‘n=‘);
ReadLn(n);
s := 0;
While (n > 0) Do
i := n Mod 10;
s := s + i;
n := n Div 10;
End;
WriteLn(‘s = ‘, s);
ReadLn;
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
Очередное число: -2
Очередное число: 0
Сумма = 10
Количество чисел = 4
Min = -2
Max = 8
Среднее арифметическое = 2.50
Схема алгоритма:
Program Posled;
Uses CRT;
Var n, min, max, s, count: Word;
sred: Real;