Будь умным!


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

Тема- Цикл та рекурсія Виконала- ст

Работа добавлена на сайт samzan.net: 2016-03-13

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

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

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

от 25%

Подписываем

договор

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

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

Київський Національний Університет Технологій і Дизайну

Лабораторна робота №3

Тема: Цикл та рекурсія

Виконала:

ст. гр. БІТ-309

Лесько А.М.

Перевірив:

доц. Демківський О.Б.

Київ 2013

Завдання

1.  Реалізувати наведені в прикладах (приклад 3.1 – приклад 3.6) програми в Visual Prolog 5.2.

2.  Використовуючи отримані навички,  згідно варіанта, написати програму  на мові Пролог, що

реалізує розрахунки по формулі,  наведеній в  таблиці 3.1.  Номер варіанта визначається

порядковим номером студента в журналі викладача.

predicates

arithm_progr (unsigned, long)

arithm_progr_aux (unsigned, long, unsigned, long)

suma_arithm_progr (unsigned, unsigned, unsigned, long)

suma_arithm_progr_aux (unsigned, unsigned, unsigned,  long, unsigned, long)

clauses

arithm_progr (K, FactK):-

arithm_progr_aux (K, FactK, 1,1).

arithm_progr_aux (K, FactK, P, S):-

P <= K,

!,

NewS = S * (2*P + sin(P)),

NewP = P +1,

arithm_progr_aux (K, FactK, NewP, NewS).

arithm_progr_aux (K, FactK, P, S):-

FactK = S.

suma_arithm_progr (K, D, A1, SumaK):-

suma_arithm_progr_aux (K, D, A1, SumaK, 2,A1).

suma_arithm_progr_aux (K, D , A1, SumaK, P, S):-

P <= K,

!,

NewS = S + (A1 + (P-1) * D),

NewP = P +1,

suma_arithm_progr_aux (K, D, A1, SumaK, NewP, NewS).

suma_arithm_progr_aux (K, D, A1, SumaN, P,    S):-

SumaK = S.

goal

/*

 X = 5,

arithm_progr (X, FactX).

*/

 K = 15,

D=4,

A1=3,

suma_arithm_progr(K, D, A1, SumaK).

Завдання 1.

X=5, FactX=5610

1 Solution

Завдання 2.

K=15, D=4, A1=3, SumaK=456

1 Solution

Висновок: В даній роботі ми ознайомились з процесом повторення: циклами та рекурсивними процедурами.

  1.  Назвіть види повторень, які реалізовані в Пролозі.

 Visual Prolog не має конструкцій For, While, Repeat. Не існує прямого способу вираження повтору. Пролог забезпечує тільки два види повторень відкат, за допомогою якого здійснюється пошук багатьох рішень в одному запиті, і рекурсію, в якій процедура викликає сама себе. Visual Prolog розпізнає спеціальний випадок рекурсії, а саме хвостову рекурсію, і компілює її в оптимізовану ітераційну петлю.

Visual Prolog може виражати повторення як в процедурах, так і в структурах даних. Пролог дозволяє створювати структури даних, розмір яких не відомий під час створення.

  1.  Дайте визначення поняттю «рекурсивна процедура».

Рекурсивна процедура – це процедура, яка викликає сама себе. В рекурсивній процедурі немає проблеми з запам'ятовуванням результатів її виконання, тому що будь-які обчислені значення можна передавати з одного виклику в інший як аргументи предиката, що рекурсивно викликається.

  1.  Назвіть основні переваги і недоліки рекурсії.

Рекурсія має три основні переваги:

 вона може виражати алгоритми, які не можна зручно виразити ніяким іншим чином;

 вона логічно простіше методу ітерації;

 вона широко використовується в обробці списків.

Рекурсія – хороший спосіб для опису задач, що містять в собі під задачі такого ж типу. Наприклад, пошук в дереві (дерево складається з більш дрібних дерев) і рекурсивне сортування (для сортування списку, він розділяється на частини, частини сортуються і потім об'єднуються разом).

У рекурсії є один великий недолік – вона «з’їдає» пам'ять. Кожного разу, коли одна процедура викликає іншу, інформація про виконання викликаючої процедури повинна бути збережена для того, щоб викликаюча процедура могла після виконання викликаної процедури відновити виконання на тому ж місці, де зупинилася. Це означає, що, якщо процедура викликає себе 100 разів, то 100 різних станів повинно бути записано одночасно (стани виконання рішення зберігаються в стековому фреймі).

  1.  Де зберігаються значення змінних при рекурсії?

Інформація зберігається в області пам'яті, яка називається стековим фреймом (stack frame) або просто стеком (stack), який створюється кожного разу при виклику правила. Коли виконання правила завершується, зайнята його стековим фреймом пам'ять звільняється (якщо це не недетермінований відкат), і виконання триває в стековому фреймі правила-батька.  

  1.  Чим відрізняється хвостова рекурсія від звичайної рекурсії?

На мові Пролог фраза «одна процедура викликає іншу, виконуючи свій останній крок» означає:

 виклик є останньою підціллю речення;

 раніше в реченні не було точок повернення.

Хвостова рекурсія викликає себе без резервування нового стекового фрейму, і тому не виснажує запас пам'яті.

  1.  Чи можна змінювати значення змінної в VisualProlog?

Ні. Замість цього потрібно створити нову змінну і надати їй потрібне значення. Наприклад:

NewP = Р + 1




1. Технология воспроизводства стада и выращивание ремонтного молодняка
2. ИнтратэкР 1994 ВВЕДЕНИЕ Что такое право Несмотря на обобщенные теоретические выкладки предоставляем
3. Любое управленческое решение влияет на этот поток в лучшую или в худшую сторону
4. тема США сложна и многообразна состоит из множества государственных федеральных и иных органов власти и упр
5.  Д. Гетти; М. Фоллетт; Э
6. ХІХ 'асырды' ортасына бастап консервативтік партия ата'ын ал'ан партия- АВиги ВЧартистер СЛибералды'
7. Статья 1 Основные понятия используемые в Законе В настоящем Законе используются следующие понятия- 1 вз
8. 5 Введение
9. Договор лизинга
10. Он осуществляется непрерывно всеми звеньями медицинской службы соединений и воинских частей
11. тематика 4 години на тиждень всього 140 год
12. золотой век Те из французских историков кто употребляет это определение без кавычек имеют в виду многоч
13. статьям калькуляции15 2
14. тема взглядов чувств переживаний догматов и теоретических положений на мир в целом и место человека в этом
15. Ермак
16. Дипломная работа- Система учета и аудита движения денежных средств
17.  Браве торларыны~ 14 т~рі
18. на тему ldquo;6 грудня ~День збройних сил Україниrdquo; проведеного у 11 класі Хацьківської загальноосвітньої ш
19. реферат дисертації на здобуття наукового ступеня кандидата філософських наук К
20. Параметры экогеософской стратегии выживания