[[PageOutline]] [[BackLinksMenu]] {{{ #!html
}}} = Näytelmä aliohjelman kutsumisesta = Tarvitaan yksi Visual Studion käyttäjä ('''D''', Vesa) Tarvitaan 5 näyttelijää: '''S''': {{{int Suurempi(int a, int b)}}} - osaa palauttaa suuremman kahdesta luvusta (Simo) '''N''': {{{new}}} - osaa varata tilaa ja alustaa nollilla (Paavo) '''V''': {{{void VaihdaSuurin(int[] t, int a)}}} - osaa etsiä suurimman luvun paikan ja korvata sen a:lla (Matti) '''W''': Osaa tulostaa yhden kokonaisluvun taululle. (Paavo ???) '''M''': {{{main}}} - pääohjelma joka pyytää muita hommiin (Vesa) Tarvikkeet: - Yksi tietokone, josta tykillä heijastetaan ruutu - nippu tyhjiä A4:ia - väh. 2 kpl paksuja tusseja joilla voi kirjoittaa - jokaisella näyttelijällä oma nimikyltti kaulassa - taulu, johon tulee muuttujien "nimet" ja jossa on "ruudukko", josta voidaan varata 4 kokonaislukua - sinitarraa, jolla lappuja voidaan liimata taululle askeltaa -linkeistä pääsee katsomaan miltä Visual Studion pitäisi näyttää milläkin hetkellä ja sitten voi palata takaisin. Debuggaukset ovat myös [wiki:s2012/kutsudebug yhdellä sivulla]. == Koodi == [https://trac.cc.jyu.fi/projects/ohj1/browser/esimerkit/2012s/luennot/luento11/Kutsuminen/Kutsuminen.cs Kutsuminen.cs] Koodi näytetään Visual Studiolla tykillä {{{ #!C# 014 public static void Main(string[] args) 015 { 016 int a = 4, b = 5; 017 int iso; 018 019 iso = Suurempi(a, b); 020 Console.WriteLine(iso); 021 022 iso = Suurempi(iso+1, 7 / 3 + 5 / 2); 023 Console.WriteLine(iso); 024 025 int[] luvut = new int[4]; 026 int[] m = luvut; 027 028 luvut[2] = 4; 029 luvut[1] = 6; 030 m[3] = iso+3; 031 032 VaihdaSuurin(luvut, 5); 033 034 Console.WriteLine(String.Join(" ",luvut)); 035 } 036 037 052 public static int Suurempi(int luku1, int luku2) 053 { 054 if (luku1 >= luku2) return luku1; 055 return luku2; 056 } 057 058 085 public static void VaihdaSuurin(int[] t, int korvaavaArvo) 086 { 087 int paikka = -1; 088 int suurin = int.MinValue; 089 for (int i = 0; i < t.Length; i++) 090 { 091 int luku = t[i]; 092 if (luku > suurin) 093 { 094 suurin = luku; 095 paikka = i; 096 } 097 } 098 099 if (paikka < 0) return; 100 t[paikka] = korvaavaArvo; 101 } }}} == 1. Lähtötilanne == Taululle on piirretty tilanne pääohjelman rivillä 15. {{{ Pino Keko Tulostus -------- -------- agrs | 231 | 231 || 0 || -------- -------- a | 0 | 232 | 0 | -------- -------- b | 0 | 233 | 0 | -------- -------- iso | 0 | 234 | 0 | -------- -------- luvut | 0 | 235 | 0 | -------- -------- m | 0 | 236 | 0 | -------- -------- 237 | 0 | -------- 238 | 0 | -------- 239 | 0 | -------- }}} - '''D:''' Laittaa näkyviin ikkunat: Watch, Locals, Call Stack, Registers. Piilota koodista kommentit. [[Image(source:/esimerkit/2012s/luennot/luento11/debugkuva.png)]] == 2. Muuttujien esittely ja tilanvaraus == - '''D:''' [source:/esimerkit/2012s/luennot/luento11/kuvat/debug19.png Askeltaa] rivit 16-18 {{{ #!C# 016 int a = 4, b = 5; 017 int iso; 018 019 iso = Suurempi(a, b); }}} - '''M:''' Muuttaa samalla taululla olevien muistipaikkojen arvoja, lopputilanne: {{{ Pino Keko -------- -------- agrs | 231 | 231 || 0 || -------- -------- a | 4 | 232 | 0 | -------- -------- b | 5 | 233 | 0 | -------- -------- iso | 0 | 234 | 0 | -------- -------- luvut | 0 | 235 | 0 | -------- -------- m | 0 | 236 | 0 | -------- -------- 237 | 0 | -------- 238 | 0 | -------- 239 | 0 | -------- }}} == 3. Aliohjelman kutsu == - '''D:''' [source:/esimerkit/2012s/luennot/luento11/kuvat/debug19.png Askeltaa] riville 19 {{{ #!C# 019 iso = Suurempi(a, b); }}} - '''M:''' "Nyt pitäisi tietää kumpiko näistä a ja b on suurempi." - '''S:''' Vilkuttaa iloisena - '''M:''' Meillä näyttää tuolla olevan valmis aliohjelma, joka osaa sen selvittää. Mitähän se haluaa tietää homman tekemiseksi?" - '''M:''' Menee lukemaan S:n esittelyriviä. "Ai kaksi kokonaislukua. Ja se näköjään palauttaa kokonaisluvun. Kutsutaampa sitä." - '''M:''' Ottaa kolme paperia ja kirjoittaa ensimmäiseen luvun 4 ja pistää sen pöydälle. Kirjoittaa toiseen luvun 5 ja pistää se pöydälle edellisen päälle. Kirjoittaa kolmanteen luvun 19 (rivinumero johon palataan) ja laittaa sen edellisten päälle. {{{ -------- | 4 -------- ------| 5 -------- -------| 19 | -------- }}} - '''M:''' Ottaa kolmen paperin pinon ja vie sen S:lle. - '''D:''' [source:/esimerkit/2012s/luennot/luento11/kuvat/debug54.png Askeltaa] riville 53 {{{ #!C# 052 public static int Suurempi(int luku1, int luku2) 053 { }}} - '''S:''' Ottaa pinon vastaan ja liimaa ne järjestyksessä taululle ja antaa niiden viereen liidulla nimet samassa järjestyksessä {{{ Pino Keko Tulostus -------- -------- agrs | 231 | 231 || 0 || -------- -------- a | 4 | 232 | 0 | -------- -------- b | 5 | 233 | 0 | -------- -------- iso | 0 | 234 | 0 | -------- -------- luvut | 0 | 235 | 0 | -------- -------- m | 0 | 236 | 0 | -------- -------- 237 | 0 | -------- -------- 238 | 0 | paluu | 19 | -------- -------- 239 | 0 | luku2 | 5 | -------- -------- luku1 | 4 | -------- }}} - '''D:''' [source:/esimerkit/2012s/luennot/luento11/kuvat/debug54.png Askeltaa] riville 54 {{{ #!C# 054 if (luku1 >= luku2) return luku1; }}} - '''S:''' Pähkäilee luku1:n ja luku2:n kanssa että kumpiko on suurempi. Kun tulos selviää, kirjoittaa suuremman arvon tulospaperille. - '''D:''' [source:/esimerkit/2012s/luennot/luento11/kuvat/debug56.png Askeltaa] riville 56 ja näyttää että tulos on EAX-rekisterissä. {{{ 056 } }}} - '''S:''' Poistaa taululta luku1:n ja luku2:n. Ottaa paluu-lapun, katsoo siinä olevan numeron (näyttää myös yleisölle) ja heittää kaikki kolme alkuperäistä lappua roskiin. {{{ -------- | 5 | -------- }}} - '''S:''' kävelee M:n luo, sanoo että "jatka riviltä 19 ja tuossa on tulos" ja ojentaa tulos-lapun M:lle. - '''M:''' Ottaa tuloslapun, katsoo siinä olevan arvon ja kirjoittaa sen iso-muuttujan arvoksi taululle. - '''D:''' [source:/esimerkit/2012s/luennot/luento11/kuvat/debug20.png Askeltaa] riville 19 {{{ #!C# 019 iso = Suurempi(a, b); }}} - '''S:''' häipyy samalla taka-alalle {{{ Pino Keko Tulostus -------- -------- agrs | 231 | 231 || 0 || -------- -------- a | 4 | 232 | 0 | -------- -------- b | 5 | 233 | 0 | -------- -------- iso | 5 | 234 | 0 | -------- -------- luvut | 0 | 235 | 0 | -------- -------- m | 0 | 236 | 0 | -------- -------- 237 | 0 | -------- 238 | 0 | -------- 239 | 0 | -------- }}} == 4. Tulostaminen == - '''D:''' [source:/esimerkit/2012s/luennot/luento11/kuvat/debug20.png Askeltaa] riville 20. {{{ #!C# 020 Console.WriteLine(iso); }}} - '''M:''' Nyt pitäisi tulostaa. Ottaa kaksi lappua, kirjoittaa toiseen "ison" arvon (5) ja toiseen 20 ja antaa ne W:lle. {{{ -------- | 5 -------- -------| 20 | -------- }}} - '''W:''' piirtää taululle toisen lapun arvon (5) ja katsoo toisesta (ja näyttää yleisölle 20) mistä käskee M:n jatkaa. Heittää laput roskiin. - '''W:''' tulee M:n luo ja sanoo: "Jatka riviltä 20" == 5. Toisen aliohjelman kutsu == - '''D:''' [source:/esimerkit/2012s/luennot/luento11/kuvat/debug22.png Askeltaa] riville 22. {{{ #!C# 022 iso = Suurempi(iso+1, 7 / 3 + 5 / 2); }}} - '''M:''' "Nyt pitäisi tietää kumpiko on suurempi iso+1 vai hirvee lasku. Meillä näyttää tuolla olevan valmis aliohjelma joka osaa sen selvittää. Mitähän se haluaa parametriksi. Ai kaksi kokonaislukua. Ja se näköjään palauttaa kokonaisluvun. Kutsutaampa sitä." - '''M:''' Ottaa kolme paperia ja laskee iso+1 kirjoitaa sen (6) paperille ja pistää sen pöydälle. Laskee toisen luvun (7/3+5/2 = 2+2 = 4), kirjoittaa toiseen luvun 4 ja pistää se pöydälle edellisen päälle. Kirjoittaa kolmanteen luvun 22 (rivinumero johon palataan) ja laittaa sen edellisten päälle. {{{ -------- | 6 -------- ------| 4 -------- -------| 22 | -------- }}} - '''M:''' Ottaa kolmen paperin pinon ja vie sen S:lle. - '''D:''' [source:/esimerkit/2012s/luennot/luento11/kuvat/debug54.2.png Askeltaa] riville 53 {{{ #!C# 052 public static int Suurempi(int luku1, int luku2) 053 { }}} - '''S:''' Ottaa pinon vastaan. - '''D:''' [source:/esimerkit/2012s/luennot/luento11/kuvat/debug54.2.png Askeltaa] riville 54 {{{ #!C# 054 if (luku1 >= luku2) return luku1; }}} - '''S:''' Pähkäilee luku1:n ja luku2:n kanssa että kumpiko on suurempi. Kun tulos selviää, kirjoittaa suuremman arvon tulospaperille. - '''D:''' [source:/esimerkit/2012s/luennot/luento11/kuvat/debug56.2.png Askeltaa] riville 56 ja näyttää että tulos on EAX-rekisterissä. {{{ 056 } }}} - Ottaa paluu-lapun, katsoo siinä olevan numeron ja heittää kaikki kolme roskiin. {{{ -------- | 6 | -------- }}} - '''S:''' kävelee M:n luo, sanoo että jatka riviltä 22 ja tuossa on tulos ja ojentaa tulos-lapun M:lle. - '''D:''' [source:/esimerkit/2012s/luennot/luento11/kuvat/debug23.png Askeltaa] riville 22 {{{ #!C# 022 iso = Suurempi(iso, 7 / 3 + 5 / 2); }}} - '''M:''' Ottaa tuloslapun, katsoo siinä olevan arvon (6) ja kirjoittaa sen iso-muuttujan arvoksi taululle. - '''S:''' häipyy samalla taka-alalle {{{ Pino Keko Tulostus -------- -------- 5 agrs | 231 | 231 || 0 || -------- -------- a | 4 | 232 | 0 | -------- -------- b | 5 | 233 | 0 | -------- -------- iso | 6 | 234 | 0 | -------- -------- luvut | 0 | 235 | 0 | -------- -------- m | 0 | 236 | 0 | -------- -------- 237 | 0 | -------- 238 | 0 | -------- 239 | 0 | -------- }}} - '''D:''' [source:/esimerkit/2012s/luennot/luento11/kuvat/debug23.png Askeltaa] riville 23 {{{ #!C# 023 Console.WriteLine(iso); }}} - '''M:''' Nyt pitäisi taas tulostaa. Ottaa kaksi lappua, kirjoittaa toiseen "ison" arvon (6) ja toiseen 23 ja vie ne W:lle. - '''W:''' piirtää taululle toisen lapun arvon (6) ja katsoo toisesta mistä käskee M:n jatkaa. Heittää laput roskiin. - '''W:''' tulee M:n luo ja sanoo: "Jatka riviltä 23" - '''D:''' [source:/esimerkit/2012s/luennot/luento11/kuvat/debug26.png Askeltaa] riville 24 == 6 Taulukon luominen == - '''D:''' [source:/esimerkit/2012s/luennot/luento11/kuvat/debug26.png Askeltaa] riville 25 {{{ #!C# 025 int[] luvut = new int[4]; }}} - '''M:''' "Nyt tarviis saada taulukko." - '''N:''' new (vilkuttelee iloisesti) - '''M:''' "Haa, new osaa varmaan sen mulle antaa". - '''M:''' Ottaa paperin - '''M:''' "4 voi olla hyvä koko" - '''M:''' kirjoittaa yhdelle paperille 4 ja toiselle 25 ja vie kasan new:lle {{{ -------- | 4 -------- -------| 25 | -------- }}} - '''M:''' "inttejä tarviisin" - '''N:''' ottaa kasan vastaan. Tiirailee taululle. Katsoo koon toisesta lapusta (ja näyttää yleisölle 4). - '''N:''' "Vaikka 234 kohdasta näyttäisi olevan 4 paikkaa vapaata" - '''N:''' Kehystää taululla 234-237 raamilla. Kirjoittaa uudelle paperille 234. Katsoo alkuperäisistä papereista paluuosoitteen (ja näyttää yleisölle 25) ja heittaa kaksi alkuperäistä paperia roskiin. - '''N:''' kävelee M:n luo, ojentaa paperin 234 ja sanoo "jatka riviltä 25". - '''M:''' ottaa paperin, kirjoittaa luvut-kohtaan 234 ja heittää paperin roskiin. {{{ Pino Keko Tulostus -------- -------- 5 agrs | 231 | 231 || 0 || 6 -------- -------- a | 4 | 232 | 0 | -------- -------- b | 5 | 233 | 0 | -------- ======== iso | 6 | 234 || 0 || -------- -------- luvut | 234 | 235 || 0 || -------- -------- m | 0 | 236 || 0 || -------- -------- 237 || 0 || ======== 238 | 0 | -------- 239 | 0 | -------- }}} == 7. Toisen viitteen tekeminen == - '''D:''' Lisää Watch-ikkunaan {{{luvut}}} ja avaa se - '''D:''' [source:/esimerkit/2012s/luennot/luento11/kuvat/debug26.png Askeltaa] riville 26 {{{ #!C# 026 int[] m = luvut; }}} - '''M:''' menee taululle, katsoo luvut kohdassa olevan arvon - '''M:''' "234" - '''M:''' kirjoittaa 234 m-paikkaan. {{{ Pino Keko Tulostus -------- -------- 5 agrs | 231 | 231 || 0 || 6 -------- -------- a | 4 | 232 | 0 | -------- -------- b | 5 | 233 | 0 | -------- ======== iso | 6 | 234 || 0 || -------- -------- luvut | 234 | 235 || 0 || -------- -------- m | 234 | 236 || 0 || -------- -------- 237 || 0 || ======== 238 | 0 | -------- 239 | 0 | -------- }}} == 8. Taulukon arvojen laittaminen == - '''D:''' [source:/esimerkit/2012s/luennot/luento11/kuvat/debug28.png Askeltaa] riville 28 {{{ #!C# 028 luvut[2] = 4; }}} - '''M:''' "siis 4 pitäisi laittaa siihen taulukkoon joka alkaa 234:sta ja sen paikkaan 2" - '''M:''' laskee paikasta 234 kaksi paikkaa eteenpäin ja päätyy paikkaan 236. Kirjoittaa sinne 4. - '''D:''' [source:/esimerkit/2012s/luennot/luento11/kuvat/debug29.png Askeltaa] riville 29 {{{ #!C# 029 luvut[1] = 6; }}} - '''M:''' "siis 6 pitäisi laittaa siihen taulukkoon joka alkaa 234:sta ja sen paikkaan 1" - '''M:''' laskee paikasta 234 yhden paikan eteenpäin ja päätyy paikkaan 235. Kirjoittaa sinne 6. - '''D:''' [source:/esimerkit/2012s/luennot/luento11/kuvat/debug30.png Askeltaa] riville 30 {{{ #!C# 030 m[3] = iso+3; }}} - '''M:''' "Kappas, m on paikassa 234, siis tuon laskun tulos pitäisi laittaa siihen taulukkoon joka alkaa 234:sta ja sen paikkaan 3" - '''M:''' "lasketaampas: iso+3 = 6+3 = 9, eli 9 pitäisi laittaa sinne" - '''M:''' laskee paikasta 234 kolme eteenpäin ja päätyy paikkaan 237. Kirjoittaa sinne 9. {{{ Pino Keko Tulostus -------- -------- 5 agrs | 231 | 231 || 0 || 6 -------- -------- a | 4 | 232 | 0 | -------- -------- b | 5 | 233 | 0 | -------- ======== iso | 6 | 234 || 0 || -------- -------- luvut | 234 | 235 || 6 || -------- -------- m | 234 | 236 || 4 || -------- -------- 237 || 9 || ======== 238 | 0 | -------- 239 | 0 | -------- }}} == 9. Taulukko-aliohjelman kutsuminen == - '''D:''' [source:/esimerkit/2012s/luennot/luento11/kuvat/debug32.png Askeltaa] riville 32 {{{ #!C# 032 VaihdaSuurin(luvut, 5); }}} - '''M:''' "Nyt pitäisi saada suurin vaihdettua viitokseksi?" - '''V:''' vilkuttelee iloisena - '''M:''' "Ahaa tuolla on sellainen joka sen osaa, mitäs se haluaa tietoja? Taulukon viitteen ja korvaavanArvon. Selvä!" - '''M:''' Kirjoittaa 1. paperille 234, toiselle 5 ja kolmannelle 32. {{{ -------- | 234 -------- ------| 5 -------- -------| 32 | -------- }}} - '''M:''' Vie paperipinon V:lle. - '''V:''' Ottaa pinon ja liimaa ne taululle sekä samalla vielä tekee neljä paikkaa lisäksi: {{{ Pino Keko Tulostus -------- -------- 5 agrs | 231 | 231 || 0 || 6 -------- -------- a | 4 | 232 | 0 | -------- -------- b | 5 | 233 | 0 | -------- ======== iso | 6 | 234 || 0 || -------- -------- luvut | 234 | 235 || 6 || -------- -------- m | 234 | 236 || 4 || -------- -------- 237 || 9 || ======== -------- 238 | 0 | luku | 0 | -------- -------- 239 | 0 | i | 0 | -------- -------- suurin | 0 | -------- paikka | 0 | -------- paluu | 32 | -------- korvaa | 5 | -------- t | 234 | -------- }}} - '''D:''' [source:/esimerkit/2012s/luennot/luento11/kuvat/debug89.png Askeltaa] riville 86 {{{ #!C# 085 public static void VaihdaSuurin(int[] t, int korvaavaArvo) 086 { }}} - '''V:''' "Pitäisi etsiä ensin suurimman paikka että tietää missä vaihdetaan". "Kun ei ole mitään veilä tehty, niin olkoon paikka -1". "Ja kun suurinta ei tiedetä, niin pistetään siihen tosi huono luku" - '''D:''' [source:/esimerkit/2012s/luennot/luento11/kuvat/debug89.png Askeltaa] riville 89 {{{ #!C# 089 for (int i = 0; i < t.Length; i++) }}} {{{ Pino Keko Tulostus -------- -------- 5 agrs | 231 | 231 || 0 || 6 -------- -------- a | 4 | 232 | 0 | -------- -------- b | 5 | 233 | 0 | -------- ======== iso | 6 | 234 || 0 || -------- -------- luvut | 234 | 235 || 6 || -------- -------- m | 234 | 236 || 4 || -------- -------- 237 || 9 || ======== -------- 238 | 0 | luku | 0 | -------- -------- 239 | 0 | i | 0 | -------- -------- suurin | -2147| -------- paikka | -1 | -------- paluu | 32 | -------- korvaa | 5 | -------- t | 234 | -------- }}} Seuraavaa toistetaan kunnes i >= 4: - '''V''' Katsoo i:n arvon ja toteaa että i< 4 - '''D:''' [source:/esimerkit/2012s/luennot/luento11/kuvat/debug92.png Askeltaa] riville 91 {{{ #!C# 091 int luku = t[i]; }}} - '''V''' "Pitäisi mennä siis paikasta 234 i pykälää eteenpäin ja ottaa siellä oleva arvo ja laittaa muuttujaan luku." - '''V''' Hakee arvon ja kirjoittaa arvon muuttujaan luku - '''D:''' [source:/esimerkit/2012s/luennot/luento11/kuvat/debug92.png Askeltaa] riville 92 {{{ #!C# 092 if (luku > suurin) }}} - '''V''' Vertailee arvoja ja päättää mitä tehdään - '''D:''' [source:/esimerkit/2012s/luennot/luento11/kuvat/debug96.png Askeltaa] riville 96 - '''D:''' Askeltaa riville 89 {{{ #!C# 089 for (int i = 0; i < t.Length; i++) }}} - '''V''' kasvattaa i:n arvoja ja jatkaa silmukkaa - '''D:''' [source:/esimerkit/2012s/luennot/luento11/kuvat/debug96.1.png Askeltaa] riville 96 - '''D:''' [source:/esimerkit/2012s/luennot/luento11/kuvat/debug96.3.png Askeltaa] riville 96 - '''D:''' [source:/esimerkit/2012s/luennot/luento11/kuvat/debug89.4.png Askeltaa] riville 89 Kun silmukka tehty {{{ Pino Keko Tulostus -------- -------- 5 agrs | 231 | 231 || 0 || 6 -------- -------- a | 4 | 232 | 0 | -------- -------- b | 5 | 233 | 0 | -------- ======== iso | 6 | 234 || 0 || -------- -------- luvut | 234 | 235 || 6 || -------- -------- m | 234 | 236 || 4 || -------- -------- 237 || 9 || ======== -------- 238 | 0 | luku | 9 | -------- -------- 239 | 0 | i | 4 | -------- -------- suurin | 9 | -------- paikka | 3 | -------- paluu | 32 | -------- korvaa | 5 | -------- t | 234 | -------- }}} - '''D:''' [source:/esimerkit/2012s/luennot/luento11/kuvat/debug100.png Askeltaa] riville 99 {{{ #!C# 099 if (paikka < 0) return; }}} - '''V''' "paikka >= 4, ei lähdetä pois" - '''D:''' [source:/esimerkit/2012s/luennot/luento11/kuvat/debug100.png Askeltaa] riville 100 {{{ #!C# 100 t[paikka] = korvaavaArvo; }}} - '''V''' "Eli pitäisi mennä 234:ta alkavaa taulukkoa 3 eteenpäin ja laittaa sinne arvo 5". - '''V''' laittaa 5:n paikkaan 237: {{{ Pino Keko Tulostus -------- -------- 5 agrs | 231 | 231 || 0 || 6 -------- -------- a | 4 | 232 | 0 | -------- -------- b | 5 | 233 | 0 | -------- ======== iso | 6 | 234 || 0 || -------- -------- luvut | 234 | 235 || 6 || -------- -------- m | 234 | 236 || 4 || -------- -------- 237 || 5 || ======== -------- 238 | 0 | luku | 9 | -------- -------- 239 | 0 | i | 4 | -------- -------- suurin | 9 | -------- paikka | 3 | -------- paluu | 32 | -------- korvaa | 5 | -------- t | 234 | -------- }}} - '''D:''' [source:/esimerkit/2012s/luennot/luento11/kuvat/debug101.png Askeltaa] riville 101 - '''V''' ottaa omat "muuttujat" pois ja katsoo paluuosoitteen 32 - '''D:''' [source:/esimerkit/2012s/luennot/luento11/kuvat/debug34.png Askeltaa] riville 32 {{{ #!C# 032 VaihdaSuurin(luvut, 5); }}} - '''V''' menee M:n luo ja sanoo "jatka 32". {{{ Pino Keko Tulostus -------- -------- 5 agrs | 231 | 231 || 0 || 6 -------- -------- a | 4 | 232 | 0 | -------- -------- b | 5 | 233 | 0 | -------- ======== iso | 6 | 234 || 0 || -------- -------- luvut | 234 | 235 || 6 || -------- -------- m | 234 | 236 || 4 || -------- -------- 237 || 5 || ======== 238 | 0 | -------- 239 | 0 | -------- }}} - '''D:''' [source:/esimerkit/2012s/luennot/luento11/kuvat/debug34.png Askeltaa] riville 34 {{{ #!C# 034 Console.WriteLine(String.Join(" ",luvut)); }}} - '''M''' "nyt pitäisi tulostaa...." {{{ #!html
}}}