Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции ОЛП.doc
Скачиваний:
3
Добавлен:
01.05.2025
Размер:
353 Кб
Скачать
☆

Vvod3:-makewindow(4,7,9," Расчёт выходов логической схемы ",0,0,25,80),

cursor(1,5),write(" Введите значения входов: "),

cursor(2,10),write(" Первы вход X1: "),readreal(X1),

cursor(3,10),write(" Второй вход X2: "),readreal(X2),

cursor(4,10),write(" Третий вход X3: "),readreal(X3),

cursor(5,10),write(" Четвёртый вход X4: "),readreal(X4),

cursor(6,10),write(" Состояние T-триггера: "),readreal(Q1),

cursor(7,10),write(" Состояние RS-триггера: "),readreal(Q2),

no(X1,A1), no(X3,A2), ili(A1,X2,A3), ii(A2,X4,A4),

tr_t(A3,Q1,A5), tr_rs(A3,A4,Q2,A6), dc(A5,A6,Y1,Y2,Y3,Y4),

cursor(10,7),write(" Значения на выходе:"),

cursor(11,10),write(" Точка Y1= ",Y1),

cursor(14,10),write(" Точка Y4= ",Y4),

cursor(15,7),write(" Промежуточные значения:"),

cursor(16,10),write(" Точка A1= ",A1),

cursor(21,10),write(" Точка A6= ",A6),readln(_).

generator:-makewindow(6,7,9," Генератор ",0,0,25,80),

cursor(1,5),write(" Смена состояний нажатием ввода: "),nl,

gen(0,0,0,0),menu.

sdv(0,0,0,0,0,1). sdv(0,0,1,0,1,0). sdv(0,1,0,0,1,1).

sdv(0,1,1,1,0,0). sdv(1,0,0,1,0,1). sdv(1,0,1,1,1,0).

sdv(1,1,0,1,1,1). sdv(1,1,1,0,0,0). gen(1,1,1,1).

gen(X,Y,P,Z):-Z=0,Z1=1,write(X,Y,P,Z1),nl,readchar(_),gen(X,Y,P,Z1).

gen(X,Y,P,Z):-Z=1,Z1=0,sdv(X,Y,P,X1,Y1,P1),write(X1,Y1,P1,Z1),nl,readchar(_),gen(X1,Y1,P1,Z1).

Расчёт логической схемы: X1=1, X2=1, X3=1, X4=1, Q1=1, Q2=1.

Результат: Y1=0, Y2=1, Y3=0, Y4=0, A1=0, A2=0, A3=1, A4=0, A5=0, A6=1.

32. Отладка и трассировка логических программ.

Трассировка может выполняться с помощью встроенных средств. Наиболее используются предикаты трассировки и быстрой трассировки: trace и shorttrace. Trace может устанавливаться в разделе опций компиляторов программы (F10). Результат в окне трассировки. Можно выполнять локальную трассировку для совокупности предикатов: trace (on), pred (), trace (off).

Быстрая трассировка работает быстрее и выводит меньше информации. Варианты трассировки - выполнение программы по шагам, установка предикатов для трассировки, трассировка в режиме оптимизации, в диалоге.

Сообщения в окне трассировки:

Call - вызов предиката.

Fail - поиск неудачен, return - поиск с возвратом. Alt+T - трассировка диалоговая.

Для трассировки выполнения программы должны добавить опцию TRACE в начало программы. Таким образом, программа будет начинаться :

trace

predicates

hello

goal

hello.

...........

Теперь вводим команду RUN и следим за экраном. В окне редактора курсор будет мигать в конце задачи hello, а в окне трассировки начало выполнения этой задачи будет выглядеть так:

CALL: goal()

F10 задает пошаговый режим выполнения задачи. Нажав F10 один раз, окно трассировки покажет: CALL: hello()

Это означает, что задача должна обработать предикат `hello'. Нажав ещё раз клавишу F10 вызвали предикат создания окон `makewindow`. Следующее нажатие вызовет выполнение этого предиката: RETURN: makewindow(1,7,7,"My first program",4,56,10,22)

Окно располагается в правом верхнем углу экрана. Курсор теперь будет находиться в окне, где выполняется программа, и где должны набрать имя. Набрав Том, затем нажав "ВВОД". Окно трассировки покажет: RETURN: readln("TOM")

В заключение нажимая F10, пока окно трассировки не покажет:

RETURN: hello()

RETURN: goal(),

что означает окончание выполнения программы. Нажмите F10, и система предложит нажать пробельную клавишу чтобы возвратиться в главное меню.

33. Машины логического вывода. Процедурная семантика логических программ. Структура данных процессоров логического вывода. Система команд процессора логического вывода.

Основное назначение Пролог машины – реализация логического программирования и логического вывода. Практическая реализация логического вывода требует решения 3 задач:

  1. разработка методов логического вывода (базовый метод Робинсона).

  2. разработка программной реализации логического вывода – Пролог.

  3. аппаратная поддержка логического вывода.

Необходимость 3 вызвана многими причинами, в том числе:

  • переборным характером процедуры вывода.

  • применением нестандартных структур данных, списков, предикатов

  • наличием специфических операций, не имеющих аналогов в других языках:

унификация, возврат, отсечение, двунаправленность.

Указанные особенности требуют специфических разработок ЭВМ. Компиляция программы не согласуется с архитектурой традиционной ЭВМ, поэтому операции Пролога нельзя описать в терминах ЭВМ.

Для 3 разрабатывается концепция построения архитектуры Пролог-машины. Для исследования этой концепции воспользуемся абстрактной ПМ с некоторой системой команд и структурой данных. Одна из идей абстрактной ПМ позволяет рассматривать её в виде совокупности 2-х задач:

  • разработка компиляции – преобразует исходную программу в последовательность команд АПМ.

  • разработка интерпретация для системы команд АПМ, выполняющие код для обычной ЭВМ.

Процедурная семантика логических программ.

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

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

Запуск программы ПМ осуществляется целевым утверждением.

Структура данных процессора логического вывода.

Для представления данных рассмотрим 32-разрядное машинное слово: 1-ый байт – интерпретируется как Plug или Teg. Он задаёт семантику других байтов. В качестве семантической единицы может быть переменная либо функтор (структура предиката).

Каждая переменная или функтор описывается в соответствующей таблице символов. Переменные: константы, целые; функторы: в виде фрейма.

Команды процессора логического вывода.

Могут иметь сложный алгоритм и включают:

  • команды вызова предикатов

  • загрузки аргументов

  • унификации

  • возврата

  • ввод/вывод