Ekstraoppgaver uke 4: 12.sep - 18. sep (INF1000 - H?st 2013)

_亚博娱乐官网_亚博pt手机客户端登录

Disse oppgavene er ment som mengdetreningsoppgaver for de som ?nsker mer trening p? deler av det grunnleggende stoffet. Velg de oppgavene du selv f?ler at du har behov for ? jobbe med, og g? videre til neste tema n?r du er klar for det!

 

  1. Enkel kalkulator med if-else og switch:
    [ NB! Vi bruker en litt spesiell m?te ? gi input i denne oppgaven, der bruker m? taste mellomrom mellom de tre delene av regnestykket (f.eks. "4 + 5"), men du vil l?re hvordan programmet kan godta andre skrivem?ter neste uke. ]
    (a) Lag en kalkulator som st?tter enkle regnestykker p? formen: tall operator tall, hvor de tre elementene er adskilt med mellomrom.  Tall er heltall, og operator er en av de fire regneartene: + - * /.  Eksempel p? kj?ring av programmet:
    Regnestykke: 4 + 5
    Resultat: 9
    
    Bruk tast.inInt() og tast.inChar(" ") for ? lese tall og regneart fra tastaturet (hvis du bruker EasyIO, hvis ikke se "Hint" nedenfor).  Mellomrommet i parentesene til inChar angir at den skal betrakte mellomrom som et skilletegn f?r og etter regnearten.  Dette er n?dvendig ? si fra til inChar, fordi den leser inn ett tegn av gangen.  Lagre tallene og operator i passende variabler, og bruk if-else-setninger til ? velge hvilken regneart skal utf?res. 
    Hint for ? l?se det uten EasyIO: Bruk scan.nextInt() i stedet for tast.inInt(), og scan.next().charAt(0) i stedet for tast.inChar(" ");.

    (b) Hvordan kan programmet endres for ? bruke en switch-setning i stedet for if-else?  (Hint: Se eksemplet p? side 80 i l?reboka, og husk ? ta med break;-setningene.)

    (c) Hva slags divisjon f?r vi utf?rt?, og hvordan kan vi endre programmet for ? f? utf?rt den andre typen divisjon uten ? endre deklarasjonen av de to innleste heltall?

     
  2. L?kker: Hva blir skrevet ut?
    Avgj?r uten ? bruke datamaskin hva som blir skrevet ut n?r f?lgende programsetninger utf?res.
    //(a)
           int a = 10;
           while (a < 20) {
               a += 4;
           }
           System.out.println("a = " + a);
    
    //(b)
           int sum = 0;
           for (int b = 1; b < 6; b += 2) {
               sum += b;
           }
           System.out.println("sum = " + sum);
    
    //(c)
           int produkt = 1;
           for (int c = 1; c < 4; c++) {
               produkt = produkt * c;
    	   System.out.println(produkt);
           }
    
    //(d)
           for (int d = 3; d >= 1; d--) {
               for (int e = 1; e <= 3; e++) {
                   System.out.println(d + e);
               }
           }
    
    //(e)
           int teller = 0;
           for (int ytre = 0; ytre < 3; ytre++) {
               teller++;
               for (int indre = 0; indre < 3; indre++) {
                   teller++;
               }
           }
           System.out.println(teller);
    


     
  3. Blokker og skop:
    Hvilke av disse programmene er lovlige?
    class Prog1 {
        public static void main(String[] args) {
            int k = 0;
            if (k >= 0) {
                int n = k + 1;
            }
            System.out.println(n);
        }
    }
    
    class Prog2 {
        public static void main(String[] args) {
            int k = 0;
            if (k >= 0) {
                int n = k + 1;
            }
            if (k < 0) {
                System.out.println(n);
            }
        }
    }
    
    class Prog3 {
        public static void main(String[] args) {
            int k = 0;
            if (k >= 0) {
                k++;
                System.out.println(k);
            }
        }
    }
    

     
  4. Utvidet oppgave om inLine(), inChar(), og ordrel?kke:
    Utvid programmet fra ukeoppgavene som sp?r bruker etter et navn. Programmet skal n? lese forbi eventuelle blanke linjer i begynnelsen av brukerens svar. Dette gj?r du i easyIO ved hjelp av setningen .inChar("\n\r") . Det man skriver i disse parentesene kalles for "skilletegn" og angir hvilke tegn som ignoreres f?r man kommer til et tegn som tas med tilbake. I dette tilfellet skal programmet hoppe over evt. linjeskift (\n) eller vognretur (\r) som bruker har tastet inn, og i stedet lese inn en vanlig bokstav fra tastatur, f.eks. 'j'. Det samme kan man ogs? f? til uten EasyIO ved hjelp av scan.nextLine().charAt(0);  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:
    

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

Publisert 5. sep. 2013 15:13 - Sist endret 5. sep. 2013 16:37