Если вы поняли идею счетчика, то понять идею сумматора вам будет нетрудно. Посмотрим, как будет работать следующий фрагмент:
s:=0; {Обнуляем сумматор. Это не менее важно, чем обнулить счетчик}
m: ReadLn(a);
s:=s+a; {Увеличиваем сумматор}
WriteLn(‘Сумма=’, s);
goto m;
Пусть мы вводим числа 8, 4, 10 . . . В этом случае порядок выполнения операторов будет такой:
Оператор
а
s
Печать
s:=0
?
ReadLn(a)
s:=s+a
WriteLn(‘Сумма=' ,s)
Сумма=8
goto m
ReadLn(a)
s:=s+a
WriteLn(‘Сумма=' ,s)
Сумма=12
goto m
ReadLn(a)
s:=s+a
WriteLn(‘Сумма=' ,s)
Сумма=22
goto m
……….
Как видите, в ячейке s накапливается сумма вводимых чисел a, поэтому назовем эту ячейку сумматором. Отличие сумматора от счетчика в том, что счетчик увеличивается на 1 оператором c:=c+1, а сумматор - на суммируемое число оператором s:=s+a.
Задача: В компьютер вводится N чисел. Вычислить и один раз напечатать их сумму.
Программа:
VAR i,N :Integer;
a,s :Real;
BEGIN
ReadLn(N);
s:=0;
for i:=1 to N do begin
ReadLn(a);
s:=s+a
end {for};
WriteLn(‘Сумма равна ' ,s:20:10)
END.
Задание 49: Пусть N=2, a=5 и 3. Тогда по этой программе Паскаль напечатает 8. Что он напечатает, если:
1) Вместо s:=0 написать s:=10.
2) Вместо s:=s+a написать s:=s+a+1.
3) Строки end {for} и WriteLn поменять местами.
4) Строки s:=0 и for поменять местами.
5) Строки for и ReadLn поменять местами.
6) Строки s:=s+a и end {for} поменять местами.
7) Вместо for i:=1 to N написать for i:=2 to N.
Задания 50-52: Написать программы для следующих задач:
50) Во дворце 40 залов. Известны длина и ширина каждого зала. Вычислить площадь пола всего дворца.
51) Вычислить средний балл учеников вашего класса по физике.