Лекция: Команда Page/ Page Structure

Переміщає у вікно Page Structure, яке відображає в ієрархічному порядку всі сторінки вашої моделі. Від цього вікна Ви можете перейти до будь-якої сторінки в моделі.

Поточна сторінка позначена чорною точкою. Для переходу до іншої сторінки, виберіть ім'я в Структурі Сторінок. Обрана сторінка відкривається або якщо ця сторінка знаходиться на Робочому столі (створена окремим файлом) сторінка робиться активною.

Натисніть ESC для повернення до поточного сторінки.

Додаток В

МОДУЛЬНЕ ПРОГРАМУВАННЯ НА VISUAL PROLOG

В.1 Структура модульної програми на Visual Prolog

Програма з декількох модулів має один головний модуль і декілька допоміжних модулів. Модулі програми взаємодіють через виклики певних процедур і фактів.

Всі модулі програми оформлюються подібно програмі з одного модуля, тобто мають секції опису предикатів і доменів(типів даних) і секції тверджень.

Відміна головного модуля від інших модулів лише в тому, що головний модуль має секцію Goal, а інші модулі не мають.

На Пролозі область реалізації містить локальні описи доменів і предикатів і локальні твердження. Локальні описи і твердження можуть застосовуватися тільки в модулю, в якому вони знаходяться.

З локальних тверджень складаються процедури модуля.

Область інтерфейсу містить глобальні описи доменів і описи глобальних предикатів. Кожна глобальна секція починається словом Global.

Глобальні секції Predicates і Facts містять опис предикатів, якими записані твердження процедур і динамічні факти. Такі процедури і факти, можна викликати з інших модулів.

В програмі може бути лише одна неіменована секція Facts. Тому, якщо є одна глобальна секція Facts, то в будь-якому модулі можуть бути лише іменовані локальні секції Facts.

Глобальні факти з характеристикою single можуть розміщуватися тільки в головному модулі. Причому секція Goal повинна розміщуватися перед секцією Clauses, у якій розташований.

Глобальні динамічні факти створюють окремий модуль програми.

Порядок розміщення локальних і глобальних секцій у програмі не важливий.

Порядок об’явлення глобальних доменів і глобальних предикатів у різних модулях може бути різним.

Крім того, головний модуль повинен мати всі глобальні об’яви програми, а інші модулі можуть мати тільки ті описи, що вони застосовують. Тобто різні модулі програми можуть мати різний вміст глобальних об’яв.

Такий підхід дозволяє створювати бібліотеки в об’єктних кодах з процедурами, що застосовує вся програма.

В.2 Глобальні описи предикатів

Для кожного глобального предикату треба вказати набір можливих конкретизацій параметрів.

Наприклад, Global Predicates

nondeterm str_len(string, integer) — (i, o) (i, i) (o, i)

Якщо конкретизація параметрів не вказана, то по замовчанню всі параметри процедури вважаються вхідними.

Глобальним може бути предикат — функція, що написаний на мові Visual Prolog. При об’яві предикату — функції перед функтором вказують його тип.

Наприклад. Global Predicates

nondeterm integer kvadrat(integer) — (i)

Пролог може викликати програму написану на іншій мові програмування. Таку програму об’являють в програмі на Пролозі, як зовнішній предикат. Об’ява зовнішнього предикату повинна містити мову. Наприклад, для використання програми на мові С, треба об’явити:

Global Predicates

pro_c(integer, integer) — (i, o) language c

В.3 Приклад модульної програми

Розглянемо приклад модульної програми. Програма обчислює вік людини. Вона містить головний модуль і два допоміжних. Модулі програми дуже малі. Це допоможе краще зрозуміти структуру програми.

Головний модуль «Р1» видає повідомлення, що буде обчислено вік людини. Модуль «Р11» пропонує ввести поточний рік і вводить його. Модуль «Р12» пропонує ввести рік народження і вводить його.

Після чого головний модуль обчислює вік людини і виводить його.

Для створення модульної програми ми відокремимо інтерфейси модулів від секцій реалізацій модулів.

Модулі програми, що подані нижче не містять глобальних об’яв.

/*Головний модуль Р1*/

Include “P1.inc”

Predicates

do

Goal

do.

Clauses

do:-write(«Підрахуємо ваш вік „), nl, рік_народження(Рік_н),

рік_поточний(Рік_п), Вік= Рік_п — Рік_н,

write(“Ваш вік », Вік).

/*Модуль Р11*/

Include “P1.inc”

Clauses

рік_поточний (Рік_п):- write(«Введіть поточний рік»), nl, readint(Рік_п).

/*Модуль Р12*/

Include “P1.inc”

Clauses

рік_народження (Рік_н):- write(«Введіть рік народження „),nl, readint(Рік_н).

Створимо файли з глобальних доменів для кожного модуля свій. Аналогічно створимо файли з глобальних предикатів для кожного модуля свій.

/* Project: P1 FileName: p11.DOM */

Global domains

рік_пот = integer

/* Project: P1 FileName: p11.PRE */

Global Predicates

рік_поточний (рік_пот)-(o)

/* Project: P1 FileName: p12.DOM */

Global domains

рік_нар = integer

/*Project: P1 FileName: p12.PRE*/

Global Predicates

рік_народження (рік_нар)-(o)

Такий підхід дозволяє за допомогою директив include та експерту застосувань злити автоматизовано всі файли в один P1.inc, а злитий файл включити в кожний модуль програми за директивою Include “P1.inc”.

Структура файлу P1.inc після злиття файлів подана нижче.

/* Project:p1 FileName: P1.INC*/

global domains

DB_SELECTOR = browselist_db % For treebrowser tool

FILE = fileselector1; fileselector2 % To be edited

include “p11.dom»

include «p11.pre»

include «p12.dom»

include «p12.pre»

Компілятор за директивою Include “P1.inc” в кожному модулі включає файл P1.inc в модуль. Після чого переглядає включені об’яви і знаходячи знову директиви Include знову включає в модулі об’яви.

Такий метод працює надійніше, ніж програміст буде сам вибирати з кожного модуля глобальні об’яви включати їх у головний модуль.

В.4 Створення модульної програми експертом застосування

Програму, що складається з декількох модулів, неможливо взагалі створити без опції Project. Для реалізації такої програми треба мати засоби опису структури програми з модулів.

Після створення проекту і головного модуля створити новий модуль і додати його до структури програми можна за опцією NEW.

еще рефераты
Еще работы по информатике