avoin/avoin23
#
avoin
Huom! TÄMÄ ON AVOIMEN YLIOPISTON SIVU.
Et voi suorittaa kurssia, ellet ole ilmoittautunut täällä.
Ohjelmointi 1, avoin 2023, luento 12
- Näytelmä aliohjelmien kutsumisesta
- Näytelmä videona - käynnistä yhtäaikaa katsoessasi luennon videointia.
- Kutsuminen.cs - näytelmässä käytetty koodi
- Kutsuminen.asm - koodi optimoidusti käännettynä konekielelle (näkee kun painaa
Ctrl-Alt-Ddebuggauksen aikana)
- Taulukoista:
- SuurinJaPienin.cs -taulukon Suurimman ja pienimmän etsiminen
- Matriisit.cs -esimerkki matriiseista
- 1-ulotteiset taulukot
- TIM-lisäsivu 2D-taulukoista
- Kutsuminen.cs - esimerkkejä 1-ulotteisen taulukon käyttämisestä
- SuurinJaPienin.cs -
- suurimman ja pienimmän sekä tietyn luvun etsiminen
- LumiukotTaulukolla.cs - lumiukon pallot taulukkoon
- Tutustu: demo 5 gurutehtävien malliratkaisut.
- Luennolle tehdyt koodit versionhallinnassa
- Luennon koodit versionhallinnassa
- 12. luento videona (2021, katso tämä): Osa 1 ja 2 MP4 alkuperäinen
12. luento videona: Osa 1 ja 2 MP4 alkuperäinen - luentoseinä
https://tim.jyu.fi/files/kurssit/tie/ohj1/2023s/luentojen-aiheet/luento12b.mp4
Linkki ei toimi. 12b -> 12a näyttää toimivan
—Ti 12.10 luento 12 aloitus
- luo alla olevilla (Kutsunäytelmä) ohjeilla itsellesi konsoliprojekti nimeltä
Kutsuminenja koita saada ikkunat kuten esimerkissä. - ota valmiiksi eri ikkunaan kutsunäytelmävideo, älä vielä käynnistä.
- voit yrittää debugata samaan tahtiin kuin aikaan videossa (videokatsoja: pysäytä video jos tiput kyydistä ja koita päästä tahtiin).
- pistä Kutsunäytelmävideo käyntiin kun zoomissa/toisessa videossa käsketään
#
kutsu
Kutsunäytelmä
Jos haluat valmiin pohjan, niin mene komentoriville ja (jos et ole koskaan tehnyt) ja luo uusi hakemiston ja siellä
git clone https://gitlab.jyu.fi/tie/ohj1/2020s/esimerkit.git .Jos olet tuon joskus tehnyt, niin menet sinne vanhaan hakemistoon ja
git pullKopioi tuolta hakemisto
live11johonkin hakemistoon. Sitten avaalive11.sln.
- Näytelmä aliohjelmien kutsumisesta
- tee
Console MainprojektiKutsuminentiedostosta Kutsuminen.cs - laita breakpoint ekalle riville /16) ja aloita debug.
- Windows: laita näkyviin ikkunat:
Kutsuminen.cs,Registers,Disassembly,Locals,Call Stack(ikkunat löytyyDebug/Windowskun debuggaus on aloitettu). Koita sommitella kuten alla olevassa kuvassa. Ikkunoita voit siirrellä ottamalla otsikkopalkista kiinni ja pudottelemalla "tähtäimiä" käyttäen. - Mac: Saat näkyviin vain ikkunat
Kutsuminen.cs(taiOhjelma.csjos et nimennyt uudelleen),LocalsjaCall Stack(osa löytyyView/Debug padsalta ja osaRunalta). On myösRun/Show Disassembly, mutta itse en saanut sitä näyttämään mitään järkevää. Seuraa siis tätä videosta.
- voit myös katsella käsikirjoitusta tai still-kuvia etenemisestä samaan tahtiin.
- Videokatsoja: laita video: Näytelmä videona käyntiin samaan aikaan kun luennolla aloitetaan seuraaminen
- koita debugata samaan tahtiin kuin luennolla edetään
- sen jälkeen kun debuggauksessa ollaan edetty kohtaan jossa
luvutjamon esitelty (rivi 28), laita locals-ikkunassa hiiren oikealla myös taulukoilleMake object idVideolla id:t ovat#-alkuisia ja nyky VisualStudiossa$-alkuisia. Esim $2 vastaa näytelmän arvoa234(tai235riippuen tulitaanko taulukon koko vai eka alkio taulukon aluksi). Macissä tätä(kään) ei voi tehdä. - tutki taulukkoviitteitä ja miten
mjaluvutosoittavat samaan paikkaan.
Kun näytelmä katsottu:
- seuraavat kaksi kohtaa videosta voit ohittaa jos asia ei kiinnosta:
- aloita debuggaus alusta ja katso miltä koodi näyttää konekielellä
- katso myös optimoitua käännöstä Kutsuminen.asm
- lisää
Suurempikoodiinluku1 = 99;ja kysy mitä tapahtuu pääohjelmassa - lisää
VaihdaSuuremmassaluvut[1]=99ja kysy mitä tapahtuu pääohjelmassa
#
kutsuminencs
Kysymyksiä
#
Aliohjelma
#
Mitonanarvoaliohjelmanluku1pohjelmassa
#
Mitonpaikassa1
#
kutsumemanim
#
kutsuanimnorm
#
kutsunormkuva
Vastaus:
ref args -> new $1 0
val a = 4
val b = 5
val iso
iso = 5
iso = 6
ref luvut -> [] $2 v 4
ref m -> $2
$2[2] = 4
$2[1] = 6
$2[3] = 9
$2[3] = 5
Olioviitteet
Muutetaan aliohjelmaksi
#
helloeka
2-ulotteiset taulukot
#
matriisit
These are the current permissions for this document; please modify if needed. You can always modify these permissions from the manage page.
