Helsingin yliopisto / Tietojenkäsittelytieteen laitos / 581325-0 Ohjelmoinnin perusteet
Copyright © 2006 Arto Wikla. Tämän oppimateriaalin käyttö on sallittu vain yksityishenkilöille opiskelutarkoituksissa. Materiaalin käyttö muihin tarkoituksiin, kuten kaupallisilla tai muilla kursseilla, on kielletty.

1. harjoitukset 4.-8.9.2006

Aiheita: algoritmi ja algoritmin tila, ensimmäisen Java-ohjelman kirjoitus, kääntäminen ja suorittaminen

Huom: Ensimmäisellä harjoituskerralla muodostetaan ensin opintopiirit. Nämä ensimmäiset harjoitukset tehdään poikkeuksellisesti vasta harjoitusryhmän kokoontuessa. Toki jo etukäteenkin saa miettiä ja ratkoa tehtäviä. Ensimmäisen harjoituskerran päätteeksi halukkaita opastetaan laitoksen Java-välineiden käyttössä salissa B221 (paitsi ryhmä 5 salissa B121).

  1. Esitä seuraavan algoritmin tila jokaisen rivin jälkeen. Algoritmille annetaan syötteet 1, 2 ja 3. (Huom: tämä ei ole Javaa!)
       a := -3; b := -2; c := -1;
       lue(d);
       a := (b-d)*a;
       b := a+(b+(c+(d+1)*c)*b)*a;
       lue(a); lue(c);
       kirjoita(a-c);
       c := c+c*c;
    
  2. Mitä seuraava algoritmi tulostaa? Perustele. (Huom: tämä ei ole Javaa!)
       edellinen := 1; seuraava := 1;
       while (edellinen < 25) {
         kirjoita(edellinen);
         apu := seuraava;
         seuraava := edellinen + seuraava;
         edellinen := apu;
       }
    
  3. Millaisen "reaalimaailman" ongelman seuraava algoritmi ratkaisee? (Huom: tämä ei ole Javaa!)
       a := 0;
       lue(b);
       c := b;
       while (c>0) {
         lue(d)
         a := a + d;
         c := c - 1;
       }
       if (b=0)
         kirjoita("heissulivei")
       else
         kirjoita(a/b);
    
    Kirjoita algoritmi uudelleen siten, että muuttujilla on nimet, joiden avulla algoritmin tehtävän voi ymmärtää helpommin! Täydennä algoritmia myös tulostusoperaatioin, jotka kertovat, mistä on kysymys. Ketä ensimmäinen parannus palvelee? Entä toinen?

    1. Laadi algoritmi, joka lukee 10 lukua ja tulostaa niiden summan.
    2. Laadi algoritmi, joka lukee ensin luvun n, sitten lukee n kappaletta lukuja ja tulostaa niiden summan.

  4. Kirjoitta seuraava Java-ohjelma tekstitiedostoksi Eka.java:
      public class Eka {
        public static void main(String[] args) {
          System.out.println("Hyvää päivää!");
          System.out.println("Minä olen tietokone.");
          System.out.println("          =========");
          System.out.println("Luulethan, että olen hyvin viisas?");
        }
      }
    
    Käännä ohjelma Java-kääntäjällä ja suorita ohjelma Java-tulkilla. Kokeile ohjelman ensimmäisen puolipisteen poistamista. Mitä kääntäjä sanoo? Kokeile ensimmäisen lainausmerkin poistamista. Mitä kääntäjä sanoo? Kirjoita ensimmäinen sana "System" pienellä alkukirjaimella. Mitä kääntäjä sanoo?

Takaisin harjoitussivulle.