Celem ćwiczenia jest zapoznanie się z podstawowymi możliwościami języka Prolog w zakresie definiowania faktów i reguł oraz wykonywania zapytań.



Podobne dokumenty
PROLOG. Prolog. Programowanie, W.F. Clocksin, C.S. Mellish, HELION Prolog, język sztucznej inteligencji, Eugeniusz Gatnar, Katarzyna Stąpor, Wyd.

Laboratorium przedmiotu Paradygmaty Programowania

PODSTAWY SZTUCZNEJ INTELIGENCJI

Programowanie w logice

Wprowadzenie do Prologa

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

Java pierwszy program w Eclipse «Grzegorz Góralski strona własna

Prolog (Pro-Logic) Programowanie w Logice. Dr inż. Piotr Urbanek

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

Programowanie deklaratywne

Programowanie deklaratywne

Nazwa implementacji: Nauka języka Python wyrażenia warunkowe. Autor: Piotr Fiorek. Opis implementacji: Poznanie wyrażeń warunkowych if elif - else.

Maple i wykresy. 1.1 Najpierw należy się zalogować. Jak to zrobić zostało opisane w moim poprzednim tutorialu.

INTERFEJ SYSTEMU MIZAR-4

Przedrostkowa i przyrostkowa inkrementacja i dekrementacja

Instalacja programu Warsztat 3 w sieci

Zindywidualizowana praca z całà klasà Klasy I II C 2.3. List od Bartka WP Specjalne potrzeby edukacyjne i rozwojowe

Lekcja 8, 9 i 10. Konspekt lekcji Poczta elektroniczna. Materiał z podręcznika: Rozdział 5. Poczta elektroniczna

Kl 7-8 Szkoła Podstawowa

[WYSYŁANIE MAILI Z PROGRAMU EXCEL]

Ćwiczenie numer 4 JESS PRZYKŁADOWY SYSTEM EKSPERTOWY.

Matematyczna wieża Babel. 4. Ograniczone maszyny Turinga o językach kontekstowych materiały do ćwiczeń

Uruchamianie bazy PostgreSQL

Instalacja programu na systemie vista/win7/win8/win10. Instrukcja dotyczy instalacji wszystkich programów ( na przykładzie Helios ).

Prezentacja do pobranie:

Celem tego projektu jest stworzenie

Informatyka II. Laboratorium Aplikacja okienkowa

Narzędzia informatyczne w językoznawstwie

Cwiczenie nr 1 Pierwszy program w języku C na mikrokontroler AVR

7. Pętle for. Przykłady

Ćwiczenie 1. Ćwiczenie 2. Ćwiczenie 3. Opisz działanie następujących komend systemowych : COPY EDIT FDISK FIND FORMAT XCOPY

Temat 1. Więcej o opracowywaniu tekstu

Ok. Rozbijmy to na czynniki pierwsze, pomijając fragmenty, które już znamy:

Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie.

Podstawy WINDOWS 9x, 2000, XP

Programowanie w logice Prolog 1

Paradygmaty programowania

Programowanie w logice

Ćw. IV. Tworzenie stron internetowych. Podstawy projektowania, wprowadzenie do języka HTML

Wprowadzenie do Sztucznej Inteligencji Laboratorium lista 0.1 Elementy języka Prolog: fakty i zapytania. Przemysław Kobylański

Być może jesteś doświadczonym programistą, biegle programujesz w Javie,

Podstawy MATLABA, cd.

Programowanie obiektowe

Windows XP Wiersz polecenia

Wprowadzenie do Sztucznej Inteligencji Laboratorium lista 0.2 Elementy języka Prolog: reguły i rekurencja. Przemysław Kobylański

Ekran główny. Słowniczek ilustrowany. Wybór gier. Koniec programu

Uruchomienie nowego kontekstu aplikacji

Deklarowania faktów dotyczących obiektów i związków między nimi. Definiowania reguł dotyczących obiektów i związków między nimi.

Technologie informacyjne lab. 4

PROLOG INNE PRZYKŁADY MACIEJ KELM

Nazwa implementacji: Nauka języka Python pętla for. Autor: Piotr Fiorek

lekcja 8a Gry komputerowe MasterMind

Instalacja i obsługa aplikacji MAC Diagnoza EW

W przeciwnym wypadku wykonaj instrukcję z bloku drugiego. Ćwiczenie 1 utworzyć program dzielący przez siebie dwie liczby

Część XII C++ Warunki zagnieżdżone Ćwiczenie 1 nazwisko40 2. nie przepisując komentarzy!

Jak napisać program obliczający pola powierzchni różnych figur płaskich?

Brain Game. Wstęp. Scratch

Statyczne i dynamiczne predykaty

Pętle. Dodał Administrator niedziela, 14 marzec :27

Program 14. #include <iostream> #include <ctime> using namespace std;

Podstawy pracy z edytorem tekstu. na przykładzie Open Office

Języki programowania deklaratywnego

INSTRUKCJA INSTALACJI ORAZ UŻYTKOWANIA PROGRAMU FORMULARZ OFERTOWY

/*W tym miejscu funkcja system wywołuje systemową komendę PAUSE tj.czeka tak długo, aż zostanie wciśnięty dowolny znak z

Wymagania edukacyjne z przedmiotu zajęcia komputerowe dla klasy VI

Rozwiązywanie problemów z Javą

Zarządzanie projektami informatycznymi

INFO-R. Instalacja programu na systemie Windows vista/win 7/win 8/win 10

Map Reduce Wprowadzenie do Apache Hadoop

Liczby losowe i pętla while w języku Python

Niezwykłe tablice Poznane typy danych pozwalają przechowywać pojedyncze liczby. Dzięki tablicom zgromadzimy wiele wartości w jednym miejscu.

Wykład 11a. Składnia języka Klasycznego Rachunku Predykatów. Języki pierwszego rzędu.

for (inicjacja_warunkow_poczatkowych; wyrazenie_warunkowe; wyrazenie_zwiekszajace) { blok instrukcji; }

Scenariusz lekcji z Technologii informacyjnej w liceum profilowanym (profil ekonomiczno-administracyjny i usługowo-gospodarczy)

Warsztat: Randomizacja w programie Excel

Logika stosowana. Ćwiczenia Programowanie w logice i PROLOG. Marcin Szczuka. Instytut Informatyki, Uniwersytet Warszawski

Python jest interpreterem poleceń. Mamy dwie możliwości wydawania owych poleceń:

5. OKREŚLANIE WARTOŚCI LOGICZNEJ ZDAŃ ZŁOŻONYCH

Edytor tekstu OpenOffice Writer Podstawy

Państwowa Wyższa Szkoła Zawodowa w Gorzowie Wlkp. Laboratorium architektury komputerów

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

Ćwiczenia 9: Zarządzanie konfiguracją Zadania:

1 / 21. Rysunek 1. Wybierz pierwszą opcję i naciśnij ENTER. Rysunek 2. Tutaj nic nie robimy aż do wyświetlenia się niebieskiego ekranu.

Jak zawsze wyjdziemy od terminologii. While oznacza dopóki, podczas gdy. Pętla while jest

Ćwiczenie 1. Wprowadzenie do programu Octave

Programowanie w C++ Wykład 9. Katarzyna Grzelak. 14 maja K.Grzelak (Wykład 9) Programowanie w C++ 1 / 30

Logowanie do aplikacji TETA Web. Instrukcja Użytkownika

Temat 5. Programowanie w języku Logo

Podstawy języka PROLOG

Programowanie w języku Python. Grażyna Koba

Np. Olsztyn leży nad Łyną - zdanie prawdziwe, wartość logiczna 1 4 jest większe od 5 - zdanie fałszywe, wartość logiczna 0

WPROWADZANIE DANYCH W URZĄDZENIU MOBILNYM

Logika Stosowana. Wykład 1 - Logika zdaniowa. Marcin Szczuka. Instytut Informatyki UW. Wykład monograficzny, semestr letni 2016/2017

Skrócony przewodnik/często zadawane pytania (FAQ)

Instrukcja instalacji programu serwisowego NTSN krok po kroku

Instrukcja wysyłka zapytań do dla: Amazis Izyda 1.08 Nemezis 4.10 EMPATIA WYSYŁKA ZAPYTAŃ

Laboratorium Napędu robotów

Metody dowodzenia twierdzeń i automatyzacja rozumowań Systemy aksjomatyczne I

Jak zainstalować szablon allegro?

Transkrypt:

Paradygmaty Programowania Język Prolog Celem ćwiczenia jest zapoznanie się z podstawowymi możliwościami języka Prolog w zakresie definiowania faktów i reguł oraz wykonywania zapytań. Wstęp Prolog (od francuskiego Programmation en Logique) to język programowania logicznego - program w Prologu to opis reguły wnioskowania oraz celu do którego zmierzamy, a rola komputera polega na odpowiednim zastosowaniu reguł aby znaleźć rozwiązanie. Prolog został stworzony w 1971 roku przez Alaina Colmeraurera i Phillipe a Rousela. Używany w wielu programach z zakresu sztucznej inteligencji. Programowanie w Prologu bardzo różni się od programowania w językach algorytmicznych. W Prologu podaje się bazę faktów i reguł. Potem można wykonywać zapytania na tej bazie. Podstawową jednostką w Prologu jest predykat. Predykat składa się z nagłówka i argumentów, na przykład: ojciec(tomasz, agata). gdzie ojciec to nagłówek a tomasz i agata to argumenty. Predykat może zostać użyty do wyrażenia pewnych faktów o świecie, które są znane dla programu. W tym przypadku programista musi nadać im znaczenie. Jedną z interpretacji zdania ojciec(tomasz, agata) jest "tomasz to ojciec agaty". Jednak równie dobrze mogłoby to znaczyć "ojcem tomasza jest agata". Prolog nie ma pojęcia, co oznaczają te stwierdzenia. Wszystko co robi to manipulacja symbolami w oparciu o reguły. Dlatego można wybrać dowolny sposób zapisu tego, że "tomasz to ojciec agaty", pod warunkiem konsekwentnego przestrzegania kolejności argumentów w całym programie. Baza danych Prologu może też zawierać reguły. Przykład reguły to: jest(światło) :- włączony(przycisk). Zapis :- oznacza "wtedy, gdy" lub "jeśli". Ta reguła oznacza, że zdanie jest(światło) jest prawdziwe wtedy, gdy prawdziwe jest zdanie włączony(przycisk). Reguły mogą używać zmiennych. Zmienne zapisuje się zaczynając od wielkiej litery, dla odróżnienia od stałych, zaczynających się z małej. Na przykład: ojciec(x, Y) :- rodzic(x, Y), jest_rodzaju_męskiego(y). To oznacza: "dla każdych X i Y, jeśli rodzic(x,y) i jest_rodzaju_męskiego(y) to ojciec(x, Y). Przygotowanie środowiska języka Prolog

Środowisko języka Prolog dostępne jest w katalogu GNU-Prolog. Aby uruchomić program należy w katalogu bin uruchomić plik gprolog.exe. Ćwiczenie 1 Wprowadzenie prostych faktów. Utwórz katalog dla swoich celów, może to być również katalog Moje Dokumenty. Otwórz notatnik i zapisz plik jako zad1.pl. Następnie w programie GNU-Prolog należy zmienić katalog roboczy poprzez File/Change dir i ustawić ten wybrany wcześniej do naszych celów. Zadnie będzie polegać na wpisaniu kilku faktów. Ustalimy, że osoby Ala, Ola i Marta są kobietami. kobieta(ala). kobieta(ola). kobieta(marta). granagitarze(ola). To jest prosty program w Prologu. Należy zwrócić uwagę na wielkość liter. Wszystko piszemy rozpoczynając małą literą. Spróbujmy wykorzystać teraz tę bazę wiedzy. Zawartość pliku wczytujemy do Prologu poleceniem [zad1]. Jeżeli wszystko poszło dobrze, powinniśmy po wpisaniu komendy listing. Zobaczyć nasz program. Teraz możemy zadawać pytania do naszej bazy wiedzy. Np. pisząc?- kobieta(ola). sprawdzamy, czy Ola jest kobietą. Prolog odpowie nam Yes czyli tak. Stwierdziliśmy oczywisty fakt zapisany w bazie wiedzy. Podobnie możemy zapytać czy?- granagitarze(ola). Odpowiedź oczywiście brzmi tak. Proszę samodzielnie sprawdzić, czy: - na gitarze gra Ala, - Jacek jest kobietą. Ćwiczenie 2 Utwórz plik zad2.pl. szczesliwa(yolanda).

granagitarze(mia):-sluchamuzyki(mia). granagitarze(yolanda):-sluchamuzyki(yolanda). sluchamuzyki(mia). sluchamuzyki(yolanda):-szczesliwa(yolanda). Znajdują się tutaj dwa fakty: szczesliwa(yolanda) i sluchamuzyki(mia). Oraz trzy reguły. Reguła charakteryzuje się tym, że znajduje się znacznik :- oznaczający jeżeli. Reguła: sluchamuzyki(yolanda):-szczesliwa(yolanda). oznacza, że yolanda słucha muzyki, jeżeli jest szczęśliwa. Część przed :- nazywa się nagłówkiem, część za nazywa się ciałem. Jeżeli ciało jest prawdzie, wówczas nagłówek jest również prawdziwy. Zadajmy zapytanie:?- granagitarze(mia). Prolog odpowie yes, dlaczego? granagitarze(mia) nie jest faktem, ale wynika bezpośrednio z reguły granagitarze(mia):-sluchamuzyki(mia), a stwierdzenie sluchamuzyki(mia) jest faktem. Teraz zadajmy pytanie:?- granagitarze(yolanda). Prolog odpowie yes. Ten fakt Prolog wydedukował z dwóch reguł. Ponieważ yolanda jest szczęsliwa (szczesliwa(yolanda)) to zgodnie z regułą sluchamuzyki(yolanda):-szczesliwa(yolanda) słucha również muzyki. Ten wydedukowany z kolei fakt jest podstawą dla kolejnej reguły granagitarze(yolanda):-sluchamuzyki(yolanda). i stąd Prolog odpowiada na pytanie pozytywnie. Sprawdź, czy mia jest szczęśliwa. Ćwiczenie 3 Utwórz nowy plik zad3.pl. szczesliwy(wojciech). sluchamuzyki(bartek). granagitarze(wojciech):-sluchamuzyki(wojciech), szczesliwy(wojciech). granagitarze(bartek):-szczesliwy(bartek). granagitarze(bartek):-sluchamuzyki(bartek). Mamy tu dwa fakty szczesliwy(wojciech) i sluchamuzyki(bartek) oraz trzy reguły. Regułę granagitarze(wojciech):-sluchamuzyki (wojciech), szczesliwy (wojciech).

czytamy w ten sposób, że Wojciech gra na gitarze, jeżeli słucha muzyki i jest szczęśliwy. Czyli muszą być prawdziwe jednocześnie dwa stwierdzenie, które znajdują się za :-. Zadajmy pytanie?- granagitarze(wojciech). Odpowiedź to no. Dlaczego? Ponieważ fakty mówią, że Wojciech jest tylko szczęśliwy, a nie słucha muzyki. A czy Bartek gra na gitarze? Zadaj pytanie.?- granagitarze(bartek). Odpowiedz brzmi yes. Dlaczego? Ponieważ mamy dwie reguły mówiące kiedy Bartek gra na gitarze granagitarze(bartek):-szczesliwy(bartek). granagitarze(bartek):-sluchamuzyki(bartek). Wystarczy, że tylko jedna z nich jest prawdziwa, aby Bartek grał na gitarze. W naszym przypadku to druga z powyższych reguł, ponieważ sluchamuzyki(bartek). Inny zapis powyższych dwóch reguł to: granagitarze(bartek):-szczesliwy(bartek) ; sluchamuzyki(bartek). gdzie średnik oznacza LUB, czyli jeden z dwóch faktów ma być prawdziwy. W przypadku przecinka, obydwa fakty muszą być prawdziwe. Ćwiczenie 4 Utwórz nowy plik zad4.pl. kobieta(mia). kobieta(jody). kobieta(yolanda). kocha(vincent,mia). kocha(marcellus,mia). kocha(pumpkin,kroliczek). kocha(kroliczek,pumpkin). Mamy tu zbiór faktów. W ćwiczeniu tym zobaczymy jak działają zmienne. Napiszmy na przykład:?-kobieta(x). X jest zmienną (ważna jest tu wielkość liter. Do tej pory reguły i fakty pisane były małą literą, nazwę zmiennej piszemy zaczynając dużą literą. Powyższą linijkę można przeczytać jako: Powiedz jakie znasz kobiety. W odpowiedzi Prolog będzie pod X podstawiał kolejne znane mu kobiety. Rozpoczyna od mia X = mia?

Następnie można wymieniać resztę kobiet wpisując średnik (wymieniane są kolejno) bądź wszystkie naraz wciskając klawisz a. Teraz zapytajmy się: Czy jest jakaś osoba, która jest kobietą i którą kocha Marcellu? Zapytanie będzie wyglądać tak:?- kocha(marcellus, X), kobieta(x). Dla przypomnienia, przecinek oznacza logiczne AND, czyli i. Czyli muszą być spełnione dwie rzeczy osoba X musi być kobietą i jednocześnie kocha ją marcellus. Sprawdź, kto kocha mia? Kto kocha pumpkin? Ćwiczenie 5 W nowym pliku zad5.pl wpisz następujące fakty i regułę kocha(vincent,mia). kocha(marcellus,mia). kocha(pumpkin,kroliczek). kocha(kroliczek,pumpkin). zazdrosny(x,y):-kocha(x,z), kocha(y,z). Mamy tu 4 fakty i jedną regułę. W regule pojawiły się zmienne X, Y oraz Z. Dzięki tej regule możemy określić kto jest o kogo zazdrosny. Osoba X jest zazdrosna o osobę Y jeżeli osoba X kocha jakąś osobę Z i osoba Y kocha osobę Z. Przy czym osoba Z jest dowolną osobą. Zapytajmy, czy i o kogo jest zazdrosny marcellus?- zazdrosny(mercellus, W). W odpowiedzi dostaliśmy Vincenta oboje z Marcellusem kochają bowiem Mia. Czy ktoś jest zazdrosny o kroliczka? Potrafisz znaleźć wszystkie zazdrosne osoby? Zmodyfikuj regułę w następujący sposób: zazdrosny(x,y) :- kocha(x,z), kocha(y,z), X \== Y. Instrukcja X \== Y oznacza, że osoba X nie jest taka sama jak Y. Spróbuj teraz wczytać ponownie plik zad5 i teraz sprawdź wszystkich zazdrosnych. Ćwiczenie 6 Przedstaw w prologu następujące fakty i reguły - Mia i Marcellus są małżeństwem - Brutus jest żebrakiem

- jeżeli Brutus jest żebrakiem to Brutus jest biedny - jeżeli Brutus jest biedny to Brutus jest głodny - jakie zadać pytanie by sprawdzić, czy Brutus jest głodny? - Mia kocha każdego, kto jest dobrym tancerzem. - Julia lubi wszystko, co jest słodkie. Ćwiczenie 7 Przyjrzyj się poniższym faktom i regułom marozczke(harry). marozczke(ron). graczquidditcha(harry). czarodziej(x):-mamiotle(x), marozczke(x). mamiotle(sprzataczka). mamiotle(x):-graczquidditcha(x). Odpowiedz na pytania, sprawdź odpowiedzi uruchamiając program w Prologu. - czarodziej(ron). - czarodziej(harry). - czarodziej(sprzataczka). - czarodziejka(sprzataczka). - czarodziej(x). Ćwiczenie 8 Praktycznie zastosowanie programowania w Prologu. Ściągnij program zgadywanka.pl. Wgraj go do twojego katalogu roboczego. Uruchom program SWI-Prolog. Program ten uruchamiamy plwin.exe, który znajduje się w katalogu bin. Następnie wybierz File/Consult i wskaż na plik zgadywanka.pl. Program uruchamia się wykonując polecenie?- zacznij.