Herhaling: For, While en Do

Slides:



Advertisements
Verwante presentaties
KINN 2010 •OOP •O Object •O Georiënteerd •P Programmeren.
Advertisements

Zelf objecten maken in VBA Ynte Jan Kuindersma, BIRD Automation Nationale Officedag 2009 EDE, 14 Oktober 2009.
 De Robot  Het Programma  Film By Martijn Hazenboom.
Gegevensstructuren: list boxen en lijsten
Van domeinklasse tot implementatie
Inleiding programmeren in C++ Life Science & Technology 19 januari Universiteit Leiden.
Objecten Hoofdstuk 6 Hoofdstuk 6 Hoofdstuk 6 1.
Inleiding Programmeren met Visual Basic Karl Moens.
VBA en VBS Een introductie.
Greenfoot Workshop Bobby - Snake.
Computervaardigheden Hoofdstuk 4 — Scripting (Let op: dit is enkel voor studenten Biologie.)
Hoofdstuk 6: Controle structuren
Les 2 Basisbouwstenen (deel 1)
Frank Stalpers en Ad Baars
Exceptions Hoofdstuk 17 Hoofdstuk 17.
Klassen schrijven Hoofdstuk 10. Visual Basic.NET voor studenten2 In dit hoofdstuk … Hoe schrijf je een klasse Constructormethodes Public methoden Variabelen.
Overerving Hoofdstuk 11 Hoofdstuk 11.
Methoden en argumenten
Visual Basic .NET voor studenten
Consoleprogramma’s Hoofdstuk 19. Visual Basic.NET voor studenten2 In dit hoofdstuk … Hoe consoletoepassingen maken In- en uitvoer bij consoleprogramma’s.
Bestanden Hoofdstuk 18 Hoofdstuk 18.
Oefeningen Hoofdstuk 3.
Visual Basic.
Hoofdstuk 9 - Grafische User Interface : Deel 1
Hoofdstuk 2 - Inleiding tot Visual Studio .NET IDE
Visual Basic.NETPag.1 Hoofdstuk 10 - Grafische User Interface : Deel 2 Inleiding Menus ListBoxes ComboBoxes Multiple Document Interface (MDI) Windows.
Hoofdstuk 4 - Procedures en arrays
, 17h30Recursie 1 Inleiding tot recursie Karel Popelier.
Presenteert:.
De sequentie De begrensde herhaling
Web Applicaties Bouwen met Visual Studio .NET
Visual Basic 2005/2008 OOP in praktijk André Obelink - MCSD, MVP Web: Web: -
Visual Basic 2010 – What’s new André Obelink
Afdrukken met Visual Basic 2008
Visual Basic For Applications De stappen De nieuwe woorden Datum invoegen Formulier Standaardteksten invoegen Naam invoegen Formulier van kleur veranderen.
KINN 2010 OOP O Object O Georiënteerd P Programmeren.
Testen Hoofdstuk 22. Visual Basic.NET voor studenten2 Inleiding Testen hebben als doel het ontdekken van bugs Het is echter onmogelijk om met testen te.
Visual Basic.NET voor studenten De VB- ontwikkelomgeving Hoofdstuk 2.
Les 6 Menu Programmeren met Visual Basic Karl Moens.
Programmeerstijl Hoofdstuk 21. Visual Basic.NET voor studenten2 Inleiding Belang van een goede programmeerstijl:  Programma’s worden door meerdere mensen.
Debuggen Hoofdstuk 9 Hoofdstuk 9.
Les 7 Multiple Document Interface Programmeren met Visual Basic Karl Moens.
Arrays Hoofdstuk 14 Hoofdstuk 14.
Inleiding tot programmeren
Objectgeoriënteerd Ontwerp
Interfaces Hoofdstuk 23 Hoofdstuk 23.
Les 4 De Muis (deel 1) Programmeren met Visual Basic Karl Moens.
Variabelen en berekeningen
Visual Basic.NETPag.1 Hoofdstuk 8 – Fout afhandeling Inleiding Structured Exception Handling Hoe fouten opvangen Geen foutafhandeling Alle fouten opvangen.
Les 3 Basisbouwstenen (deel 2) Programmeren met Visual Basic Karl Moens.
Animatie nAnimatie: “tekenfilm” programma toont automatisch veranderende beelden nGemakkelijk te programmeren met gebruik van de klasse Thread “draadje”
Hoofdstuk 6 – Objectgeoriënteerd Programmeren: Overerving
Programmeercursus O.O.P. met VISUAL BASIC.NET
Hoofdstuk 3 - Conditionele logica
Tweedimensionale arrays
Hoorcollege 1a Praktische zaken. Gameprogrammeren Doel van het vak: Games programmeren (de game loop, sprites, audio, physics, animatie…) Basisprogrammeertechnieken.
Programmeercursus O.O.P. met VISUAL BASIC.NET
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren 1 Les 2 - onderwerpen MPLAB.
T U Delft Parallel and Distributed Systems group PGS Fundamentele Informatica in345 Deel 2 College 6 Cees Witteveen.
Bewerkingen met Strings
Polymorfie Hoofdstuk 24. Visual Basic.NET voor studenten2 Inleiding Polymorfie zorgt ervoor dat een gegeven object verschillende “vormen” kan aannemen.
OOP en.NET. Objecten Is geen ‘nieuw’ mysterieus woord Overal om ons heen zien we objecten: – TV – Computer – Auto – Wasmachine – ….
Windows applicatieontwikkeling
Arjan Egges & Paul Bergervoet
Syntax van opdracht opdracht naam naam ( expressie ) ; . , expressie
Opdrachten herhalen public void tekenScherm (object o, PEA pea)
Aanroep van een methode voert opdrachten uit in de body daarvan
Small Basic Console deel 2
Small Basic Console deel 2
Software Development fundamentals
Transcript van de presentatie:

Herhaling: For, While en Do Hoofdstuk 8 Hoofdstuk 8

Visual Basic.NET voor studenten In dit hoofdstuk … In elke programmeertaal bestaat de mogelijkheid om herhalingen of lussen uit te voeren VB.NET: For, While en Do Visual Basic.NET voor studenten Hoofdstuk 8

Visual Basic.NET voor studenten For Private Sub Button1_Click( _ ByVal sender As System.Object, _ ByVal e As System.EventArgs) _ Handles Button1.Click End Sub Dim number As Integer TextBox1.Clear() For number = 1 To 10 TextBox1.AppendText( _ CStr(number) & NewLine) Next Visual Basic.NET voor studenten Hoofdstuk 8

Visual Basic.NET voor studenten For De body van de lus wordt herhaaldelijk uitgevoerd Nieuwe methoden TextBox1.Clear() TextBox1.AppendText(…) Nieuwe properties NewLine, Tab Imports Microsoft.VisualBasic.ControlChars Is ControlChars een namespace of een class? Welke andere constanten zijn nog gedefinieerd? Waarom zou je beter niet met de codes zelf werken? Demo: Gebruik de debugger om de lus te volgen Een andere (primitievere) truc MessageBox.Show(CStr(number)) Visual Basic.NET voor studenten Hoofdstuk 8

For: stroomdiagram lusvariabele = beginwaarde [lusvariabele <= limiet] Body Ophogen lusvariabele Visual Basic.NET voor studenten Hoofdstuk 8

Visual Basic.NET voor studenten For Beschouw volgend stukje code, hoeveel keer wordt de lus uitgevoerd? For number = 1 To 10 TextBox1.AppendText(CStr(number) & NewLine) number = 10 Next Visual Basic.NET voor studenten Hoofdstuk 8

Visual Basic.NET voor studenten For: conclusie Gebruik een For-lus als je op voorhand weet hoeveel keer de body moet uitgevoerd worden De “lusvariabele” (number) zou nooit mogen veranderd worden in de body Hiervoor bestaat de While lus! De “lusvariabele” mag wel gelezen / geraadpleegd worden Visual Basic.NET voor studenten Hoofdstuk 8

Visual Basic.NET voor studenten For: varianten Zoek in de Help van Visual Studio Hoe kan je het programma “1 To 10” veranderen, zodat het in stappen van 5 springt? Dus de uitvoer wordt: 0, 5, 10 Hoe kan je het programma “1 To 10” veranderen, zodat het van 10 naar 1 aftelt? Beschouw het programma “boxes”. Hoeveel keer wordt de body van de For lus uitgevoerd, als je de slider vanaf uiterst links, 7 stappen naar rechts beweegt? Visual Basic.NET voor studenten Hoofdstuk 8

Visual Basic.NET voor studenten While Een While lus kan je gebruiken om herhalingen uit te voeren waarbij de lusvoorwaarde veel vrijer te bepalen is door de programmeur Voorbeelden: Zolang als een variabele < 10, doe je … Zolang als een invoerveld niet is ingevuld, doe je … Zolang als de grootte van een bestand < 10kB, doe je … Zolang als je een woord niet hebt gevonden in een tekst, doe je … In een While lus is het aantal iteraties (herhalingen) dus niet op voorhand bepaald! Visual Basic.NET voor studenten Hoofdstuk 8

Visual Basic.NET voor studenten While: voorbeeld Per tegel verdubbelt het aantal graankorrels Op de hoeveelste tegel heb ik in totaal honderd graankorrels (of meer)? Visual Basic.NET voor studenten Hoofdstuk 8

Visual Basic.NET voor studenten While Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) _ Handles Button1.Click Dim square, rice, total As Integer square = 1 rice = 1 total = 1 DisplayCounts(square, rice) While total < 100 square = square + 1 rice = rice * 2 total = total + rice End While TextBox1.AppendText(NewLine & _ "Number of squares to make total of 100 is " & _ square) End Sub While total < 100 square = square + 1 rice = rice * 2 DisplayCounts(square, rice) total = total + rice End While Visual Basic.NET voor studenten Hoofdstuk 8

Visual Basic.NET voor studenten While Private Sub DisplayCounts(ByVal square As Integer, _ ByVal rice As Integer) TextBox1.AppendText("On square " & square & _ " are " & rice & " grains" & NewLine) End Sub Hoeveel keer wordt de body van de while lus uitgevoerd? Verander het programma, zodat het aantal rijstkorrels kan ingegeven worden door de gebruiker. Visual Basic.NET voor studenten Hoofdstuk 8

Visual Basic.NET voor studenten While Elke while lus bestaat uit de volgende componenten Initialisatie vóór de lus (total = 1) Stopvoorwaarde (total < 100) Opdrachten die de stopvoorwaarde beïnvloeden (total = total + rice) Typische fouten Te weinig iteraties (bv: count < 10 of count <= 10) Oneindige lussen (bv: vergeten count te verhogen) Visual Basic.NET voor studenten Hoofdstuk 8

Visual Basic.NET voor studenten And, Or, Not Net zoals bij de If structuur kunnen deze operatoren gebruikt worden om ingewikkelde stopcondities te maken Haakjes! Visual Basic.NET voor studenten Hoofdstuk 8

Visual Basic.NET voor studenten Do … Loop Deze herhalingsstructuur laat toe om de betekenis van de stopconditie te variëren Ofwel itereren “zolang als een voorwaarde waar is” Ofwel itereren “totdat een voorwaarde waar geworden is” Visual Basic.NET voor studenten Hoofdstuk 8

Do … Loop Deze fragmenten doen identiek hetzelfde! Dim count As Integer TextBox1.Clear() count = 0 Do While count <= 9 TextBox1.AppendText(CStr(count)) count = count + 1 Loop Deze fragmenten doen identiek hetzelfde! Dim count As Integer TextBox1.Clear() count = 0 Do Until count = 10 TextBox1.AppendText(CStr(count)) count = count + 1 Loop Visual Basic.NET voor studenten Hoofdstuk 8

Visual Basic.NET voor studenten Do … Loop Deze herhalingsstructuur laat toe om de plaats van de stopconditie te variëren Voor elke iteratie evalueren (de lus begint dus met een test) Na elke iteratie evalueren (de lus begint dus met statements) Visual Basic.NET voor studenten Hoofdstuk 8

Do … Loop Deze fragmenten doen identiek hetzelfde! Dim count As Integer TextBox1.Clear() count = 0 Do TextBox1.AppendText(CStr(count)) count = count + 1 Loop While count <= 9 Deze fragmenten doen identiek hetzelfde! Dim count As Integer TextBox1.Clear() count = 0 Do While count <= 9 TextBox1.AppendText(CStr(count)) count = count + 1 Loop Visual Basic.NET voor studenten Hoofdstuk 8

Visual Basic.NET voor studenten Bemerking Elke lus kan herschreven worden door middel van een while lus Hiervoor bestaat een formeel wiskundig bewijs. Waarom dan zoveel lus varianten? Kortere schrijfwijze, bv een For is korter dan een While Persoonlijke voorkeur Soms lijkt code duidelijker als ze met de ene of andere variant is geschreven TIP: werk zoveel mogelijk met For, vervolgens zoveel mogelijk met While en vermijd de varianten van Do … Loop Visual Basic.NET voor studenten Hoofdstuk 8

Geneste lussen Indentatie  leesbaarheid! Private Sub DrawFlats(ByVal floors As Integer, _ ByVal flats As Integer) Dim x, y As Integer Dim floor, flat As Integer Dim paper As Graphics paper = PictureBox1.CreateGraphics() paper.Clear(Color.White) Dim myPen As Pen = New Pen(Color.Black) y = 10 For floor = 0 To floors x = 10 For flat = 0 To flats paper.DrawRectangle(myPen, x, y, 10, 5) x = x + 15 Next y = y + 15 End Sub Indentatie  leesbaarheid! Visual Basic.NET voor studenten Hoofdstuk 8

Visual Basic.NET voor studenten Geneste lussen Als je dergelijke oefeningen zelf moet opstellen, denk je vaak best “bottom up” DrawOneFlat()  code om één flat te tekenen van n verdiepingen Dit is dus een simpeler probleem Herhaal de vorige methode voor het gevraagde aantal flats Als je methodes gebruikt, bevordert dit eveneens de leesbaarheid Visual Basic.NET voor studenten Hoofdstuk 8

Visual Basic.NET voor studenten Geneste lussen Private Sub DrawOneFlat(ByVal floors As Integer, _ ByVal startX As Integer, _ ByVal paper As Graphics) Dim floor As Integer Dim myPen As Pen = New Pen(Color.Black) Dim y As Integer = 10 For floor = 0 To floors paper.DrawRectangle(myPen, startX, y, 10, 5) y = y + 15 Next End Sub Visual Basic.NET voor studenten Hoofdstuk 8

Visual Basic.NET voor studenten Geneste lussen Private Sub DrawFlats(ByVal floors As Integer, _ ByVal flats As Integer) Dim x, y As Integer Dim floor, flat As Integer Dim paper As Graphics paper = PictureBox1.CreateGraphics() paper.Clear(Color.White) Dim myPen As Pen = New Pen(Color.Black) x = 10 For flat = 0 To flats DrawOneFlat(floors, x, paper) x = x + 15 Next End Sub Visual Basic.NET voor studenten Hoofdstuk 8

Combineren van controlestructuren Bestudeer het programma: “bouncing ball” Waarom verschijnt er een “spoor” van de bal? Je ziet a.h.w. zeer veel ballen … Verander dit programma, zodat je effectief één bal ziet stuiteren Hint: Timer Visual Basic.NET voor studenten Hoofdstuk 8