Lukujen syöttäminen näppäimistöltä
Huomio: Jotta voit testata tämän luvun esimerkkejä, niin sinulla pitää olla käytössä PC. Nämä esimerkit eivät toimi iPadilla. iPadilla tiedot syötetään kosketusnäytön avulla.
Kuinka voitaisiin tehdä ohjelma, joka ensin kysyisi luvut. Lukujen syöttämisen jälkeen ohjelma laskisi ne yhteen ja tulostaisi vastauksen. Processing-ohjelmassa on komento: key, joka lukee näppäimen painallukset. Kokeile laittaa key-komento suoraan tekstintulostuskomentoon. Mitä huomaat?
// Ohjelman tehnyt: e-Oppi Oy
// 31.1.2017
void setup() {
size(600,400); // Määritellään ikkunan koko
textSize(30); // Tekstin koko 30 px
}
void draw() {
background(0); // Tyhjennetään tausta
text(key,100,50); // Tulostetaan näppäimen painallus
}
Kuten huomaat voit syöttää yksittäisiä merkin painalluksia tietokoneelle. Kuinka voitaisiin syöttää pidempiä lauseita. Tutkitaan seuraavaa esimerkkiä.
// Ohjelman tehnyt: e-Oppi Oy
// 29.1.2017
String teksti=""; // Teksti-muuttuja on alussa tyhjä.
void setup() {
size(600,400); // Määritellään ikkunan koko
textSize(30); // Tekstin koko 30 px
}
void draw() {
background(0);
text(teksti,100,50);
}
void keyPressed() {
teksti+=key; // Merkki lisätään teksti-muuttujaan
}
Processing-ohjelmassa löytyy void keyPressed () -lohko. Tämä lohko suoritetaan aina kun painetaan jotain näppäintä. Kun tähän lohkoon laitetaan komento: teksti+=key, niin tällöin saadaan yksittäiset merkkien painallukset lisättyä teksti-nimiseen muuttujaan, jossa muuttuja on määritelty String-tyyppiseksi. Aja ohjelma: kokeile kirjoittaa sanoja, lauseita ja paina myös Enter-painiketta.
Voimme tästä rakentaa ohjelman, joka summaa kaksi lukua yhteen. Se on seuraavanlainen.
// Ohjelman tehnyt: e-Oppi Oy
// 29.1.2017
String teksti=""; // Luku1:n teksti
String teksti2 =""; // Luku2:n teksti
int laskuri = 0; // Kuinka monta lukua syötetty
int luku1 = 0; // Ensimmäinen luku
int luku2 = 0; // Toinen luku
void setup() {
size(600,400); // Ikkunan koko
textSize(30); // Tekstin koko
}
void draw() {
background(0); // Tyhjennä tausta
text("Anna "+(laskuri+1)+". luku:"+teksti,100,50); // Kysy luku
text("Ensimmäinen luku "+luku1,100,100); // Näytä 1. luvun arv0
text("Toinen luku "+luku2,100,150); // Näytä 2. luvun arvo
text("Lukujen summa "+(luku1+luku2),100,200); // Näytä lukujen summa
if (laskuri > 2) { // Kun kolmas luku on syötetty
text("Et voi syöttää enempää lukuja",100,250);
}
}
void keyPressed() {
teksti+=key; // Lisää merkki merkkijonoon.
if (key =='\n') { // Jos painetaan Enter eli teksti-muuttuja sisältää Enterin
laskuri = laskuri + 1; // Kasvata luku laskuria
if (laskuri == 1) { // Jos ensimmäinen luku
luku1 = int(teksti2); // Sijoita luku1-muuttujalle kokonaisluku
}
if (laskuri == 2) { // Jos toinen luku
luku2 = int(teksti2); // Sijoita luku2-muuttujalle kokonaisluku
}
teksti=""; // Nollaa teksti-muuttuja
}
teksti2+=key; // Lisää viimeinen merkki (eli Enter) toiseen merkkijonoon
if (key =='\n') { // Jos painetaan Enter
teksti2=""; // Nollataan teksti2-muuttuja
}
}
Tässä ohjelmassa käytetään laskuria ja if-lausetta. If-lause esitellään seuraavassa kappaleessa ja laskuri kappaleessa 6. Ohjelman idea on se, että jokainen yksittäinen merkki lisätään teksti-muuttujaan. Kun vastaan tulee Enterin painallus, joka tässä on sama kuin: ’\n’, silloin kasvatetaan laskuria ja nollataan teksti-muuttuja. Ensimmäinen Enterin painallus määrää ensimmäinen luvun (laskuri =1) ja toinen Enterin painallus määrää toisen luvun (laskuri = 2). Ongelma on vain siinä, että teksti-muuttuja sisältää myös Enterin painalluksen. Tekstiä ei tällöin voi muuttaa kokonaisluvuksi. Tarvitsemme siis toisen teksti-muuttujan, nimeltään teksti2, jossa ei mukana ole Enterin painallusta. Teksti2-muuttujasta puuttuu siis viimeinen syötetty merkki. Lopussa tietysti lisäämme viimeisen merkin myös teksti2-muuttujaan ja nollaamme myös sen, jos viimeinen merkki on Enterin painallus.
Oheinen kuvasarja havainnollistaa ohjelmaa.
- Syötä ensin luku, esimerkiksi 12 ja paina lopuksi Enter.
- Nyt luku1-muuttuja saa arvon 12 ja lukujen summa on 12+0 = 12. Anna nyt toinen luku, esimerkiksi 34 ja paina lopuksi Enter.
- Nyt luku2-muuttuja saa arvon 34 ja lukujen summa on 12+34 = 46. Voit kokeilla syöttää vielä kolmannen luvun, esimerkiksi 76 ja lopuksi paina Enter.
- Koska nyt laskuri on suurempi kuin 2, niin tulostuu kommentti: ”Et voi syöttää enempää lukuja”.