Esimerkki: Merkki

Tehdään ohjelma, joka arpoo numeron väliltä 97..100 ja muuttaa numeron sitä vastaavaksi kirjaimeksi. Numeroa 97 vastaa kirjain a, numeroa 98 vastaa kirjain b, numeroa 99 vastaa kirjain c ja numeroa 100 vastaa kirjain d. Numeroiden ja kirjainten vastaavuus selviää ASCII-taulukosta.

Sanallinen algoritmi
  1. Määritellään kokonaislukumuuttuja nimeltään: numero, ja arvotaan sille kokonaisluku arvo väliltä 97...100.
  2. Aseta ikkunan kooksi 600 px vaakaan ja 300 px pystyyn.
  3. Aseta ikkunan taustaväriksi valkoinen.
  4. Aseta tekstin väriksi musta.
  5. Aseta tekstin kooksi 32 px.
  6. Määrittele merkkimuuttuja nimeltään: merkki ja sijoitetaan sille se merkki, jota arvottu numero-muuttujan luku vastaa ASCII-taulukossa.
  7. Jos merkki-muuttuja on 'a', niin
    tulosta kommentti: "Arvottu merkki on a" paikkaan (10,100).
  8. Jos merkki-muuttuja on 'b', niin
    tulosta kommentti: "Arvottu merkki on b" paikkaan (10,100).
  9. Jos merkki-muuttuja on 'c', niin
    tulosta kommentti: "Arvottu merkki on c" paikkaan (10,100).
  10. Jos merkki-muuttuja on 'd', niin
    tulosta kommentti: "Arvottu merkki on d" paikkaan (10,100).

// Ohjelman tehnyt: e-Oppi Oy
// 30.1.2017
int numero = 97+round(random(3)); // Arvotaan luku väliltä 97…100
void setup() { 
     size(600,300); // Asetetaan ikkunan koko
     background(255); // Asetetaan taustaväriksi valkoinen
     fill(0); // Asetetaan tekstin väriksi musta
     textSize(32); // Asetetaan teksin kooksi 32
}
void draw() { char merkki = char(numero); // Muutetaan arvottu numero merkiksi a,b,c tai d if (merkki == 'a') { // Jos merkki on a-kirjain text("Arvottu merkki on a",10,100); } if (merkki == 'b') { // Jos merkki on b-kirjain text("Arvottu merkki on b",10,100); } if (merkki == 'c') { // Jos merkki on c-kirjain text("Arvottu merkki on c",10,100); } if (merkki == 'd') { // Jos merkki on d-kirjain text("Arvottu merkki on d",10,100); } }


Kun teet vertailulauseita, niin vertailtavat merkit on laitettava heittomerkkien väliin (' '). Arpominen on suoritettava heti ohjelman alussa, koska haluamme arpoa luvun vain kerran. Jos arpominen suoritettaisiin void draw () -lohkossa, niin silloin arpominen tapahtuisi jatkuvasti. Tässä numero-muuttuja on ns. globaalimuuttuja eli on voimassa kaikissa lohkoissa. Komento random(3) arpoo luvun väliltä 0..3. Kun tähän arvottuun lukuun lisäämme luvun 97, niin saamme välin 97..100. Koska numero muuttuja on kokonaislukumuuttuja, niin arvontakomennossa on lisäksi käytettävä pyöristyskomentoa round( ).

Komennolla: char(kokonaisluku); voimme muuttaa kokonaisluvun sitä vastaavaksi merkiksi. Kokonaisluvun ja merkin vastaavuus selviää ASCII-taulukosta, joka on kuvattu alla.

ASCII-taulukko
33 ! 52 4 71 G 90 Z 109 m
34 " 53 5 72 H 91 [ 110 n
35 # 54 6 73 I 92 \ 111 o
36 $ 55 7 74 J 93 ] 112 p
37 % 56 8 75 K 94 ^ 113 q
38 & 57 9 76 L 95 _ 114 r
39 ' 58 : 77 M 96 ` 115 s
40 ( 59 ; 78 N 97 a 116 t
41 ) 60 < 79 O 98 b 117 u
42 * 61 = 80 P 99 c 118 v
43 + 62 > 81 Q 100 d 119 w
44 , 63 ? 82 R 101 e 120 x
45 - 64 @ 83 S 102 f 121 y
46 . 65 A 84 T 103 g 122 z
47 / 66 B 85 U 104 h 123 {
48 0 67 C 86 V 105 i 124 |
49 1 68 D 87 W 106 j 125 }
50 2 69 E 88 X 107 k 126 ~
51 3 70 F 89 Y 108 l 127  


Vastaavasti komennolla: int('merkki'); voidaan merkki muuttaa sitä vastaavaksi kokonaisluvuksi. Kun teet if-lauseen, niin merkkejä on vertailtava siten, että merkki kirjoitetaan heittomerkkien (' ') väliin.

Kokeile ajaa ohjelma useamman kertaa. Joka kerralla pitäisi tulostua satunnaisesti eri teksti. Alla on esitetty kaksi ohjelman esimerkkiajoa.