Demo 4 / 5.10
Tehtävät
V1.
Tee
Ville-tehtävät: 3.1, 3.2 ,3.3, 3.4, 3.5, 3.6
public static void main(String[] args) {
double f1,c1,f2,c2;
EasyWindow window = new EasyWindow();
window.scale(-200, -200, 200, 200);
window.showWindow();
window.addAxis(400, 400, 400);
f1 = -100; f2 = -50;
c1 = fahrenheitToCelsius(f1); c2 = fahrenheitToCelsius(f2);
window.addLine(f1,c1,f2,c2);
f1 = 0; f2 = 50;
c1 = fahrenheitToCelsius(f1); c2 = fahrenheitToCelsius(f2);
window.addLine(f1,c1,f2,c2);
}
piirtää pari ”palasta” kuvaajasta, josta selviää Fahrenheit- ja Celsius -asteiden riippuvuus toisistaan graafisesti. Muuta tuo ohjelmaksi ja katso millainen riippuvuus on. Koodissa valitettavasi toistuvat samat kolme riviä. Muuta nuo kolme riviä aliohjelmaksi ja piirrä sitten sen avulla kuvaajaan useampia ”palasia” riippuvuuskuvaajaa. Mieti tarkkaan montako parametriä aliohjelmalle tarvitset. Eli mitkä muuttujat edellisissä 3-rivin yhdistelmissä ovat parametrejä ja mitkä pelkkiä apumuuttujia.
public static void main(String[] args) {
String sana1 = Syotto.kysy("Anna 1. sana");
String sana2 = Syotto.kysy("Anna 2. sana");
String pidempi = pidempiJono(sana1,sana2);
System.out.println("Pidempi sana on " + pidempi);
}
Muista että ensin teet funktion esittelyrivin (sen missä on public static jne...) ja aluksi funktion sisältö voi olla vaikka pelkkä:
return "kissa";
Sitten kokeilet että ohjelma kääntyy ja kyselee ja tulostaa tuollaisenaan. Kun se toimii, voit ruveta muuttamaan funktion sisältöä niin, että funktio tekee sen mitä pitääkin.
3.
M: 12. Merkkijonot: Tee ohjelma joka toimisi seuraavasti (vinkki: katso String-luokan dokumenttia ja etsi metodi jolla voit vaihtaa kirjaimia. Tiedon lukemista varten katso edellisen tehtävän pääohjelmaa)
:
Toistan mitä sanot, mutta en osaa sanoa l!
Anna teksti >Mitä yhteistä on hiirellä ja rotalla?
Sanoit siis: Mitä yhteistä on hiilellä ja lotalla?
4.
Kirjaimet: katso Character-luokan dokumenttia (monisteessa on esimerkki, jossa kirjain on muutettu isoksi). Katso mikä kutsu sinun on kirjoitettava xxx:n paikalle jotta seuraava ohjelma toimisi:
public static void main(String[] args) {
char pienena = 'a';
char isona = Character.xxx(pienena);
System.out.println(pienena + " => " + isona); // a => A
pienena = 't';
isona = Character.xxx(pienena);
System.out.println(pienena + " => " + isona); // t => T
}
5.
M: 13. Ehtolauseet:Tee ohjelma joka kysyy kolme kokonaislukua ja tulostaa niistä suurimman ja pienimmän. Tee avuksi funktioaliohjelmat
suurin(a,b,c) ja
pienin(a,b,c). Millä arvoilla aliohjelmia olisi hyvä testata?
6.
M: 12.2 StringBuilder: Tee tarvittavat aliohjelmat, jotta seuraava pääohjelma toimisi (vinkki:
indexOf):
public static void main(String[] args) {
String nimi = Syotto.kysy("Anna sukunimi etunimi");
StringBuilder sb = new StringBuilder(nimi);
poistaEkaSana(sb);
System.out.println("Terve, etunimesi on siis " + sb);
String sukunimi = annaEkaSana(nimi);
System.out.println("ja sukunimesi on siis " + sukunimi);
}
B1.
M: 12. Merkkijonot: Tuliko tehtävässä 3 isot kirjaimet huomioitua? Muuta tehtävän 3 vastausta niin, että teet funktioaliohjelman (palauttaa siis merkkijonon), jota kutsutaan seuraavasti:
String tulos = muutaKirjaimet(jono,'r','l');
Funktio muuttaa sekä isot että pienet kirjaimet (vinkki: Eli kun funktiolle tuodaan esimerkiksi 'r' ja 'l', niin se pyytää vaihtamaan 'r' -> 'l' ja 'R' → 'L'.) Tee tuota funktiota käyttäen ohjelma joka toimii seuraavasti:
Toittan mitä tanot, mutta en otaa tanoa t!
Anna teksti >Sisko istuu puussa!
Tanoit tiit: Titko ittuu puutta!
Ohjelma saadaan kuitenkin kahden merkin vaihtamisella toimimaan tehtävän 3 vastauksena.
GURU-tehtävät
G1-2
Tee ohjelma jossa on vakiona pääohjelmassa annettu reaalilukutaulukko. Taulukon alkioista piirretään kuva niin, että jokaista taulukon alkiota kuvaa pieni ympyrä. Ympyrän x-koordinaatti on taulukon indeksi ja y-koordinaatti taulukon arvo vastaavassa paikassa. Piirrä vielä taulukon suurinta alkiota vastaavat arvot eri värillä.