РЕКУРРЕНТНЫЕ СООТНОШЕНИЯ. ПРОЦЕДУРЫ И ФУНКЦИИ. РЕКУРРЕНТНОЕ СООТНОШЕНИЕ Суть метода решения задач с помощью рекуррентных соотношений заключается в том, чтобы: · Установить факт возможности решения задачи данным методом, то есть убедиться, что реккурентное соотношение существует и есть смысл тратить время на его поиски и вывод; · Ввести рекуррентную величину от одного, двух и более параметров; · Определить, как найти результат решения задачи при вычислении рекуррентной величины; · Установить начальные значения рекуррентной величины; · Исходя из специфики задачи, ввести корректное рекуррентное соотношение; · Проверить правильность рекуррентного соотношения для значений, просчитанных вручную или вспомогательными программами; в этот момент можно реализовать саму программу, вычисляющую рекуррентную величину; · Определить, помещается ли классическое представление выведенной рекуррентной величины в виде массива соответствующей размерности в статическую память, если нет, то видоизменить рекуррентное соотношение для программы, корректно функционирующее в заданных ограничениях, и соответствующим образом скорректировать программу. ЗАДАНИЯ: а) Последовательность чисел а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; ЗАДАНИЕ: Заданы стороны двух треугольников. Найти сумму их периметров и сумму их площадей.(Определить процедуру для расчета периметра и площади треугольника по его сторонам).