|
|  |
Засоби та принципи програмування на Ліспі, Детальна інформація
|
(DEFUN PUD (tree) (DEFUN PLR (tree)
((NULL tree)) ((NULL tree))
(PRIN1 (CAR tree)) (SPACES 3) (PLR (CADR tree))
(PUD (CADR tree)) (PRIN1 (CAR tree)) (SPACES 3)
(PUD (CDDR tree)) ) (PLR (CDDR tree)) )
Функція REVT (Reverse Tree) обертає дерево: кожне праве піддерево стає лівим піддеревом і навпаки.
(DEFUN REVT (tree)
((NULL tree) NIL)
(CONS (CAR tree) (CONS (REVT (CDDR tree)) (REVT (CADR tree)))) )
Розглянемо приклади:
$ (SETQ a (INSL ‘(5 1 7 3 9 2 4 8 10) NIL)) $ (SETQ b (REVT a))
$ (PLR a) $ (PLR b)
1 2 3 4 5 7 8 9 10 T 10 9 8 7 5 4 3 2 1
Функція HEIGHT обчислює висоту дерева. Вважатимемо, що висота порожнього дерева дорівнює 0. Висота непорожнього дерева дорівнює максимумові між висотами лівого та правого піддерев плюс одиниця. (HEIGHT a) = 4, де a взято з попереднього прикладу.
(DEFUN HEIGHT (tree)
((NULL tree) 0)
(MAX (ADD1 (HEIGHT (CADR tree)))
(ADD1 (HEIGHT (CDDR tree)))) )
6. Робота з файлами
По замовченню за пристрій потокового вводу (CIS - Current Input Stream) береться консоль.
Для читання даних з вхідного потоку використовують функцію READ. Після виконання команди (SETQ a (READ)) ви повинні ввести з консолі вираз, який буде прочитано та присвоєно змінній а. При цьому якщо буде введено декілька об’єктів, то змінній а буде присвоєно перший об’єкт. Наприклад, якщо ви введете: as bf gh, то змінна a прийме значення as. Якщо Ви хочете ввести список (складний об’єкт), то його необхідно вводити в круглих дужках: (as df gh).
Функція (CLEAR-INPUT) чистить буфер вводу. В будь-якому випадку повертається NIL.
Функція (READ-LINE) читає елементи з CIS поки не буде прочитано символ переходу на новий рядок (). Повертається символ, Р-ім’я якого складається з усіх прочитаних символів як ті були розташовані у вхідному рядку, окрім .
Функція (READ-CHAR) читає наступний елемент з CIS та повертає його.
Функція (UNREAD-CHAR) повертає в CIS останній прочитаний символ.
Функція (LISTEN) повертає T якщо CIS не порожній, та NIL якщо ми дійшли до кінця файлу.
Функції (OPEN-INPUT-FILE “”) та (CLOSE-INPUT-FILE “”) використовуються для відкриття та закриття файла для вводу.
Функції (OPEN-OUTPUT-FILE “”) та (CLOSE-OUTPUT-FILE “”) відповідно відкривають та закривають файл для виводу інформації.
PAGE
|
| Коментарі до даного документу |
|
|
|
|
 |
ТОП-5 АВТОРІВ |
|
|
|
|