Рекуррентные соотношения. Процедуры и функции.

advertisement
РЕКУРРЕНТНЫЕ
СООТНОШЕНИЯ.
ПРОЦЕДУРЫ И ФУНКЦИИ.
РЕКУРРЕНТНОЕ СООТНОШЕНИЕ
Суть метода решения задач с помощью рекуррентных соотношений
заключается в том, чтобы:
· Установить факт возможности решения задачи данным методом, то есть
убедиться, что реккурентное соотношение существует и есть смысл тратить
время на его поиски и вывод;
· Ввести рекуррентную величину от одного, двух и более параметров;
· Определить, как найти результат решения задачи при вычислении
рекуррентной величины;
· Установить начальные значения рекуррентной величины;
· Исходя из специфики задачи, ввести корректное рекуррентное соотношение;
· Проверить правильность рекуррентного соотношения для значений,
просчитанных вручную или вспомогательными программами; в этот момент
можно реализовать саму программу, вычисляющую рекуррентную величину;
· Определить, помещается ли классическое представление выведенной
рекуррентной величины в виде массива соответствующей размерности в
статическую память, если нет, то видоизменить рекуррентное соотношение
для программы, корректно функционирующее в заданных ограничениях, и
соответствующим образом скорректировать программу.
ЗАДАНИЯ:
а) Последовательность чисел а0, а1, а2, … образуется по закону: а0=1; аk=kak-1+1/k (k=1,2,…).
Дано натуральное число n. Получить а1, а2, …, аn.
б) Последовательность Фибоначчи образуется так: первый и второй члены равны 1, каждый
следующий равен сумме двух предыдущих(1,1,2,3,5,8,13,...). Дано натуральное число n(n≥3).
Найти К-ый член последовательности Фибоначчи. Получить первые n членов
последовательности.
в) Одноклеточная амеба каждые 3 часа делится на 2 клетки. Определить, сколько клеток будет
через 3,6,9,...,24 часа, если первоначально была 1 клетка.
г) Составить программу для расчета факториала натурального числа n.( факториал числа n равен
1*2*…..*n)
д)Найти наибольший общий делитель двух заданных натуральных чисел, используя алгоритм
Евклида.
а)
б)
б)
в)
г)
д)
В языке Паскаль имеется два вида подпрограмм процедуры и функции.
Процедуры и функции помещаются в раздел описаний
программы. Для обмена информацией между процедурами и
функциями и другими блоками программы существует
механизм входных и выходных параметров. Входными
параметрами называют величины, передающиеся из
вызывающего блока в подпрограмму (исходные данные для
подпрограммы), а выходными - передающиеся из подрограммы в
вызывающий блок (результаты работы подпрограммы).
Одна и та же подпрограмма может вызываться неоднократно,
выполняя одни и те же действия с разными наборами входных
данных. Параметры, использующиеся при записи текста
подпрограммы в разделе описаний, называют формальными, а
те, что используются при ее вызове - фактическими.
ФУНКЦИИ
Function: Функция - это часть программы, которая вычисляет и возвращает значение.
Формат описания функции:
function имя функции (формальные параметры):тип результата;
раздел описаний функции
begin
исполняемая часть функции
end;;
Замечания:
Заголовок функции определяет идентификатор функции, формальные параметры (если есть), и тип
результата функции.
Допустимы порядковые, вещественные, строковые и указательные типы результата.
Функция вызывается при оценке выражения, использующего данную функцию.
Заголовок функции сопровождается:

Разделом описаний, в котором объявляются локальные объекты

Операторной частью, в которой находятся операторы, которые будут выполнены при вызове
функции

Операторная часть должна содержать по крайней мере один оператор, который назначает
присваивает значение идентификатору функции. Результатом функции будет последнее
присвоенное значение.
Пример объявления функции:
Function UpCaseStr(S : String) : String;
Var I : Integer;
Begin
For I:=1 To Length(S) Do
If (S[I]>='a') And (S[I]<='Z') Then Dec(S[I], 32);
UpCaseStr:=S;
End;
ЗАДАНИЯ:
а) Даны две последовательности целых чисел: a1,a2,…,a8 и b1,b2,…,b8 .
Найти количество четных чисел в первой из них и количество нечетных
во второй.(Определить функцию, позволяющую распознавать четные
числа).
б) Дано число N и целые числа а0,а1…,аn. Найти количество чисел
ai(i=1,…,n) являющихся степенями пятерки.( Определить функцию,
позволяющую распознавать степень пятерки).
в) Даны 2 натуральных числа выяснить является ли хоть одно из них
палиндромом(перевёртышем) т.е. таким числом десятичная запись
которого читается одинаково слева на право и справа на
лево.(Определить функцию позволяющую распознавать числа
палиндромы.).
а)
б)
в)
ПРОЦЕДУРЫ.
Procedure: Процедура - это часть программы, в которой выполняется
специфическое действие, обычно основанное на наборе параметров.
Процедура вызывается с помощью процедурного оператора.
Заголовок процедуры сопровождается:
 разделом описаний, в котором объявляются локальные объекты
 операторами, находящимися между Begin и End, которые определяют, что
должно быть выполнено при вызове процедуры.
Формат описания процедуры имеет вид:
procedure имя процедуры (формальные параметры);
раздел описаний процедуры
begin
исполняемая часть процедуры
end;
ПРИМЕР ОБЪЯВЛЕНИЯ ПРОЦЕДУРЫ
Procedure WrStr (X, Y : Integer; S : String);
Var SaveX, SaveY : Integer;
Begin
SaveX:=WhereX;
SaveY:=WhereY;
GotoXY(X, Y);
Write(S);
GotoXY(SaveX, SaveY);
End;
ЗАДАНИЕ:
Заданы стороны двух треугольников. Найти
сумму их периметров и сумму их
площадей.(Определить процедуру для расчета
периметра и площади треугольника по его
сторонам).
Download