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-D
debuggauksen 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ä
Kutsuminen
ja 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 pull
Kopioi tuolta hakemisto
live11
johonkin hakemistoon. Sitten avaalive11.sln
.
- Näytelmä aliohjelmien kutsumisesta
- tee
Console Main
projektiKutsuminen
tiedostosta 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/Windows
kun 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.cs
jos et nimennyt uudelleen),Locals
jaCall Stack
(osa löytyyView/Debug pads
alta ja osaRun
alta). 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
luvut
jam
on esitelty (rivi 28), laita locals-ikkunassa hiiren oikealla myös taulukoilleMake object id
Videolla id:t ovat#
-alkuisia ja nyky VisualStudiossa$
-alkuisia. Esim $2 vastaa näytelmän arvoa234
(tai235
riippuen tulitaanko taulukon koko vai eka alkio taulukon aluksi). Macissä tätä(kään) ei voi tehdä. - tutki taulukkoviitteitä ja miten
m
jaluvut
osoittavat 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ää
Suurempi
koodiinluku1 = 99;
ja kysy mitä tapahtuu pääohjelmassa - lisää
VaihdaSuuremmassa
luvut[1]=99
ja 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
1-ulotteiset taulukot
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.