Ukeoppgaver 4: 14. - 20. sep (INF1000 - H?st 2013)

_中国竞猜网_中国足彩网-足球推荐

Metoder, flerdimensjonale arrayer og design av programmer med mer enn en klasse   (kapittel 7.1-7.7, 5.7 i "Rett p? Java" 3. utg.)

M?l
?ve p? bruk av forgreninger, l?kker, arrayer, og metoder.

 

[N?kkeloppg.]: Oppgave merket med n?kkelsymbol er plukket ut som spesielt representativ for de viktigste temaene fra ukens forelesning, og alle b?r ha som minimumsm?l ? l?se denne selvstendig.

NB! Denne uken er det merket to oppgaver som n?kkeloppgaver: De adresserer hvert sitt tema fra ukens pensum, og begge er sv?rt sentrale for arbeidet med oblig 2.

Oppgaver


  1. Utskrift og sum av oddetalls-array: kap. 5, oppg. 1-2 (side 99)
    (a) Skriv et program som inneholder en heltalls-array med f?lgende elementer: 1, 3, 5, 7, 9, 11, 13, 15, 17, 19.  Programmet skal inneholde en l?kke som skriver ut indeksen og verdien for alle elementene i arrayen.

    (b) Sum av elementene i en array: Vi bruker her samme array som i forrige oppgave: Beregn summen av elementene og skriv ut resultatet.

     
  2. S?ke etter tall i array:
    (a) Utvid programmet fra forrige oppgave slik at det ber bruker taste inn et tall, og deretter skriver ut en beskjed om det inntastede tallet finnes eller ikke finnes i arrayen.

    (b) Legg ogs? til en l?kke som skriver ut alle verdiene i arrayen som er mindre enn det inntastede tallet.

     
  3. [N?kkeloppg.]: Flerdimensjonal array:
    To-dimensjonale arrayer brukes p? samme m?te som en-dimensjonale, men har to sett med klammer, og gjennomg?s best ved hjelp av to nestede for-l?kker, som vist i f?lgende program:
    import easyIO.*;
    class Array2D {
       public static void main(String[] args) {
    
            int[][] b = new int[3][4];
    
            for (int i = 0; i < 3; i++) {
                for (int j = 0; j < 4; j++) {
    
                    b[i][j] = i * j;
    
                    System.out.println(<Hva mangler her?>);
                }
            }
       }
    }
    Arrayen kan illustreres slik:
      0 1 2 3
    0     _  
    1     _  
    2     _  
    KJ?REEKSEMPEL:
    > java Array2D     
    b[0][0] = 0
    b[0][1] = 0
    b[0][2] = 0
    b[0][3] = 0
    b[1][0] = 0
    b[1][1] = 1
    b[1][2] = 2
    b[1][3] = 3
    b[2][0] = 0
    b[2][1] = 2
    b[2][2] = 4
    b[2][3] = 6
    (a) Hvor mange elementer er det plass til i arrayen b vist over?
    (b) Hva er array-indeksene til array-elementene i tredje kolonne, og hvilke verdier f?r disse elementene i programmet over?
    (c) Fullf?r println-setningen i programmet ovenfor slik at det gir utskriften vist under "Kj?reeksempel".
    (d) Har det noen betydning for hvordan programmet utf?res om du tenker deg/ tegner f?rste indeks som rad eller kolonne?
     
  4. inLine(), inChar(), og ordrel?kke:
    Lag et program som sp?r bruker etter et navn.  Programmet leser navnet inn ved hjelp av inLine() (hvis du bruker EasyIO) eller med nextLine (hvis du bruker Scanner); og "fyller" s? skjermen med navnet ved ? skrive det ut 100 ganger.  Videre skal programmet sp?rre bruker om hun vil gi et nytt navn (j/n).  Svaret leses n? med .inChar() hvis du bruker EasyIO, og hvis det er 'j' gjentas hele prosessen; hvis svaret ikke er 'j' avsluttes programmet.  Kj?reeksempel:
    Skriv et navn: Ola Nordmann
    Ola Nordmann Ola Nordmann Ola Nordmann Ola Nordmann Ola Nordmann O
    la Nordmann Ola Nordmann Ola Nordmann Ola Nordmann Ola Nordmann Ol
    a Nordmann Ola Nordmann Ola Nordmann Ola Nordmann Ola  ...osv...
    Gi nytt navn? (j/n): j
    Skriv et navn:
    


     
  5. [N?kkeloppg.]: Metoder:
    (a) Endre strukturen til programmet ditt fra oppgave 4 slik at det f?lger den typen programstruktur som vi skal bruke i Oblig 2 (vist i skissen nedenfor), og i eksemplene fra forelesningen for uke 4), dvs. med en liten kontrollklasse ?verst, etterfulgt av en egen klasse for datastruktur og metoder.  Hele programmet med begge klassene lagres i én fil, kalt Navn100.java (dvs. navnet til klassen med metoden main()).  Lag bare én metode i den andre klassen, kalt ordrel?kke(), som gj?r alt som st?r i oppgave 4.
    import easyIO.*;
    
    class Navn100 {
        public static void main(String[] args) {
            Hjelpeklasse hj = new Hjelpeklasse();
            hj.ordrel?kke(); // Kj?rer metoden ordrel?kke() i hjelpeklassen
        }
    }
    
    class Hjelpeklasse {
        // Klargj?ring for innlesing/utskrift, gjelder for hele klassen:
        In tast = new In();
        Out skjerm = new Out();
    
        String navn;
    
        void ordrel?kke() {
            char giNyttNavn = 'j'; // Startverdi
    
            while (giNyttNavn != 'n') {
                // - Be bruker taste et navn og les det inn med .inLine();
                // - Utskrift av navn 100 ganger.
                // - Sp?r om bruker vil "Gi nytt navn? (j/n):", og .inChar("\n\r"):
    
    
            }
        }
    }
    
    Mer info: Grunnen til at vi skriver programmet p? denne m?ten med to klasser vil bli klarere n?r vi kommer til kapittel 8, men har sammenheng med at vi ?nsker ? lage gode "objektorienterte" program der vi jobber med "objekter". 

    (b) Flere metoder: Endre programmet slik at koden som skriver ut navnet 100 ganger flyttes til en egen metode kalt utskrift().  Husk ? legge inn et kall p? metoden p? det stedet i programmet du flyttet koden fra.

    (c) Inn-parameter: Endre programmet slik at det ogs? sp?r bruker hvor mange ganger navnet skal skrives ut.  Verdien som bruker taster skal overf?res som parameter til metoden utskrift() som du lagde i del (b).  Endre ogs? metoden utskrift(..) slik at den tar imot argumentet ved hjelp av parameteren int antall, slik:  void utskrift(int antall) {
     
  6. Robot: Klasse med metode med en parameter
    Her skal du benytte samme programstruktur som beskrevet i forrige oppgave, med en klasse som inneholder deklarasjon av metoden main, og en som inneholder deklarasjonen av ?vrige metoder.
    (a) Skriv en klasse SiHei som inneholder en main-metode. Lag en ny klasse Robot og deklarer en metode i denne som heter hilsen, og som skriver en tekst ut p? skjermen. Metoden skal ha en String-parameter som angir hvilken tekst som skal skrives ut. Metoden skal ikke returnere noe.
    (b) Legg et kall p? metoden hilsen fra main-metoden i SiHei, med teksten "Hallo, jeg er roboten Tux" som aktuell parameter. Test at programmet ditt skriver ut teksten "Hallo, jeg er roboten Tux" p? skjermen.

 


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

Publisert 5. sep. 2013 15:06 - Sist endret 5. sep. 2013 16:33