Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование для начинающих 2011-09-02.pdf
Скачиваний:
45
Добавлен:
09.06.2015
Размер:
576.39 Кб
Скачать

Пример 5. Вычисление факториала.

Факториалом целого числа n называется произведение всех целых чисел от 1 до n. Обозначается n!. То есть:

n! = 1*2*3*…*n

Вычисляющая факториал программа выглядит так:

readln(n);

p:=1;

for k:=2 to n do p:=p*k;

writeln(p);

4.4. Комбинация обоих приемов

Пример 6: Вычислить значение выражения 1!+2!+3!+…+n!

Решение в лоб состоит в том, чтобы в теле цикла, осуществляющего суммирование, производить вычисление факториала:

s:=0;

for i:=1 to n do begin

{Вычисление факториала от i} p:=1;

for k:=1 to i do p:=p*k;

{Добавление вычисленного факториала к сумме} s:=s+p;

end;

Заметим, однако, что при вычислении факториала на каждом шаге получается факториал все большего целого числа. Эти «промежуточные» результаты однократного вычисления факториала и можно суммировать:

s:=0;

p:=1;

for i:=1 to n do begin

p:=p*i;

s:=s+p; end;

4.5. Цикл с downto

Если вместо слова to в цикле for поставить downto, то после выполнения каждого шага цикла переменная-счетчик будет не увеличиваться, а уменьшаться на единицу. Так приведенный ниже код:

for i:=10 downto 1 do writeln(i);

Напечатает числа 10, 9, 8, …

Если начальное значение в цикле с downto будет меньше конечного, то тело цикла не выполнится ни разу.

4.6. Операторы break и continue

Ходом выполнения цикла можно управлять с помощью двух операторов break и continue.

break – прерывает выполнение цикла, управление передается операторам, следующим за оператором цикла.

continue – прерывает выполнение очередного шага цикла и возвращает управление в начало цикла, начиная следующий шаг.

Например:

for n:=1 to 10 do begin

if n mod 2 = 0 then continue;

if n = 7 then break; writeln(n);

end;

Данная программа будет печатать только нечетные числа (из-за срабатывания continue). Цикл прекратит выполняться, когда n станет равно 7. В итоге будут напечатаны числа: 1, 3, 5.

Контрольная работа №3

1.Сколько раз на экран выведется слово Hello?

for i:=-2 to 7 do writeln('Hello');

2.Какого типа должна быть переменная i в предыдущем задании?

3.Что изменится, если убрать операторные скобки (слова begin и end)?

for i:=1 to 10 do begin

writeln(i+1); end;

4.Что выведут на экран приведенные программы

(а)s:=1;

for i:=1 to 5 do if i>2 then

s:=s*i;

writeln(s);

(б)s:=0;

a:=3;

for i:=1 to 10 do

s:=a+i;

writeln(s);

(в)s:=0;

a:=5;

for i:=1 to 3 do

s:=2*a;

writeln(s);

5.Составьте таблицы изменения переменных для циклов

(а)s:=0;

p:=1;

for i:=1 to 5 do begin

p:=p*i;

s:=s+p; end;

(б)c:=2;

for i:=1 to 4 do

c:=1/(1-c);

(в)s:=0;

p:=1;

for i:=1 to 5 do begin

p:=-p*2; s:=s+p;

end;

Задание 3. Цикл for. Приемы накопления суммы и произведения.

1.Цикл for

1.1.Напечатайте таблицу умножения на 5. предпочтительно печатать: 1 x 5 = 5,

2 x 5 = 10,

Ане просто 5, 10 и т.д.

1.2.Напечатайте в столбик нечетные числа от 3 до 25.

1.3.Напечатайте свое имя в углах экрана.

1.4.Выведите на экран таблицу значений синуса от 0 до 2*Pi. В каждой строке должны стоять один аргумент и одно значение. Количество значений аргумента пусть задает пользователь.

2.Прием накопления суммы

2.1.Напишите программу, которая вычисляет сумму квадратов чисел т 1 до N. Число N программа должна запрашивать у пользователя.

2.2.Напишите программу, перемножающую целые числа без использования операции «*». Например, при умножении целых чисел n*m число m надо сложить само с собой n раз (m+m+…+m).

2.3.Используя прием накопления суммы, найдите сумму нечетных чисел от 1 до N. Число N программа должна запрашивать у пользователя.

2.4.Выведите на экран последовательность сумм чисел от 1 до n. n меняется от 1 до 10. То есть первые члены последовательности: 1, 3 (1+2), 6 (1+2+3), 10 (1+2+3+4) и т.д.

2.5.Вычислите сумму элементов последовательности сумм из предыдущего

задания.

2.6.Найдите сумму 100 синусов от аргументов в диапазоне от 0 до 2*Pi (из задачи 1.4).

3.Прием накопления произведения

3.1.Факториалом целого числа n (обозначается n!) называется произведение всех целых чисел от 1 до n. Напишите программу вычисления факториала введенного пользователем числа.

3.2.Напишите программу возведения числа в целую степень. Число и степень запрашивайте у пользователя.

4.Комбинация обоих приемов

4.1.Используя комбинацию обоих приемов, напишите программу, вычисляющую функцию 1 + x + x2 + + x10 .

4.2.Вычислите сумму ряда:

si =1+ x + x2 +... + xi

2! i!

Из мат. анализа известно, что nlim→∞ sn = exp(x) . Выясните, на сколько 5-й и 10-й член последовательности таких сумм отличается от exp(x).