Разработка базы данных на языке Auto Lisp

РАЗРАБОТКА БАЗЫ ДАННЫХ НА ЯЗЫКЕ AUTO LISP

Е.А. Степанова

Рассмотрены возможности использования языка программирования Auto LISP с интегрированной средой программирования Visual LISP, встроенной в систему автоматизированного проектирования Auto CAD.

The author considers the possibility to use the programming language Auto LISP with the integrated environment of programming Visual LISP built in the system of automated designing Auto CAD.

Auto CAD - это инженерная система автоматизированного проектирования самых различных объектов. Она состоит из графического редактора Auto CAD и языка программирования высокого уровня Auto LISP. Auto LISP - это инженерный язык программирования. Традиционно использование языка Auto LISP для ускорения процесса разработки проектной документации в Auto CAD, так как он хорошо сочетается с прикладной графикой. Но язык программирования Auto LISP позволяет создавать не только программы выполнения конструкторской документации, но и инженерных расчетов, а также систем, связанных с обработкой информации, представленной в виде символов и чисел.

На примере разработки базы данных покажем, что создавать программы на языке Auto LISP довольно просто. Это позволяет использовать язык программирования высокого уровня Auto LISP, в т. ч. студентами для расчетов при курсовом и дипломном проектировании.

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

Название LISP образовано от выражения List processing (обработка списков), и понятие списка является базовым для программирования на этом языке. Как все языки программирования, Auto LISP имеет свой синтаксис и содержит свой набор функций. В языке Auto LISP первым всегда стоит оператор, за которым следуют операнды. Оператор может рассматриваться как функция, а операнды как данные, которыми оперирует функция. Язык Auto LISP можно использовать в Auto CAD в интерактивном режиме, поскольку он является интерпретируемым, т. е. результат получается немедленно после ввода выражения языка Auto LISP в командную строку. Первая строка программы всегда начинается открывающейся круглой скобкой, которой соответствует закрывающаяся скобка. Эта пара скобок ограничивает тело функции. Строка начинается с оператора DEFUN, который означает DEFine FUNction (определить функцию). Одним из важнейших элементов большинства языков программирования является переменная - символьное наименование, которым можно оперировать в данной программе. Важным фактором использования переменных является возможность присвоения им значения. Списки - это основные структуры данных, используемых в программировании на языке Auto LISP. Список всегда заключается в круглые скобки. Как правило, имя списка - переменная, значение которой присваивается оператором SETQ. Список создается функцией LIST. Если элементы списка являются константами, а не переменными, для его формирования можно использовать функцию QUOTE. Для ускоренного вызова функции QUOTE можно использовать одиночную кавычку (‘), которая задается той же клавишей, что и апостроф.

Необходимость выполнить какую-либо процедуру при наличии некоторых условий возникает довольно часто. Условное выражение создается при помощи оператора IF, который выполняет одно действие, если выражение-операнд истинно, и другое, если оно ложно.

Для создания базы данных и поиска нужного значения параметра создадим две функции:

(S) - для создания базы данных;

(P) - для поиска значений заданного параметра.

Сформируем список имен нужных параметров -‘ (LN).

Параметры вводятся с помощью функции GETSTRING, которая предназначена для ввода текстовой константы. Пары (списки), состоящие из имен параметров и значения параметра, создадим, используя функцию LIST.

Список пар (LP) создадим с помощью функции CONS, которая формирует список путем добавления нового элемента в начало списка. Функция (SETQ LP '( )) задает пустое начальное значение списка пар LP.

Выражение (FOREACH N LN) последовательно в цикле присваивает переменной “N”

очередное имя параметра из списка. Далее для этого параметра выполняется функция PRINC вывода на экран выражения, сформированного функцией STRCAT (соединение строк), функция LIST образования пары параметр - значение, функция CONS формирования списка пар параметр -значение. Функция REVERSE LP изменяет порядок следования элементов на обратный. Функция поиска значения заданного параметра (P) начинается с ввода искомого параметра. Далее с помощью встроенной функции ASSOC находим пару по заданному параметру. С помощью функции CADR выбираем из пары искомое значение параметра. Функции PRINC и STRCAT обеспечивают вывод найденного значения параметра.

При создании базы данных используем следующие переменные:

N - имя параметра;

Z - значение параметра;

LN - список имен параметров;

NZ - список ‘(NZ), содержащий два элемента: имя параметра N и его значение Z;

LP - ассоциативный список, состоящий из списков NZ.

Ассоциативный список LP является хранилищем данных одного столбца таблицы. Список имен параметров: ( “A” ”B” ’C” ”D”).

Программа создания базы данных

(DEFUN S (LN) ; начало создания функции (S).

(TEXTSCR) ; переход на текстовый экран.

(FOREACH N LN

NZ

LP

(S ‘ (“A” “B” “C” “D”)) ; вызов функции (S).

Вводятся параметры в диалоговом режиме; введите значение параметра А = 1; введите значение параметра В = 2; введите значение параметра С = 3; введите значение параметра D = 4.

В результате выполнения данной программы параметры и их значения будут представлены в виде ассоциативного списка LP:

‘

Запомним эту информацию в переменной с именем G-1 (SETQ G-1 LP) и запишем в файл хранения данных. Перед использованием базы данных будем загружать этот файл.

Программа поиска данных в базе данных

Z

PRINC

В ответ на запрос функции (P G-1) введем искомый параметр А:

введите искомый параметр ( или ENTER) A.

Получим результат: А = 1.

Данная программа позволяет осуществлять поиск в сформированной нами базе данных по задаваемому пользователем параметру. Таким образом, освоение языка Auto LISP студентами не представляет особой сложности и в то же время позволяет существенно повысить эффективность расчетов, проводимых в среде Auto CAD.