Конспект лекций по программированию для начинающих. Гладков В.П. - 118 стр.

UptoLike

Составители: 

120
вводимых элементов. Определить окончание ввода в этом случае можно одним из
следующих способов. Можно установить последний элемент последовательности,
после обработки которого ввод заканчивается, или ввести специальный признак,
который будет сигнализировать об окончании исходных данных. Вторая ситуация
реализуется при программировании итерационным циклом. Далее на примерах
решения задач рассматриваются эти ситуации.
Пример 10.40. Возрастающая последовательность натуральных чисел вводится
с клавиатуры до ввода числа 0. Вычислить и напечатать факториал каждого
введенного числа.
Решение. Здесь признаком окончания ввода является число 0, заранее
количество вводимых данных неизвестно, поэтому организуем итерационный
цикл. Исходные данные для этой задачи могут быть такими: 2 4 7 9 13 0. Нужно
получить: 2! 4! 7! 9! 13! Заметим, что для вычисления факториала следующего
числа можно использовать факториал предыдущего числа (по условию числа
возрастают!). Введем следующие обозначения: a - введенное число, b - число, с
которого нужно
продолжить вычисление факториала, i - счетчик выполненных
умножений, p - факториал числа.
{ фрагмент 39 }
p:=1;
b:=1;
read(a);
while a<>0 do
begin
for i:=b to a do p:=p*i;
write('факториал ',a,' = ',p,' ');
b:=a+1;
read(a)
end.
Упражнения:
1. Зачем в программе использован оператор b:=a+1? Можно ли его было
выполнить после оператора ввода?
2. Убывающая последовательность натуральных чисел вводится с клавиатуры
до тех пор, пока не будет введен 0. Вычислите и напечатайте значение два,
возведенное в степень, равную введенному числу. Вычисления должны быть
эффективными, без повторов.
Пример 10.41. Последовательность из n положительных чисел вводится с
клавиатуры. Найти сумму максимального и минимального элементов
последовательности: x
1
, x
2
+1/x
1
, x
3
+1/x
2
, ... , x
n
+1/x
n-1
, где x
i
- введенное число.
Решение. Для ввода данных нужно организовать арифметический цикл по
счетчику до ввода n чисел. Для работы на каждом шаге цикла нужно хранить два
соседних числа. Начальным значением для максимума и минимума может быть
значение x
1
.
{ фрагмент 40 }
read(a); { вводим первое число последовательности }
max:=a;
                                        120

вводимых элементов. Определить окончание ввода в этом случае можно одним из
следующих способов. Можно установить последний элемент последовательности,
после обработки которого ввод заканчивается, или ввести специальный признак,
который будет сигнализировать об окончании исходных данных. Вторая ситуация
реализуется при программировании итерационным циклом. Далее на примерах
решения задач рассматриваются эти ситуации.
   Пример 10.40. Возрастающая последовательность натуральных чисел вводится
с клавиатуры до ввода числа 0. Вычислить и напечатать факториал каждого
введенного числа.
   Решение. Здесь признаком окончания ввода является число 0, заранее
количество вводимых данных неизвестно, поэтому организуем итерационный
цикл. Исходные данные для этой задачи могут быть такими: 2 4 7 9 13 0. Нужно
получить: 2! 4! 7! 9! 13! Заметим, что для вычисления факториала следующего
числа можно использовать факториал предыдущего числа (по условию числа
возрастают!). Введем следующие обозначения: a - введенное число, b - число, с
которого нужно продолжить вычисление факториала, i - счетчик выполненных
умножений, p - факториал числа.
   { фрагмент 39 }
   p:=1;
   b:=1;
   read(a);
   while a<>0 do
   begin
      for i:=b to a do p:=p*i;
      write('факториал ',a,' = ',p,' ');
      b:=a+1;
      read(a)
   end.

   Упражнения:
   1. Зачем в программе использован оператор b:=a+1? Можно ли его было
выполнить после оператора ввода?
   2. Убывающая последовательность натуральных чисел вводится с клавиатуры
до тех пор, пока не будет введен 0. Вычислите и напечатайте значение два,
возведенное в степень, равную введенному числу. Вычисления должны быть
эффективными, без повторов.
   Пример 10.41. Последовательность из n положительных чисел вводится с
клавиатуры. Найти сумму максимального и минимального элементов
последовательности: x1, x2+1/x1, x3+1/x2, ... , xn+1/xn-1, где xi - введенное число.
   Решение. Для ввода данных нужно организовать арифметический цикл по
счетчику до ввода n чисел. Для работы на каждом шаге цикла нужно хранить два
соседних числа. Начальным значением для максимума и минимума может быть
значение x1.
   { фрагмент 40 }
   read(a); { вводим первое число последовательности }
   max:=a;