Tällöin algoritmi voisi olla vaikkapa:
1. ota syötön numero-osa => n 2. ota syötön viimeinen merkki =>m 3. jos m = '+' niin n = n+0.25 jos m = '½' niin n = n+0.5 jos m = '-' niin n = n-0.25 4. talletettava numero on n
Huonoa edellä on ehkä runsas määrä 'jos'-lauseita. Toisaalta edullista olisi, jos voitaisiin antaa selvä taulukko siitä, miten muutetaan kirjaimen perusteella. Katsotaan ensin kuitenkin päinvastaista muunnosta
1. olkoon arvosana desimaalisena a 2. otetaan a:n kokonaisosa => n 3. otetaan a:n desimaaliosa => d 4. jos d = 0.25 niin m="+" jos d = 0.5 niin m="½" jos d = 0.75 niin m="-" ja n = n+1 muuten m="" 5. muutetaan n merkkijonoksi => s (eli esim. 6 = >"6") 6. yhdistetään tulokseksi s ja m (eli "6" ja "+" => "6+")
Huonoa on jälleen pitkä jos-osa ja se että yhdessä pitää n:ää muuttaa ja muissa ei. Jospa keräämmekin ominaisuudet taulukkoon:
+--------+---------+----------+ | merkki | desim | vähennys | +--------+---------+----------+ | "+" | 0.25 | 0 | | "½" | 0.5 | 0 | | "-" | 0.75 | 1 | | "" | 0.0 | 0 | +--------+---------+----------+
Nyt teksti->numero muunnos olisi:
1. ota syötön numero-osa => n 2. ota syötön viimeinen merkki =>m 3. etsi m taulukosta ja löytyneeltä riviltä (tai viimeiseltä) laske: n = n + desim - vähennys 4. talletettava numero on n
Vastaavasti muunnos numero->teksti olisi:
1. olkoon arvosana desimaalisena a 2. otetaan a:n kokonaisosa => n 3. otetaan a:n desimaaliosa => d 4. etsi desimaaliosa taulukosta ja löytyneen rivin mukaan laske n = n + vähennys 5. muutetaan n merkkijonoksi => s (eli esim. 6 = >"6") 6. yhdistetään tulokseksi s ja merkki (eli "6" ja "+" => "6+")
Mitä etua tästä saatiin? Ainakin se, että jos Takapajulan Peruskoulun hutkinnon mutkistuksessa päätetään lisätä arvosteluun muodot
6# = 6.33 6! = 5.66niin lisäyksessä tarvitsee vain muuttaa taulukkoa! Miten?