ϵ">]>
11. CVIČENIE Z PREDMETU ÚVOD DO DEKLARATÍVNEHO PROGRAMOVANIA
http://ii.fmph.uniba.sk/cl/courses/1-AIN-505-udp/0809ls/ex/ex11.zip
Dátum: 4. a 6. 5. 2009
Odporúčaná verzia CL: 5.81.19
WWW stránka predmetu: http://ii.fmph.uniba.sk/cl/courses/1-AIN-505-udp/0809ls?lang=sk
Úloha 1. Hello World. Definujte konštantu (funkciu s aritou ) , ktorá sa vyhodnotí do hodnoty typu predstavujúcej jednoduchý XHTML dokument obsahujúci reťazec „Hello World!“ (alebo „Ahoj, svet!“). Svoju konštantu testujte pomocou query
prípadne
Môžete použiť funkciu definovanú v module , ktorá obalí zoznam elementov do kostry XHTML dokumentu (element html obsahujúci hlavičku s titulkom a elementom body, ktorého obsahom bude ).
Vyskúšajte rôzne elementy (odseky, nadpisy, …).
Úloha 2. Tabuľka faktoriálu. Napíšte funkciu , ktorá vyrobí tabuľku faktoriálov. Napríklad query
by mala vrátiť hodnotu podobnú nasledujúcej konštante . Odporúčaná pomocná funkcia je opísaná za .
Táto pomocná funkcia vráti zoznam riadkov tabuľky (elementov tr). Každý riadok obsahuje hlavičkovú bunku (th) s hodnotou argumentu faktoriálu a dátovú bunku (td) s hodnotou faktoriálu pre tento argument.
Funkcia má tri argumenty:
: celkový počet riadkov, ktoré treba vyrobiť;
: aktuálny argument faktoriálu (na začiatku );
: hodnota faktoriálu pre (na začiatku ).
Pri volaní sa argumenty inicializujú ako je uvedené v zozname. Argument sa v rekurzii bude zvyšovať, kým nedosiahne (tzv. spätná rekurzia). Hodnotu argumentu treba pri rekurzívnom volaní aktualizovať, aby bola vždy rovná faktoriálu argumentu v rekurzii. Použite uvedenú šablónu rekurzie.
hodnotu () z čísla vyrobíte funkciou z modulu . Napríklad vráti .
Ak implemetnujete , hlavná funkcia pozostáva zo zavolania s vyššie naznačenými začiatočnými argumentami a z obalenia jej výsledku do tabuľky (s hlavičkovým riadkom), ktorú potom použije ako telo XHTML dokumentu vo funkcii .
Úloha 3. Tabuľka násobenia. Naprogramujte funkciu , ktorá vytvorí dvojrozmernú tabuľku násobenia. Napríklad výsledkom
by mala byť hodnota podobná nasledujúcej konštante . Bunka v 4. riadku a 7. stĺpci obsahuje hodnotu .
x | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
---|---|---|---|---|---|---|---|---|---|---|
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
2 | 0 | 2 | 4 | 6 | 8 | 10 | 12 | 14 | 16 | 18 |
3 | 0 | 3 | 6 | 9 | 12 | 15 | 18 | 21 | 24 | 27 |
4 | 0 | 4 | 8 | 12 | 16 | 20 | 24 | 28 | 32 | 36 |
5 | 0 | 5 | 10 | 15 | 20 | 25 | 30 | 35 | 40 | 45 |
6 | 0 | 6 | 12 | 18 | 24 | 30 | 36 | 42 | 48 | 54 |
7 | 0 | 7 | 14 | 21 | 28 | 35 | 42 | 49 | 56 | 63 |
8 | 0 | 8 | 16 | 24 | 32 | 40 | 48 | 56 | 64 | 72 |
9 | 0 | 9 | 18 | 27 | 36 | 45 | 54 | 63 | 72 | 81 |
vyrobí obsah -tého riadku tabuľky (zoznam buniek). Argument obsahuje aktuálny stĺpec, argument udáva celkový počet buniek v riadku. Pri volaní sa inicializuje na a v rekurzii sa bude zvyšovať, kým nedosiahne . Schéma rekurzie je podobná ako pri funkcii
vyrobí zoznam riadkov (tr) tabuľky násobenia. Obsah každého riadku tvorí hlavičková bunka s jeho číslom a dátové bunky vyrobené . Argument udáva počet riadkov aj stĺpcov tabuľky (teda počet dátových buniek v riadku), je číslo aktuálneho riadku.
vyrobí zoznam hlavičkových buniek tvoriacich záhlavie tabuľky. Argument udáva celkový počet buniek, je číslo aktuálneho stĺpca.