ϵ">]>
12. CVIČENIE Z PREDMETU ÚVOD DO DEKLARATÍVNEHO PROGRAMOVANIA
ČASŤ C
http://dai.fmph.uniba.sk/courses/udp/ex/ex12.zip
Dátum: 20. 5. 2015
Odporúčaná verzia CL: 5.81.21
WWW stránka predmetu: http://dai.fmph.uniba.sk/courses/udp/
Kontakt: udp(zavináč)lists.dai.fmph.uniba.sk
Úvodná poznámka. Toto cvičenie je venované generovaniu XHTML. Cvičenie tiež obsahuje pomocné moduly a .
Literatúra.
[1] J. Kľuka. Prednášky z Úvodu do deklaratívneho programovania LS 2014/2015.
http://dai.fmph.uniba.sk/courses/udp/udp-prednasky-2015.pdf
[2] D. Guller. Poznámky k prednáškam z CL.
[3] J. Komara and P. J. Voda. Metamathematics of Computer Programming. 2001.
Zadanie. Daná je binárna funkcia . Napíšte program , ktorý vytvorí XHTML dokument s tabuľkou hodnôt
Príklad. Pre funkciu by výsledkom mal byť podobný XHTML dokument, ako je zobrazený v nasledujúcom komponente.
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
0 | 2 | 4 | 6 | 8 | 10 | 12 | 14 | 16 | 18 | 20 |
0 | 3 | 6 | 9 | 12 | 15 | 18 | 21 | 24 | 27 | 30 |
0 | 4 | 8 | 12 | 16 | 20 | 24 | 28 | 32 | 36 | 40 |
0 | 5 | 10 | 15 | 20 | 25 | 30 | 35 | 40 | 45 | 50 |
0 | 6 | 12 | 18 | 24 | 30 | 36 | 42 | 48 | 54 | 60 |
0 | 7 | 14 | 21 | 28 | 35 | 42 | 49 | 56 | 63 | 70 |
0 | 8 | 16 | 24 | 32 | 40 | 48 | 56 | 64 | 72 | 80 |
0 | 9 | 18 | 27 | 36 | 45 | 54 | 63 | 72 | 81 | 90 |
0 | 10 | 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 | 100 |
Exercise. Zadefinujte funkciu , ktorá vytvorí zoznam zoznamov hodnôt funkcie podľa špecifikácie:
Návod. Použite dve pomocné funkcie definované spätnou rekurziou.
Testovanie:
Cvf_test = r:Results
Úloha. Zadefinujte funkciu , ktorá vytvorí dátovú bunku tabuľky obsahujúcu číslo .
Testovanie:
2 = n & Cell(n) = x:X
Úloha. Zadefinujte funkciu , ktorá vytvorí zoznam dátových buniek obsahujúcich čísla zo zoznamu .
11,9,7,5,3,1,0 = ns & Cells(ns) = xs:Lx
Úloha. Zadefinujte funkciu , ktorá vytvorí riadok tabuľky obsahujúci bunky s číslami zo zoznamu .
11,9,7,5,3,1,0 = ns & Row(ns) = x:X
Úloha. Zadefinujte funkciu podľa špecifikácie:
Testovanie:
(2,4,6,0),(1,3,5,0),(1,2,3,4,5,6,0),0 = nss & Rows(nss) = xs:Lx
Úloha. Zadefinujte funkciu , ktorá zo zoznamu zoznamov čísel vytvorí tabuľku s riadkami.
Testovanie:
(2,4,6,0),(1,3,5,0),(1,2,3,4,5,6,0),0 = nss & Table(nss) = x:X
Úloha. Zadefinujte funkciu , ktorá vytvorí obsah tela XHTML dokumentu. Nachádza sa v ňom tabuľka hodnôt funkcie . Vhodne použite vyššie definované funkcie.
Testovanie:
Body_content(2,2) = xs:Lx
Úloha. Zadefinujte konštantu pre názov XHTML dokumentu. Názov dokumentu má znieť „Table of meno_funkcie “, pričom meno_funkcie je hodnota konštanty .
Úloha. Zadefinujte samotnú funkciu podľa horeuvedeného zadania.
Testovanie:
2,2 = m,n & Document(m,n) = doc:Lx
10,10 = m,n & Document(m,n) = doc:Xml
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | |
---|---|---|---|---|---|---|---|---|---|---|---|
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
2 | 0 | 2 | 4 | 6 | 8 | 10 | 12 | 14 | 16 | 18 | 20 |
3 | 0 | 3 | 6 | 9 | 12 | 15 | 18 | 21 | 24 | 27 | 30 |
4 | 0 | 4 | 8 | 12 | 16 | 20 | 24 | 28 | 32 | 36 | 40 |
5 | 0 | 5 | 10 | 15 | 20 | 25 | 30 | 35 | 40 | 45 | 50 |
6 | 0 | 6 | 12 | 18 | 24 | 30 | 36 | 42 | 48 | 54 | 60 |
7 | 0 | 7 | 14 | 21 | 28 | 35 | 42 | 49 | 56 | 63 | 70 |
8 | 0 | 8 | 16 | 24 | 32 | 40 | 48 | 56 | 64 | 72 | 80 |
9 | 0 | 9 | 18 | 27 | 36 | 45 | 54 | 63 | 72 | 81 | 90 |
10 | 0 | 10 | 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 | 100 |