Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

Отчет по лабораторной работе 8 ldquo;Рекурсия rdquo; Выполнил- студент группы 514

Работа добавлена на сайт samzan.net: 2015-07-10

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 19.5.2024

Министерство образования и науки РФ.

Федеральное агентство по образованию.

Томский Государственный Университет Систем Управления и

Радиоэлектроники.

ТУСУР.

Кафедра компьютерных систем в управлении и проектировании.

КСУП.

Отчет по лабораторной работе № 8

“Рекурсия ”

Выполнил: студент группы №514

______________________

Проверил: ассистент кафедры КСУП

______________________

ТОМСК – 2005г.

Содержание

1. Введение____________________________________________________________      стр.

2.Основная часть:

          а)условие задачи №2______________________________________________     стр.

          б)описание переменных____________________________________________     стр.

          в)пошаговое описание алгоритма___________________________________      стр.

          г)блок-схема______________________________________________________     стр.

          д)программа с комментариями_____________________________________     стр.

          е) условие задачи №14______________________________________________     стр.

          ж) описание переменных___________________________________________     стр.

          з) пошаговое описание алгоритма____________________________________    стр.

          и) блок-схема (осн. Программа)______________________________________    стр.

          к) )блок-схема (процедура и функция)________________________________     стр.

          к) программа с комментариями_____________________________________     стр.

3.Вывод_______________________________________________________________      стр.

 

Введение.

  Объект называется рекурсивным, если он содержит сам себя или определен с помощью самого себя. Рекурсия встречается не только в математике, но и в обыденной жизни. Каждый сталкивается с рекурсией, когда стоит с зеркальцем перед большим зеркалом. Рекурсия встречается обычно и в природе: деревья имеют рекурсивное строение (ветки образуются из других веток), реки образуются из впадающих в них рек. Клетки делятся рекурсивно. Продолжение жизни связано с рекурсивным процессом. Молекулы ДНК и вирусы размножаются, копируя себя, живые существа имеют потомство, которое в свою очередь, тоже имеет потомство и т. д. Рекурсия распространена и в языке, и в поведении так же, как и в способах рассуждения и познания. Рекурсия в языке, например, может быть в структуре или в содержании:

_Петя сказал, что Вася сказал, что..._

_Знаю, что знаю, но не помню_

_Сделать; заставить сделать; заставить, чтобы заставили сделать;..._

_Замени x этим предложением_

_Запомни и передай это сообщение_

. . .

Литературным примером может служить "рассказ в рассказе", как-то: известное стихотворение "У попа была собака,..." , роман Яна Потоцкого "Рукопись, найденная в Сарагосе", рассказ Хулио Кортасара _Непрерывность парков_ или рассказ Виктора Пелевина _Водонапорная башня_ (и по форме - состоит из одного предложения и по содержанию). Музыкальные формы и действия также могут быть рекурсивными во многих отношениях (например, канон, в котором мелодия сопровождается той же мелодией с задержкой, и другие). Целенаправленное поведение и решение проблем так же являются рекурсивными процессами.

Рекурсия в программировании - один из важнейших принципов  построения подпрограмм. Если процедура P содержит явное обращение к самой себе, то она называется прямо рекурсивной; если P содержит обращение к процедуре Q , которая содержит  (прямо или косвенно) обращение к P, то P называется косвенно рекурсивной. Поэтому использование рекурсии не всегда сразу видно из текста программы. С процедурой принято связывать некоторое множество локальных объектов, т. е. переменных, констант, типов и процедур, которые определены локально в этой процедуре, а вне ее не существуют или не имеют смысла. Каждый раз, когда такая процедура рекурсивно вызывается, для нее создается новое множество локальных переменных. Хотя они имеют те же имена, что и соответствующие элементы множества локальных переменных, созданного при предыдущем обращении к этой же процедуре, их значения различны. Следующие правила области действия идентификаторов позволяют исключить какой-либо конфликт при использовании имен: идентификаторы всегда ссылаются на множество переменных, созданное последним. То же правило относится к параметрам процедуры. Подобно операторам цикла, рекурсивные процедуры могут приводить к бесконечным вычислениям. Поэтому для того, чтобы работа процедуры когда-либо завершилась, необходимо, чтобы рекурсивное обращение к процедуре подчинялось некоторому логическому условию, которое в какой-то момент перестает выполняться.

Основная часть

Задача № 2. Напечатать в обратном порядке заданную строку.

Описание переменных:

  1.  s– тип sting, так как это вводимая строка.;
  2.  n– определяем тип byte, так как нужны целочисленные значения и длина строки не может быть больше 255.

Пошаговое описание:

Шаг №1 Вводим строку;

Шаг №2 Вводим входные параметры равные длине строки n.

Шаг №3 Если порядковое значение выражения S(n) равно длине строки, то переходим к шагу 5, в противном случае выводим символ на экран.;

Шаг №4 Присваиваем n значение равное n-1 и переходим к шагу 3.

Шаг №5 Конец программы.

         Текст программы с комментариями

program lab_8_2;

uses CRT;

var n : byte;                    {Определение типов переменных}

   s : string;

Procedure ShowStr(n : byte);

Begin

  If ord(s[n]) = length(s) then exit else write(s[n]);{сравнение порядкового значения с длиной строки(если не равны,то вывод, в противном случае выход)}

  ShowStr(n - 1){Вызов процедуры для n-1}

 End;

BEGIN

ClrScr;

Readln(s);{Ввод строки}

ShowStr(length(s));{Вызов процедуры с входным параметром равный длине строки}

 ReadKey;

END.{Конец программы}

Результаты работы программы:

1234567890

0987654321

Задача №14 Рекурсивная программа. Дана последовательность ненулевых целых чисел, за которой следует 0. Напечатать сначала все отрицательные числа этой последовательности, а затем все положительные (в любом порядке).

 Описание переменных:

  1)Глобальные

         а) m – определяем тип mas, т.к. это массив чисел, считываемый из        файла;

         б) i – определяем тип byte, т.к. это количество элементов массива;

Описание процедур:

POLвыводит все положительные числа массива.

OTRвыводит все отрицательные числа массива.

Пошаговое описание алгоритма:

       Шаг№1 Ввод массива;

        Шаг№2 Вывод отрицательных чисел;

           Шаг№3 Вывод положительных чисел.

Шаг№4 Конец программы.

Текст программы с комментариями

Program lab_8_14;

Uses Crt;

type mas=array [1..255] of integer;{Задание нового типа переменных}

Var m:mas;{Описание переменных}

   i:byte;

Procedure Pol(n:byte);

Begin

 If n=0 then exit else If m[n]>0 then write(' ',m[n]);{Если n равно 0, то выход, если нет, то если n-ый член больше 0 выводим его на экран}

 Pol(n-1);{Вызов процедуры для n-1}

End;

Procedure Otr(n:byte);

Begin

 If n=0 then exit else If m[n]<0 then write(' ',m[n]);{Если n равно 0, то выход, если нет, то если n-ый член меньше 0 выводим его на экран}

 Otr(n-1);{Вызов процедуры для n-1}

End;

BEGIN

ClrScr;

 Writeln('Введите числа :');

 i:=0;   { Ввод

While true do

 Begin

  Inc(i);

  Readln(m[i]);

  If m[i]=0 then break;  массива   }

 End;

 Pol(i-1);{Вызов процедуры для I-1}

 Writeln;

 Otr(i-1);{Вызов процедуры для I-1}

 ReadKey;

END.{Конец программы}

Результаты работы программы:

Введите числа:

-1

1

-2

2

-3

3

0

-3 –2 –1

3  2  1

Вывод

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




1. тема международных отношений стала подлинно всеобъемлющей всемирной
2. тема здравоохранения отнюдь не наше изобретение
3. язык Friends in Your Life Friends re importnt in your life becuse you spend lot of time with them
4. Открытия и изобретения начала века
5. ru Все книги автора Эта же книга в других форматах Приятного чтения Оноре де Бальзак Евгения Гра
6. исторической практики
7. Структура та особливості діяльності Адміністративного суду
8. технология происходит от греческого
9. Менеджмент профиль Финансовый менеджмент руководителей практики преподавателей.
10. тема стандартов по информации библиотечному и издательскому делу
11. тема СИ 2 Кинематика и динамика
12. Подготовка документов на компьтютере
13. реферат дисертації на здобуття наукового ступеню кандидата медичних наук Київ ~
14. Эвристическая формула благополучия семьи
15. заработная плата наполнилось новым содержанием и охватывает все виды заработков премий надбавок социаль
16. Исследование гидролиза солей.html
17. Dubh Linn which mens Blck Pool
18. вариантом английского слова innovtion
19. реферату- Матеріальні передумови і основні принципи економічного вчення марксизмуРозділ- Історія економічн
20. Тема- Вступ до предмету предмет та завдання дисципліни