Java Les 3 Theorie Herhaal structuren Algemeen Een herhaal structuur een is programmeertechniek waarbij bepaalde Java instructies worden herhaald net zo lang tot een bepaalde voorwaarde is bereikt. Een praktijkvoorbeeld is dat je iemand wil bellen die zijn smartphone uit heeft staan. Je belt net zolang dat de persoon opneemt. Binnen Java zijn er drie manieren om een herhaal structuur te definiëren en wordt toegepast in de volgende situaties: Als het aantal herhalingen bekend is: for Als het aantal herhalingen onbekend is: while of do while Let er op dat je goed de acculaden telt. Het helpt als je netjes inspringt in je code. Je zal niet de eerste zijn die meer dan een uur zoekt naar een fout en dan blijkt dat je een accolade bent vergeten of dat een accolade op een verkeerde plaats staat. Binnen Java kun je een loop altijd verlaten door het z.g. break statement. Er wordt dan niet meer gecontroleerd of de voorwaarde wel of niet klopt. Mijn advies om dit zo min mogelijk te gebruiken. Het zorgt soms voor verassingen in bepaalde situaties. for Een for loop gebruikt als bekend is hoeveel keer je gaat herhalen, met andere woorden als je weet dat je max.5 keer mag gokken. De for loop is de meest populaire loop en is voor heel veel mensen het meest makkelijk toe te passen. for (int teller = 0; teller < 4 ; teller ++){ dit blok van Java statements wordt net zolang uitgevoerd tot teller de waarde 4 krijgt. De startwaarde van de loop is 0. Aan het einde wordt de is teller < 4? true is nog een rondje teller opgehoogd. En aan het begin van het blok wordt gecontroleerd of de teller kleiner is dan 4. Het blok dat wordt herhaald wordt aangegeven met acculaden. teller ++ = teller = teller + 1 while Een while en een do while loop zijn wat lastiger, vooral omdat de invulling tegen onze natuur in werkt. En blok Java statements wordt net zolang herhaald zolang de voorwaarde (= conditie) waar is. Bij een while controleer je vooraf de herhaling. int teller = -1; while (int teller!= 0){ dit blok van Java statements wordt net zolang uitgevoerd tot teller de ergens in het blok de waarde 0 krijgt. In programmeertaal, de loop wordt net zolang uitgevoerd als de expressie true is. In dit geval moet de teller wel van tevoren zijn gedefinieerd en voorzien zijn van een waarde. teller = 0-1 - H.M. van Dijk
Java Les 3 Theorie Herhaal structuren do while Een do while is vergelijkbaar met een while loop alleen vind de controle achteraf plaatst vindt. De Java statements wordt dur eerst uitgevoerd. while (){ dit blok van Java statements wordt eerste uitgevoerd en dan pas vind de controle plaats. net zolang uitgevoerd tot teller de ergens in het blok de waarde 0 krijgt. do (int teller!= 0) Let er op dat je goed de acculaden telt. Het helpt als je netjes inspringt in je code. Je zal niet de eerste zijn die meer dan een uur zoekt naar een fout en dan blijkt dat je een accolade bent vergeten of dat een accolade op een verkeerde plaats staat. In het laatste geval tekent Java de code dan tot een ander blok. break Met het break statement kun je direct uit een loop stappen. Een goede richtlijn is om hier zo min mogelijk gebruik van te maken maar er voor te zorgen dat de voorwaarde van de loop wordt veranderd. - 2 - H.M. van Dijk
Java Les 3 Opgaven Herhaal structuren Een heel belangrijk mechanisme binnen het programmeren zijn lussen of ook wel herhalingen wordt genoemd. Soms herken je automatisch dat er sprake is van een herhaling bijv. je loopt 10 rondjes hard en soms is het lastig om herhalingen te ontdekken. Je moet daar enige ervaring voor opdoen en hoe meer je oefent hoe makkelijker het gaat en des te makkelijker herken je een lus constructie. Opgave 1. Maak een Java programma die de even getallen tussen 0 en 100 bij elkaar optelt. Opgave 2. Breidt de opgave 1 uit zodat een gebruiker twee getallen invoert en vervolgens worden de oneven getallen bij elkaar opgeteld en de even getallen van elkaar afgetrokken. Beide eindresultaten moeten op het console worden afgedrukt. Opgave 3. Maak een programma waarbij een gebruiker een getal invoert. Het ingevoerde getal wordt opgeteld bij het vorige ingevoerde getal. Als de gebruiker een negatief getal invoert wordt het resultaat van de optelling weergegeven. - 3 - H.M. van Dijk
Java Les 3 Antwoorden opgaven Herhaal structuren Opgave 1 package getallen; public class Getallen { for (int getal = 0 ; getal < 100 ; getal = getal + 2){ som = som + getal; System.out.println("De som van alle even getallen is " + som); Of de omslachtige manier met een modulo berekening. package getallen; public class Getallen { for (int getal = 0 ; getal < 100 ; getal++){ if (getal % 2 == 0){ som = som + getal; System.out.println("De som van alle even getallen is " + som); - 4 - H.M. van Dijk
Java Les 3 Antwoorden opgaven Herhaal structuren Opgave 2 package getalleneninvoer; import java.util.scanner; public class GetallenEnInvoer { int verschil = 0; Scanner toetsenbord = new Scanner (System.in); System.out.println("Voer de beginwaarde in:"); int start = toetsenbord.nextint(); Invoer System.out.println("Voer de eindwaarde in:"); int einde = toetsenbord.nextint(); for (int getal = start ; getal <= einde ; getal++){ if (getal % 2 == 0){ som = som - getal; else{ verschil = verschil + getal; De loop System.out.println("De som van alle oneven getallen is " + som "); System.out.println("Het verschil van alle even getallen is " + verschil); - 5 - H.M. van Dijk
Java Les 3 Antwoorden opgaven Herhaal structuren Opgave 3 package getallenoptellen; import java.util.scanner; public class GetallenOptellen { int getal = 0; Scanner toetsenbord = new Scanner (System.in); while{ som = som + getal; System.out.println("Voer een getal in:"); getal = toetsenbord.nextint(); do ( getal < 0 ) System.out.println("De som van alle getallen is " + som "); - 6 - H.M. van Dijk
Java Les 3 Intermezzo Intermezzo De computer is in staat om zomaar een getal te generen. Dan noemen we een random generator. Ook in Java kun je willekeurige getallen genereren. Daarvoor zijn verschillende manieren. Deze manier is opgesteld vanuit hoe een random werkt. Belangrijk is dat je moet weten dat een random generator een willekeurig getal maakt tussen 0 en 0,999999 enz. (Het wordt dus nooit één). De random generator is een klasse in de package Math. Hieronder zie je een voorbeeld hoe een variabele x een waarde krijgt, welke licht tussen 0 en 0,99999999. De uitkomst van een random is altijd een double (een komma getal) double x = math.random() Om een geheel getal te maken moeten we een aantal bewerkingen uitvoeren in Java. Als voorbeeld nemen we dat er een willekeuring getal moet worden gegenereerd tussen 1 en 7. Het statement wordt dan: double x = math.random() * 7 De waarde van x ligt nu tussen 0 x 7 = 0 en 0,9999999 x 7 = 6,999999. Dat is eigenlijk 1 te weinig want 6,999999 is niet gelijk aan 7. Een computer rond in principe altijd af naar beneden. We gaan nu 1 optellen zodat we uitkomen tussen 1 en 7,99999. double x = (math.random() * 7) + 1 Een double is een komma getal en we willen een geheel getal. Daarom passen we een truckje toe wat we type casting noemen. Het statement wordt nu: int x = (int) (math.random() * 7) + 1 Je typecast door het gewenste type tussen haakjes er voor te plaatsten. Typecasting moet je zo min mogelijk toepassen tenzij het niet anders kan (zoals bij math.random(). Vaak zijn het fouten in het design =ontwerp) waardoor je moet typecasten. - 7 - H.M. van Dijk