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

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

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

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

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

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

от 25%

Подписываем

договор

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

Скидка 25% при заказе до 26.12.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. ТЕМАТИКИ 2 Предмет теории игр основные понятия игры
3. фя обозначали всю совокупность знаний о мире до 18 в
4. В этом нет никакой необходимости произнес молодой человек но господин Мартин настаивал
5. Екстенсивний лат
6. Берингов пролив Дельта
7.  Контроль МНО необходимо проводить после выписки в первый месяц еженедельно во второй месяц2 раза в неделю
8. Проектирование предприятия макаронных изделий
9. на тему - Сверление учащегося группы- 19-20 Коняхина Олега
10. ВВЕДЕНИЕ Справедливый и честный характер трудовых отношений способствует укреплению чувства с
11. Алаш партиясы Программасыны~ жобасы 1917 жылы
12. Харківська академія неперервної освіти Завдання ІІ етапу Всеукраїнської учнівської олімпіади з інформа
13.  Трудовой договор
14. . Теоретичні аспекти щодо управління обіговими коштами на підприємстві
15. Модель работы вычислительного центра
16. УФИМСКИЙ ГОСУДАРСТВЕННЫЙ НЕФТЯНОЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ Кафедра прикладной экологии
17. Валютный курс и факторы его определяющие
18. Матрикс 21 Методы управления финансовыми потоками на предприятии 21
19. 20 г
20. Course tyler- cool tyler- your pretty You- Doy you hve wife children tyler- no You- Why If it is not secret You- So how old re you tyler- 32 tyler- tyler- so i told yo