Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
49
Добавлен:
05.03.2016
Размер:
1.28 Mб
Скачать

2.6. Найпростіша програма вводу-виводу даних

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

Введіть програму 2.3. Розберіться в її структурі і запустіть на виконання. Використовуючи додаток 1, познайомтесь із синтаксисом, семантикою і призначенням стандартних предикатів, використаних у даній програмі.

/* Програма 2.3 */

predicates

hello

goal

hello.

clauses

hello :- makewindow(1,7,7,"My first programm”4,54,10,22), nl, write("Please, type your name "), cursor(4,5), readln(Name), nl, write(“Welcome”, Name).

Встановивши режим трасування, ознайомтеся з послідовністю виконання програми і дією стандартних предикатів.

Модифікуйте програму таким чином, щоб вікно створювалося в середині екрана й в іншій колірній палітрі. Для цього по додатку 1 вивчіть опис предикату makewindow і скористайтеся додатком 2 для обчисленню параметрів колірної палітри.

Виключіть з програми внутрішню мету, а опис і визначення предиката hello змініть таким чином, щоб можна було використовувати зовнішню мету, що задається в режимі діалогу, наприклад, hello("Петро") або hello("").

Налагоджену таким чином програму запишіть на диск з ім'ям “lab2_2.pro”.

2.7 Побудова найпростішого інтерфейсу для виводу результатів запитів

Предикат hello(person) з програми “lab2_2.pro”, можна використовувати для виводу у вікно будь-яких, визначених у ньому термів, що дозволяє використовувати його як інтерфейс для раніше розробленої програми “lab2_1.pro”. Можливо два варіанти спільного використання предикатів з цих двох програм:

– режим переносу у вихідний модуль описів і визначень предиката шляхом копіювання з іншого файлу;

– режим текстової підстановки у вихідний модуль файлу, що містить опис і визначення необхідних предикатів.

Завантажте програму “lab2_1.pro”. Ввійдіть в режим редагування та перенесіть у вихідний файл опис і визначення предиката hello з файлу “lab2_2.pro”. Предикат hello слід вставити в якості першої підціли вихідної внутрішньої мети, наприклад:

goal

hello(„Аматори пива: \n”), ... , ... , ... , ... .

де ... , ... послідовність цілей, \n – це стандартна константа "перевід рядка",

Змінивши текст програми, налаштуйте її і запишіть у файл “lab2_3.pro”.

Завантажте програму “lab2_1.pro”. В режимі редагування введіть у першому рядку програми директиву:

include “lab2_2.pro”

У вихідну внутрішню мету в якості першої підцілі поставте предикат, аналогічний наведеному вище. Для спільного налагодження основного і підгружаємого програмних модулів можна використовувати двовіконний режим роботи редактори (F5 – вхід у додаткове вікно редагування, F10 – вихід з нього).

Виконавши необхідну модифікацію, налаштуйте програму і запишіть її у файл “lab2_4.pro”.

Дослідіть можливість застосування власного предиката hello() замість стандартного предиката write() у розроблених програмах.

8. Зміст звіту по лабораторній роботі

Звіт по лабораторній роботі повинний містити:

1. Результати досліджень по п.3.

2. Тексти програм lab1_1.pro, lab1_2.pro,. lab1_3.pro, lab1_4.pro.

3. Індивідуальне завдання згідно додатку 3.

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