ϵ">]>
1. CVIČENIE Z PREDMETU ÚVOD DO DEKLARATÍVNEHO PROGRAMOVANIA 2013/2014
ČASŤ B
http://dai.fmph.uniba.sk/courses/udp/ex/ex01.zip
Dátum: 18. a 19. 2. 2014
Odporúčaná verzia CL: 5.81.20
WWW stránka predmetu: http://dai.fmph.uniba.sk/courses/udp/
Kontakt: udp(zavináč)lists.dai.fmph.uniba.sk
Literatúra.
[1] J. Kľuka. Prednášky z Úvodu do deklaratívneho programovania LS 2013/2014.
http://dai.fmph.uniba.sk/courses/udp/udp-prednasky-2014.pdf
[2] D. Guller. Poznámky k prednáškam z CL.
[3] J. Komara and P. J. Voda. Metamathematics of Computer Programming. 2001.
[CL] Syntax. Identifikátorové konvencie:
Identifikátor premennej je reťazec malých písmen anglickej abecedy, voliteľne nasledovaný jednou alebo dvoma číslicami predstavujúcimi index. Príklady: , , , .
Identifikátor funkcie (funkčný symbol) je reťazec začínajúci veľkým písmenom anglickej abecedy a obsahujúci malé písmená, číslice a podčiarkovník '_'. Examples: , , , .
[CL] Poznámka. Komponent je buď poznámka (remark), alebo definícia (function definition, predicate definition) alebo teoréma (theorem).
Funkcia druhej mocniny. Nasledujúci komponent obsahuje definíciu funkcie , ktorej hodnotou je druhá mocnina čísla .
Úloha. Funkcia tretej mocniny. Napíšte explicitnú definíciu funkcie , ktorej hodnotou je tretia mocnina čísla .
[CL] Návod. Použite tlačidlo [Ins/Del] vpravo pod týmto zadaním.
Úloha. Súčet dvoch druhých mocnín. Napíšte explicitnú definíciu binárnej (2-argumentovej) funkcie , ktorej hodnotou je súčet druhých mocnín a .
[CL] Poznámka. Svoje riešenie priebežne ukladajte kliknutím tlačidla [Save] na lište v pravom hornom rohu okna alebo stlačením Alt + S.
Minimum. Nasledujúci komponent obsahuje klauzálnu definíciu funkcie minima dvoch čísel.
Funkcia spĺňa špecifikáciu:
Poznámka. V definícii je použitá dichotomická diskriminácia | . Diskriminácia je sada podmienok, o ktorých CL vie, že sú navzájom výlučné.
[CL] Poznámka. Hoci skutočné meno funkcie začína veľkým písmenom, funkcia je nastavená tak, že sa zobrazuje s malým začiatočným písmenom (podľa zvyklostí v matematike). Matematické zobrazovanie programov je v CL všadeprítomné (napríklad obrátenú implikáciu píšeme „<-“ a zobrazuje sa „←“, reláciu menšie alebo rovné píšeme „<=“ a zobrazuje sa „≦“ atď.).
[CL] Poznámka. Príklad syntakticky nesprávnej definície rovnakej funkcie:
Prvá aplikácia sa syntakticky líši od druhej aplikácie . Obe aplikácie musia byť rovnaké tak, ako vo vyššie uvedenej správnej definícii.
Úloha. Maximum. Zadefinujte binárnu funkciu , ktorej hodnotou je maximum čísel a . Ako identifikátor funkcie použite a v menu „displayed by“ vyberte .
Funkcia má spĺňať špecifikáciu:
Úloha. Minimum troch čísel. Zadefinujte ternárnu (3-argumentovú) funkciu , ktorej hodnotou je minimum čísel , , .
Špecifikácia:
Úloha. Maximum troch čísel. Zadefinujte ternárnu funkciu , ktorej hodnotou je maximum čísel , , .
Špecifikácia:
Úloha. Medián. Zadefinujte ternárnu funkciu , ktorej hodnotou je medián čísel , and .
Špecifikácia:
(Median_middle) |
(Median_perm1) |
(Median_perm2) |
Poznámka. Vaše riešenie odporúčame otestovať dopytom:
Median(1,2,3),Median(1,3,2),Median(2,1,3), Median(2,3,1),Median(3,1,2),Median(3,2,1), Median(1,2,2),Median(2,1,2),Median(2,2,1), Median(3,2,2),Median(2,3,2),Median(2,2,3), Median(2,2,2) = x
s očakávaným výsledkom
Úloha. Disjunktívne podmienky. Zadefinujte ternárnu funkciu tak, aby platilo:
ak alebo , tak ;
inak .
Keďže v klauzálnej definícii sa nedá použiť disjunkcia, musíte vhodne zložiť dichotomické diskriminácie podobne ako pri predchádzajúcich funkciách.
Úloha. Táto úloha má 4 časti a) – d), v ktorých je pomocou skladania dichotomických diskriminácií potrebné zadefinovať funkcie tak, aby mali uvedené vlastnosti.
Upozornenia.
Uvedomte si, že všetky funkcie v CL sú definované iba na prirodzených číslach.
Niektoré časti tejto úlohy nemajú riešenie. V takom prípade nájdite konkrétne hodnoty premenných , a , pre ktoré je zadanie sporné.
Prémiová domáca úloha du01. (1+2 body)
Podmienky. Pravidlá pre prémiové domáce úlohy nájdete na http://dai.fmph.uniba.sk/courses/udp/#pdu.
Riešenia nespĺňajúce tam uvedené podmienky (vrátane adresáta a formátu e-mailu) vyradíme!
Zadanie. Dokážte podobne ako na prednáške, že:
a) (1 bod) vaša definícia funkcie má vlastnosť ;
b) (2 body) vaša definícia funkcie má vlastnosť .
Poznámka. Časti a) a b) budeme hodnotiť nezávisle. Pre posúdenie správnosti dôkazu nám musíte poslať aj vaše definície spomínaných funkcií.
Termín. Nedeľa 23. 2. 2014 o 24:00.
K riešeniam odoslaným najneskôr v piatok 21. 2. o 12:00 vám poskytneme spätnú väzbu a v prípade potreby možnosť opravy.