Paradygmaty programowania: klasyfikacje języków programowania. Języki proceduralne a deklaratywne. Programowanie logiczne: Prolog. Intuicyjne przedstawienie Prologu. Składnia Prologu. Model obliczeniowy: implementacja DFS, nawroty, backtracking. Indeterminizm. Zmienne i ich rola. 10 prostych przykładów [2.03.2021; ALi]
Składnia Prologu. Termy i ich rola. Termy a listy. Obliczenia numeryczne w Prologu. Silnia. Rozmiana pieniędzy: rekurencja a iteracje. Mechanizm DFS z nawrotami. Przykład liczby.pl/różne warianty. Wymuszanie nawrotów: fail. Predykat odcięcia - cut. Warianty rozwiązania: SEND+MORE=MONEY. [9.03.2021; Ali]
E-Learning [16.03.2021]
Prolog: kontynuacja przykładów. Prolog: składnia i semantyka. Termy. Generacja termów: huge_tree. Unifikacja. Algorytm unifikacji termów. Podstawy logiczne Prologu: fakty, klauzule Horna, rezolucja, strategia SLD. Struktury listowe - wprowadzenie. Konstrukcja, rola i obsługa list. Predykaty member/2, select/3 i append/2. Interpretacja działania - drzewo wnioskowania, nawroty. Listy jako sekwencje, zbiory i zbiory z powtórzeniami. [23.03.2021; ALi]
Listy: Przykład: (Bridge and Torch). Pobieranie i wstawianie elementu do listy. Mechanizmy obliczeniowe: rekurencja, iteracja, nawroty. Struktury listowe: operacje na zbiorach i sekwencjach. Wybrane operacje na listach: 1-N, N-1, sumowanie, odwracanie; mechanizm akumulatora. Przykłady zaawansowanych definicji/zadania ze str. 14, wykład 3. [30.03.2021; ALi]
Struktury listowe. Operacje na zbiorach - realizacja. Sortowanie. Zaawansowane operacje na listach; przykłady zadań i ich rozwiązań. Listy-Tricks. Rekurencja a iteracje; pętle z fail. Pamięć globalna: assert/retract. [13.04.2021; ALi]
Listy - operacje zaawansowane - dokończenie. Metapredykaty operacji na listach. Prolog: reprezentacja i przetwarzanie wiedzy. Sterowanie wnioskowaniem: negacja (not), cut i fail. Wstęp do metaprogramowania. Przykłady metaprogramowania. [20.04.2021; ALi]
Metaprogramowanie. Reprezentacja i przetwarzanie wiedzy. Przykłady zastosowań. Programowanie deklaratywne a proceduralne; Prolog a Python - porównanie wybranych konstrukcji. Programowanie z ograniczeniami (Constraint Programming). Biblioteka clpfd. ECLiPSe CLP. B-Prolog, GNU Prolog. MiniZinc; Numberjack. ASP. Picat. Problog. Logica (Google). [27.04.2021.04.2021; ALi]
Inne - do uzgodnienia.