Присваивания

Prog-форма

Рассмотрим предложенный Мак-Карти пример, показывающий возможности prog-формы при императивном стиле определения функции Length. Эта функция сканирует список и вычисляет число элементов на верхнем уровне списка. Значение функции Length - целое число. Алгоритм можно описать следующими словами:

«Это функция одного аргумента L. Она реализуется программой с двумя рабочими переменными z и v. Записать число 0 в v. Записать аргумент L в z.A: Если z содержит NIL, то программа выполнена и значением является то, что сейчас записано в v. Записать в z cdr от того, что сейчас в z. Записать в v на единицу больше того, что сейчас записано в v. Перейти к A»

Эту программу можно записать в виде Паскаль-программы с несколькими подходящими типами данных и функциями. Строкам вышеописанной программы соответствуют строки определения функции LENGTH, в предположении, что существует библиотека Лисп-функций на Паскале:

function LENGTH (L: list) : integer; var Z: list; V: integer;begin V := 0; Z := l;A: if null (Z) then LENGTH := V; Z := cdr (Z); V := V+1; goto A;end;

Переписывая в виде S -выражения, получаем программу:

(defun LENGTH (lambda (L) (prog (Z V) (setq V 0) (setq Z L)A (cond ((null Z)(return V))) (setq Z (cdr Z)) (setq V (+ 1 V))(go A) ))) )) ;;=======================ТЕСТЫ=============(LENGTH '(A B C D))(LENGTH '((X . Y) A CAR (N B) (X Y Z)))

Последние две строки содержат тесты. Их значения 4 и 5 соответственно.

Форма Prog имеет структуру, подобную определениям функций и процедур в Паскале: (PROG, список рабочих переменных, последовательность операторов и атомов ... ) Атом в последовательности выполняет роль метки, локализующей оператор, расположенный вслед за ним. В вышеприведенном примере метка A локализует оператор, начинающийся с "COND".

Первый список после символа PROG называется списком рабочих переменных. При отсутствии таковых должно быть написано NIL или (). С рабочими переменными обращаются примерно как со связанными переменными, но они не могут быть связаны ни с какими значениями через lambda. Значение каждой рабочей переменной есть NIL, до тех пор, пока ей не будет присвоено что-нибудь другое.

Для присваивания переменной применяется форма SET. Чтобы присвоить переменной pi значение 3.14 пишется:

(SET (QUOTE PI)3.14)

SETQ подобна SET, но она еще и блокирует вычисление первого аргумента. Поэтому

(SETQ PI 3.14)

запись того же присваивания. SETQ обычно удобнее. SET и SETQ могут изменять значения любых переменных из ассоциативного списка внешних функций. Значением SET и SETQ является значение их второго аргумента. GO-форма, используемая для указания перехода (GO A) указывает, что программа продолжается оператором, помеченным атомом A, причем это A может быть и из более внешнего prog. Условные выражения в качестве операторов программы обладают полезными особенностями. Если ни один из предикатов не истинен, то программа продолжается оператором, следующим за условным выражением.

RETURN - нормальное завершение программы. Аргумент return вычисляется, что и является значением программы. Никакие последующие операторы не вычисляются. Если программа прошла все свои операторы, не встретив Return, она завершается со значением NIL.

(defun Fibonacci (b / lo hi)

(if (and

(= (type b) ’INT)

(>= b 1)

)

(progn

(setq lo 1 hi 1)

(princ lo)

(WHILE (<= hi b)

(princ " ")

(princ hi)

(setq hi (+ lo hi)

lo (- hi lo)

)

) (princ)

)

)

) - выводит на экран числа Фибоначчи, не

больше заданной границы b

(Fibonacci 50) ⇒ 1 1 2 3 5 8 13 21 34

&n

) - выводит на экран числа Фибоначчи, не

больше заданной границы b

(Fibonacci 50) ⇒ 1 1 2 3 5 8 13 21 34

 

 

Лекция 9. Обзор процесса работы на «Visual Basic».

· Идея языка программирования «Visual Basic»

· Событийно-управляемое программирование

· Пример курсового проекта

Что такое Visual Basic? Многие считают, что слово "Basic" в названии напоминает начальный период компьютеризации, когда чудаки сидели перед самостоятельно созданными персональными компьютерами и разрабатывали маленькие программы. Basic якобы ассоциируется с бытовым компьютером и его нельзя рассматривать как серьезную систему для разработки современных приложений. Более того. Basic считается языком для новичков, недостаточно быстрым, недостаточно гибким, другими словами, программирование на этом языке подрывает репутацию любого разработчика программных средств.

Сторонники этого мнения, мало сказать, не правы — они игнорируют важный этап развития систем программирования. В настоящее время само название этой среды разработки приложений охватывает целое направление. Сейчас программы больше не пишут - нет больше программирования в прежнем смысле этого слова, - они проектируются. Собственно и программистов гораздо уместнее было бы назвать инженерами-проектировщиками программных средств. Они являются скорее художниками-творцами, чем странными чудаками.

Microsoft Windows не только способствует более простой и интуитивной работе с компьютером. Создать приложение в Visual Basic — значит разработать его не только для Windows, но и с помощью Windows и создать его таким, как Windows. Это и есть характерная черта Visual Basic. Однако не следует заблуждаться, полагая, что можно легко научиться программировать в Visual Basic. Теоретическая база при этом играет при этом решающую роль, ибо после её изучения работа в Visual Basic не будет представлять для вас никаких проблем.