- •1. Основные принципы работы в системе muLisp
- •3. Сообщения о прерывании работы интерпретатора
- •4. Сообщения об ошибках
- •5. Редактирование текстов программ и загрузка исходных
- •Insert - переключение режимов редактирования
- •6. Организация ввода-вывода
- •7. Отладка программ
- •8.4 Функции сравнения
- •8.5 Логические функции
- •8.6 Функции присваивания
- •8.7 Примитивы определения функций
- •8.8 Арифметические функции
- •8.9 Функционалы
- •8.10 Функции ввода
- •8.12 Функции работы со строками 2.
- •8.13 Работа со стеком 2.
- •8.14 Функции свойств
- •8.15 Контрольные конструкции
Insert - переключение режимов редактирования
"замена-вставка"
Del - удаление символа под курсором
- команды работы с блоком
Ctrl + K + B (F7) - отметить начало блока
Ctrl + K + K (F8) - отметить конец блока
Ctrl + K + H - отменить разметку блока
Ctrl + K + V - переместить блок
Ctrl + K + Y - удалить блок
Ctrl + K + C - скопировать блок
Ctrl + K + R - прочитать блок из файла
Ctrl + K + W - записать блок в файл
- 13 -
- команды поиска и замены
Ctrl + Q + F - поиск подстроки в тексте
Ctrl + Q + A - замена подстроки в тексте
Finde:(искать) - ввод искомой подстроки
Replace with: - ввод подстроки замены
(заменить на)
Options:(режим) - ввод комбинации символов управления по-
иском или заменой (см. ниже)
B - поиск назад
G - глобальный поиск
L - поиск до первого обнаружения
N - искать до N-го обнаружения (N - число)
U - игнорировать различие прописных/строчных символов
- Ctrl + Q + G - переключение режимов "текст-графика"
- Ctrl + Home + End - завершить работу SK.
6. Организация ввода-вывода
Версия системы muLISP-90, в отличие от предыдущих версий,ис-
пользует традиционную схему организации обмена информацией, основ-
ным понятием которой является последовательный файл. Структура
файла и его обозначение соответствуют стандартам принятым в опера-
ционной системе MS-DOS. Например имя файла STUDENT.LSP, хранящего-
ся на дисководе A: в разделе LSPLIB, будет обозначаться как
A:\\LSPLIB\\STUDENT.LSP. Еще раз обращаем ваше внимание на необхо-
димость удвоения разделителя пути "\" в имени файла! В качестве
имени файла допускается так же использование имен стандартных уст-
ройств ввода-вывода: CON, PRN, LPT1(2,3), COM1(2), AUX, NUL и т.п.
Перед началом работы файл должен быть открыт как входной или
выходной файл с помощью функций OPEN-INPUT-FILE(OPEN-OUTPUT-FILE).
После чего возможен доступ к соответствующему файлу для для ввода
или вывода информации. Одновременно может быть открыто столько
файлов, сколько позволяет конкретная версия операционной системы.
Для всех функций ввода-вывода предусмотрен параметр указания файла
с которым осуществляется обмен информацией. После окончания работы
- 14 -
с файлом он должен быть закрыт с помощью функций CLOSE-INPUT-FILE
(CLOSE-OUTPUT-FILE).
Общая структура команд ввода имеет вид:
(READ* INPUT EOF-P EOF).
Здесь READ* - название одной из функций ввода, INPUT - имя
источника ввода информации, которым может быть либо имя открытого
файла, либо - консоль (в том случае когда значение параметра INPUT
равно Т). EOF-P - указатель способа реакции на ситуацию "конец
файла". Если значение EOF-P равно Т, то в случае обнаружения конца
файла в качестве результата функции ввода
выдается значение третьего параметра EOF. В противном случае - при
достижении конца файла будет прервана работа программы с выводом
сообщения End-Of-File.
Аналогично, общая структура функций вывода имеет вид:
(WRITE* OBJECT OUTPUT).
WRITE* - название одной из функций вывода. Значение параметра
OBJECT задает объект вывода (атом, символ, строку, списочное выра-
жение и т.п.), а значение параметра OUTPUT - имя файла для вывода
или консоль (OUTPUT = T).
Более подробно специфика работы функций ввода-вывода описана
в разделах 8.10-8.11.
В качестве примера, иллюстрирующего методику работы с функци-
ями ввода-вывода, рассмотрим программу слияния строк двух тексто-
вых файлов:
$ (DEFUN MERGE (F1 F2 F3 S) ; F1,F2-входные файлы,
; F3-выходной файл, S-локальная переменная
(OPEN-INPUT-FILE F1) ; открыть входной файл F1
(OPEN-INPUT-FILE F2) ; открыть входной файл F2
(OPEN-OUTPUT-FILE F3) ; открыть выходной файл F3
(LOOP ; цикл чтения строк первого файла
(SETQ S (READ-LINE F1 T 'EOF1)) ; читать строку 1-го файла
((EQUAL S 'EOF1) ) ; проверка конца F1
(WRITE-LINE S F3) ; запись строки в F3
)
(CLOSE-INPUT-FILE F1) ; завершение работы с F1
(LOOP ; цикл чтения строк второго файла
- 15 -
(SETQ S (READ-LINE F2 T 'EOF2)) ; читать строку 2-го файла
((EQUAL S 'EOF2) ) ; проверка конца F2
(WRITE-LINE S F3) ; запись строки в F3
)
(CLOSE-INPUT-FILE F2); завершить работу с F2
(CLOSE-OUTPUT-FILE F3); завершить работу с F3
)
MERGE ; результат выполнения функции DEFUN
$REM Вызов программы слияния
$ (MERGE 'A:\\DOC1.TXT 'B:\\DOC2.TXT 'C:\\DOC3.TXT)
Для повышения гибкости работы функций ввода-вывода в системе
muLISP предусмотрен набор глобальных управляющих переменных. Так
переменная *INPUT-FILE* (*OUTPUT-FILE*) содержит имя последнего
открытого входного (выходного) файла, а переменная *INPUT-ECHO*
(*PRINTER-ECHO*) в зависимости от своего значения (T или NIL) поз-
воляет дублировать вводимую (печатаемую) информацию выводя ее на
консоль. К сожалению ввиду ограниченности данного пособия нет воз-
можности привести их список полностью.