Очередное число: -2
Очередное число: 0 Сумма = 10 Количество чисел = 4 Min = -2 Max = 8 Среднее арифметическое = 2.50 Схема алгоритма:
Программа Program Posled; Uses CRT; Var n, min, max, s, count: Word; sred: Real; Begin ClrScr; s := 0; Write(‘Первое число:’); ReadLn(n); If (n = 0) Then Exit; min := n; max := n; count := 1; s := s + n; While (n <> 0) Do Begin Write(‘Oчередное число:’); ReadLn(n); If (n <> 0) Then Begin count := count + 1; s := s + n; If (n > max) Then max := n; If (n < min) Then min := n; End; {If (n <> 0)} End; {While} sred := s / count; WriteLn; WriteLn(‘Сумма =’,s); WriteLn(‘Количество чисел =’,count); WriteLn(‘min=’,min); WriteLn(‘max=’,max); WriteLn(‘Среднее арифметическое =’,sred:5:2); ReadLn; End. Часто встречающиеся ошибки программирования: 1. Использование в качестве условия выражения не логического типа: While (n + m) Do . . . 2. Отсутствие в заголовке цикла слова Do: While (n < 10) . . . 3. Использование после слова Do точки с запятой, которая, как правило, приводит к появлению бесконечного цикла: s:=0; n:=1; While (n < 10) Do; Begin s := s + n; n := n + 1; End;
Циклы с постусловием У циклов с постусловием (циклов типа ДО) проверка условия окончания цикла производится после выполнения операторов, составляющих тело цикла:
ПОВТОРЯТЬ Цепочка ДО (условие);
Такой цикл повторяется до тех пор, пока условие ложно. Выполнение цикла заканчивается, если операторы цепочки изменяют значения переменных, входящих в условие, и оно становится истинным. В любом случае этот цикл выполняется хотя бы один раз. Цикл с постусловием превращается в бесконечный, если условие подобрано так, что оно всегда ложно. Таким образом, условие в данном цикле является условием его окончания, а не продолжения, как в цикле с предусловием. В Паскале цикл с постусловием реализован оператором цикла Repeat: Repeat Цепочка Until (условие); где Repeat – служебное слово повторять, Until – служебное слово до. Внимание! После слова Repeat точка с запятой не ставится! В отличие от цикла с предусловием, в цикле с постусловием не требуется использование операторных скобок Begin … End. Действия оператора Repeat: 1. выполняется оператор (цепочка), 2. проверяется выполнение условия, стоящего после слова Until, 3. если оно ложно, то цикл повторяется, 4. если условие становится истинным, то цикл заканчивает работу. Примеры: 1. вычислить сумму ста первых натуральных чисел: s = 1 + 2 + 3 + … + 98 + 99 + 100 Пусть s – искомая сумма, i – очередное число (изменяется от 1 до 100).
Тогда алгоритм решения задачи можно описать следующим образом: d. обнуляем сумму s , e. берем первое число: i = 1, f. добавляем в сумму очередное число, пока оно не достигнет 100. Представим этот алгоритм так: s = 0; i = 1; ПОВТОРЯТЬ s = s + i; i = i + 1; ДО (i > 100); Программа: Program Gauss; Uses CRT; Var i, s : Word; Begin ClrScr; s := 0; i := 1; Repeat s := s + i; i := i + 1; Until (i>100); 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; Repeat i := n Mod 10; s := s + i; n := n Div 10; Until (n = 0); WriteLn(‘s = ‘, s); ReadLn; End 3. ввести с клавиатуры по одному последовательность целых чисел (конец последовательности – число 0). Определить их сумму, максимальное и минимальное число, количество введенных чисел и их среднее арифметическое. Пусть s – искомая сумма, min, max – минимальное и максимальное из введенных чисел, count – количество введенных чисел, sred – среднее арифметическое, n – очередное число. Тогда алгоритм решения задачи можно описать следующим образом: a. обнуляем сумму s , b. вводим первое число n, c. если оно не равно нулю, то 1. принимаем его значение за min и max 2. количество введенных чисел count = 1 3. увеличиваем сумму на введенное число s = s + n 4. входим в цикл ввода: d. вводим очередное число n, e. если оно не равно нулю, то 1. количество введенных чисел увеличиваем на 1: count = count +1 2. увеличиваем сумму на введенное число s = s + n 3. если оно меньше min, то min = n, 4. если оно больше max, то max = n, f. повторяем цикл до тех пор, пока n = 0 – это и будет условием выхода из цикла. g. Создадим интерфейс этой задачи – взаимодействие программы с пользователем, то есть что должно выводиться на экран: Первое число: 3 Очередное число: 8 Очередное число: 1 ©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.
|