Języki programowania deklaratywnego

Podobne dokumenty
Języki programowania deklaratywnego

Paradygmaty programowania

Programowanie w logice

Wykład 0 Informacje Podstawowe

Programowanie w języku C++ Podstawowe paradygmaty programowania

Języki i paradygmaty programowania. I. Wprowadzenie

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

PODSTAWY SZTUCZNEJ INTELIGENCJI

Programowanie obiektowo zorientowane. Mirosław Głowacki Wykład w języku C++

Programowanie deklaratywne

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Języki programowania imperatywnego

Wprowadzenie do Prologa

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

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Projekt 4: Programowanie w logice

Programowanie funkcyjne wprowadzenie Specyfikacje formalne i programy funkcyjne

Programowanie w logice

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

REKURENCJA W JĘZYKU HASKELL. Autor: Walczak Michał

Programowanie w logice

Wykład V. Rzut okiem na języki programowania. Studia Podyplomowe INFORMATYKA Podstawy Informatyki

Algorytm. Krótka historia algorytmów

Paradygmaty programowania

Systemy ekspertowe i ich zastosowania. Katarzyna Karp Marek Grabowski

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Informatyka wprowadzenie do algorytmów (II) dr hab. inż. Mikołaj Morzy

GUI - projektowanie interfejsów cz. II

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Programowanie w Logice Struktury danych (Lista 2)

Historia modeli programowania

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

Programowanie deklaratywne

Wykład 8: klasy cz. 4

Programowanie w logice Prolog 2

Statyczne i dynamiczne predykaty

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

2.8. Algorytmy, schematy, programy

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

Podstawy języka PROLOG

Definicje. Algorytm to:

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody

Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;

Algorytm. a programowanie -

Programowanie dla początkujących w 24 godziny / Greg Perry, Dean Miller. Gliwice, cop Spis treści

Definicje wyższego poziomu

Dariusz Banasiak. Instytut Informatyki, Automatyki i Robotyki. Politechniki Wrocławskiej

Podstawy programowania Laboratorium. Ćwiczenie 2 Programowanie strukturalne podstawowe rodzaje instrukcji

Język programowania Scala / Grzegorz Balcerek. Wyd. 2. Poznań, cop Spis treści

Języki programowania zasady ich tworzenia

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

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

Programowanie deklaratywne

Wykład 5: Klasy cz. 3

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Zmienne, stałe i operatory

Programowanie w Logice Przykłady programów. Przemysław Kobylański

Podstawy Programowania Obiektowego

4. Funkcje. Przykłady

Programowanie obiektowe - 1.

Systemy eksperowe. Agnieszka Nowak Brzezińska Wykład I

Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach?

Elementy logiki. Wojciech Buszkowski Wydział Matematyki i Informatyki UAM Zakład Teorii Obliczeń

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

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.

Programowanie w Logice

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

Podstawy programowania. Wprowadzenie

ZMODYFIKOWANY Szczegółowy opis przedmiotu zamówienia

Podstawy Programowania

Rekurencja (rekursja)

Programowanie w logice Wykład z baz danych dla

3. Podaj elementy składowe jakie powinna uwzględniać definicja informatyki.

Programowanie w Turbo Pascal

Podstawy Informatyki. Algorytmy i ich poprawność

Wstęp do Programowania Obiektowego. Wykład 13 Paradygmaty. Składnia i semantyka.

Programowanie Obiektowe i C++

Semantyka rachunku predykatów

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

Podstawy programowania

Technologie informacyjne - wykład 12 -

Wykład 1 Informacje Podstawowe

Pascal typy danych. Typy pascalowe. Zmienna i typ. Podział typów danych:

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

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6

Podstawy programowania.

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

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

7. Pętle for. Przykłady

Systemy ekspertowe. Krzysztof Patan

Programowanie komputerowe. Zajęcia 1

Programowanie I. O czym będziemy mówili. Plan wykładu nieco dokładniej. Plan wykładu z lotu ptaka. Podstawy programowania w językach. Uwaga!

ECDL Podstawy programowania Sylabus - wersja 1.0

Języki i techniki programowania Ćwiczenia 2

PRYWATNA WYŻSZA SZKOŁA BUSINESSU, ADMINISTRACJI I TECHNIK KOMPUTEROWYCH S Y L A B U S

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

INFORMATYKA Pytania ogólne na egzamin dyplomowy

1 Podstawy c++ w pigułce.

Rachunki relacji. Rachunki relacji. RRK Relacyjny Rachunek Krotek

Transkrypt:

Katedra Inżynierii Wiedzy laborki 14

Języki deklaratywne Główne różnice między paradygmatem deklaratywnym a imperatywnym Omów główne cechy paradygmatu programowania w logice na przykładzie Prologa Główne zastosowania języka Prolog Co to jest obiekt w Prologu i czym się różni od obiektu w języku C (lub innym obiektowym) Termy w Prologu Klauzule i zapytania w Prologu Reguły w Prologu (omów na przykładzie)

Języki deklaratywne Co to jest unifikacja w Prologu Omów spełnienie celu w Prologu Omów mechanizm rezolucji w Prologu Co to jest odcięcie i do czego można wykorzystać Omów rekurencję w Prologu (przedstaw przykład) Listy w Prologu Omów rekurencję na listach w Prologu (przedstaw przykład) Predykaty wbudowane w Prologu wymień przykładowe i omów ich działanie Omów główne cechy paradygmatu funkcyjnego oraz wymień koncepcje języków funkcyjnych Co to są funkcje czyste Główne obszary zastosowań dla języków funkcyjnych

Języki deklaratywne Jakie paradygmaty wspiera język F Listy w F Wyrażenia lambda w C Zapis wiedzy w systemie PC Shell (omów poszczególne bloki) Składnia reguł w systemie PC-Shell (omów na przykładzie)

cechy paradygmatu programowania w logice paradygmat deklaratywny a imperatywny padarygmat imperatywy - ciąg poleceń, czyli sekwencja instrukcji zmieniających pewien stan maszyny aż do osiągnięcia końcowego wyniku. Stan rozumiany jako zawartość pamięci i rejestrów modyfikowana w kolejnych krokach (instrukcje przypisania, operacje matematyczne, pętle a także możliwość przekazania sterowania do innego miejsca - instrukcja goto). Poszczególne instrukcje (w kodzie maszynowym) są poleceniami zmieniającymi stan maszyny. Imperatywne podejście to np. obiektowe, czy równoległe. Języki: Pascal, C, C++, Java, C. paradygmat deklaratywny - szczegółowy opis określonych warunków końcowych, które powinny być spełnione, żeby możliwe było uzyskanie rozwiązania. Mówimy raczej ćo chcemy otrzymać, a nie jakie kroki należy wykonać, zatem nie ma sekwencji instrukcji modyfikujących stan maszyny krok po kroku. Zatem podejście to polega na opisywaniu tego co nas interesuje a nie jak to zrobić. Istotny jest też determinizm - tzn. dla takiego samego zestawu danych i reguł wynik pozostaje niezmienny. Deklaratywne to programowanie funkcyjne i programowanie w logice. Języki: Lisp, Prolog, Haskell, F i SQL.

zastosowania języka Prolog systemy ekspertowe; automatyczne dowodzenie twierdzeń; symboliczne rozwiązywanie równań; przetwarzanie danych; przetwarzanie języka naturalnego. obiekt w Prologu a obiekt w języku imperatywnym obiekt w języku imperatywnym jest podobny do obiektu w świecie rzeczywistym - posiada pewne cechy oraz zachowanie (pola i metody). Stany przechowywane w zmiennych a zachowaniem sterują metody; obiekt w Prologu - definiujemy jaki jest (a nie z czego się składa i co można z nim zrobić). Opisujemy relacje, jakim podlega ten obiekt. Zatem przy pomocy programu mamy możliwość stawiania pytań.

termy w Prologu stała; zmienna (symboliczne przedstawienie nazw obiektów, które są w danej chwili dane); struktura (term złożony). Termy złożone budowane są przy pomocy innych termów oraz funktorów (symboli funkcyjnych), np. f (T 1, T 2,..., T 3 ); Term złożony, to obiekt złożony z innych obiektów, czyli atomów, liczb, zmiennych a także innych termów złożonych.

Klauzule i zapytania w Prologu Program w Prologu składa sie z klauzul i zapytań; Klauzule to fakty i reguły (kolejność klauzul pojawiających się w pliku źródłowym jest bardzo ważna); Zapytanie ma taką samą strukturę jak ciało reguły i tak jak ono kończy się kropką; Zapytania nie zawierające zmiennej to zapytania elementarne wysoki(jan, michal); Zapytania zawierające zmienną to zapytania nieelementarne wysoki(x, michal). Fakty: nazwa relacji znajdującej się przed nawiasem to predykat, natomiast obiekty wewnątrz nawiasów to argumenty. Reguły w Prologu i przykład reguły W języku prolog reguła składa się z głowy i treści, połączonych ze sobą znakami :- i zakończonych znakiem.. Znak :- można traktować jako łącznik jeżeli.

unifikacja w Prologu Unifikacja, czyli uzgadnianie - mechanizm pozwalający sprawdzić, czy dwa termy są identyczne lub mogą stać się identyczne w wyniku ukonkretnienia (czyli podstawienia odpowiednich wartości za zmienne). Kluczowe jest, aby podstawienie za zmienne było identyczne w całym wyrażeniu. zmienna anonimowa, może mieć inną wartość w różnych miejscach. spełnienie celu w Prologu Procesu mający na celu wykazanie, że istnieje ciąg podstawień i przekształceń pozwalający przypisać zapytaniu wartość logiczną prawda. Poszukiwanie takiego dowodu nazywane jest spełnianiem (obliczaniem) celu. Jeśli cel pasuje do głowy reguły, wówczas mają miejsce odpowiednie podstawienia wewnątrz reguły i tym samym otrzymujemy nowy cel, zastępujący niejako cel początkowy. Jeśli cel ten składa się z kilku predykatów, wówczas zostaje on podzielony na kilka podceli, przy czym każdy z nich traktujemy jak cel pierwotny.

mechanizm rezolucji Definicja: Proces zastępowania wyrażenia przez inne wyrażenie. Algorytm: 1 Dopóki zapytanie nie jest puste Wybierz term z zapytania Znajdź fakt lub regułę uzgadniającą się z termem. Jeśli nie ma to zwróć fail w przeciwnym razie kontynuuj:jeśli znaleziono fakt, usuń go z zapytania ; Jeśli znaleziono regułę, zastąp term ciałem reguły. 2 Zwróć success. odcięcie i do czego można wykorzystać Mechanizm odcięcia pozwala zaniechać nawracania przez Prolog do wcześniej dokonanych wyborów. Służy do sterowania nawracaniem i oznaczany jest jako wykrzyknik. Nie nawracamy do wcześniej dokonanych wyborów. Odcięcie jest zawsze spełnione.

rekurencja w Prologu i przykład wywołanie wewnątrz funkcji samej siebie; każda definicja rekurencyjna musi posiadać przypadek bazowy, który pozwala nie odwoływać się funkcji do samej siebie (w przeciwnym wypadku nigdy się nie zakończy); przykłady to silnia, największy wspólny dzielnik,; w przypadku definicji używamy mechanizmu odcięcia (przykłady z ćwiczeń).

listy w Prologu Lista jest uporządkowanym ciągiem elementów o dowolnej długości. Jako element listy może być użyty każdy prawidłowy term Prologu, tzn. atom, liczba, zmienna, term złożony w tym także inna lista. umieszczane w nawiasach kwadratowych; lista pusta; listy wewnątrz listy; Lista jest albo strukturą pustą albo strukturą z dwiema składowymi: głową i ogonem; specjalny operator rozdzielający listę na głowę i ogon (kreska pionowa).

rekurencja na listach w Prologu i przykład przegląd listy (poszczególnych jej elementów) w taki sposób, aby w danym momencie analizować jeden element - rozdzielamy głowę i ogon; dodatkowe rozwiązanie bazowe nie zawierające wywołania rekurencyjnego; pisz([]). pisz([x Y ]) : print(x ), nl, pisz(y ). predykaty wbudowane i przykład member (lista); reverse (lista); write; nl; read (jednoargumentowy predykat przypisujący argumentowi term wpisany z klawiatury); listing.

cechy paradygmatu funkcyjnego oraz koncepcje języków funkcyjnych obliczenia są traktowane jako realizacja/ewaluacja funkcji (matematycznych) zamiast jawnej zmiany stanu i przekształcenia danych; funkcje czyste, leniwe wartościowanie, rekurencja, funkcje wyższego rzędu. funkcje czyste funkcja jest czysta, jeżeli nie posiada efektów ubocznych, czyli zmian stanu spowodowanych przez funkcję lub wyrażenie; modyfikacją stanu jest np. zmiana wartości zmiennej (dostęp do pamięci), czy zapis do pliku. w przypadku języka czysto funkcyjnego nie ma możliwości definiowania funkcji nieczystych (brak zmiennych).

obszary zastosowań dla języków funkcyjnych matematyka finansowa; wyrażenia regularne i wyszukiwanie wzorców; budowanie struktur grafowych i działanie na takich strukturach; przetwarzanie danych. paradygmaty w języku F zalety paradygmatu funkcyjnego oraz paradygmatu obiektowego (podejście imperatywne); podejście funkcyjne - istotne jest, co ma być zrobione, a nie sposób, w jaki ma to być zrobione; programowanie obiektowe - dostęp do klas, instrukcji.

listy w F lista jest podstawowym typem w języku - odpowiada tablicy w językach imperatywnych; w przeciwieństwie do np. PHP wszystkie jej elementy muszą mieć ten sam typ; lista pusta oznaczana jako [], połączenie dwóch elementów w listę :: wyrażenia lambda w C wyrażenie lambda to funkcja anonimowa (tworzenie delegatów); delegaty, czyli wskaźniki na funkcję (tworzymy delegat, który ma jeden parametr np. String i zwraca int; następnie tworzymy funkcję, która również otrzymuje String i zwraca int, a następnie do delegata przypisujemy tę funkcję); umożliwia tworzenie funkcji lokalnych przekazywanych jako argumenty funkcji lub zwracanych jako wartość funkcji. metoda Count z biblioteki Linq, która zlicza elementy spełniające podane wyrażenie lambda. Np. int ile = liczby.count(n => n%2 == 1).

Zapis wiedzy w systemie PC Shell Deklaratywna reprezentacja wiedzy w formie reguł i faktów ( w przeciwieństwie do predykatów w Prologu). Reprezentacja wiedzy w formie zwartych bloków oraz pełne rozdzielenie wiedzy eksperta od procedur sterowania. Wiedza ekspercka może być zawarta w kilku źródłach jednocześnie (bazy wiedzy, sieci neuronowe). sources - źródła danych dla bazy (bazy danych, bazy wiedzy, aplikacje bazujące na sieciach neuronowych); facets - zbiór deklaracji dotyczących wybranych atrybutów (wszystkie atrybuty używane w bazie); facts - informacje dodatkowe (stałe, lub będące parametrami dla bazy wiedzy - blok nie jest wymagany); rules - każda reguła w tym bloku składa się części warunkowej oraz konkluzji; control - blok sterujący programu (deklaracje zmiennych oraz instrukcje do wykonania).

Składnia reguł w systemie PC-Shell całość wiedzy jest kodowana za pomocą reguł i faktów. podstawową strukturą reprezentacji wiedzy jest tu trójka: obiekt-atrybut-wartość. przykład reguły (przesłanki, czyli elementy, które muszą być spełnone, żeby konkluzja reguły dopisana została bo bazy faktów); reguła może zostać uruchomiona tylko, jeżeli wszystkie jej przesłanki są faktami; wnioskowanie w przód oraz wnioskowaniw w tył - jaka jest różnica, znać prosty przykład; wewnątrz reguł nie powinno być alternatywy, czyli sytuacji gdzie mamy x = war1 LUB x = war2, ale taki zapis jest też dopuszczalny (chociaż lepiej rozbijać na dwie reguły);