Зворотний зв'язок

Засоби та принципи програмування на Ліспі

(w e r t y)

7. COND ... Обчислює CAR кожної COND форми доти, доки не зустрінеться деяке значення, відмінне від NIL, або доки всі предикати не будуть обчислені. В першому випадку COND обчислює CDR елемент cons - форми з предикатом, який не дорівнює NIL, як тіло функції, використовуючи неявну функцію PROGN. Якщо CDR - елемент COND форми, яка не дорівнює NIL, є порожнім, то повертається значення предиката. Якщо обчислені всі предикати та всі вони повернули NIL, то COND повертає NIL.

8. COMMENT <коментар> Ігнорує свої аргументи та повертає NIL. Визначає засіб включення коментарів безпосередньо у визначені функції.

9. RETURN <об’єкт> Зупиняє виконання функції, яка містить RETURN, звільняє стек та повертає об’єкт в ролі свого значення.

10. RESTART Закриває всі відкриті файли, відмовляється від поточного середовища та ініціює нову систему muLisp. Всі зв’язки між змінними, функції користувача та значення властивостей поточного середовища знищуються.

11. SYSTEM Закриває всі відкриті файли, завершує виконання muLisp та повертає керування операційній системі.

12. EXECUTE <програма> <командний рядок> Зупиняється робота системи muLisp, передається керування програмі з командним рядком. EXECUTE повертає код виходу з програми або NIL, якщо <програма> не знайдена.

$ (EXECUTE “command.com” “/c dir c:”)

2. Обчислення рекурсивних функцій

1. Факторіалом числа n називається число (позначається n!), яке рекурсивно визначається наступним чином:

0! = 1

N! = N*(N-1)! якщо N>0.

$ (DEFUN FACTORIAL (n)$ (FACTORIAL 10)

((ZEROP n) 1)3628800

(* n (FACTORIAL (- n 1))) )

Якщо в рекурсивній програмі аргументом буде велике число, то може виникнути переповнення стеку. Використовуючи команду циклу LOOP можна уникнути рекурсивного виклику. Наступна функція буде більш ефективною:

$ (DEFUN FACTORIAL1 (n rslt)$ (FACTORIAL1 10)

(SETQ rslt 1)3628800

(LOOP

((ZEROP n) rslt )$ (FACTORIAL 0 a)

(SETQ rslt (* n rslt))1

(SETQ n (- n 1)) ) )


Реферати!

У нас ви зможете знайти і ознайомитися з рефератами на будь-яку тему.







Не знайшли потрібний реферат ?

Замовте написання реферату на потрібну Вам тему

Замовити реферат