
Л.Р._Ш.И_2-6 / L3_Table_Window_Short
.docЛАБОРАТОРНАЯ РАБОТА
Пролог. Вывод таблиц. Встроенные предикаты
работы с окнами
ЦЕЛЬ РАБОТЫ
изучение и освоение приемов формирования выходных документов в виде таблиц;
Изучение встроенных предикатов организации интерфейса
ПОДГОТОВКА К РАБОТЕ
изучить методику формирования таблицы с заголовком
изучить синтаксис предикатов makewindow() - создание окна,
removewindow - удаление окна, gotowindow()- переход к заданному окну,
изучить синтаксис предикатов ввода-вывода информации
ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ
1. Загрузить компилятор языка логического программирования
2. Составить программу, описывающую предметную область:
сведения о личности (имя, возраст, рост, пол). Задать не менее 5 фактов
3. Составить запрос в виде внутренней цели, обеспечивающий вывод всех сведений из внутренней базы данных.
4. Модифицировать программу так, чтобы она выводила сведения в виде таблицы, имеющей заголовок, тело и окончание.
5. Модифицировать программу так, чтобы она выводила таблицу в одно окно, а список фамилий разработчиков программы в другое окно.
7. Экспериментально определить коды цветов текста и фона.
ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ
Вывод таблицы производится в три этапа. Сначала выводится заголовок таблицы:
pr_table:- write(“-------------------------------------“), nl,
write(“I name I phone I date I”), nl,
write(“-------------------------------------“), nl,
fail.
затем тело таблицы:
pr_table:- hand_book(N, P, D),
write(“I “, N, “ I “, P, “ I “, D, “ I”), nl, fail.
и наконец – заключительная часть:
pr_table:- write(“-------------------------------------“), nl.
Запрос на вывод таблицы формируется в секции goal: pr_table. Для того, чтобы Пролог выполнил все три правила, служит предикат отката – fail, который помещается в конце первых двух правил.
Пролог-программа может обеспечить многооконный интерфейс. Для этого предусмотрены встроенные предикаты:
– создания окна makewindow
– удаления окна removewindow
– очистки окна clearwindow
– переключение активного окна gotowindow shiftwindow.
СИНТАКСИС ПРЕДИКАТОВ
makewindow(№окна, цвет текста и фона, цвет рамки, заголовок, координаты левого верхнего угла окна: № строки 0..23, № колонки 0..79, высота окна, ширина окна)
Коды цветов заданы в таблице
№ |
Название цвета |
Код цвета текста |
Код цвета фона |
|
Черный – black |
0 "0000" |
0 |
|
Синий – blue |
1 "0001" |
16 |
|
Зеленый – green |
2 "0010" |
32 |
|
Синий+зеленый=Голубой – cyan |
1+2=3 "0011" |
16+32=48 |
|
Красный – red |
4 "0100" |
64 |
|
Фиолетовый – magenta |
1+4=5 "0101" |
16+64=80 |
|
Коричневый – brown |
2+4=6 "0110" |
32+64=96 |
|
Светло-серый – lightgray |
1+2+3=7 "0111" |
16+32+64=112 |
|
Темно-серый – darkgray |
8+0=8 "1000" |
|
|
Ярко-синий – lightblue |
8+1=9 "1001" |
|
|
Ярко-зеленый – lightgreen |
8+2=10 "1010" |
|
|
Ярко-голубой – lightcyan |
8+2+1=11 "1011" |
|
|
Розовый – lightred |
8+4=12 "1100" |
|
|
Малиновый – lightmagenta |
8+4+1=13 "1101" |
|
|
Желтый – yellow |
8+4+2=14 "1110" |
|
|
Белый – white |
8+4+2+1=15 "1111" |
|
|
|
|
|
|
мерцание |
128 |
|
128 |
64 |
32 |
16 |
8 |
4 |
2 |
1 |
Blink |
Red |
Green |
Blue |
|
Red |
Green |
Blue |
Бит мерцания |
биты цвета фона |
Бит яркости |
биты цвета текста |
Код_цвета_фона = код_цвета_текста * 16
Общий код равен сумме кодов цвета текста, фона и спецэффектов
removewindow – удаление текущего окна
removewindow(№ окна, параметр 0 – не создавать окон, следующих за удаляемым окном 1 – создавать их)
clearwindow – очистка текущего окна
gotowindow(№ окна) – переход к окну с заданным номером
shiftwindow(№ окна ) – переключает или возвращает номер активного окна
write(e1,e2, … , eN) – выводит константы или переменные в системное или текущее окно. Аргументы не могут быть свободными переменными.
writef(формат строки, e1,e2, … , eN) – выводит константы или переменные в системное или текущее окно в заданном формате. Формат строки содержит обычные символы, которые выводятся без модификации, и форматы спецификации формы %–М.PF.
спецификация |
значение |
– (дефис) |
Показывает, что поля выравниваются слева. по умолчанию – справа. |
М поле |
Десятичное число, описывающее минимальный размер поля |
.P поле |
Описывает или точное представление числа с плавающей точкой, или максимальное количество выводимых в строке символов |
F поле |
Описывает специальные форматы вывода F формат вещественного числа с фиксированной точкой 12.08 E формат вещественного числа в экспоненциальной форме 3.3e-6 G короткий формат вещественного D формат символов или целых как десятичное число U формат символов или целых как десятичное без знака X формат символов или целых как шестнадцатеричного числа C формат символов или целых чисел как символа S строка символов |