Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
OsnovPaskal.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
2 Мб
Скачать
☆

11. Цикл с параметром.

Формат оператора

For параметр :=<выражение1> To (DownTo) <выражение2> Do <оператор>;

Выполнение оператора For в первом варианте (То) происходит по следующей схеме:

1. Вычисляются значения <Выражения 1> и <Выражения 2>. Это делается только один раз при входе в цикл.

2. Параметру цикла присваивается значение <Выражения 1>.

3. Значение параметра цикла сравнивается со значением <выражения 2>. Если параметр цикла меньше или равен этому значению, то выполняется тело цикла, в противном случае выполнение цикла заканчивается.

  1. Вычислить площади квадратов при различных значениях сторон a=3, 5, 7, 9, 11, 13.

  2. Вычислить периметры десяти прямоугольников при заданных значениях сторон a и b.

  3. Вычислить значения функции y=4x3-2x2+5 для x[-3; 1], x=0,1.

  4. Вычислить значения функций P1(x), P2(x), P3(x) для x=0, 0.5, 1, …20

P1(x)=sin x, P2(x)= 3 cos x2-1, P3(x)=(5 sin x –3x)/2

  1. Рассчитать таблицу значений функции:

Для x [0; 2], x=0,1

  1. Одноклеточная амеба каждые 3 часа делится на 2 клетки. Определить, сколько амеб будет через 3, 6, 9, 12, …24 часа.

12. Накопление суммы, произведения, количества.

  1. Дано 10 чисел: a1, a2, a3, … a10. Вычислить их сумму.

  2. Даны целые числа: a1, a2, a3, … an. Вычислить их произведение.

  3. Дано натуральное число n. Вычислить 2n, не используя операцию возведения в степень.

  4. Вычислить n!

  5. Вычислить сумму: cos x + cos 2x + cos 3x +…+ cos nx.

  6. Вычислить сумму:

Домашнее задание:

  1. 1+2+3+…+ n

  2. 1+1/2+1/3+1/4+…+1/n

  3. sin x + sin x2 + sin x3 + …+ sin xn

  4. a(a-n)(a-2n)(a-4n)…(a – n2n)

  5. Вычислить среднее арифметическое заданных n элементов последовательности.

13. Сочетание циклов и разветвлений.

  1. Дано n целых случайных чисел из диапазона (-20;50). Найти количество отрицательных чисел среди них.

  2. Дано n целых чисел a1, a2, a3, … an. Найти среднее арифметическое четных чисел.

  3. Вычислить среднее значение функции, заданной на отрезке [-4;6] с шагом 0.5:

,

где b=5, а – значение, вводимое с клавиатуры.

  1. Даны целые случайные числа из диапазона (-30;50). Получить удвоенную сумму чисел, кратных 5 и некратных 7.

14. Вычисление рекуррентных последовательностей

Рекуррентная последовательность – это бесконечный ряд чисел, каждое из которых выражается через предыдущие.

ak+1=f(a1…, ak);

ak+2=f(a1…, ak+1); …

ai= f(ai-1, ai-2, …, ai-k)

Примерами рекуррентных последовательностей служат арифметические и геометрические последовательности:

1,3,5,7,9…

1,2,4,8,16… - глубина рекурсии равна1 (каждый следующий элемент зависит только от одного предыдущего).

Другая последовательность Фибоначчи: 1,1,2,3,5,8,13,21,34,55,…-каждое число равно сумме значений двух предыдущих (глубина 2)

Программирование вычислений рекуррентных последовательностей.

С рекуррентными последовательностями связаны задачи такого рода:

1) вычислить заданный (i-й) элемент последовательности;

2) математически обработать определенную часть последовательности (например, вычислить сумму или произведение первых п членов);

3) подсчитать количество элементов на заданном отрезке последовательности, удовлетворяющих определенным свойствам;

4) определить номер первого элемента, удовлетворяющего определенному условию;

5) вычислить и сохранить в памяти заданное количество элементов последовательности.

Данный перечень задач не претендует на полноту, но наиболее часто встречающиеся типы он охватывает. В четырех первых задачах не требуется одновременно хранить в памяти множество элементов числового ряда. В таком случае его элементы могут получаться последовательно в одной переменной, сменяя друг друга.

  1. Вычислить n-й элемент арифметической профессии:

Подставляя последовательно значения номеров элементов i, получим:1, 3, 5, 7, 9,…, арифметическую прогрессию с шагом 2. Решение:

Var N , I : 0 .. MaxInt;

A: Real;

Begin

Write (' N = ') ;

ReadLn ( N ) ;

A : = l ;

For I : = 2 To N Do

А:=А+2;

WriteLn(' A ( ' , N : 1 , ' ) = ' , A : 6 : 0 )

End.

Рекуррентная формула ai= ai-1+ 2 перешла в оператор А := А + 2.

  1. Просуммировать первые п элементов геометрической прогрессии

(не пользуясь формулой для суммы первых п членов прогрессии).

Var N , I : 0 . . Maxlnt;

A , S : Real;

Begin

Write ( ' N = ' ) ; ReadLn(N);

A : = l ;

S:=A;

For I : = 2 To N Do

Begin

A:=2*A;

S:=S+A

End;

WriteLn('Сумма равна ' , S : 6 : 0)

End.

При вычислении рекуррентной последовательности с глубиной 2 уже нельзя обойтись одной переменной. Это видно из следующего примера.

  1. Вывести на печать первые n (n > 3) чисел Фибоначчи. Подсчитать, сколько среди них четных чисел.

Var N , I , K , F , F1 , F2 : 0 . . Maxlnt;

Begin

F l : = l ; F 2 : = l;

K:=0;

WriteLn( ' F ( 1 ) = ' , F1 , ' F ( 2 ) = \ F2 ) ;

For I : = 3 To N Do

Begin

F:=F1+F2;

WriteLn(' F(' , I : 1 , ' ) = ' , F ) ;

If Not Odd(F) Then K:=K+1;

F1 : = F2 ; F2:=F

End;

WriteLn(' Количество четных чисел в последовательности равно ' , К)

End.

Понадобились три переменные для последовательного вычисления двухшаговой рекурсии, поскольку для нахождения очередного элемента необходимо помнить значения двух предыдущих.

  1. Для заданного вещественного х и малой величины (например, = 0,000001) вычислить сумму ряда

включив в нее только слагаемые, превышающие .

Известно, что сумма такого бесконечного ряда имеет конечное значение, равное ex, где е = 2,71828... — основание натурального логарифма.

Поскольку элементы этого ряда представляют собой убывающую последовательность чисел, стремящуюся к нулю, то суммирование нужно производить до первого слагаемого, по абсолютной величине не превышающего .

Здесь формула для i-го элемента будет: , или иначе:

Решение:

Var A,X,S,Eps: Real;

I : Integer;

Begin

Write(' X = ') ; ReadLn(X);

Write('Epsilon ='); ReadLn(Eps);

A:=l; S:=0; I:=0;

While Abs(A)>Eps Do

Begin

S:=S+A;

I:=1+1;

A:=A*X/I

End;

WriteLn('Сумма ряда равна1, S:10:4)

End.

Как и прежде, значения одношаговой рекуррентной последовательности вычисляются в одной переменной.

Каждое повторное выполнение цикла в этой программе приближает значение s к искомому (уточняет значащие цифры в его записи). Такой вычислительный процесс в математике называется итерационным процессом. Соответственно, циклы, реализующие итерационный вычислительный процесс, называются итерационными циклами. Для их организации используются операторы while или Repeat.

  1. Для заданного натурального N и вещественного х (х >0) вычислить значение выражения:

В этом случае рекуррентность не столь очевидна. Попробуем найти ее методом индукции.

, , ,…

Решение:

Var A,X: Real; I,N: Integer;

Begin

Write(' X = ' ) ; ReadLn(X);

Write(' N = ' ) ; ReadLn(N);

A:= Sqrt(X);

For I:= 2 To N Do

A:=Sqrt(X+A);

WriteLn('Ответ:',A)

End.

  1. В ходе лечебного голодания масса пациента за 30 дней снизилась с 96 до 70 кг. Было установлено, что ежедневные потери массы пропорциональны массе тела. Вычислить, чему была равна масса пациента через к дней после начала голодания для k=1,2,...,29.

Обозначим массу пациента в i-й день через pi (i= 0,1,2,..., 30).

Из условия задачи известно, что p0- 96 кг, р30 = 70 кг.

Пусть К— коэффициент пропорциональности убывания массы за один день. Тогда р1=р0-Кр0=(1 -К)р0;

pi=(1 -К)рi; К неизвестно, но его можно найти из соотношения p30=70

p30=(1-k)p29=(1-k)2p28=…(1-k)30p0

(1-k)30*96=70

Решение:

Var I: Byte;

P,Q: Real;

Begin

P:=96;

Q:=Exp(l/30*Ln(70/96) ) ;

For I:=l To 29 Do

Begin

P:=Q*P;

WriteLn(I,'-й день-',Р:5:3,'кг')

End

End.

  1. Даны два числа a и b (а>1). Вычислить все члены бесконечной последовательности а, а2, а3,…, меньшие числа b. Вычисление по рекуррентной формуле.

  2. Непосредственным суммированием найти сумму членов арифметической прогрессии (а1=3, d=2), не превышающих по величине 90.

  3. Рекуррентная последовательность определена следующим образом:

Для данного натурального п получить значение аn.

  1. Дана последовательность:

Вычислить произведение элементов с 1-го по 20-й.

  1. Используя рекуррентный подход, вычислить сумму многочлена 10-й степени по формуле Горнера, где х — данное вещественное число:

10х10 + 9х9+ 8х8+... + 2х2 + х = ((...((10х+ 9)х+ 8)х +... + 2)х+ 1)х.

  1. Для данного вещественного х и натурального N вычислить цепную дробь:

  1. Вычислить и вывести все члены числового ряда , превышающие значение 10-5.

  2. Функцию можно вычислить как предельное значение последовательности, определяемой рекуррентной формулой:

Начальное значение y0 задается произвольно (желательно ближе к ). За приближенное значение корня с точностью  берется первое ук, для которого выполняется условие: |ук – УК-1| < . Составить программу.

  1. 1+x/1! + x/2! + x/3! +…+ x/n!