Ekstraoppgaver uke 3: 5.sep - 11. sep (INF1000 - H?st 2013)

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. Presedensregler ― i hvilken rekkef?lge utf?res regneoperasjonene? (Mer om beregningsuttrykk fra uke 2)

    Avgj?r i hvert av disse tilfellene hvilken verdi som blir skrevet ut p? skjermen.

    For ? svare p? denne oppgaven m? du kjenne reglene for evaluering (utregning) av numeriske uttrykk i Java. Kortversjonen av disse er at uttrykk beregnes fra venstre mot h?yre, men multiplikasjoner og divisjoner utf?res f?r addisjoner og subtraksjoner. Du kan lese mer om dette p? side 39 i l?reboka.
      1.  System.out.println(3 * 4 + 5);
      2.  System.out.println(3 + 4 * 5);
      3.  System.out.println((3 + 4) * 5);
      4.  System.out.println(1 / 2 * 5);
      5.  System.out.println(1 / 2 * 5.0);
      6.  System.out.println(1.0 / 2 * 5);
      7.  System.out.println(4 * 2 * 2 * 1);
      8.  System.out.println(4 / 2 / 2 / 1);
      9.  System.out.println(5 * 4 / 3 * 2 / 1);
    
    F?lgende oversikt viser presedens (hva utf?res f?rst) for alle operatorene. Jo h?yere oppe p? denne lista operatoren st?r jo f?r blir den utf?rt, mens de som st?r p? samme niv? er likestilt og utf?res fra venstre til h?yre. Tabellen er basert p? side 378 i The Java Programming Language:
    Operator type Operators
    Postfix [] . (params) expr++ expr--
    Unary ++expr --expr +expr -expr ~ !
    Creation or Cast new (type)expr
    Multiplicative * / %
    Additive + -
    Shift << >> >>>
    Relational < > >= <= instanceof
    Equality == !=
    Bitwise AND &
    Bitwise exclusive OR ^
    Bitwise inclusive OR |
    Logical AND &&
    Logical OR ||
    Ternary ?:
    Assignment = += -= *= /= %= >>= <<= >>>= &= ^= |=
  2. Logiske uttrykk: (tabell 2.5, side 41)
    Avgj?r hvilken verdi den boolske variabelen b f?r etter hver av disse tilordningssetningene, n?r vi antar at heltallsvariablene x, y, og z har f?tt verdier som f?lger: int x = 3, y = 4, z = 1;
      1.  b = (x < y) && (y < z);
      2.  b = (x < y) || (y < z);
      3.  b = ! (x < y);
      4.  b = x < y;
      5.  b = x <= y;
      6.  b = (x == y);
      7.  b = (x != y);
    

    Eksempel p? hvordan man kan bruke slike boolske uttrykk i et program:
        int x = 3, y = 4, z = 1;
        if ((x < y) && (y < z)) {
            System.out.println("Det stemmer at x < y < z."); // Blir dette skrevet ut?
        }
    
  3. Valuta-omregning: kap. 3, oppg. 4 (side 3) (Innlesing/ utskrift)

    Lag et program som leser inn et kronebel?p fra tastaturet, og omregner bel?pet til amerikanske dollar, euro, og svenske kroner; og skriver ut resultatet p? skjermen med to desimaler. Omregningen er etter f?lgende kurser: 1 USD = 5.435 kr; 1 EUR = 7.682 kr; 1 SEK = 0.8462 kr. (NB! Vekslingskursene er oppdatert 6. sep 2011, det st?r andre kurs og valutaer i l?reboka.). Hint: Hvis brukeren taster 100 skal resultatet i USD bli $18.40.



  4.  
  5. L?kker: Hva blir skrevet ut?
    Anta at f?lgende programsetninger utf?res. Hva skrives ut p? skjermen?
    class Ukeoppg2_8 {
        public static void main(String[] args) {
    
    //(a)
           int a = 1;
           while (a < 5) {
               a = a + 1;
           }
           System.out.println("a = " + a);
    
    //(b)
           int b = 11;
           while (b < 14) {
               b++;
               System.out.println(b);
           }
    
    //(c)
           int c = 1;
           while (c < 10) {
               c = -2 * c;
           }
           System.out.println("c = " + c);
    
    //(d)
           for (int d = 0; d < 3; d++) {
               System.out.println(d);
           }
    
    //(e)
           for (int e = 1; e <= 3; e++) {
               for (int f = 1; f <= 2; f++) {
                   System.out.println(e + " " + f);
               }
           }
    
    //(f)
           for (int ytre = 0; ytre < 2; ytre++) {
               System.out.print("[");
    
               for (int indre = 0; indre < 3; indre++) {
                   System.out.print(".");
               }
               System.out.println("]");
           }
    }}
  6. Summerings-l?kke: kap. 4, oppg. 6 (side 85)
    (a) Skriv et program som leser ett heltall n fra terminal, og som deretter summerer tallene fra 1 til n, dvs. 1 + 2 + ··· + n, og skriver ut hver av mellomresultatene (1; 1+2; 1+2+3; osv.), og sluttsummen.  Utskriften skal f?lge dette m?nsteret (n?r n = 5):
      1    1
      2    3
      3    6
      4   10
      5   15
    
    (b) Det finnes ogs? en formel som gir summen av tallene 1, 2, 3, ...., n direkte: n * (n + 1) / 2.  Utvid programmet slik at det til slutt sammenligner siste sum med resultatet av formelen, og gir en melding til bruker p? om de to svarene var like eller ikke.
     
  7. 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.

     
  8. En enkel array:
    int[] a = new int[20];
    

    (a) N?r setningen over utf?res, skjer det b?de en deklarasjon og en oppretting av et array-objekt. Forklar hvilken del av setningen som gj?r hva, og vis hvordan setningen kunne v?rt splittet opp i to setninger: en deklarasjonssetning og en setning som oppretter array-objektet.

    (b) Her er eksempler p? bruk av ovennevnte array. Hva blir skrevet ut p? skjermen?

    int[] a = new int[20];
    a[0] = 100;
    a[1] = a[0] * 2;
    System.out.println(a[1]);
    a[0]++;
    System.out.println(a[0]);
    System.out.println(a.length);
    

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

    Publisert 29. aug. 2013 09:29 - Sist endret 6. sep. 2013 15:27