Цикл с предусловием.
Продолжим изучение цикла с предусловием на примере решения следующей задачи.
Задача. Найти сумму чисел в непустой последовательности.
Рассмотрим алгоритм решения. Пусть нам дана такая последовательность чисел:
3, -4, 0, 5, 19, -20, 6, 2
Для работы нам нужно организовать обращение к каждому элементу последовательности. Нетрудно догадаться, что это будет происходить через порядковый номер каждого члена последовательности. Пронумеруем эти числа:
1 2 3 4 5 6 7 8
3, -4, 0, 5, 19, -20, 6, 2
Получилось, что всего у нас чисел восемь, на первом месте стоит число 3, на втором - число (-4), на третьем - число 0 и т.д. Тогда переменная цикла i будет пробегать числа от 1 до 8, становясь на каждом шаге больше на 1 и запрашивая каждый раз очередное число. Поэтому общая схема цикла будет выглядеть так:
i:=1;
while i<=N do
begin
write (‘Введите ‘,i,’-ое число’);
readln (x);
. . .
i:=i+1;
end;
Здесь N - количество чисел последовательности (в нашем случае 8), х - член последовательности, i - порядковый номер очередного члена последовательности. Просмотрим, как будет работать этот цикл.
1 шаг
i:=1;
while i<=N do {Проверяется условие 1<=8? Да. Значит выполняем тело цикла}
begin
write (‘Введите ‘,i,’-ое число’);{Вывод на экран “Введите 1-ое число”}
readln (x); {Считываем число 3 в переменную х}
. . .
i:=i+1; {Переходим к следующему по порядку числу: i=2}
end;
2 шаг
i:=1;
while i<=N do {Проверяется условие 2<=8? Да. Значит выполняем тело цикла}
begin
write (‘Введите ‘,i,’-ое число’);{Вывод на экран “Введите 2-ое число”}
readln (x); {Считываем число (-4) в переменную х}
. . .
i:=i+1; {Переходим к следующему по порядку числу: i=3}
end;
3 шаг
i:=1;
while i<=N do {Проверяется условие 3<=8? Да. Значит выполняем тело цикла}
begin
write (‘Введите ‘,i,’-ое число’);{Вывод на экран “Введите 3-ое число”}
readln (x); {Считываем число 0 в переменную х}
. . .
i:=i+1; {Переходим к следующему по порядку числу: i=4}
end;
и т. д.
8 шаг
i:=1;
while i<=N do {Проверяется условие 8<=8? Да. Значит выполняем тело цикла}
begin
write (‘Введите ‘,i,’-ое число’);{Вывод на экран “Введите 8-ое число”}
readln (x); {Считываем число 2 в переменную х}
. . .
i:=i+1; {Переходим к следующему по порядку числу: i=9}
end;
9 шаг
i:=1;
while i<=N do {Проверяется условие 9<=8? Нет. Значит цикл закончил свою работу и компьютер переходит к обработке следующего за end оператора}
Итак, у нас уже организован цикл считывания чисел. Осталось только вписать в тело цикла оператор, который бы суммировал все эти числа. Для этого опишем переменную Summa в разделе описания переменных и присвоим ей нулевое значение перед выполнением цикла. Тогда при каждом шаге нашего цикла значение этой переменной должно быть изменено на х. Это произойдет при выполнении оператора
Summa:=Summa+x;
Если Вам не совсем понятно, что происходит при выполнении этого оператора, Вам нужно вспомнить, как происходит присваивание значение переменной: сначала вычисляется значение выражения в правой части (в нашем случае Summa+x, т.е, значение переменной Summa увеличиваем на х), а затем присваиваем это значение переменной с именем, записанным в левой части (Summa). Таким образом, в переменной Summa собирается сумма всех считанных чисел.
Задание. Напишите полный текст программы, находящей сумму N чисел последовательности. Дополните программу нахождением среднего арифметического этих чисел.
Примечание. Средним арифметическим чисел называется сумма этих чисел, деленная на их количество.
Дата добавления: 2015-05-16; просмотров: 730;