1. Lisävinkki Demo 7 tehtävä 1 ¶
Monella ongelma näyttää olevan seuraava: On opeteltu etsimään maitopurkkihyllystä (int[]) suurin purkki. Samoin on katsottu mallia miten löydettäisiin suurimman purkin paikka piimäpurkkihyllystä (double[]). Kun pitäisi löytää suurimman purkin paikka mehupurkkihyllystä Vector[], niin meneekin sormi suuhun eikä keksitä yhtään mitä pitäisi tehdä.
Nyt ei kannata ajatella liian monimutkaisesti. Jos pitäisi tulostaa taulukossa luvut reaaliluvut, niin se olisi aivan analoginen tehtävän 1 ongelman kanssa. Tehtävässä pitää "tulostaa" taulukossa pisteet olevat pisteet (eli piirtää pallo jokaisen pisteen kohdalle).
Miten tulostettaisiin taulukossa double[] luvut olevat luvut? Esimerkiksi
for (int i=0; i<luvut.Length; i++) { double luku = luvut[i]; Console.WriteLine(luvut[i]); }
Jos tuo olisi ollut tehtävänä, vinkkinä olisi voinut olla, että paikassa 2 olevan luvun voit tulostaa:
Console.WriteLine(luvut[2]);
tai toisaalta myös seuraava toimisi:
double luku = luvut[2]; Console.WriteLine(luku);
Nyt tehtävän vinkkinä on, että paikassa 2 olevan pallo voi "tulostaa" keltaisena (eli piirtää) kutsumalla omaa valmista aliohjelmaa LuoPallo (ks. alempana Kuvaaja.cs-tiedostossa:
LuoPallo(game,pisteet[2],r,Color.Yellow);
tai edellisen WriteLine esimerkin kanssa analogisesti myös:
Vector piste = pisteet[2]; LuoPallo(game,piste,r,Color.Yellow);
Voit toki aloittaa tehtävän tekemisen niin, että se piirtää ensin vain ne 4 taulukossa olevaa palloa (mallissa keltaisella, oikeasti haluttiin mustia palloja):
LuoPallo(game,pisteet[0],r,Color.Yellow); LuoPallo(game,pisteet[1],r,Color.Yellow); LuoPallo(game,pisteet[2],r,Color.Yellow); LuoPallo(game,pisteet[3],r,Color.Yellow);
Sitten kun tämä toimii, muutat sen vastaavaksi silmukaksi.
Analogiat ovat siis:
reaaliluku- Vector- taulukko taulukko selitys ===================================================================== double <=> Vector - yhden alkion tyyppi double[] <=> Vector[] - taulukon tyyppi luvut <=> pisteet - taulukon nimi luku <=> piste - taulukon yksi alkio int i <=> int i - indeksi on aina kokonaisluku luvut[i] <=> pisteet[i] - taulukon i:s alkio. WriteLine <=> LuoPallo - "tulostaminen" =====================================================================
6. Vanhan demovastauksen funktioiden käyttäminen hyväksi ¶
Tehtävässä 6 on ehdotettu matriisin tulostamista rivillä:
Console.WriteLine(Demo6.Matriisit.Jonoksi(luvut, " ", "{0,5:0.00}"));
Tässä tarvitaan siis Demo6:n Matriisit luokkaa. Tämä voi ottaa käyttöön kahdella eri tavalla
6.1 Tiedosto samaan projektiin ¶
- lisää olemassa olevaan projektiisi (Projektin nimen päällä hiiren oikealla ja Add/New Item...) uusi Luokka (Visual C#/Class) eli Matriisit.cs niminen tiedosto.
- hae Demo6:n mallivastauksista cs-tarkenninta klikkaamalla tiedosto Matriisit.cs ja kopioi leikepöydälle ja liitä edellä syntyneen koodin tilalle.
- Nyt voit viitata omassa ohjelmassasi: Demo6.Matriisit.Jonoksi
6.2 Toinen projekti ja siihen viittaaminen ¶
- Luo uusi Console Projekti ja sinne Matriisit.cs-tiedosto, jonka sisällöksi järjestät demo6:n Matriisit.cs
- omassa projektissasi valitse hiiren oikeall projektisi References päällä Add Refrences/Projects ja valitse luomasi toinen projekti
- Nyt voit viitata omassa ohjelmassasi: Demo6.Matriisit.Jonoksi