Ukeoppgaver 3:  5. - 11. sep (INF1000 - Høst 2012)

Utskrift/ lesing med easyIO, arrayer, løkker   (kapittel 3-4 i læreboka, "Rett på Java" 3. utg.)

Mål
Øve på løkker og arrayer, innlesing fra tastatur og utskrift til skjerm.

[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.

I tillegg til de vanlige ukeoppgavene er det laget stjerneoppgaver for de som ønsker litt større utfordringer innenfor ukens tema, og ekstraoppgaver for de som ønsker mer trening på deler av det grunnleggende stoffet.

Oppgaver

  1. Innlesing fra tastatur, utskrift til skjerm: kap. 3, oppg. 3 (side 72)
    Bruk easyIO som gjennomgått denne uken, eller Scanner gjennomgått forrige uke. Lag et program som ber om og leser inn to flyttall. Programmet skal deretter regne ut produktet av de to tallene og skrive ut svaret. Her er et eksempel på hvordan en kjøring av programmet kan se ut:
     Oppgi verdien til x: 9
     Oppgi verdien til y: 10
     Produktet av x og y er 90.0
    

    Hint:Innlesing fra terminal bør gjøres i to steg, først en utskrift som sier til bruker hva hun skal taste inn (det kalles for ledetekst), og så kommer selve setningen som henter input fra tastaturet, til dette kan du bruke enten EasyIO eller Javas innebygde funksjoner:
    • EasyIO: Følg malen fra eksemplet på side 58.  Bruk tast.inDouble() og ikke tast.inInt() slik at bruker kan taste inn et flyttall. 

    • Scanner: Se Rett på Java kapittel 3.11 og lysark fra Uke2.

    I begge tilfeller så vil programsetningen som leser inn tallet (tast.inInt() eller scan.nextInt()) stoppe kjøringen av programmet midlertidig inntil bruker har tastet inn et svar.  Når bruker har gjort det, blir tallet lagret i den angitte variabelen, og kjøringen av programmet fortsetter med neste setning.

     
  2. Utskrift med 2 desimaler på to måter: easyIO og printf
    Ved utskrift av desimaltall er det ofte ønskelig å kontrollere hvor mange desimaler som skrives ut. Bruker vi System.out.println(tall) til å skrive ut en double-variabel tall, får vi med alle desimalene som er lagret i tall (med unntak av avsluttende nuller i desimalene). To måter å kontrollere antall desimaler som skrives ut er:
    • EasyIO: Du kan få skrevet ut variabelen tall med 2 desimaler etter komma med første setning nedenfor. I setning to fyller Java på med blanke tegn til venstre slik at hele utskriften tar 7 plasser:
        skjerm.outln(tall, 2);
        skjerm.outln(tall, 2, 7);

    • Printf:
      I de vanligste brukte versjoner av Java (5.0, 6, og 7, også kalt 1.5, 1.6, og 1.7) finnes en metode kalt "printf" som gir oss god kontroll over utskriften, følgende setninger gir samme resultat som EasyIO-setningene ovenfor:
        System.out.printf("Tall: %.2f\n", tall);
        System.out.printf("Tall: %7.2f\n", tall);
      Koden \n (omvendt-skråstrek etterfulgt av n) gir et linjeskift, og kan tas bort i setningene over hvis du ikke ønsker linjeskift. 

    Oppgave: Bruk dette til å endre programmet fra forrige oppgave (oppgave 1 ovenfor) til å skrive ut produktet med 2 desimaler, og igjen med 3 desimaler på 10 plasser.


     

  3. For-løkke: kap. 4, oppg. 4 (side 85)
    Lag et program som skriver ut på skjermen omkretsene til sirkler med radiusene r = 1, 2, ..., 10 (omkretsen O beregnes etter formelen O = 2 π r.  Sett π = 3.14).  Utskriften skal følge mønsteret:
    Radius = 1 gir omkrets = 6.28
    Radius = 2 gir omkrets = 12.57
    ..osv..
    

     
  4. While-løkke: : kap. 4, oppg. 5 (side 85)
    (a) Gjenta forrige oppgave, men bruk while-løkke i stedet.

    (b) Som forrige oppgave, men utskriften skal nå først stoppe når omkretsen overstiger 1000.  Tips: Bruk while-løkken til å kontrollere O.

     
  5. Lag en array:
    (a) Deklarer et array av heltall med plass til 4 tall og sett inn tallene 0-3.
    (b) Endre første og siste tallet i arrayen til å være 1337.
     
  6. [Nøkkeloppg.]: Array med tall:
    (a) Lag et program med en for-løkke som ber bruker taste inn fem heltall og lagrer disse i en array kalt tall:
    int[] tall = new int[5];
    
    (b) Sum av array: Utvid programmet slik at det regner ut summen av tallene ved hjelp av en løkke, og skriver ut resultatet.
    (c) Minste verdi: Utvid programmet slik at det finner og skriver ut det minste tallet i arrayen.
    (d) Lave verdier: Legg til programkode som skriver ut alle verdiene i arrayen som er mindre enn 10.
    (e) Søk: Legg til programkode som skriver ut en beskjed om verdien 5 finnes eller ikke finnes i arrayen.



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