Programowanie w logice

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

Programowanie w Logice

Programowanie w logice

Wprowadzenie do Prologa

Podstawy programowania w języku C i C++

PODSTAWY SZTUCZNEJ INTELIGENCJI

Operatory w C++ Operatory arytmetyczne. Operatory relacyjne (porównania) Operatory logiczne. + dodawanie - odejmowanie * mnożenie / dzielenie % modulo

Programowanie deklaratywne

Prolog struktury danych oraz obliczenia. 1. Arytmetyka?- Y is 2+2. Y = 4. ?- 5 is 3+3. false. ?- Z is (3.9 / 2.1). Z =

Programowanie deklaratywne

Instrukcja do ćwiczeń nr 4 typy i rodzaje zmiennych w języku C dla AVR, oraz ich deklarowanie, oraz podstawowe operatory

Języki programowania deklaratywnego

Język programowania zbiór reguł określających, które ciągi symboli tworzą program komputerowy oraz jakie obliczenia opisuje ten program.

Paradygmaty programowania

Języki programowania C i C++ Wykład: Typy zmiennych c.d. Operatory Funkcje. dr Artur Bartoszewski - Języki C i C++, sem.

Operacje wykonywane są na operandach (argumentach operatorów). Przy operacji dodawania: argumentami operatora dodawania + są dwa operandy 2 i 5.

Wprowadzenie do logiki Zdania, cz. III Język Klasycznego Rachunku Predykatów

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

Wstęp do wskaźników w języku ANSI C

Podstawy programowania. Wykład: 4. Instrukcje sterujące, operatory. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Języki i paradygmaty programowania

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

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

Operatory. Operatory bitowe i uzupełnienie informacji o pozostałych operatorach. Programowanie Proceduralne 1

Tablice (jedno i wielowymiarowe), łańcuchy znaków

Wprowadzania liczb. Aby uniknąć wprowadzania ułamka jako daty, należy poprzedzać ułamki cyfrą 0 (zero); np.: wpisać 0 1/2

C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów

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

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

Języki programowania deklaratywnego

Zadania do samodzielnego rozwiązania

Wstęp do programowania

ZMIENNE. Podstawy PHP

IX. Wskaźniki.(3 godz.)

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Podstawy VBA cz. 1. Programowanie komputerowe

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy WSKAŹNIKI KLASOWE

Ogólny schemat prostego formularza: A może lepiej zamiast przycisku opartego o input tak:

Ćwiczenie nr 1: Systemy liczbowe

Cw.12 JAVAScript w dokumentach HTML

Programowanie Komputerów

JAVAScript w dokumentach HTML (1)

Schematy blokowe I. 1. Dostępne bloki: 2. Prosty program drukujący tekst.

Programowanie w logice Prolog 2

Notacja RPN. 28 kwietnia wyliczanie i transformacja wyrażeń. Opis został przygotowany przez: Bogdana Kreczmera.

operator zmiany znaku operatory mnożenia, dzielenia, dzielenia modulo operatory dodawania, odejmowania

JAVAScript w dokumentach HTML (1) JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania.

Odczyt danych z klawiatury Operatory w Javie

Przykład 1: Funkcja jest obiektem, przypisanie funkcji o nazwie function() do zmiennej o nazwie funkcja1

Instrukcje warunkowe i skoku. Spotkanie 2. Wyrażenia i operatory logiczne. Instrukcje warunkowe: if else, switch.

dr inż. Jarosław Forenc

Porównywanie populacji

MNOŻENIE W SYSTEMACH UZUPEŁNIENIOWYCH PEŁNYCH (algorytm uniwersalny)

Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych

SQL - Structured Query Language -strukturalny język zapytań SQL SQL SQL SQL

Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Programowanie w języku Python. Grażyna Koba

Podstawy programowania 2. Temat: Funkcje i procedury rekurencyjne. Przygotował: mgr inż. Tomasz Michno

LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

Zmienne, stałe i operatory

Przeciążanie operatorów

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

SYSTEMY LICZBOWE. Zapis w systemie dziesiętnym

Temat 1: Podstawowe pojęcia: program, kompilacja, kod

Programowanie w języku C++ Grażyna Koba

Algorytmika i Programowanie VBA 1 - podstawy

Wstęp do Prolog. Wykonali: Rafał Denkiewicz, Rafał Rutkowski, Kacper Rękawiecki

MATERIAŁY DO ZAJĘĆ II

SYSTEMY LICZBOWE 275,538 =

Mathcad c.d. - Macierze, wykresy 3D, rozwiązywanie równań, pochodne i całki, animacje

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.

Przestrzenne bazy danych Podstawy języka SQL

8. Neuron z ciągłą funkcją aktywacji.

Programowanie w logice Wykład z baz danych dla

Projekt 4: Programowanie w logice

Programowanie w Logice Gramatyki metamorficzne. Przemysław Kobylański na podstawie [CM2003] i [SS1994]

Urządzenia Techniki. Klasa I TI. System dwójkowy (binarny) -> BIN. Przykład zamiany liczby dziesiętnej na binarną (DEC -> BIN):

Obliczenia iteracyjne

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

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 programowania. 1. Operacje arytmetyczne Operacja arytmetyczna jest opisywana za pomocą znaku operacji i jednego lub dwóch wyrażeń.

Wykład 2 Składnia języka C# (cz. 1)

Jarosław Wróblewski Analiza Matematyczna 1A, zima 2012/13

Podstawy programowania skrót z wykładów:

ALGORYTMY MATEMATYCZNE Ćwiczenie 1 Na podstawie schematu blokowego pewnego algorytmu (rys 1), napisz listę kroków tego algorytmu:

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Podstawy VBA cz. 2. Programowanie komputerowe

/* dołączenie pliku nagłówkowego zawierającego deklaracje symboli dla wykorzystywanego mikrokontrolera */ #include <aduc834.h>

Kodowanie informacji. Przygotował: Ryszard Kijanka

Pętla for. Matematyka dla ciekawych świata -19- Scilab. for i=1:10... end. for k=4:-1:1... end. k=3 k=4. k=1. k=2

Systemy zapisu liczb.

Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane

Zapisywanie algorytmów w języku programowania

Systemy liczbowe. Bibliografia: Urządzenia techniki komputerowej, K. Wojtuszkiewicz

Prolog Wejście / wyjście r

FUNKCJA LINIOWA - WYKRES. y = ax + b. a i b to współczynniki funkcji, które mają wartości liczbowe

Problem. Uzgadnianie wyrażeń rachunku predykatów. Instancja wyrażenia. Podstawienie termu za zmienną. Joanna Józefowska

Administracja sieciowymi systemami operacyjnymi III Klasa - Linux

Uzgadnianie formuł rachunku predykatów

Laboratorium przedmiotu Paradygmaty Programowania

Transkrypt:

Wydział Matematyki UŁ 14 marca 2007

Plan prezentacji 1 Składnia Termy Stałe Zmienne Struktury 2 Własny operator Przeciążanie operatorów 3 Arytmetyczne i logiczne predykaty systemowe 4 Do zapamiętania

Termy Stałe Zmienne Struktury Program Prologu składa się z termów. Term to: stała, zmienna, struktura. Każdy term zapisywany jest jako ciąg znaków, tworzących cztery kategorie: duże litery: A-Z małe litery: a-z cyfry: 0-9 znaki specjalne:

Termy Stałe Zmienne Struktury Program Prologu składa się z termów. Term to: stała, zmienna, struktura. Każdy term zapisywany jest jako ciąg znaków, tworzących cztery kategorie: duże litery: A-Z małe litery: a-z cyfry: 0-9 znaki specjalne:

Termy Stałe Zmienne Struktury Program Prologu składa się z termów. Term to: stała, zmienna, struktura. Każdy term zapisywany jest jako ciąg znaków, tworzących cztery kategorie: duże litery: A-Z małe litery: a-z cyfry: 0-9 znaki specjalne:

Termy Stałe Zmienne Struktury Stałą nazywamy konkretne obiekty lub relacje. Istnieją dwa rodzaje stałych: atomy i liczby. Przykład: jas, malgosia, posiada, je Atomy składają się z: symboli, np.?- lub :-, liter, cyfr znaku podkreślenia (zaczynamy zawsze małą literą), dowolnych znaków, jeśli ujęte są w pojedyńczy cudzysłów. Liczby: -17, 23, 99.9, 123e-3

Termy Stałe Zmienne Struktury Stałą nazywamy konkretne obiekty lub relacje. Istnieją dwa rodzaje stałych: atomy i liczby. Przykład: jas, malgosia, posiada, je Atomy składają się z: symboli, np.?- lub :-, liter, cyfr znaku podkreślenia (zaczynamy zawsze małą literą), dowolnych znaków, jeśli ujęte są w pojedyńczy cudzysłów. Liczby: -17, 23, 99.9, 123e-3

Termy Stałe Zmienne Struktury Stałą nazywamy konkretne obiekty lub relacje. Istnieją dwa rodzaje stałych: atomy i liczby. Przykład: jas, malgosia, posiada, je Atomy składają się z: symboli, np.?- lub :-, liter, cyfr znaku podkreślenia (zaczynamy zawsze małą literą), dowolnych znaków, jeśli ujęte są w pojedyńczy cudzysłów. Liczby: -17, 23, 99.9, 123e-3

Termy Stałe Zmienne Struktury Zmienne mają postać atomu złożonego z liter, cyfr lub znaku podkreślenia z zastrzeżeniem, że pierwszym znakiem musi być duża litera. Czasem interesuje nas tylko czy coś jest prawdą, ale zupełnie nie interesuje nas co. Czy ktoś lubi Jasia? W takich sytuacjach możemy użyć zmiennej anonimowej zapisywanej jako jeden znak podkreślenia.?- lubi(_,jas).

Termy Stałe Zmienne Struktury Zmienne mają postać atomu złożonego z liter, cyfr lub znaku podkreślenia z zastrzeżeniem, że pierwszym znakiem musi być duża litera. Czasem interesuje nas tylko czy coś jest prawdą, ale zupełnie nie interesuje nas co. Czy ktoś lubi Jasia? W takich sytuacjach możemy użyć zmiennej anonimowej zapisywanej jako jeden znak podkreślenia.?- lubi(_,jas).

Termy Stałe Zmienne Struktury Struktura, inaczej term złożony, to obiekt złożony z innych obiektów. posiada(piotr,auto). posiada(marcin,auto). Przykład struktury posiada(piotr,auto(nissan,almera)). posiada(marcin,auto(fiat,punto)).?- posiada(x,auto(nissan,y)). X = piotr Y = almera ;

Termy Stałe Zmienne Struktury Struktura, inaczej term złożony, to obiekt złożony z innych obiektów. posiada(piotr,auto). posiada(marcin,auto). Przykład struktury posiada(piotr,auto(nissan,almera)). posiada(marcin,auto(fiat,punto)).?- posiada(x,auto(nissan,y)). X = piotr Y = almera ;

Termy Stałe Zmienne Struktury Struktura, inaczej term złożony, to obiekt złożony z innych obiektów. posiada(piotr,auto). posiada(marcin,auto). Przykład struktury posiada(piotr,auto(nissan,almera)). posiada(marcin,auto(fiat,punto)).?- posiada(x,auto(nissan,y)). X = piotr Y = almera ;

Termy Stałe Zmienne Struktury Struktura, inaczej term złożony, to obiekt złożony z innych obiektów. posiada(piotr,auto). posiada(marcin,auto). Przykład struktury posiada(piotr,auto(nissan,almera)). posiada(marcin,auto(fiat,punto)).?- posiada(x,auto(nissan,y)). X = piotr Y = almera ;

Własny operator Przeciążanie operatorów Zapis a-b*c to inna forma zapisu -(a,*(b,c)). Uwaga Operator arytmetyczny nie powoduje wykonania jakichkolwiek obliczeń. 1+2 to nie jest to samo co 3 1+2 to inny zapis termu +(1,2) Kiedy własny operator lubi(jas,malgosie). jas lubi malgosie.

Własny operator Przeciążanie operatorów Zapis a-b*c to inna forma zapisu -(a,*(b,c)). Uwaga Operator arytmetyczny nie powoduje wykonania jakichkolwiek obliczeń. 1+2 to nie jest to samo co 3 1+2 to inny zapis termu +(1,2) Kiedy własny operator lubi(jas,malgosie). jas lubi malgosie.

Własny operator Przeciążanie operatorów Zapis a-b*c to inna forma zapisu -(a,*(b,c)). Uwaga Operator arytmetyczny nie powoduje wykonania jakichkolwiek obliczeń. 1+2 to nie jest to samo co 3 1+2 to inny zapis termu +(1,2) Kiedy własny operator lubi(jas,malgosie). jas lubi malgosie.

Własny operator Przeciążanie operatorów Operator jest atomem wiążącym kilka operandów, podobnie jak struktura, z tym wyjątkiem, że możemy zapisać go także w jednej z następujących postaci: prefixowej, np. +1, postfixowej, np. x!, infixowej, np. 1*2. Definiując nowy operator, oprócz zdecydowania się na jedną z wcześniej opisanych postaci, ustalić musimy jego priorytet i łączność priorytet: od 1 do 1200 (im mniej tym większy) łączność: lewo- lub prawostronna (1-2-3 interpretowane jest jako ((1-2)-3) ponieważ - jest operatorem lewostronnie łącznym); łączność definiujemy za pomocą jednego z atomów: xf, yf, xfx, xfy, yfx, fx lub fy.

Własny operator Przeciążanie operatorów Operator jest atomem wiążącym kilka operandów, podobnie jak struktura, z tym wyjątkiem, że możemy zapisać go także w jednej z następujących postaci: prefixowej, np. +1, postfixowej, np. x!, infixowej, np. 1*2. Definiując nowy operator, oprócz zdecydowania się na jedną z wcześniej opisanych postaci, ustalić musimy jego priorytet i łączność priorytet: od 1 do 1200 (im mniej tym większy) łączność: lewo- lub prawostronna (1-2-3 interpretowane jest jako ((1-2)-3) ponieważ - jest operatorem lewostronnie łącznym); łączność definiujemy za pomocą jednego z atomów: xf, yf, xfx, xfy, yfx, fx lub fy.

Własny operator Przeciążanie operatorów xf postfix (ang. non-associative) yf postfix lewostronny xfx infix n-a xfy infix prawostronny yfx infix lewostronny fx prefix n-a fy prefix prawostronny

Własny operator Przeciążanie operatorów lubi(jas,malgosie).?- [p1]. % p1 compiled 0.00 sec, 852 bytes Yes?- lubi(jas,malgosie). Yes?- jas lubi malgosie. ERROR: Syntax error: Operator expected ERROR: jas ERROR: ** here ** ERROR: lubi malgosie.?- op(500, xfx, lubi). Yes?- jas lubi malgosie. Yes

Własny operator Przeciążanie operatorów?- X is 2+3*5. X = 17 Yes?- op(100,yfx,+). Yes?- X is 2+3*5. X = 25 Yes?-

Arytmetyczne i logiczne predykaty systemowe Język prolog posiada wsparcie do wykonywania prostych operacji arytmetycznych przy pomocy wbudowanych predykatów. Predykaty te nazywamy systemowymi. Pomimo pozornego podobieństwa do reszty predykatów, te są zaszyte bezpośrednio w kodzie środowiska, przez co działają szybciej i bardziej efektywnie niż predykaty napisane w czystym Prologu. W sytuacjach gdy mamy wybór pomiędzy predykatami wbudowanymi, a predykatami dodanymi warto wybierać predykaty wbudowane.

Arytmetyczne i logiczne predykaty systemowe Jak wiadomo z ćwiczeń, możemy zapisać następujące zdanie: (X is 1+2). w konsekwencji czego zostanie wykonanych tutaj kilka czynnosci: zostanie wyliczona wartość wyrażenia 1+2, co doprowadzi nasze zapytanie do postaci X is 3 is zostanie zinterpretowane jako podstawienie X:=3 zostanie zwrócona wartość Yes informaująca o tym, że X i 3 mają teraz taką samą wartość.

Arytmetyczne i logiczne predykaty systemowe Jeśli napiszemy 3 is 1+2 wówczas is nie zadziała jako operator przypisania a spowoduje jedynie wykonanie porównania wartości z wyrażeniem. Zwróconą wartością będzie Yes.

Arytmetyczne i logiczne predykaty systemowe Jeśli napiszemy 1+2 is 1+2 wówczas zwrócona zostanie wartość No. Wynika to z faktu, że oba argumenty są wyrażeniami. Wyrażenie z prawej strony zostanie obliczone dając w wyniku liczbę 3. Wyrażenie z lewej strony pozostanie bez zmian, przez co nie będzie reprezentowane przez wartość 3.

Arytmetyczne i logiczne predykaty systemowe Do porównywania zamiast is możemy używać takż operatora =:=, który w odróżnieniu od is pozwala na umieszczenie wyrażeń arytmetycznych w miejscu obydwu swoich argumentów. Możemy wiec napisać: (3+2 =:= 4+1). co zostanie poprawnie zinterpretowane i zwróci wartość Yes.

Arytmetyczne i logiczne predykaty systemowe Prolog udostępnia także inne predykaty wyglądające jak operatory służące do porównywania wyrażeń arytmetycznych. Są nimi: mniejszy < większy > mniejszy równy <= większy równy >= Mogą one przyjmować wyrażenia arytmetyczne zarówno w pierwszym jak i drugim argumencie. W związku z tym da się wyliczyć wartość zapytań takich jak: (1+2 < 2+3). (1+2*3 >= 3+3). (1 < 4). (N < N+1). a jeśli wartości X, Y i Z są określone można również zapisać i wyliczyć (X >= Y+Z). (X+1 < Y*2+X).

Arytmetyczne i logiczne predykaty systemowe Algorytm Euklidesa nwd(x,0,x). nwd(x,y,nwd) :- Y > 0, R is X mod Y, nwd(y,r,nwd).

Do zapamiętania Do zapamiętania Czym są w Prologu stałe, zmienne struktury? Podaj przykład. Co to jest operator? Co określa operator? Podaj przykład własnego operatora i jego użycia. Jak działa predykat is; czym różni się od operatora =:=? Podaj przykład prostego programu obliczeniowego (np. silnia) i omów jego działanie.

Do zapamiętania Do zapamiętania Czym są w Prologu stałe, zmienne struktury? Podaj przykład. Co to jest operator? Co określa operator? Podaj przykład własnego operatora i jego użycia. Jak działa predykat is; czym różni się od operatora =:=? Podaj przykład prostego programu obliczeniowego (np. silnia) i omów jego działanie.

Do zapamiętania Do zapamiętania Czym są w Prologu stałe, zmienne struktury? Podaj przykład. Co to jest operator? Co określa operator? Podaj przykład własnego operatora i jego użycia. Jak działa predykat is; czym różni się od operatora =:=? Podaj przykład prostego programu obliczeniowego (np. silnia) i omów jego działanie.

Do zapamiętania Do zapamiętania Czym są w Prologu stałe, zmienne struktury? Podaj przykład. Co to jest operator? Co określa operator? Podaj przykład własnego operatora i jego użycia. Jak działa predykat is; czym różni się od operatora =:=? Podaj przykład prostego programu obliczeniowego (np. silnia) i omów jego działanie.

Do zapamiętania Do zapamiętania Czym są w Prologu stałe, zmienne struktury? Podaj przykład. Co to jest operator? Co określa operator? Podaj przykład własnego operatora i jego użycia. Jak działa predykat is; czym różni się od operatora =:=? Podaj przykład prostego programu obliczeniowego (np. silnia) i omów jego działanie.