Faculteit Wiskunde en Informatica Toets Inleiding Programmeren Vrije Universiteit 24 november 1997 tijdsduur : 1:30 uur ------------------------------------------------------------------------------- U I T W E R K I N G E N ======================= Opgave 1. a) Het minimale aantal herhalingen is bij een for-statement: 0 een while-statement: 0 een do/while-statement: 1 b) int i; for (i = 5; i >= -5; i--) { out.print(i); if (i != -5) { out.print(", "); } } out.println(); Het wordt ook goed gerekend als de herhalingsopdracht alleen de getallen van 5 t/m -4 afdrukt en het getal -5 na de herhalingsopdracht wordt afgedrukt. int i; for (i = 5; i > -5; i--) { out.print(i + ", "); } out.println(-5); Varianten m.b.v. een while- of do/while-statement worden ook goedgerekend. c) char hulp; if (startCharacter > eindCharacter) { hulp = startCharacter; startCharacter = eindCharacter; eindCharacter = startCharacter; } for (i = startCharacter; i <= eindCharacter; i++) { out.println(i); } Opgave 2. a) 1) true 2) true 3) true 4) true 5) false 6) true 7) false 8) false 9) true 10) false b) vanwege het feit dat er bij een do/while-statement een conditie gegeven wordt om door te gaan en er in de formulering van de opgave een conditie stond om te stoppen, moet de ontkenning genomen worden van de de opgave geformuleerde conditie. do { out.println(getal); getal += 1; } while (! ((getal > 1000 || getal%5 == 0) && getal <= 1500)); Oplossingen met meer haakjes zijn ook goed. De conditie kan vereenvoudigd worden met de regels van De Morgan, wat leidt tot: do { out.println(getal); getal += 1; } while (getal <= 1000 && getal%5 != 0 || getal > 1500); c) Uit de toekenning van een waarde aan weekdag die modulo 7 is, volgt dat de enige waarden die weekdag kan hebben in de range van 0 .. 6 liggen. Hierdoor kan de default gebruikt worden voor de werkdagen. switch (weekdag) { case woensdag : out.println("verlofdag); case zaterdag : case zondag : out.println("weekeinde"); default : out.println("werkdag"; } oplossingen als volgt worden ook goedgerekend: switch (weekdag) { case maandag : case dinsdag : out.println("werkdag"); case woensdag : out.println("verlofdag); case donderdag : case vrijdag : out.println("werkdag"); case zaterdag : case zondag : out.println("weekeinde"); default : out.println("Illegale waarde in weekdag"); System.exit(1); } Opgave 3. a) De scope van een variabele is het stuk van het programma waarin aan die variabele gerefereerd kan worden. (blz. 177, Deitel&Deitel) b) 5 10 5 10 c) Een hele eenvoudige oplossing om de som van alle delers te vinden is om t/m de helft van het getal alle mogelijke delers uit te testen. Voor doorgaan t/m getal-1 worden geen punten afgetrokken. int somDelers (int getal) { int resultaat = 0, i; for (i = 1: i <= getal/2; i++) { if (getal % i == 0) { resultaat += i; } } return resultaat; } boolean perfect (int getal) { return getal == somDelers(getal); }