Программа

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;