Ukeoppgaver 6:  26. sep - 2. okt (INF1000 - Høst 2012)

Oppgaver

  1. KursRegister.java: 
    (a) Studér følgende program. Finn ut hva som er klassene, objektene, og pekerne i programmet, og hvordan disse er brukt.  Undersøk gangen i programmet når det kjøres.  Hvorfor skriver det ut forskjellig informasjon om to kurs når det bare er én System.out.println i programmet?  Begge klassene lagres i én fil, kalt KursRegister.java.
    class Kurs {
        // Objektvariabler:
        String kode;
        int studiepoeng;
    
        // Objekt-metode (dvs. uten "static"):
        void skrivUt() {
    	System.out.println("Kurs med kode: " + kode
    			   + ", og studiepoeng: " + studiepoeng);
        }
    }
    
    class KursRegister {
    
        // Klasse-metode (dvs. med "static"):
        public static void main(String[] args) {
    
    	Kurs inf, mat; // pekere (variabler som kan peke på Kurs-objekter)
    
    	inf = new Kurs(); // Lager et objekt av klassen Kurs
    	inf.kode = "INF1000"; // Setter verdier i objektet...
    	inf.studiepoeng = 10;
    	inf.skrivUt();
    
    	mat = new Kurs(); // Lager et objekt til av klassen Kurs
    	mat.kode = "MAT1001";
    	mat.skrivUt();
        }
    }
    
    KJØREEKSEMPEL:
    > java KursRegister
    Kurs med kode: INF1000, og studiepoeng: 10
    Kurs med kode: MAT1001, og studiepoeng: 0
    


    Repetisjonsoppgaver

  2. Løkker: Gangetabell
    (a) Lag et program som ber bruker taste inn et tall, og skriver ut gangetabellen for det tallet, ganget med 1, 2, osv. til 12.  Hvis bruker taster inn 5 skal resultatet se slik ut:
    5 x 1 = 5
    5 x 2 = 10
    5 x 3 = 15
    5 x 4 = 20
    5 x 5 = 25
    5 x 6 = 30
    ...osv...
    (b) Endre programmet slik at utskriften av gangetabellen lages i en egen metode.  Sett opp programmet med to klasser som vist i oppgave 1 ovenfor og på forelesninger.


  3. Tekster: Tallsiffer-oversetting:  kap. 6, oppg. 7 og 8 (side 118)
    (a) Lag et program som oversetter fra tallsiffer til tekst slik at f.eks. 3 blir oversatt til "tre".  Programmet skal kunne oversette alle 10 sifre (fra 0 til 9).  Hint: Bruk en array med tekstene "null", "en", "to", osv.
    (b) Lag et program som oversetter fra tekst til tall.  Programmet skal be brukeren skrive inn et tall mellom null og ni (med bokstaver), og skrive ut tilsvarende siffer. Hint: Bruk arrayen fra del (a).


  4. Array med String-er:
    Hva blir skrevet ut i følgende program?, og hvorfor?
    class NavneArray {
       public static void main(String[] args) {
    
           String[] navn = { "Anne", "Kari", "Ole", null };
    
    //(a)
           System.out.println(navn[1] + navn[navn.length/2]);
    
    //(b)
           for (int i = 0; i < navn.length; i++) {
               // Testen "!= null" sikrer at neste ledd ikke blir null.equals(..)
               if (navn[i] != null
                   && (navn[i].equals("Ole") || navn[i].equals("Anne")) ) {
                   System.out.println(i);
               }
           }
    
    //(c)
           int indeks = 0;
           boolean funnet = false;
           while (indeks < 4 && !funnet) {
               if (navn[indeks].equals("Kari")) {
                   funnet = true;
               }
               indeks++;
           }
           System.out.println(indeks);
    
    //(d)
           String[] andreNavn = { "Per", "Anne", "Ole" };
           for (int i = 0; i < 4; i++) {
               for (int j = 0; j < 3; j++) {
                   // Testen "!= null" sikrer at neste ledd ikke blir null.equals(..)
                   if (navn[i] != null && navn[i].equals(andreNavn[j])) {
                       System.out.println(i + " " + j);
                   }
               }
           }
       }
    }
    


  5. Metode med array som inn-parameter: kap. 7, oppg. 3 (side 136)
    Lag en metode double gjennomsnitt(int[] a) som summerer alle elementene i heltallsarrayen a, og som returnerer (det aritmetiske) gjennomsnittet av verdiene i a.

Tibakemelding om dette oppgavesettet kan du skrive i bloggen eller sende på mail til siriamj[a] ifi.uio.no