Ввод и вывод через файлы. Вывод на печать



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

(READ-LINE < Ф >)

(READ-CHAR < Ф >)

(WRITE-CHAR < целое число > < Ф > )

(WRITE-LINE < текст > < Ф >)

(PRIN1 <выражение> <Ф>)

(PRINC <выражение> <Ф>)

(PRINT <выражение> <Ф>).

Здесь буквой «Ф» для краткости обозначен дескриптор файла, заданный в SETQ с помощью функции OPEN для данного файла.

Каждая функция WRITE и PRINT формирует очередную запись файла последовательного доступа. Таким образом, в запись файла можно занести данные любого типа. При записи происходит преобразование данных в форму строки текста.

Функция READ-LINE считывает очередную запись и воспринимает ее как строку текста (возвращая эту строку). Функция READ-CHAR воспринимает очередной символ из считанной записи, а если такого символа нет, то считывает новую запись и воспринимает первый символ (возвращая ASCII-код, т.е. число).

Таким образом, читать из файла можно только текст.

С помощью функций типа WRITE и PRINT можно выдавать данные на устройство печати. Для этого в функции OPEN в качестве имени файла необходимо указать логическое имя устройства печати.

Функция PRINC записывает значение выражения в виде текстовой строки в файл с заданным дескриптором. Возвращаемое значение ‒ значение выражения. Если опущены оба аргумента функции PRINC, то функция осуществляет так называемый тихий выход, т.е. не возвращает никакого значения, даже NIL (чтобы не загромождать командную строку никакими данными и сообщениями). Приведем примеры использования функции PRINC. [5]

Примеры:

(PRINC '(4.5678123 11.1) FO ) пишет в файл и возвращает (4.56781 11.1);

(PRINC “Мороз” FO ) пишет в файл Мороз и возвращает “Мороз”;

(PRINC) не возвращает ничего.

Функция PRIN1 аналогична функции PRINC. Но если <выражение> в этой функции ‒ строка, то при записи она заносится в файл (или выводится на экран) с ограничивающими двойными кавычками; специальные символы (обратная косая черта, кавычки, конец строки и т.п.) предваряются обратной косой чертой. Возвращаемое значение ‒ значение аргумента <выражение>. Если опущены значения обоих аргументов, то функция PRIN1 осуществляет тихий выход из программы. [5]

Примеры:

(PRIN1 '(4.5678123 11.1) FO ) пишет в файл и возвращает (4.56781 11.1);

(PRIN1 “Мороз и солнце” FO ) пишет в файл и возвращает “Мороз и солнце”;

(PRIN1) не возвращает ничего.

Функция PRINТ аналогична функциям PRINC и PRIN1. Но при выводе добавляет перед значением аргумента <выражение> символ конца строки предыдущей записи, а после значения – пробел. Возвращаемое значение – вычисленное значение аргумента <выражение>. Функция PRINТ осуществляет тихий выход из программы, если ее оба аргумента опущены. [5]

Примеры:

(PRIN T '(4.5678123 11.1) FO ) пишет в файл \n (4.56781 11.1)_ и возвращает (4.56781 11.1) (перевод строки обозначен символами \n, а пробел в конце – символом подчеркивания;

(PRIN T “Мороз” FO ) пишет в файл \n “Мороз”_ и возвращает “Мороз”;

(PRIN T ) не возвращает ничего.

Использование возможностей ввода и вывода в AutoLISP иллюстрирует программа 8. Она позволяет считывать текстовые данные из файла и включать строки текста в чертеж по желанию пользователя. Одна запись файла соответствует одной строке текста. Все строки располагаются одна под другой.

Рассмотрим алгоритм, реализуемый программой 8.

1. Ввести имя файла, содержащего текст.

2. Ввести начальную точку для первой строки текста.

3. Открыть файл.

4. Считать первую запись файла.

5. Разместить первую строку текста на экране.

6. ПОКА очередная запись файла существует ЦИКЛ.

7. Считать очередную запись файла.

8. Выдать текст очередной строки для просмотра.

9. Ввести сигнал пользователя.

10. ЕСЛИ сигнал =»Да» ТО Разместить очередную строку текста на экране.

11. ВСЕ ЕСЛИ ВСЕ ЦИКЛ ПОКА.

12. Закрыть файл.

13. КОНЕЦ.

Приведем возможный вариант программы8.

Программа 8: Чтение текста из файла и размещение в чертеже

(DEFUN С : TXTIN (/bn pn f st)

(SETQ fn (GETSTRING “\n Имя файла :”)

pn (GETPOINT “\n Нач . точка :”)

f(OPEN fn “r”)

st (READ-LINE f )

)

(COMMAND “TEXT” pn “.2” “” st)

(WHILE (SETQ st (READ-LINE 0)

(PRINT st)

(IF(= (READ-CHAR) 10)

(COMMAND “TEXT” “” st)

); конец IF

); Конец WHILE

); Конец программы.

Примечание. В этой программе сигналом «Да» считается нажатие на клавишу <Enter> (ASCII -код клавиши равен 10). Любой другой ответ воспринимается как «Нет».

Приведенную программу можно использовать для усовершенствования программы 13. Для этого в конец программы (перед строкой (PRIN1)) следует вставить строки:

(LOAD “TXTIN”) TXTIN

(при условии, что программа находится в файле TXTIN.LSP текущего каталога). Тогда после построения изображения вала пользователь получит возможность нанесения на чертеж текста технических требований, набор которых хранится в каком-либо текстовом файле. [2-6]


Дата добавления: 2019-09-13; просмотров: 240; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!