Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Подготовка к PROLOG.doc
Скачиваний:
1
Добавлен:
27.09.2019
Размер:
154.11 Кб
Скачать

Создание меню с помощью окон Определение окна

makewindow (НомерОкна, АтрОкна, АтрРамки, Заголовок, Строка, Столбец, Высота, ШиРина) (integer, integer, integer, string, integer, integer, integer, integer): (все i) (все o)

Строка, столбец – координаты верхнего левого угла.

АтрЭкрана: =7 – позитивное изображение. 112 – негативное изображение. +1 – подчеркивание, +8 – высокое разрешение, +128 – мерцание символа.

Атрибуты рамки: 0 – нет рамки.

Смена текущего окна (считывание номера)

shiftwindow (НомерОкна) : (integer) (i) (o)

Окна перекрываются.

Быстрое переключение между двумя окнами

gotowindow (НомерОкна) : (integer) (i)

Окна не перекрываются и работают быстрее, чем shiftwindow.

Очистка текущего окна

clearwindow

Удаление текущего окна

removewindow

/* Создание меню с помощью окон */

predicates

repeat

process

(integer)

show_menu

run_file_utility

goal

run_file_utility.

clauses

run_file_utility:- show_menu,

nl, write (“Нажмите любую клавишу”),

readchar (_), exit.

repeat.

repeat:- repeat.

show_menu:- repeat,

make_window (1, 7, 7), “Главное меню”, 4, 10, 16), 36), nl,

write (“Меню утилит”), nl, nl,

write (“0 Конец”), nl,

write (“1 Delete file”), nl,

write (“2 Rename”), nl,

write (“3 Create”),

write (“4 Edit”), nl,

write (“Выберите одну из цифр”), nl,

readint (X), X<5,

process (0):- nl, write (“Exit menu”), nl.

process (1):- makewindow (2, 7, 7, “Delete file”, 12, 36, 10, 36),

write (“This will delete file”), nl, nl,

<реализация процесса>,

write (“Press any key for main menu”),

readchar (_), remopvewindow.

process (2):- // аналогично process (1)

Способы организации цикла

Создание динамических баз данных. Статические и динамические базы данных

БД – это упорядоченная совокупность данных, записанных в доступном для компьютера формой. БД является составной частью системы управления базами данных (СУБД). Существует 3 модели БД:

  • сетевая

  • иерархическая

  • реляционная.

Соответственное различают следующие СУБД.

Сетевые СУБД используют модель представления данных в виде произвольного графа. В иерархической СУБД данные представлены в виде древовидной (иерархической) структуры. В реляционной модели данные хранятся в виде таблицы.

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

Предикаты БД в ТПр описываются в разделе databas, который должен располагаться перед разделом predicates. Все утверждения с предикатами, описанными в database, составляют динамическую БД. БД называется динамической, так как во время работы программы у нее (БД) можно удалять любые содержащиеся в ней утверждения, а так же добавлять новые, в этом отличие от статической, где утверждения являются частью кода программы и не могут быть изменены во время программы.

Другая особенность ДБД с том, что БД может быть записана на диск и считана с него в ОП. Например, в ДБД содержаться сведения об игроках футболистах dplayer. Тогда требуется следующее описание в программе

domains

name, team=symbol

number = integer

database

dplayer (name, team, number)

Иногда бывает лучше иметь часть информации БД в виде утверждений статической БД. Эти данные заносятся в ДБД сразу после активизации программы. Для этого используются предикаты asserta, assetz. Предикаты статической БД имеют другое имя, но ту же форму представления данных, что и предикаты ДБД. Предикат СБД, соответствующий предикату dplayer может быть представлен в программе следующим образом:

predicates

player (name, team, number)

clauses

player (“Adamov”, “Dinamo”, 5).

В ДБД содержаться только факты, но не правила.

Правило дл язанесения в ДБД информации из утверждений предиката player служит:

assert_database:-

player (Name, Team, Number),

assertz (dplayer (Name, Team, Number)),

% Добавление указанного факта в ДБД

fail.

assert_database:-!.