Опубликован: 19.03.2004 | Уровень: специалист | Доступ: платный
Лекция 9:

Реализационные решения

< Лекция 8 || Лекция 9: 123 || Лекция 10 >

Реальный состав системы и внешний мир

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

Состав системы:

(APROPOS 'nm 'package) — печатает информацию обо всех символах, имена которых содержат подстроку " nm ". Второй аргумент, если он указан, ограничивает эту информации заданным пакетом.

(DESCRIBE 'fn ) — дает описание места объекта в системе.

(SYMBOL-PLIST 'fn) — выдает перечень всех свойств объекта.

(DOCUMENTATION 'fn 'function) — выдает документацию по объекту.

Отладка программ:

(DRIBBLE 'file) — направляет в файл протокол работы с Лисп-интерпретатором.

(STEP expr) — обеспечивает пошаговый режим интерпретации выражения с выдачей результатов каждого шага.

Ввод-вывод данных:

(SETQ inpt (OPEN file-in :direction :input )) — заведение переменной для обозначения открытого потока.

(READ inpt) — чтение из файла, открытого как поток.

(PRINT (PRINT eval-val prtcl) outpt)запись данного eval-val в два разных файла.

(OPEN file-in :direction :input ) — открытие файла на чтение.

Далее следуют три варианта открытия файлов на запись:

(OPEN "output" :direction :output :if-exists 
		:rename :if-does-not-exist :create)
    (OPEN "protocol" :direction :output :if-exists 
		:overwrite :if-does-not-exist :create)
    (OPEN "history" :direction :output :if-exists 
		:append :if-does-not-exist :create )
    (CLOSE prtcl) — закрытие потока.

Особенности работы с файлами, основные приемы их открытия, задания специфики их функционирования и обмена данными с обычными символьными объектами иллюстрирует пример организации учебного цикла работы с Clisp, использующего пошаговую интерпретацию программ.

(DEFUN eval-protocol () (PROG (eval-val)
    ; выражения хранятся в файле "input.lsp"
 
    metka
       (PRINT '> prtcl)
       (SETQ eval-val (EVAL
          (list 'STEP ; пошаговое вычисление выражения
          (PRINT (PRINT
             ( if (eq 'eof (setq rinpt
                   (READ inpt NIL 'eof) ))
                (return(CLOSE inpt))
                rinpt)
       prtcl) hstry)
    )))
 
    ; прочитанное записывается в файлы "protocol" и 
    ; "history"
    (PRINT '- prtcl)
    ;(print eval-val)
    (print (print eval-val
                prtcl) outpt)
    ; результат интерпретации в файлах 
    ; "protocol" и "output"
    (go metka)
    ))
 
    (DEFUN help ( function-name )
    (ed (string function-name )) )
 
    (DEFUN step1 (file-in)
    (PROG ()
 
          (SETQ inpt (OPEN file-in :direction :input ))
       (SETQ outpt (OPEN "output" :direction :output 
    :if-exists :rename
    :if-does-not-exist :create))
    (SETQ prtcl (OPEN "protocol" :direction :output 
    :if-exists :overwrite
    :if-does-not-exist :create))
    (SETQ hstry (OPEN "history" :direction :output 
    :if-exists :append
    :if-does-not-exist :create ))
    (PRINT '"****** new-session ******" hstry)
 
    ; цикл прервется по достижении конца файла ввода
    (eval-protocol)
 
    (CLOSE prtcl)
    (CLOSE hstry)
    (CLOSE outpt)
    ))
 
    (step1 "input.lsp")
    ; интерпретируемые выражения хранятся в файле 
    ; "input.lsp"
< Лекция 8 || Лекция 9: 123 || Лекция 10 >
Дарья Федотова
Дарья Федотова
Сергей Березовский
Сергей Березовский

В рамках проф. переподготовки по программе "Программирование"

Есть курсы, которые я уже прошел. Но войдя в курс я вижу, что они не зачтены (Язык Ассемблера и архитектура ЭВМ, Программирование на С++ для профессионалов). Это как?

Алина Ленкова
Алина Ленкова
Россия, Ставрополь, СФ МГУПИ, 2014
Валерий Ромашов
Валерий Ромашов
Россия