HUOM: Laskuharjoitusryhmä tiistaina 23.4 16-18 on peruutettu.
Ryhmäläiset voivat vierailla muissa ryhmissä.
HUOM 2: Harjoitustehtäväpisteitä (htp) on yhteensä 33. Sen pakollisen
arvosanaan vaikuttavan pisteen saa siis 10 htp:llä ja 12 arvosanaan vaikuttavaa
pistettä 27 htp:llä. Esimerkiksi nämä LH 6:n 5 tehtävää tekemällä saa 3
pistettä ja kurssin arvosana nousee yhdellä pykälällä, jos oli ennen
viimeistä harjoitusta koossa 10 htp:tä (esim. arvosana 1+/3
nousee arvosanaksi 2-/3).
HUOM 3: Jos et saanut pakollisia 10 htp:tä harjoituksista, voit
pyytää luennoijalta lisätehtäviä. Lisätehtävät on palautettava ennen koetta.
Tietokoneen toiminta, K2002, LH 6
Käsitellään harjoituksissa viikoilla 17 (23-25.4.2002)
- Java ohjelmia (tavukoodia) voidaan suorittaa (ainakin) neljällä eri
tavalla: tulkitsemalla, tavallisella käännöksellä, Just-In-time
-käännöksellä tai suoraan Java-suorittimella.
- Anna esimerkkejä tilanteesta, jolloin tulkitseminen olisi parempi
kuin muut vaihtoehdot. Perustele, miksi muut tavat olisivat huonompia.
- Anna vastaavat esimerkit ja perustelut tilanteista, jolloin muut e.m.
vaihtoehdoista olisivat parhaita vaihtoehtoja.
- Mikä olisi paras vaihtoehto (Java) ohjelmoinnin harjoitustyön
suorittamiseen? Miksi?
- Mitä prosesseja järjestelmässä tarvitaan ohjelman
suoritushetkellä, jos Java ohjelmaasi MyProg suoritetaan 1)
tulkitsemalla, 2) tavallisella käännöksellä, 3) Just-In-Time
-käännöksellä tai 4) suoraan Java-suorittimella?
- Java virtuaalikone. Tee seuraavat oletukset. X, Y ja Z ovat paikallisia
muuttujia numero 3, 4 ja 5. Tbl osoittaa 20 alkioiseen taulukkoon ja se
(Tbl) on talletettu paikalliseen muuttujaan numero 6.
- Anna konekäskyt, joilla X:n arvoa kasvatetaan 5:llä.
- Anna konekäskyt, joilla X:n arvoksi tulee Y+Z
- Anna konekäskyt, joilla Y:n arvoksi tulee Tbl[3]
- Javan suoritus. Missä olosuhteissa Javalla tehdyn ohjelman suoritus olisi
nopeampaa/hitaampaa kuin saman ohjelman C:llä tai C++:lla tehty toteutus?
Miksi?
- Itseään muuttava koodi. Joissakin suorittimissa, ttk-91 mukaanlukien,
voidaan muistipaikan arvoa tulkita sekä koodina että datana. Tämä
mahdollistaa itseään muuttavien ohjelmien toteuttamisen. Itseään
muuttavassa ohjelmassa muutetaan suoritettavia konekäskyjä ennen niiden
suoritusta. Joissakin tapauksissa tämä voi johtaa nopeampaan koodiin kuin
tavanomaisemmat ratkaisut. Esimerkiksi, jokin usein suoritettu valinta
voidaan jättää kokonaan pois, kun käskysarjan valinnan asemesta onkin jo
etukäteen muutettu suoritettavaa käskysarjaa halutun mukaiseksi. Yleisesti
ottaen itseään muuttava koodi johtaa aina monimutkaisempiin ohjelmiin,
joiden suoritusta on vaikea ymmärtää ja joissa olevien virheiden
korjaaminen voi olla erittäin vaikeata.
Tee itseään muuttava ttk-91 ohjelma, jossa on käskysarja, joka
- ennen muutosta laskisi yhteen muuttujien X ja Y arvon, mutta
- muutoksen jälkeen laskeekin muuttujien X ja Y tulon. ADD käsky on
siis muutettu MUL käskyksi.
Muutos voidaan tehdä esimerkiksi vaihtamalla koko käsky tai editoimalla
kyseistä käskyä. Kumpaa tapaa käytit? Osaatko tehdä sen sillä toisella
tavalla?
Vihje: käsky "A ADD R2, R3"
voidaan ladata R1:een tavallisella "LOAD R1, A"
käskyllä.
- [1 htp] Vastaa kurssikyselyyn.
Kiinnitä lisähuomiota kohtien 14 ja 19 vastauksiin. Ota lisäkysymysten
vastaukset talteen laskuharjoituksissa tapahtuvaa keskustelua varten.
Vastaa kurssikyselyn kohdassa 14 ("Miten kurssia voisi
kehittää?") myös lisäkysymyksiin:
- Montako tuntia olet käyttänyt tähän kurssiin yhteensä tähän
asti aikaa?
Luentojen seuraamiseen? Harjoituksiin? Itseopiskeluun?
- Kuinka suureen osaan luennoista osallistuit? (100%, 90%, ...)
- Jos osallistuit lähes kaikkiin luentoihin, niin opitko perusasiat
luennoilla vai pitikö niitä vielä kovasti opiskella kirjoista?
- Käytitkö englanninkielisiä oppikirjoja? Kuinka paljon?
Varaudu esittämään kaikki Koksiin liittyvät tehtävät mikrotietokoneella
harjoitustilaisuudessa. Pidä mukanasi levykettä harjoitusta varten tekemiesi
ohjelmien tallettamiseen.
Paivi.Kuuppelomaki@cs.Helsinki.FI