De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

Herhaling: For, While en Do Hoofdstuk 8. Visual Basic.NET voor studenten2 In dit hoofdstuk … In elke programmeertaal bestaat de mogelijkheid om herhalingen.

Verwante presentaties


Presentatie over: "Herhaling: For, While en Do Hoofdstuk 8. Visual Basic.NET voor studenten2 In dit hoofdstuk … In elke programmeertaal bestaat de mogelijkheid om herhalingen."— Transcript van de presentatie:

1 Herhaling: For, While en Do Hoofdstuk 8

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

3 Hoofdstuk 8 Visual Basic.NET voor studenten3 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

4 Hoofdstuk 8 Visual Basic.NET voor studenten4 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))

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

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

7 Hoofdstuk 8 Visual Basic.NET voor studenten7 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

8 Hoofdstuk 8 Visual Basic.NET voor studenten8 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?

9 Hoofdstuk 8 Visual Basic.NET voor studenten9 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!

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

11 Hoofdstuk 8 Visual Basic.NET voor studenten11 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 DisplayCounts(square, rice) 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

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

13 Hoofdstuk 8 Visual Basic.NET voor studenten13 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)

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

15 Hoofdstuk 8 Visual Basic.NET voor studenten15 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”

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

17 Hoofdstuk 8 Visual Basic.NET voor studenten17 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)

18 Hoofdstuk 8 Visual Basic.NET voor studenten18 Do … Loop Dim count As Integer TextBox1.Clear() count = 0 Do TextBox1.AppendText(CStr(count)) count = count + 1 Loop While count <= 9 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!

19 Hoofdstuk 8 Visual Basic.NET voor studenten19 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

20 Hoofdstuk 8 Visual Basic.NET voor studenten20 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) 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 Next End Sub Indentatie  leesbaarheid!

21 Hoofdstuk 8 Visual Basic.NET voor studenten21 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

22 Hoofdstuk 8 Visual Basic.NET voor studenten22 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

23 Hoofdstuk 8 Visual Basic.NET voor studenten23 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

24 Hoofdstuk 8 Visual Basic.NET voor studenten24 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


Download ppt "Herhaling: For, While en Do Hoofdstuk 8. Visual Basic.NET voor studenten2 In dit hoofdstuk … In elke programmeertaal bestaat de mogelijkheid om herhalingen."

Verwante presentaties


Ads door Google