[[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
}}}