Tietokoneen toiminta, kevät 2003

Harjoitus 6

Käsitellään harjoitusryhmissä tiistaina 10.6.2003.

Varaudu harjoituksiin etukäteen tutustumalla käsiteltävään asiaan ja yrittämällä itse tehdä tehtäviä niin paljon kuin mahdollista. Harjoitustilaisuudessa tehtävät 'viimeistellään' ryhmissä. Mikäli mahdollista, niin tarkista ohjelmasi toimivuus kääntämällä ja suorittamalla se Koksin avulla.

  1. 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.
    1. Anna esimerkkejä tilanteesta, jolloin tulkitseminen olisi parempi kuin muut vaihtoehdot. Perustele, miksi muut tavat olisivat huonompia.
    2. Anna vastaavat esimerkit ja perustelut tilanteista, jolloin muut e.m. vaihtoehdoista olisivat parhaita vaihtoehtoja.
    3. Mikä olisi paras vaihtoehto (Java) ohjelmoinnin harjoitustyön suorittamiseen? Miksi?
    4. 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?

  2. 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.
    1. Anna konekäskyt, joilla X:n arvoa kasvatetaan 5:llä.
    2. Anna konekäskyt, joilla X:n arvoksi tulee Y+Z
    3. Anna konekäskyt, joilla Y:n arvoksi tulee Tbl[3]

    Luennolla esitetyt Tanenbaumin kirjan [Tane99] kuvat 4-10, 4-12, 4-13, 4-9 ja 5-36 löytyvät myös verkosta.

  3. Javan suoritus. Missä olosuhteissa Javalla tehdyn ohjelman suoritus olisi nopeampaa/hitaampaa kuin saman ohjelman C:llä tai C++:lla tehty toteutus? Miksi?

  4. Kertausta aliohjelmista. Kokonaislukuarvoinen taulukko T[40] on määritelty pääohjelmatasolla. Taulukossa on siis 40 alkiota (alkiot 0,...,39).
    1. Anna taulukon T määrittely.
    2. Tee funktio Laske(S, N), joka palauttaa arvonaan N-alkioisen taulukon S positiivisten alkioiden lukumäärän. Noudata suositusten mukaista aliohjelmien (funktioiden) toteutustapaa ja kutsumekanismia. Parametri S on viiteparametri ja parametri N on arvoparametri.
    3. Anna ttk-91 symbolisen konekielen konekäskyt, joilla em. funktiota käyttäen tulostetaan (muualla, pääohjelmatasolla määritellyn) 40 alkioisen taulukon T positiivisten alkioiden lukumäärä. Noudata suositusten mukaista aliohjelmien kutsumekanismia. Parametri S on viiteparametri ja parametri N on arvoparametri.
    4. Miten funktiota Laske tulisi muuttaa, jos se palauttaisikin taulukon S positiivisten alkioiden lukumäärän sijaan taulukon S parittomien alkioiden lukumäärän.
    5. Piirrä aktivointiotietuepino kohdan b) aliohjelman kutsun jälkeen ja juuri ennen aliohjelmasta paluuta

  5. Palautetta kurssista
    1. Kurssin tavoitteena on tarjota perustiedot tietokoneen toiminnasta 2 ov:n mittaisella kurssilla. Tarjosiko kurssi mielestäsi tähän tavoitteeseen sopivan peruspaketin? Mikä osa kurssin materiaalista tuntui turhalta ja tarpeettomalta? Mitä tärkeitä asioita kurssilta puuttui? Mistä asioista olisit halunnut tietää enemmän?
    2. Saitko kurssin perusteella mielestäsi riittävän selkeän ja kattavan kuvan tietokoneen toiminnasta? Mitkä asiat tuntuivat turhan vaikeilta ja monimutkaisilta? Luettele mielestäsi kolme vaikeinta asiaa. Mitkä asiat taas tuntuivat helpoilta?
    3. Muita kommentteja kurssista.
    4. Vastaa myös seuraaviin kysymyksiin
      1. Montako tuntia olet käyttänyt tähän kurssiin yhteensä tähän asti aikaa?
        Luentojen seuraamiseen? Harjoituksiin? Itseopiskeluun?
      2. Kuinka paljon aikaa käytit harjoituksiin valmistautumiseen ennen harjoitustilaisuutta? Kuinka paljon aikaa käytit itsellesi vaikeiden kohtien selvittämiseen harjoitustilaisuuden jälkeen?
      3. Kuinka suureen osaan luennoista osallistuit? (100%, 90%, ...)
      4. Jos osallistuit lähes kaikkiin luentoihin, niin opitko perusasiat luennoilla vai pitikö niitä vielä kovasti opiskella kirjoista?
      5. Käytitkö englanninkielisiä oppikirjoja? Kuinka paljon?