Faculteit Wiskunde en Informatica Toets Inleiding Programmeren Vrije Universiteit 24 november 1997 tijdsduur : 1:30 uur ------------------------------------------------------------------------------- Opgave 1. Gegeven zijn de declaraties: Output out = new Output(); Input in = new Input(); a) Wat is het minimale aantal herhalingen dat een for-statement kan uitvoeren? Wat is het minimale aantal herhalingen dat een do/while-statement kan uitvoeren? Wat is het minimale aantal herhalingen dat een while-statement kan uitvoeren? b) Schrijf een algoritme (een algoritme is een aantal declaraties + statements) om de getallen van -5 /tm 5, in monotoon dalende volgorde, op 1 regel, gescheiden door komma's, af te drukken. Achter het laatste getal mag geen komma staan. De regel moet worden afgesloten door een end-of-line. c) Gegeven zijn de volgende declaraties + statements: char startCharacter = in.readChar(), eindCharacter = in.readChar(); Geef een statement dat startCharacter en eindCharacter verwisseld indien de waarde van stratCharacter groter is dan de waarde van eindCharacter. Geef vervolgens een for-statement om alle characters van startCharacter tot en met eindCharacter, ieder op een aparte regel, af te drukken. Opgave 2. a) Als de volgende declaraties gegeven zijn: int x = 10; boolean b = true; geef dan van de onderstaande expressies de uitkomst 1) 5 <= x && x <= 15 2) 5 <= x || x <= 15 3) (5 <= x) && (x <= 15) 4) (5 <= x) || (x <= 15) 5) ! (Math.min(x, 1) > 0) 6) ! b || (x > 0) 7) ! b && (x < 0) 8) b = ! b 9) Math.pow(2, 3) > 4.0 10) ((int) Math.sqrt(100.0)) != x b) Gegeven zijn de declaraties: Input in = new Input(); Output out = new Output(); int getal = in.readInt(); Geef een herhalingsopdracht die, gebruik makend van een do/while-statement, herhaaldelijk de waarde de variabele getal afdrukt en daarna met 1 ophoogt, totdat de waarde van getal aan de volgende voorwaarden voldoet: - getal is groter dan 1000 of deelbaar door 5 - getal is niet groter dan 1500 c) Gegeven zijn de volgende declaraties: static final int maandag = 0, dinsdag = 1, woensdag = 2, donderdag = 3, vrijdag = 4, zaterdag = 5, zondag = 6; Input in = new Input(); Output out = new Output(); int weekdag = Math.abs(in.readInt()) % 7; Als gegeven is dat de woensdag een verlofdag is, de zaterdag en de zondag het weekeinde vormen en de resterende dagen van de week een werkdag zijn, schrijf dan een switch-statement dat de tekst "werkdag" "verlofdag of "weekeinde" afdrukt afhankelijk van de waarde van de variabele weekdag. Opgave 3. a) Geef een definitie van de scope van een variabele. b) Gegeven zijn de volgende declaraties: Output out = new Output(); int x = 5, y = 10; void verwissel(int x, int y) { int hulp; hulp = x; x = y; y = hulp; } Welke waarden worden er dan door de volgende statements afgedrukt? out.println(x); out.println(y); verwissel(x, y); out.println(x); out.println(y); c) Schrijf een methode die toetst of een positief getal perfect is. Dit is het geval als de som van de delers van dat getal gelijk is aan dit getal zelf. Voor deze opgave worden de delers van een positief geheel getal gedefinieerd als de positieve getallen waardoor het getal een geheel aantal malen deelbaar is, exclusief het getal zelf. De delers van bijvoorbeeld 30 zijn dan: 1, 2, 3, 5, 6, 10 en 15. Voorbeelden van perfecte getallen zijn 6 (delers: 1, 2 en 3) en 28 (delers: 1, 2, 4, 7 en 14). Schrijf hiertoe eerst een hulpmethode met de naam "somDelers" die, gegeven een geheel getal, de som van de delers van dit gehele uitrekent en retourneert. Waardering Opgave a b c totaal 1. 3 4 4 11 2. 4 4 4 12 3. 3 4 6 13 -- + 36 Het eindcijfer E volgt uit het puntentotaal T als volgt : E = T / 4 + 1