Pokračování LEKCE 5.
Příklady k procvičení
Vysvětlující příklad na příkaz retract
(stáhnout: retract_2_lama.clp)
Tento příklad je obdobný, jen s tím rozdílem, že rušíme ten seznam, který obsahuje konkrétní hodnotu. V našem příkladu odstraňujeme ty seznamy obsahující zvíře lama (předem se omlouvám všem, kteří mají rádi toto zvíře :-)).
?pryc_s_lamou<-(zvire $?zacatek lama $?konec)
- zde říkáme: zapamatuj si identifikátor toho faktu, kde na jakémkoliv místě v seznamu je slovo lama.
Vysvětlující příklad na příkaz length
(stáhnout: length.clp)
Vysvětlující příklad na příkaz member
(stáhnout: member.clp)
Příklady k procvičení
Úloha 1.
Definujte seznam několika čísel. Napište pravidla, pomocí kterých:
- vypíšete celý seznam čísel
- vypíšete na zvláštní řádky jednotlivá čísla
- zpracujte seznam tak, že vypíšete vždy jeho první prvek, poté seznam smažete a nahradíte novým seznamem, kde první prvek již nebude obsažen; činnost pravidla skončí v momentě, kdy seznam bude prázdný
Úloha je rozdělena na dva soubory:
(stáhnout: cisla_ab.clp)
(stáhnout: cisla_c.clp)
Pokus o grafické vysvětlení části úlohy (cisla_ab.clp)
Úloha 2.
Definujte dva seznamy a do každého z nich uložte několik znaků, oddělené mezerami. Napište pravidlo, které vyhledá znaky vyskytující se v obou seznamech (použijte provázání pomocí proměnné).
(stáhnout: seznam_znaky.clp)
Úloha 3.
Definujte seznam několika barev. Napište pravidlo, které uloží jednotlivé barvy ze seznamu do samostatných faktů. Tyto samostatné fakty budou mít tento tvar: (barvy ?hodnota).
(stáhnout: barvicky.clp)
Úloha 4.
Definujte několik seznamů. Všechny seznamy vypište a současně vypište jejich délky. Zkuste napsat pravidla, jimiž vyhledáte nejdelší seznam a nejkratší seznam.
Řešení selským rozumem:
(stáhnout: max_a_min_1.clp)
Řešení bez selského rozumu:
(stáhnout: max_a_min_2.clp)
Úloha 5.
Napište pravidlo, jímž číselný seznam setřídíte podle velikosti (od nejmenšího po největší).
(stáhnout: trideni_seznamu.clp)
Na tomto programu lze dobře poznat to, že při programování v Clipsu (a asi nejen v něm) můžete používat svůj přirozený jazyk a na základě toho formulovat pravidla a fakta.
Co tím myslím?
Máte před sebou určitý problém (např. seřadit čísla vzestupně). Přesně tak jak si slovně vyjadřujete svůj postup pro vyřešení problému - tak tento slovní postup můžete dobře přetransformovat např. do nějaké podmínky. Tedy jestliže máte dvě čísla : 10 5, pak vidíte, že nejsou seřazena dle velikosti (10 má být až po 5). Zní to naprosto jasně. Stačí tyto čísla vyměnit - na pozici desítky dát číslo pět. Ono to sice jasně zní, ale napsat to v programovacím jazyce je o trochu složitější, ale vychází to z přirozeného jazyka.