Paradigmata programování 3

Aplikaci PP-Polyglot, kterou budeme používat na cvičení, lze stáhnout v tomto odkazu odkazu.

Seznam úkolů

Úkol 4. Protypy

Z časových důvodů bude tento úkol dobrovolný, přičemž dané téma se bude moci objevit u zkoušky (více se dozvíte od doc. Krupky).

zadání úkolu naleznete v dokumentu 10_lecture.pdf k desáté přednášce v sekci 'Otázky a úkoly na cvičení'. Pokud chcete zpětnou vazbu ke svému kódu k tomuto úkolu, pošlete mi jej na email (do konce zápočtového týdne).

Ze zadání jsou úkoly 1-8 jsou lehčí (ideálně zkuste udělat všechny) a příklady 9-13 jsou složitější (stačí třeba 2).


Úkol 3. Inspektor

zadání úkolu inspector-window naleznete v dokumentu 08_lecture.pdf k osmé přednášce jako 10. úkol na cvičení.

Nejzazší datum pro odevzdání je 7.12. ve 23:59. Odevzdávejte pouze soubor s příponou .lisp (pojmenování souboru příjmení_jméno.lisp), který obsahuje pouze Váš kód k tomuto úkolu (tj. bez objektové knihovny).

Link pro odevzdání: zde (heslo je pp3)


Úkol 2. Křižovatka

Definujte třídu semaphore (zvolte pro ni vhodného předka), jejíž instance budou simulovat dopravní semafor. Požadavky:

Definujte třídu crossroads (zvolte pro ni vhodného předka), jejíž instance budou představovat obrázky křižovatky. Požadavky:

  1. Vlastnost items bude nastavitelná uživatelem. Může obsahovat libovolné grafické objekty, z nichž některé mohou být semafory.
  2. Třída definuje vlastnost semaphores (jen ke čtení), která bude obsahovat seznam všech semaforů v křižovatce.
  3. Křižovatka se podobně jako semafor může nacházet v různých fázích. Jednotlivé fáze křižovatky se budou opět přepínat zprávou next-phase a budou uloženy ve vlastnosti crossroads-phase. Počet fází bude uložen ve vlastnosti phase-count.
  4. Fáze křižovatky určují, v jakých fázích jsou její semafory. To je zadáno nastavitelnou vlastností program, která obsahuje program semaforu. To je seznam seznamů. Jeho délka udává počet fází, i-tý podseznam programu určuje stav křižovatky v její i-té fázi. Každý podseznam má délku rovnou počtu semaforů v křižovatce a pro každý semafor obsahuje číslo jeho fáze. Příklad: pro křižovatku o třech semaforech a programem ((0 0 0) (0 1 0) (0 2 1)) platí, že je-li křižovatka ve fázi 2, je její první semafor ve fázi 0, druhý ve fázi 2 a třetí ve fázi 1.

Do kódu (zakomentovaného) napište testovací scénář křižovatky, která obsahuje alespoň 3 semafory (:vehicle i :pedestrian).

Úkol je opravován pomocí automatických testů, proto dbejte na správné pojmenování metod a tříd!

Nejzazší datum pro odevzdání je 21.11. ve 23:59. Odevzdávejte pouze soubor s příponou lisp (pojmenování souboru příjmení_jméno.lisp), který obsahuje pouze Váš kód k tomuto úkolu.

Link pro odevzdání: zde (heslo je pp3)


Úkol 1. Halloween

Naprogramujte funkce make-ghost a display-halloween-window (viz. přiložený obrázek), kde:

1) make-ghost color scale-coeff => picture

Tato funkce vrátí instanci třídy picture, která vyobrazuje ducha z Pac-Mana dané barvy a zvětšeného o zadaný koeficient. Duch o velikosti 1 má 150x200 pixelů. Nově vytvořený duch bude mít střed na souřadnících [0,0].

2) display-halloween-window ghost-count => window

Tato funkce vytvoří okno, jehož pozadí je černé a slot shape obsahuje instanci picture se zadaným počtem duchů. Tito duchové:

Pozn. pro náhodný faktor použijte funkci random, kterou lze například použít i s konstantou pi pro získání double-float čísla z rozsahu [0,pi].

Pokud odevzdaný zdrojový kód nebude v souladu se zadáním, principy OOP, nebo při jeho kompilování nastane error/warning, pak Vám bude úkol vrácen k přepracování.

Všechny vaše duchy budu potřebovat na halloween, proto nejzazší datum odevzdání je 31.10. ve 23:59. Odevzdávejte pouze soubor s příponou .lisp (pojmenování souboru příjmení_jméno.lisp). Soubor lze nahrát vicekrát, pokud například chcete něco opravit, vždy ale se stejným jméném!

Link pro odevzdání: zde (heslo je pp3)


Zápočet

Plagiátorství a odevzdvání úkolů

“Pokud se student dopustí plagiátorství, opisování při písemném testu, opisování při práci na domácím úkolu nebo se jiným způsobem pokusí o podvod, zahájí s ním vedoucí katedry kárné řízení. Pokud se takové jednání studenta opakuje, vedoucí katedry navrhne děkanovi fakulty vyloučit studenta ze studia.” – viz web katedry

Zadaní z prvního cvičení

Vytvořte datové struktury (například pomocí property seznamů) pro geometrické objekty:

Dále máme tyto požadavky:

  1. Napište konstruktory, selektory a mutátory pro tyto datové struktury.
  2. Napište funkci, která zjistí o struktuře jakého je typu.
  3. Napište funkci move, která posune zadaný geometrický objekt o hodnoty x a y.
  4. Zamyslete, jak bychom museli upravit tyto struktury, aby měli nějakou společnou vlastnost. Například pokud by každy geometrický objekt měl obsahovat informaci o své barvě.
  5. Zamyslete se, jaké problémy bychom museli řešit, pokud bychom chtěli přidat další strukturu pro trojúhelník.