Kapitola 3: Základy syntaxe – Atomy a Fakta

Vítejte v laboratoři Prologu! V předchozích kapitolách jsme si povídali o tom, jak Prolog "myslí" a jak rozlišuje data od znalostí. Teď je čas začít mluvit jeho jazykem. Nebojte se, není to tak složité jako latina, ale má svá přísná pravidla. Představte si, že se učíte gramatiku nového, velmi logického jazyka. Pokud uděláte chybu v tečce nebo velkém písmenu, Prolog vám prostě nebude rozumět. V této kapitole se naučíme základní stavební kameny: jak pojmenovávat věci (atomy) a jak o nich tvrdit pravdu (fakta).

3.1 Atomy (Konstanty) – Jména věcí

Atom je základní stavební kámen Prologu. Je to konkrétní věc, kterou už dál nedělíme. Jméno, číslo, objekt. Představte si ho jako **jedinečnou nálepku** pro něco ve vašem světě. Když napíšete karel, myslíte tím konkrétního člověka jménem Karel. Není to proměnná, která by mohla nabývat různých hodnot. Karel je prostě karel. Atomy jsou "slova" v Prologu.

ATOM Konstanta, která reprezentuje konkrétní, nedělitelný objekt nebo pojem. V Prologu musí začínat malým písmenem.

⚠️ Důležité pravidlo: Atomy v Prologu začínají vždy malým písmenem. Pokud napíšete slovo s velkým písmenem, Prolog si bude myslet, že je to proměnná (o těch v další kapitole). To je častá chyba začátečníků!

3.2 Fakta a Predikáty (Vztahy) – Co je pravda?

Samotné atomy jsou nudné. karel a jablko nám nic neřeknou. Potřebujeme vyjádřit vztah mezi nimi nebo popsat jejich vlastnosti. K tomu slouží predikáty. Predikát je jako **sloveso** nebo **přídavné jméno** v běžné řeči. Popisuje vlastnost atomu nebo vztah mezi atomy.

PREDIKÁT Jméno vztahu nebo vlastnosti. Zapisuje se jako jméno a v závorce jsou objekty (atomy), kterých se týká.
FAKT Jednoduché, pravdivé tvrzení o světě, které se skládá z predikátu a jednoho nebo více atomů. Je to základní "znalost", kterou Prologu dáváte.

Zápis: predikát(objekt1, objekt2).

⚠️ Pozor: Každý fakt musí končit tečkou! Tečka v Prologu znamená "konec věty" nebo "konec příkazu". Bez tečky Prolog čeká, že budete pokračovat, a to může vést k chybám.

muz(homer).           % Homer je muž (Vlastnost - fakt)
zena(marge).          % Marge je žena (Vlastnost - fakt)
rodic(homer, bart).   % Homer je rodičem Barta (Vztah - fakt)
ma_rad(bart, pizza).  % Bart má rád pizzu (Vztah - fakt)

Vidíte? Prostě popisujeme svět, jako bychom psali encyklopedii pravd.

3.3 Arita (Četnost argumentů) – Kolik "účastníků" má vztah?

V Prologu často uvidíte zápis jako rodic/2 nebo muz/1. Číslo za lomítkem říká, kolik má predikát argumentů (kolik věcí je v závorce). Představte si to jako **počet "rolí"**, které vztah vyžaduje. "Být mužem" vyžaduje jednu roli (kdo je muž). "Být rodičem" vyžaduje dvě role (kdo je rodič, koho je rodičem).

To je důležité, protože pro Prolog jsou predikáty se stejným jménem, ale různým počtem argumentů, úplně jiné věci. rodic/2 a rodic/3 jsou pro Prolog dva naprosto odlišné predikáty, které spolu nemají nic společného!

3.4 Komentáře – Poznámky pro lidi

Dobrý programátor píše komentáře, aby ostatní (a on sám za týden) pochopili kód. Komentáře jsou texty, které počítač ignoruje, jsou jen pro lidi. Je to jako psát si poznámky do učebnice – počítač je nečte, ale vám pomohou.

3.5 Struktury (Složené termy) – Krabice v krabici

Někdy atom nestačí. Potřebujeme popsat složitější objekt, který má více částí. Třeba knihu. Kniha má autora, název a rok vydání. V Prologu to můžeme zabalit do jednoho balíčku, kterému říkáme struktura. Představte si to jako **krabici**, která obsahuje další menší krabice nebo nálepky (atomy).

kniha(autor(capek), nazev('R.U.R.'), rok(1920)).

Zde je kniha hlavní funktor (název velké krabice) a uvnitř má další struktury (autor, nazev, rok), které obsahují atomy. Je to jako složka v počítači, ve které jsou další složky s dokumenty.

       kniha
      /  |  \
 autor nazev rok
   |     |    |
 capek 'RUR' 1920

Řešené příklady: Harry Potter a naše první databáze

Pojďme si to vyzkoušet na něčem, co znáte. Vytvoříme malou databázi postav z Harryho Pottera. Definujeme, kdo je kouzelník a kdo je mudla. To jsou naše "fakta" o světě Harryho Pottera.

% Fakta o postavách ze světa Harryho Pottera
kouzelnik(harry).
kouzelnik(ron).
kouzelnik(hermiona).
mudla(dursley).

% Vlastnosti postav
ma_jizvu(harry).
ma_bryle(harry).
ma_zrzave_vlasy(ron).

Teď se můžeme ptát (v konzoli Prologu). Představte si, že se ptáte svého "Prolog detektiva":

Klíčový koncept: Budování znalostní báze

V této kapitole jsme se naučili, jak Prologu "říct", co je pravda. Pomocí atomů pojmenováváme konkrétní věci a pomocí faktů (složených z predikátů a atomů) popisujeme jejich vlastnosti a vztahy. Takto postupně budujeme "znalostní bázi" – svět, ve kterém se Prolog bude orientovat a hledat odpovědi na naše otázky.

Otázky k zamyšlení

  1. Proč je důležité, aby atomy začínaly malým písmenem? Co by se stalo, kdybychom toto pravidlo porušili?
  2. Vysvětlete vlastními slovy, jaký je rozdíl mezi atomem a predikátem. Použijte příklad z vašeho oblíbeného předmětu ve škole (např. chemie, historie).
  3. Proč je tečka na konci každého faktu tak důležitá? Co byste řekli Prologu, kdyby ji zapomněl?
  4. Vytvořte si tři vlastní fakta o vašich koníčcích nebo oblíbených jídlech.

🧪 Laboratoř: Vytváříme svůj svět