Arvosanana

Oletetaan tällä kertaa yksinkertaisuuden vuoksi, että syöttö on oikeaa muotoa eli numero ja mahdollisesti jokin merkeistä "+-½".

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.66
niin lisäyksessä tarvitsee vain muuttaa taulukkoa! Miten?