ВУЗ:
Составители:
Рубрика:
91
readln(N); { Ввод исходного данного }
s:=0; { Начинаем суммирование с нуля }
i:=1; { Первое слагаемое известно заранее }
j:=0; { Начальное значение счетчика }
while j<N do { Нужно выполнить цикл N раз }
begin s:=s+i; {Добавили слагаемое к сумме }
i:=i+1; {Перешли к следующему слагаемому }
j:=j+1; { Увеличили счетчик на единицу }
end; { Закончилось тело цикла }
write('Сумма чисел от 1 до ',N,' равна ',s)
{ Вывод результата }
end.
Анализируя программу, можно заметить
, что переменные i и j изменяются
синхронно (т.е. по значению i можно установить значение j и наоборот), поэтому в
данном случае переменная, изображающая слагаемое, может играть и роль
счетчика. Тогда программа примет вид:
program pr2;
{ вычисление суммы натуральных чисел от 1 до N - вариант 2 }
var N:integer; { последнее число суммы - исходное данное }
s:integer; { сумма - результат }
i:integer; { счетчик цикла и слагаемое }
begin write('Введите последнее число суммы ');
readln(N); { Ввод исходного данного }
s:=0; { Начинаем суммирование с нуля }
i:=1; { Начальное значение счетчика и слагаемого }
while i<=N do { Нужно выполнить цикл N раз }
begin s:=s+i; { Добавили слагаемое к сумме }
i:=i+1; { Увеличили счетчик и слагаемое на единицу }
end; { Закончилось тело цикла }
write('Сумма чисел от 1 до ',N,' равна ',s)
{ Вывод результата }
end.
В этом вырожденном случае цикл
можно отнести к итерационным. Он
выполняется до тех пор, пока слагаемое не станет равным N. Можно считать этот
цикл и арифметическим, учитывая двойной смысл параметра. После любого шага i
цикла переменная s хранит сумму предыдущих i слагаемых.
После написания текста программы ее необходимо протестировать. Прежде
убедимся, что цикл завершится. Это действительно так в случае,
если N≥1, так как
переменная i на каждом шаге цикла увеличивается от 1 до N. Если N -
неположительно, то цикл не будет выполнен ни разу и будет выдан ответ 0, что
соответствует нашим ожиданиям от правильно работающей программы.
Теперь необходимо проверить работу программы для такого N, для которого
ответ заранее известен. Рассматриваемая программа предназначена только для
иллюстрации методов построения алгоритмов, результат ее работы просто
получить воспользовавшись формулой s = N·(N+1)/2. Например, для N=10 по
91
readln(N); { Ввод исходного данного }
s:=0; { Начинаем суммирование с нуля }
i:=1; { Первое слагаемое известно заранее }
j:=0; { Начальное значение счетчика }
while jСтраницы
- « первая
- ‹ предыдущая
- …
- 87
- 88
- 89
- 90
- 91
- …
- следующая ›
- последняя »
