Файл: Рекурсивные и итерационные алгоритмы: Особенности и примеры использования (История развития языка программирования Pascal).pdf
Добавлен: 31.03.2023
Просмотров: 574
Скачиваний: 7
СОДЕРЖАНИЕ
1. РЕКУРСИЯ. РЕКУРСИВНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ
2. РЕКУРСИВНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ
2.1 История развития языка программирования Pascal
2.2 Основы программирования на языке программирования Pascal
2.3 Основные алгоритмические структуры в Pascal
2.4 Процедуры и функции в языке программирования Pascal
Использование для реализации отдельных объектов рекурсии позволяет в большинстве случаев существенно сократить программный код, что очень важно при разработке программных продуктов.
Специалисты отмечают и недостатки рекурсивных подходов:
- использование рекурсии часто не является очевидным приемом и требует от разработчика наличия некоторого опыта программирования;
- рекурсивные алгоритмы требовательны к ресурсам компьютера и не являются быстрыми.[15]
ЗАКЛЮЧЕНИЕ
В процессе выполнения курсовой работы были изучены понятие рекурсии в целом, его применение в лингвистике, искусстве, математике и программировании.
Исследованы такие объекты как фрактальное определение, фрактальная формула, фрактальная зависимость, фрактальный алгоритм.
С целью выполнения поставленных при работе над курсовой работой задач проанализирована литература по вопросам рекурсии, рассмотрена теория рекурсивных алгоритмов, изучены классические задачи, решаемые с помощью применения рекурсии.
Выполнена большая практическая работа по разработке и отладке рекурсивных алгоритмов, их реализации в форме процедур и функций, сравнению с решением аналогичных задач при помощи итерационных методов.
По итогам выполнения курсовой работы можно сделать следующие выводы. Рекурсию не напрасно называют «жемчужиной теории алгоритмов». Программы, составленные с помощью реализации рекурсивного подхода, отличаются изяществом и гармонией.
Многие алгоритмы можно реализовать как при помощи рекурсии, так и итерационными методами. На классических задачах, как показано в главе 2, эффективность этих подходов сопоставима, поэтому разработчик-программист может выбирать метод по своему усмотрению.
В то же время существуют алгоритмы (к ним, например, относятся некоторые алгоритмы быстрой сортировки), рекурсивная реализация которых при больших объемах обрабатываемых данных не является эффективной по использованию машинных ресурсов (память, быстродействие).
Задачи курсовой работы выполнены полностью, цель реализована.
СПИСОК ЛИТЕРАТУРЫ
- Ахо А., Хопкрофт Дж., Ульман Дж. Построение и анализ вычислительных алгоритмов. — М.: Мир, 2015. – 412 с..
- Беллман Р. Динамическое программирование. — М.: Иностранная литература, 2014. – 244 с.
- Бобровский С. Программирование на языке QBasic для школьников и студентов. – М.:Инфорком-Пресс, ДЕСС, 2017. – 427 с.
- Боровский, А. C++ и Pascal в Kylix 3. Разработка интернет-приложений и СУБД / А. Боровский. - М.: БХВ-Петербург, 2015. - 544 c.
- Вирт Н. Алгоритмы + структура данных = программы. - М.: Мир, 1985.- 209 с.
- Вирт Н. Алгоритмы и структуры данных. - М.: Мир, 1989.- 121 с.
- Грызлов В.И., Грызлова Т.П. Турбо Паскаль 7.0. - М.: ДМК, 2015. – 400 с.
- Давыдов, В. Visual C++. Разработка Windows-приложений с помощью MFC и API-функций / В. Давыдов. - М.: БХВ-Петербург, 2018. - 576 c.
- Дайтибегов Д. - М., Черноусов Е.А. Основы алгоритмизации и алгоритмические языки. - М.: ФиС, 2016.- 563 с.
- Джонс Ж., Харроу К. Решение задач в системе Turbo Pascal. - М.: ФиС, 2018.- 391 с.
- Кормен Т., Лейзерсон Ч., Ривест Р. Алгоритмы: построение и анализ. — М.: МЦНМО, 2015. – 421 с.
- Крупский В.Н., Плиско В.Е. Теория алгоритмов – М.: ИЦ «Академия», 2016 – 208 с.
- Лаврова И.А., Максимова Л.Л. Задачи по теории множеств, математической логике - М.: ФИЗМАТЛИТ, 2014. — 257 с.
- Лукин С. Н. Turbo Pascal 7.0. Самоучитель для начинающих. – 2-е изд., стер. – М.: Диалог-МИФИ, 2015. – 342 с.
- Мальцев А.И. Алгоритмы и рекурсивные функции М.: Наука, 2017 – 269 с.
- Меженный О. А. Turbo Pascal. Самоучитель.- М.: Диалектика, 2018. – 336 с.
- Тихомирова А.Н. Теория алгоритмов – М.: ИЦ МИФИ, 2016 – 315 с.
- Усков О.Ф. Программирования на языке Паскаль. Задачник. – С.-Пб.: Питер, 2014. – 336 с.
- Федоренко Ю.А. Алгоритмы и программы на Pascal. – С.-Пб.: Питер, 2017. – 240 с.
- Шпак А.Ю., Turbo Pascal 7.0 на примерах— М.: Юниор, 2016. -496 с.
ПРИЛОЖЕНИЕ 1
program power;
// Рекурсивная функция вычисления степени числа
function stepen(n:integer; st: integer): integer;
begin
if (st>0) then
stepen:=n*stepen(n,st-1)
else stepen:=1;
end;
begin
var x,y,i:integer;
writeln (' Программа вычисляет неотрицательную степень целого числа ');
writeln (' при помощи рекурсивной функции ');
writeln('*************************************************************');
writeln;
for i:=1 to 5 do begin
write( 'Введите основание степени x = ');
readln (x);
write( 'Введите показатель степени y = ');
readln (y);
writeln;
writeln( 'Значение ',x,' в степени ',y,' равно ', stepen(x,y));
writeln;
end;
end.
ПРИЛОЖЕНИЕ 2
program factorial_1;
var i, n,fn:integer;
function fact(n:integer):integer;
var f:integer;
begin
if (n<=1) then f:=1
else
begin
f:=fact(n-1)*n;
writeln ('Шаг ',n,': n! = ',f);
end;
fact:=f;
end;
begin
var d := Milliseconds;
writeln (' Программа рекурсивного вычисления факториала числа ');
writeln ('===========================================================');
writeln;write (' Введите натуральное число n = ');
readln(n);
writeln(' Промежуточные вычисления ');
writeln('---------------------------------');
fn:=fact(n);
writeln;writeln (' Факториал числа ');
writeln('-----------------------------');
writeln (' ', n,'! = ', fn);
writeln;
writeln(' Программа выполняется за ',(Milliseconds-d)/1000, ' секунд.');
end.
program factoria1_2;
var i, n,fact:integer;
begin
var d := Milliseconds;
writeln (' Программа вычисления факториала числа по определению ');
writeln ('===========================================================');
writeln;write (' Введите натуральное число n = ');
readln(n);
writeln(' Промежуточные вычисления ');
writeln('---------------------------------');
//начальное значение переменной-счетчика
fact:=1;
// вычисление факториала как произведения чисел от 1 до n
for i:=1 to n do
begin
if (n<=1) then fact:=1
else fact:=fact*i;
writeln ('Итерация ',i,': n = ',fact);
end;
writeln;writeln(' Факториал числа ');
writeln('-----------------------------');
writeln (' ', n,'! = ', fact);
writeln(' Программа выполняется за ',(Milliseconds-d)/1000, ' секунд.');
end.
ПРИЛОЖЕНИЕ 3
program Sneg;
uses GraphABC;
//Рекурсивная процедура ris1
procedure ris(x, y, l, u : Real; t : Integer);
procedure ris1(Var x, y: Real; l, u : Real; t : Integer);
begin
ris(x, y, l, u, t);
x := x + l*cos(u);