Katedra Inżynierii Wiedzy laborki 1
e-mail: przemyslaw.juszczuk@ue.katowice.pl Konsultacje: na stronie katedry + na stronie domowej Pokój 202c budynek A pjuszczuk.pl
Języki deklaratywne - laborki Wprowadzenie i język Prolog; Języki funkcyjne i język F #; System PC Shell; Zajęcia i warunki zaliczenia Język Prolog - kolokwium (po ok 7-8 zajęciach); Języki funkcyjne i język F # - 2 zajęcia; System PC Shell - projekt systemu ekspertowego dotyczący wybranego zagadnienia + sprawozdanie - ok 2-3 zajęć; Powtórki przed egzaminem.
Zagadnienia - bardziej szczegółowo języki imperatywne a języki deklaratywne; wprowadzenie o paradygmatach; podstawy języka Prolog i zagadka Einsteina; środowisko i pliki pl; predykaty, fakty, zapytania; zmienne i reguły; arytmetyka; listy i rekurencja; predykaty wbudowane
Zagadnienia - bardziej szczegółowo paradygmat funkcyjny; typy, identyfikatory, funkcje; wyrażenia lambda; system PC SHELL i składnia; projekt systemu ekspertowego; powtórki (z naciskiem na Prologa).
Metodyka (paradygmat) programowania - czyli? Metodyka (zwana też często paradygmatem) to ustandaryzowane dla wybranego obszaru podejście do rozwiązywania problemów. sposób programowania oparty na mechanizmach udostępnianych przez wybrany język programowania; w związku z odmiennym przeznaczeniem języków programowania mogą występować istotne różnice pomiędzy poszczególnymi paradygmatami; środowisko przeważnie nie narzuca paradygmatu; dobór odpowiedniej metodyki zależy od rozwiązywanego problemu;
Nadtypy paradygmatów Programowanie stacjonarne - tworzenie programu, uwzględniającego obliczenia wykonywane przez jeden procesor; Programowanie rozproszone - tworzenie programu, uwzględniającego obliczenia wykonywane bez współdzielenia zasobów obliczeniowych (współdzielenie danych - często rozproszonych); Programowanie równoległe - tworzenie kodu z uwzględnieniem obliczeń wykonywanych przez więcej niż jeden procesor. Konieczność synchronizacji i komunikacji;
Typy paradygmatów Programowanie imperatywne - słynna instrukcja goto ; Przykłady języków: Algol, Fortran, Pascal, C. Programowanie funkcyjne - Haskell (Wartościowanie leniwe); Programowanie opisowe - VHDL (język opisu i projektowania układów cyfrowych); Programowanie logiczne - Prolog (fakty i reguły);
Podstawowe rodzaje metodyk Programowanie liniowe - całość programu jest postrzegana jako jeden, ciągły blok; Programowanie proceduralne - dekompozycja problemu. Blok główny to szkielet programu, a poszczególne procedury i funkcje są wywoływane w określonej kolejności; Programowanie funkcyjne - wynik w programowaniu funkcyjnym otrzymywany poprzez złożenie funkcji. Przykładowo pętla zastępowana jest poprzez rekurencję. Programowanie obiektowe - klasa, obiekt, metoda, pole, enkapsulacja. Programowanie generyczne - programowanie uogólnione. Programowanie agentowe - dekompozycja kodu i wydzielenie zadań dla osobnych podprogramów/wątków/procesów.
Stałe - definicja Symboliczna nazwa obiektów występujących w programie Stałe łańcuch znaków o dowolnej długości; pierwsza litera łańcucha mała; łańcuch może zawierać cyfry i podkreślenia; łańcuch może zawierać znaki specjalne takie jak $,, %; dowolny ciąg znaków ujęty w pojedyncze apostrofy.
Zmienne - definicja Służą do przedstawienia nazw obiektów, które nie są w danym momencie znane. Zmienne łańcuch znaków o dowolnej długości zaczynający się dużą literą; pojedyncza duża litera; pojedynczy znak podkreślenia - reprezentujący zmienną anonimową.
Predykaty - definicja Opisują związki zachodzące pomiędzy obiektami. Predykaty p(t 1, T 2,..., T n ); p - to nazwa n-argumentowego symbolu relacyjnego; T i - termy.
Termy złożone - definicja Termy złożone tworzone są przy pomocy innych termów oraz funktorów (symboli funkcyjnych). Termy złożone f (T 1, T 2,..., T n ); f - to nazwa n-argumentowego symbolu funkcyjnego; T i - termy. Przykład termu złożonego ksiazka(autor(boleslaw,prus), Lalka, 2000).
Fakty i zapytania Fakty lubi(jan,jablko); lubi(adam,sliwka); czyta(mariusz,gazeta); lubi(wojtek,gazeta);?-lubi(adam,sliwka).?-czyta(adam,gazeta). Podaj kilka przykładów faktów a następnie zadaj pytania dotyczące tych faktów.
Koniunkcje - zapytania łączone lubi(jan,jablko); lubi(adam,sliwka); czyta(mariusz,gazeta); lubi(wojtek,gazeta); lubi(adam, jablko);?-lubi(adam,sliwka), lubi(adam,jablko).?-czyta(adam,gazeta), czyta(adam,ksiazka).
Alternatywa - zapytania łączone lubi(jan,jablko); lubi(adam,sliwka); czyta(mariusz,gazeta); lubi(wojtek,gazeta); lubi(adam, jablko); Alternatywa oznaczana jest przy pomocy średnika.?-lubi(adam,sliwka); lubi(adam,jablko).?-czyta(adam,gazeta); czyta(adam,ksiazka).
Zagadka Einsteina Przeczytaj tekst dotyczący zagadki Einsteina. Porównaj rozwiązanie napisane w języku imperatywnym oraz deklaratywnym (materiały można pobrać ze strony pjuszczuk.pl).
Ćwiczenie - dopisz fakty siostra(ala,michal); wnuczek(jakub,miroslaw).
siostra(ala,michal). ojciec(janusz,ala). ojciec(janusz,michala). matka(halina,ala). matka(halina,michal).
wnuczek(jakub,miroslaw). ojciec(janusz,jakub). ojciec(miroslaw,janusz). /lub syn(jakub,janusz). syn(janusz,miroslaw).