Ohjelmointi 1, syksy 2022, luento 12

# L12

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

Opiskelusta

  • tee ajatuksen kanssa demojen harjoittelutehtäviä
  • lue kerran luentomoniste läpi niin tiedät missä on mitäkin
  • KYSY kurssin keskustelussa
  • jos epäselviä demotehtäviä, laita kommentti viereen
  • bookamarkkaa (vasen yläkulma ja klemmari) itsellesi tärkeät sivut
  • älä seuraa jokaista linkkiä
  • jos luennolla ei näe, voi sielläkin pitää Zoomin auki

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/2022s/esimerkit.git .

    Jos olet tuon joskus tehnyt, niin menet sinne vanhaan hakemistoon ja

    git pull

    Kopioi tuolta hakemisto live11 johonkin hakemistoon. Sitten avaa live11.sln.

  • 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.
  • 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 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 tulkitaanko 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ä

# 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

# ae_olioviitteet
# refanim2

1-ulotteiset taulukot

Muutetaan aliohjelmaksi

# helloeka
# matriisit

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