Johdatus tietojenkäsittelytieteeseen I (2 ov) 16.12.1999
1. Reduktiivinen ongelmanratkaisu ja algoritmien asteittainen
tarkentaminen tietojenkäsittelytieteessä. Kiinnitä erityistä
huomiota reduktion, rekursion ja modulaarisuuden välisen suhteen
selittämiseen.
2. Oletetaan ettei kokonaislukujen kertolasku ole käytettävissä.
- Kirjoita fuktionaalinen algoritmimoduuli, joka laskee
kahden ei-negatiivisen kokonaisluvun tulon yhteen- ja vähennyslaskun
avulla.
- Yleistä sitten algoritmisi myös negatiivisille
kokonaisluvuille lisäämällä siihen moduuli, joka osaa
kertolaskun merkkisäännöt ("plus kertaa plus on
plus, plus kertaa miinus on miinus,....").
3. Tarkastellaan binääripuita, joiden solmut ovat
luonnollisia lukuja. Olkoon käytettävissä MODULE alkuluku(luku)
RETURNS totuusarvo
- Tee funktionaalinen algoritmimoduuli, joka laskee
alkulukujen määrän parametrina annetussa binääripuussa.
- Laadi sitten algoritmi, joka laskee montako eri
alkulukua puussa on. Ohje: Täsmällisen ratkaisun
laatiminen tehtävään ei ole aivan helppoa. Jäsennä
kuitenkin ongelma mahdollisimman pitkälle ja kirjoita
ratkaisustasi korkean tason kuvaus. Anna moduuliesi
otsikot formaalisti; sisäisen kuvauksen voit
tarvittaessa antaa luonnollisella kielellä.