КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Требования к отчету. Рекурсивная подпрограмма
Содержание работы Begin Рекурсивная подпрограмма Рекурсивной называется подпрограмма, в которой содержится обращение к самой себе. Возможность рекурсивного обращения связана с тем, что при каждом новом обращении к подпрограмме параметры, которые она использует, заносятся в память, причем параметры предыдущего обращения также сохраняются. Ясно, что для завершения вычислений каждая рекурсия должна содержать хотя бы одну нерекурсивную ветвь алгоритма, заканчивающуюся возвращением в вызывающую программу. В ряде случаев рекурсивное оформление подпрограммы может быть более компактным и эффективным, но не следует забывать о расходе времени на повторные вызовы функции и об опасности переполнения ячейки памяти. Простой пример рекурсивной функции – вычисление факториала:
Пример 3. Вариант функции, рекурсивно вычисляющей факториал. functicon Factorial(m: Byte): Longint; if (m=0) or (m=1) then Factorial:= 1 else Factorial:= m * Factorial(m-1); end; 3.1 Реализовать следующую программу: Даны отрезки а, b, с. Если из этой тройки отрезков можно построить треугольник, то вычислить его площадь, в противном случае вывести на печать сообщение "нельзя построить треугольник". Пример 1. Даны отрезки а, b, с. Если из этой тройки отрезков можно построить треугольник, то вычислить его площадь, в противном случае вывести на печать сообщение "нельзя построить треугольник". Решение. Program Square; Var a,b,c,S: Real; {процедура нахождения площади треугольника по формуле Герона} Procedure Streug(x,y,z:Real;Var ss:Real); Var p:Real; Begin p:=(x+y+z)/2; ss:=sqrt(p*(p – x)*(p – y)*(p – z)); End; Begin Writeln('Введите длины 3-х отрезков'); Write('a='); Readln(a); Write('b='); Readln(b); Write('c='); Readln(c); if (a>0) and (b>0) and (c>0) and (a+b>c) and (a+c>b) and (b+c>a){контроль ввода} Then Begin Streug(a,b,c,S); {вызов процедуры} Writeln('Площадь S = ', S) {вывод результата} End Else Writeln('нельзя построить треугольник'); End.
3.2 Выполнить свой вариант задания на функции из приложения А и Б.
3.3 Составить программу вычисления числа сочетаний , используя предложенную в примере 3 рекурсивную функцию вычисления факториала числа. 3.4 Выполнить задание для самостоятельной работы по вариантам из приложения В, оформив подпрограммы заполнения, подсчета нужного числового значения (по заданию) и вывода массива в виде отдельных функций. В основной программе произвести вызов нужных функций для двух матриц и выдать в качестве результата наибольшее из полученных значений. Все необходимые данные должны передаваться подпрограммам в качестве параметров; все величины, используемые только внутри подпрограмм, должны быть описаны как локальные. Заполнение массивов следует производить с помощью датчика случайных чисел. Например, для заполнения матрицы случайными числами от -20 до 20 и вывода ее элементов на экран можно создать следующую функцию: Procedure InMatr(Var x:TArray; row,col:Byte); Var i,j:Byte; {Описание локальных переменных} Begin {Формирование случайной матрицы и ее вывод на экран} Randomize; For i:=1 to row do Begin For j:=1 to col do Begin X[i,j]:=Random(41)-20; {x[i,j] формируется случайно} Write(x[i,j]:7:2,' '); {X[i,j] выводится на экран} End; Writeln; End; End; Тогда в основной программе вызов этой процедуры будет выглядеть следующим образом: Program prog; Type TArray=Array[1..10,1..10] of Real; Var A: TArray; n,m: Byte; {описание необходимых процедур и функций} BEGIN {глобальный блок – основная программа} Write('Введите число строк и столбцов матрицы А (не более 10) '); Readln(n,m); {вызов процедуры формирования и печати матрицы} InMatr(A,n,m); ... Процедура печати матрицы может выглядеть следующим образом: Procedure Print(x:TArray; row,col:Byte); Var i,j:Byte; {Описание локальных переменных} Begin For i:=1 to row do Begin For j:=1 to col do Begin Write(x[i,j]:7:2,' '); End; Writeln; End; End;
3.5 Сохранить все результаты в файлы и оформить отчет. Отчет по работе должен содержать: · название, цель, задачи работы; · номер и условие своего варианта; · текст (листинг) программ; · полученные численные результаты; · ответы на контрольные вопросы по указанию преподавателя.
Дата добавления: 2015-05-10; Просмотров: 351; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |