Oplossing: oefenzitting 2 Deze oefenzitting behandelt herhalingsopdrachten

Vergelijkbare documenten
Voorbeeldtentamen Inleiding programmeren (IN1608WI), Oktober 2003, , Technische Universiteit Delft, Faculteit EWI, Afdeling 2.

SPOJ oplossingen Gilles Callebaut 7 augustus 2015

Oefeningen Java Oplossingen

Java Les 3 Theorie Herhaal structuren

Overerving & Polymorfisme

Voortgezet Prog. voor KI

Programmeren in Java les 3

REEKS I. Zaterdag 6 november 2010, 9u

Universiteit van Amsterdam FNWI. Voorbeeld van tussentoets Inleiding programmeren

Objectgericht programmeren 1.

Kwis (3) class X { public void a() { System.out.println("x"); public static void main(string[] args) { X x = new X();

Een topprogrammeur in het OO programmeren is Graig Larman. Hij bedacht de volgende zin:

Ingebouwde klassen & methodes

Recursie. public static int faculteit( int n ){ // Deze functie berekent n! // pre: n = N en n >= 0 // post: faculteit = N!

voorwaardelijke en selectie opdrachten

Tentamen Informatica (8C010), 16 augustus 2002, u. Het tentamen bestaat uit 6 opgaven verdeeld over 4 pagina s.

Vakgroep CW KAHO Sint-Lieven

Lessen Java: Reeks pag. 1

TEST INFORMATICA 1STE BACHELOR IN DE INGENIEURSWETENSCHAPPEN - ACADEMIEJAAR

Modelleren en Programmeren

OPDRACHT Opdracht 2.1 Beschrijf in eigen woorden wat het bovenstaande PSD doet.

APPLICATIEBOUW 3E COLLEGE: OBJECT GEORIËNTEERD PROGRAMMEREN, METHODEN, PARAMETERS, SCOPE VAN VARIABELEN. Onderdeel van SmartProducts

Lessen Java: Reeks 4. David Blinder Jan G. Cornelis

Modelleren en Programmeren

NAAM: Programmeren 1 Examen 29/08/2012

REEKS II. Zaterdag 6 november 2010, 11u


Modelleren en Programmeren

Uitwerking tentamen Analyse van Algoritmen, 29 januari

HOOFDSTUK 3. Imperatief programmeren. 3.1 Stapsgewijs programmeren. 3.2 If Then Else. Module 4 Programmeren

voegtoe: eerst methode bevat gebruiken, alleen toevoegen als bevat() false is

Tentamen Imperatief en Object-georiënteerd programmeren in Java voor CKI

Programmeren (1) Examen NAAM:

Wiskundige Analyse I. Hoofdstuk 1. Vraag 1.1 Het beginvoorwaardenprobleem. x 2 y + xy + x 2 y = 0, y(0+) = 1, y (0+) = 0. bezit een unieke oplossing.

Modelleren en Programmeren

Tentamen Inleiding Programmeren (IN1608WI), duur van de toets 2 uur Technische Universiteit Delft, Faculteit EWI, Afdeling 2.

10. Controleopdrachten

Java spiekbrief. Commentaar. Definitie van een methode. Types. Variabelendeclaratie. Definitie van een klasse. Namen. Definitie van een veld

Programmeren 1 20 januari 2012 Prof. T. Schrijvers

Modelleren en Programmeren

Programmeermethoden NA. Week 5: Functies (vervolg)

Tentamen Objectgeorienteerd Programmeren TI februari Afdeling ST Faculteit EWI TU Delft

Objectgericht programmeren 1.

Informatica. Leren programmeren met JAVA en NetBeans. Over JAVA en Rapid Application Development met NetBeans. Bert Van den Abbeele

Muziek. Muziek. Analoog rekenen. Hoofdstuk 1: Van analoog naar digitaal. Analoog. Digitaal. Analoog. Gebruik makend van fysische grootheden Cf Babbage

Tentamen Objectgeorienteerd Programmeren IN1205 Voorbeeld

Controle structuren. Keuze. Herhaling. Het if statement. even1.c : testen of getal even of oneven is. statement1 statement2

2.1 Bewerkingen [1] Video Geschiedenis van het rekenen ( 15 x 3 = 45

Tentamen Programmeren in C (EE1400)

Java spiekbrief. Commentaar. Definitie van een methode. Types. Variabelendeclaratie. Definitie van een klasse. Namen. Definitie van een veld

Programmeren met Arduino-software

Programmeren 1 23 januari 2013 Prof. T. Schrijvers

Java Programma structuur

public boolean equaldates() post: returns true iff there if the list contains at least two BirthDay objects with the same daynumber

Modelleren en Programmeren

Aanvullende toets Gameprogrammeren (INFOB1GP) Woensdag 24 december 2014, uur

Beginselen van programmeren Practicum 1 (Doolhof) : Oplossing

algoritmiek - antwoorden

Programmeermethoden NA. Week 5: Functies (vervolg)

Algoritmen en programmeren: deel 2 - basis

Veel succes! 1. Deze opgave bestaat uit een aantal vragen. Houd het antwoord kort: één of twee zinnen per onderdeel kan al genoeg zijn.

INFORMATICA 1STE BACHELOR IN DE INGENIEURSWETENSCAPPEN

Variabelen en statements in ActionScript

SEQUENTIE-STRUCTUUR. Oefening: Dichtheid

Tijd is geen goede maatstaf, want is afhankelijk van computer waarop algoritme wordt gedraaid.

2.1 Bewerkingen [1] Video Geschiedenis van het rekenen ( 15 x 3 = 45

Modelleren en Programmeren

IMP Uitwerking week 13

Tentamen Object Georiënteerd Programmeren TI oktober 2014, Afdeling SCT, Faculteit EWI, TU Delft

Tentamen in2705 Software Engineering

Zelftest Programmeren in Java

import java.io.*; één klasse public class Hallo { public static void main (String[] a) ...met één functie System.out.println("Hallo!

Samenvatting programmeren I

Tentamen Imperatief Programmeren

public Paneel() { knop = new JButton( Klik ); knop.addactionlistener( new KnopHandler() ); tekstvak = new JTextField(10); add(knop); add(tekstvak);

Deeltentamen Grammatica s en ontleden 22 december 2005

Modelleren en Programmeren

Hogeschool voor Techniek en Logistiek

Eerste deeltentamen Gameprogrammeren Vrijdag 25 september 2015, uur

Abstracte klassen & Interfaces

Als een PSD selecties bevat, deelt de lijn van het programma zich op met de verschillende antwoorden op het vraagstuk.

Python. Informatica. Renske Smetsers

Voorbeeld: Simulatie van bewegende deeltjes

Hoofdstuk 7: Werken met arrays

Veel succes! 1. Deze opgave bestaat uit een aantal vragen. Houd het antwoord kort: één of twee zinnen per onderdeel kan al genoeg zijn.

Datatypes Een datatype is de sort van van een waarde van een variabele, veel gebruikte datatypes zijn: String, int, Bool, char en double.

17 Operaties op bits Bitoperatoren en bitexpressies


Informatica. Deel II & III: les 5. Basis- & slimme algoritmen. Jan Lemeire Informatica deel II & III februari mei Parallel Systems: Introduction

Vereiste kennis. 1 Java-editor. 2 Het compileren van een programma

Sima. Programmeren. 2e graad

Verslag Opdracht 4: Magische Vierkanten

Informatica 2e semester

Elfde college algoritmiek. 18 mei Algoritme van Dijkstra, Heap, Heapify & Heapsort

Computervaardigheden. Universiteit Antwerpen. Computervaardigheden en Programmatie. Grafieken en Rapporten 1. Inhoud. Wat is scripting?

Een korte samenvatting van enkele FORTRAN opdrachten

Het programma ELGAMAL

Design principes.

Modelleren en Programmeren

Transcriptie:

Oplossing: oefenzitting 2 Deze oefenzitting behandelt herhalingsopdrachten BVP 2006-2007 1. Opwarmer a) 10 i= 0 i *( i + 1) = 440 b) int som = 0; for (int i = 5; i <= 50; i = i + 5) { som = som + i; c) double som = 0; int i =1; while (i <= 100) { som = som + (1.0/i); i++; Volgende som wordt berekend: 1 + 1/2 + 1/3 + 1/4 + + 1/100 Als je het resultaat vergelijkt met de uitkomst van de tweede lus, 1/100 + 1/99 + + ½ + 1 dan merk je een klein verschil. Dat komt omdat getallen van het type double en float afgerond worden op een nauwkeurigheid van respectievelijk 7 en 15 cijfers. Hoewel de twee sommen in theorie hetzelfde resultaat geven, is er in de praktijk een klein verschil omdat het totaal van de afrondingsfout voor beide sommen verschillend is. 2. Geordende getallen? public class GeordendeGetallen { System.out.println("Geef het eerste getal."); int huidig = scan.nextint(); int vorig = huidig-1; int vorigvorig = vorig-1; boolean is_geordend = true; while (huidig!= 0 vorig!= 0) { if (vorig < vorigvorig) is_geordend = false; vorigvorig=vorig; vorig = huidig; System.out.println("Geef het volgende getal."); huidig = scan.nextint(); if( is_geordend) { System.out.println("De getallen zijn geordend."); else { System.out.println("De getallen zijn niet geordend."); 1

Alternatieve oplossing: int getal = scan.nextint(); int voriggetal; boolean geordend = true, nietgeordendtenzijvolgendeooknul = false; do { voriggetal = getal; getal = scan.nextint(); if (nietgeordendtenzijvolgendeooknul) geordend &= (getal == 0); if (getal < voriggetal) { if (getal == 0) nietgeordendtenzijvolgendeooknul = true; else geordend = false; while (getal!= 0 voriggetal!= 0); System.out.print("De rij was "); if (!geordend) System.out.print("niet "); System.out.println("geordend"); 3. Priem class Priem { public static void main(string args[]) { System.out.println("Geef een positief geheel getal."); int getal = scan.nextint(); int deler = 2; boolean ispriem = true; while (ispriem && deler * deler <= getal) { if (getal % deler == 0) { ispriem = false; deler++; if (ispriem) System.out.println(getal + " is een priemgetal."); else System.out.println(getal + " is geen priemgetal."); 2

4. Benadering door reeksontwikkeling class Reeksontwikkeling { final double EPSILON = 1.0e-7; double bgtg, x, term; int n = 1; System.out.println("We berekenen bgtg(x) d.m.v. een reeksontwikkeling:"); System.out.print("\tGeef een waarde voor x : "); x = scan.nextdouble(); term = x; bgtg = x; do{ n += 2; term = - term * x * x ; bgtg += term/n; System.out.println("n = " + n + " bgtg = " + bgtg); while (Math.abs(term/n) > EPSILON); System.out.println("\nEr zijn " + n + " iteraties uitgevoerd."); System.out.println("Het resultaat is bgtg("+ x +") = " + bgtg); System.out.println("De juiste bgtn waarde is " + Math.atan(x)); 5. Schrijf piramide public class Piramide { System.out.println("Geef de hoogte van de piramide."); int hoogte = scan.nextint(); for (int i = 0; i < hoogte; i++) { for (int j = 0; j < (hoogte - i); j++) { System.out.print(" "); for (int j = 0; j < (i * 2 + 1); j++) { System.out.print("# "); 3

6. Verwerking studentenresultaten class StudentenResultaten { int n = 0; int meer70 = 0; int minder50 = 0; int tekorten2 = 0; System.out.print("Wil u nog resultaten invoeren? [ja/nee] "); while (scan.next().equalsignorecase("ja")) { n++; System.out.println("Geef de resultaten student " + n); int tekorten= 0; int som = 0; for (int i = 0; i < 10; i++) { int resultaat = scan.nextint(); som += resultaat; if (resultaat <10) tekorten++; System.out.println("Som :" + som); int percentage = som / 2; System.out.println("Percentage: " + percentage); if (percentage > 70) meer70++; if (percentage < 50) minder50++; if (tekorten > 2) tekorten2++; System.out.print("Wil u nog resultaten invoeren? [ja/nee] "); System.out.println(meer70+" student(en) hebben meer dan 70%"); System.out.println(minder50+" student(en) hebben minder dan 50%"); System.out.println(tekorten2+" student(en) hebben meer dan 2 tekorten"); 7. Speelkaartcombinaties public class EenenTwintig { for (int klaveren=1;klaveren<=13;klaveren++) for (int schoppen=1;schoppen<=13;schoppen++) for (int ruiten=1;ruiten<=13;ruiten++) System.out.println("Het aantal combinaties is "+aantal); De binnenste if-opdracht wordt 13 4 = 28561 keer uitgevoerd. We kunnen dat aantal verminderen door de voorwaarde in de binnenste lussen strenger te maken. Bijvoorbeeld, als harten+klaveren>19 dan kunnen we hoe dan ook geen combinatie meer vinden. We krijgen dan het volgende programma: for (int klaveren=1;klaveren<=13&&klaveren+harten<=19;klaveren++) for (int schoppen=1;schoppen<=13&&klaveren+harten+schoppen<=20;schoppen++) 4

for (int ruiten=1;ruiten<=13&&klaveren+harten+schoppen+ruiten<=21;ruiten++) Wat je zou kunnen herschrijven als: for (int klaveren=1;klaveren<=math.min(13,19-harten);klaveren++) for (int schoppen=1;schoppen<=math.min(13,20-klaveren-harten);schoppen++) for (int ruiten=1;ruiten<=math.min(13,21-klaveren-harten-schoppen);ruiten++) Hier wordt de binnenste opdracht 5705 keer uitgevoerd. Voor elke keer dat de binnenste lus doorlopen wordt, zal de if-opdracht hoogstens één keer slagen. Daarom kunnen we het programma nog verder vereenvoudigen: for (int klaveren=1;klaveren<=math.min(13,19-harten);klaveren++) for (int schoppen=1;schoppen<=math.min(13,20-klaveren-harten);schoppen++) { int ruiten=21-klaveren-harten-schoppen; if (ruiten>=1&&ruiten<=13) aantal++; Hier wordt de binnenste opdracht slechts 1035 keer uitgevoerd. 5