Ohjelmointi 1, syksy 2019, luento 12

Tämä ja ma 21.10 luento suoritetaan ja katsotaan itsenäisesti. Ohjeita alempana

12. luento: ti 15.10.2019 klo 14:15-16:00: Aliohjelmien kutsuminen, etsiminen taulukosta

Luento katsotaan itsenäisesti, katso ohjeita luennon sivulta.

# l12_13

Ohjeet ti 15.10 (luento 12) ja ma 21.10 (luento 13 ja demo 6)

Ti 15.10 luento 12

  • luo alla olevilla (Kutsunäytelmä) ohjeilla itsellesi konsoliprojekti ja koita saada ikkunat kuten esimerkissä.
  • ota valmiiksi eri ikkunaan kutsunäytelmävideo, älä vielä käynistä.
  • voit yrittää debugata samaan tahtiin kuin aikaan videossa (pysäytä video jos tiput kyydistä ja koita päästä tahtiin).
  • voit ottaa vielä yhteen ikkunaan näkyville vuoden 2018 luento 11 videon. Pistä tämä video käyntiin. Tai katso vain kutsunäytelmää tämän ajan.
  • pistä Kutsunäytelmävideo käyntiin kun toisessa videossa käsketään
  • pistä luentovideo äännettömäksi kunnes kutsunäytelmä loppuu
  • alempana valmiit ikkunat katseluaikoineen
  • kun kutsunäytelmä loppuu, katso vuoden 2018 luento 11 videota aikaväliltä
    • [37:15, 45:00]
    • [45:00, 54:58]
    • [54:58, 1:08:36] vastaile samalla kysymyksiin, ks alempana
  • sitten katso vuoden 2018 luento 12 videota aikaväliltä [00:00, 50:00] (tai missä kohti rupeaa tulemaan liikaa päällekkäistä vuoden 2019 luento 11 kanssa.

Ma 21.10 luento 13

  • katso luentosivu
  • ja vuoden 2018 luento 13 video:

Ma 21.10 demo 6 palautus

Videot eivät aukea. Vika koneessa vai videoissa?

VL: koska kuten kirjoitin, en päässyt lentojen välissä antamaan noille oikeuksia normaaliin klo 13 aikaan. klo 19 jälkeen pitäisi olla olleet näkyvissä

21 Oct 19 (edited 21 Oct 19)

Ti 22.10 luento 14

  • pidetään normaalisti
# kutsu

Kutsunäytelmä

  • Näytelmä aliohjelmien kutsumisesta
  • tee Console Main projekti Kutsuminen 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öytyy Debug/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 (tai Ohjelma.cs jos et nimennyt uudelleen), Locals ja Call Stack (osa löytyy View/Debug pads alta ja osa Run alta). On myös Run/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.
  • laita video: Näytelmä videona käyntiin samaan aikaan kun luennolla aloitetaan seuraaminen
  • koita debugta samaan tahtiin kuin luennolla edetään
  • sen jälkeen kun debuggauksessa ollaan edetty kohtaan jossa luvut ja m on esitelty (rivi 28), laita locals-ikkunassa hiiren oikealla myös taulukoille Make object id Videolla id:t ovat #-alkuisia ja nyky VisualStudiossa $-alkuisia. Esim $2 vastaa näytelmän arvoa 234 (tai 235 riippuen tulitaanko taulukon koko vai eka alkio taulukon aluksi). Macissä tätä(kään) ei voi tehdä.
  • tutki taulukkoviitteitä ja miten m ja luvut 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 koodiin luku1 = 99; ja kysy mitä tapahtuu pääohjelmassa
  • lisää VaihdaSuuremmassa luvut[1]=99 ja kysy mitä tapahtuu pääohjelmassa
# kutsuminencs

Kysymyksiä

# Aliohjelma
# Mitonanarvoaliohjelmanluku1pohjelmassa
# Mitonpaikassa1

Olioviitteet

  • roskaksi muuttuminen
Kuva 16: Olioviitteet.
Kuva 16: Olioviitteet.
Kuva 17: Kaksi viitettä samaan olioon.
Kuva 17: Kaksi viitettä samaan olioon.

Tee tähän vielä kuva, jossa sama asia on piirrettynä ilman muistipaikkoja ja laatikot ovat irti toisistaan.

24 Mar 16 (edited 24 Mar 16)
# ae_olioviitteet

1-ulotteiset taulukot

Muutetaan aliohjelmaksi

# helloeka

These are the current permissions for this document; please modify if needed. You can always modify these permissions from the manage page.