[9 p] Taulukot ja aktivointitietue. Oletetaan, että meillä on kaksiulotteinen kokonaislukutaulukko A[5,4]. Taulukossa A on 20 alkiota 5 rivissä, joista kussakin 4 alkiota. Taulukon A alkiot ovat siis A[0,0]...A[4,3]). Taulukko A on talletettu riveittäin. Muuttujat i, j ja k on määritelty pääohjelmatasolla.
- Jos taulukko A on talletettu muistiosoitteeseen 185, niin missä muistiosoitteessa on taulukon alkio A[2, 3]?
- Toteuta ttk-91 symbolisella konekielellä sijoituslause T[i] = A[j, k];
- Selitä sanallisesti, mitä tarkoittaa käsite aktivointitietuepino (activation record stack). Mikä se on ja mihin sitä käytetään?
- [3 p, vaikea tehtävä, tee jos on aikaa] Useimmissa käytetyissä ohjelmointikielissä aliohjelman (funktion) koodissa voi viitata ainoastaan aliohjelman paikallisiin tietorakenteisiin tai sitten globaaleihin pääohjelmatason tietorakenteisiin. Joissakin ohjelmointikielissä voidaan kuitenkin viitata myös aliohjelmien kutsupinossa aikaisemmin olevien aliohjelmien tietorakenteisiin. Aliohjelmassa esiintyvän tunnuksen (esim. y) merkitys voi tällöin vaihdella sen mukaan, mitä aliohjelmia kutsumalla johonkin tiettyyn aliohjelmaan on päädytty. Oletetaan nyt, että funktiota fLast on kutsuttu funktiosta fMiddle ja että funktion fMiddle sisällä on määritelty muuttuja y, johon halutaan viitata funktion fLast koodissa. Kuinka tämä tapahtuu? Anna esimerkki sijoituslauseelle x = y; missä x on paikallinen muuttuja funktiossa fLast ja y on paikallinen muuttuja funktiossa fMiddle.
Noudata suositusten mukaista aliohjelmien (funktioiden) kutsumekanismia.