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

ВСТУП

Майже всі сучасні комп’ютери засновані на ранніх, розроблених у 40-х роках ідеях фон Неймана та його колег. Машина фон Неймана має більшу пам’ять і процесор, оснащений локальною пам’яттю і комірками, що називаються регістрами. Процесор може завантажувати дані з пам’яті в регістри, виконувати арифметичні та логічні операції над вмістом регістрів і надсилати значення регістрів на згадку. Програма машини фон Неймана являє собою послідовність команд виконання перерахованих операцій разом з додатковою більшістю команд управління, які впливають на вибір наступної команди. В міру подолання технічних проблем створення комп’ютерів накопичувалися проблеми пов’язані з їх використанням. Труднощі змістилися з області виконання програм комп’ютера в область створення програм для комп’ютера. Почалися пошуки мов програмування, які були зрозумілі людині. Починаючи з мови, яка сприймається комп’ютером (машинної мови), стали з’являтися більш зручні формалізми і системи позначень. І хоч ступінь абстракції мов зріс, починаючи з нібито асемблера і далі до Фортрана, Алгола, Паскаля і Ади,всі вони несуть друк машини з архітектурою фон Неймана. Характерні особливості програмування на комп’ютерах фон Неймана призводять до розподілу праці: є люди, які думають як вирішити задачу, і розробляють відповідні методи, а є люди-кодувальщики, які пишуть тексти програм, тобто виконують прозаїчну і стомлюючу роботу з перекладом інструкції розроблювачів у команди, які сприймаються комп’ютером.

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

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

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

1 Теоретична частина

Своїм корінням Пролог сягає математичної логіки. Якщо традиційні мови програмування є процедурно-орієнтованими, Пролог заснований на декларативній точці зору на програмування. Ця якість Прологу змінює програмістське мислення та робить програмування мовою Прологу захоплюючим зайняттям, що потребує інтелектуальних зусиль.

Мова програмування Пролог базується на обмеженому наборі механізмів, що включають до себе зіставлення зразків, деревовидне представлення структур даних та автоматичне повернення. Цей невеликий набір створює дивовижно потужний та гнучкий програмний апарат. Пролог особливо добре застосовувати для вирішення задач, в яких фігурують об’єкти (зокрема структури) та відносини між ними. При використанні предикат можна вказувати як точні дані, так і відносини між ними.

Пролог – це мова програмування, призначена для обробки символьної нечислової інформації

Розглянемо об'єкти даних в Пролозі, які можуть бути простими даними і структурами. Прості дані можуть бути константами і змінними. Константи можуть бути атомами, числами і рядками.

Пролог-систему розпізнає тип об'єкту по його синтаксичній формі в тексті програми.

Атом – комбінація букв, цифр і знаку підкреслення, що починається з рядкової букви. Приклади: а, "це_є_атом", "this_is_atom".

Змінна – комбінація букв, цифр і знаку підкреслення, що починається з прописної букви. Приклади: V, Это_переменная25.

Структурні об'єкти (або просто структури) – це об'єкти, що складаються з декількох компонент. Компоненти, у свою чергу, можуть бути структурами. Для об'єднання компонент в структуру використовується функтор:

date(17,червень,1999)% date – функтор.

date(День,червень,1999), тут – День – змінна, яка може набути значення (стати зв'язаній змінній) на якомусь етапі обчислень. Синтаксично всі об'єкти даних в Пролозі є терми.

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

Процес, у результаті якого Пролог-система встановлює, чи задовольняє об'єкт запит, містить у собі логічний вивід і дослідження різних варіантів. Все це робиться автоматично самою Прологом-системою й, як правило, приховано від користувача.

В даній курсовій роботі розроблена база даних роботи менеджера магазину «Автозапчастини»

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

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

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

Факти, що належать динамічним базам даних, обробляються відмінним від інших предикатів чином з метою прискорення роботи з базами даних великого об’єму. Предикати динамічної БД відрізняються від інших тим, що вони описуються в окремій секції програми – database. Маніпулювання фактами в динамічній БД здійснюється з використанням трьох стандартних предикатів:

– asserta(Term) – додає нові факти в початок динамічної бази даних.

– assertz(Term) – додає нові факти в кінець динамічної бази даних,

– retract(Term) – видаляє факт з динамічної бази даних.

Для модифікації якого-небудь факту в динамічнй БД необхідно спочатку видалити його з неї, а потім додати в зміненому вигляді. Для забезпечують роботи з даними динамічної БД, що знаходяться на жорстоку диску використовуються наступні стандартні предикати:

– save(„file_name”) – збереження динамічної БД в текстовому файлі з ім'ям file_name.

– consult(„file_name”) – завантаження динамічної БД з текстового файлу з ім'ям file_name.

Слід зауважити, що іноді частину інформації бази даних доцільно зберігати у вигляді тверджень статичної БД і заносити ці дані до динамічної БД відразу ж після активізації програми. При цьому предикати статичної БД повинні мати інше ім'я, але ту ж саму структуру даних, що і предикати динамічної БД. Причому опис предикатів динамічної БД здійснюється в секції database, а предикатів статичної БД – в секції predicates.

У секції database декларуються предикати, що описують динамічну базу даних. Опис предикатів динамічної БД повинен передувати опису всіх звичних предикатів.

З елементами динамічної БД Пролог може виконувати всі операції, допустимі для фактів аналогічної структури. Їх можна шукати, уніфікувати, використовувати у вигляді підцілей правил і т.д

Якщо потрібно буде видалити з динамічної БД який-небудь факт, то для цього слід скористатися предикатом retract().

При необхідності скоректувати який-небудь елемент динамічної БД його слід видалити з бази даних, а потім додати в динамічну БД новий модифікований елемент.

Динамічна БД може бути збережена в текстовому файлі за допомогою виклику предиката save() з ім'ям текстового файлу, в якості параметру. Наприклад, після виконання цілі:

Goal: save(„person.dba”)

файл „person.dba” буде схожий на звичайну програму на Турбо-Пролозі з фактами у кожному рядку. Такий файл може бути пізніше знову завантажений в пам'ять, за допомогою предикату consult():

Goal: consult(„person.dba”).

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

Будь-яка програма на Пролозі – це набір фактів і правил, які є своєрідною базою даних, на якій Пролог виконує логічний висновок. У свою чергу, динамічні бази даних – це набір фактів, який може змінюватися при роботі програми.

З цих двох умов слідує найважливіший висновок: Пролог допускає зміну програм під час їх виконання! І ці зміни можна виконувати, використовуючи динамічні бази даних.

Розглянутий підхід до запису і зчитування динамічних БД, з використанням save і consult, забезпечує добрі результати при невеликих розмірах БД. Пов’язано це з тим, що факти динамічної БД є частиною Пролог-програми і, отже обмежуються розміром вільної оперативної пам'яті. Для збільшення об’єму інформації, що зберігається, можна організувати базу даних, яка зберігається не в оперативній пам’яті, а у файлах на диску.

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

Для опису внутрішньої бази даних у Visual Prolog використовується ключове слово facts (це синонім застарілого слова database), яке визначає початок оголошення розділу facts. Розділ facts складається з послідовності оголошень | предикатів, що описують відповідну внутрішню базу фактів. Під час виконання можна за допомогою предикатів стандартних asserta і assertz додавати факти (але не правила) в базу фактів. Або, викликавши стандартний предикат consult, ви можете витягнути факти, що додаються, з файлу на диску.

Слід зазначити наступні два обмеження на предикати, оголошені в розділі фактів:

– дозволяється додавати в базу даних тільки факти, але не правила;

– факти бази не можуть містити вільні змінні.

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

За своєю природою предикати в розділі facts завжди недетерміновані. Оскільки факти можуть бути додані у будь-який момент під час виконання програми, компілятор завжди повинен враховувати, що існує можливість знайти альтернативне рішення в ході пошуку з поверненням. Якщо в розділі facts є предикат, для якого ніколи не буде більше одного факту, то можна декларувати це, написавши перед оголошенням предиката факту ключове слово determ (або ключове слово single, якщо предикат завжди повинен мати один і лише один факт).

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]