Leren Programmeren met Visual Basic 6.0 Les 3+4 Hoofdstuk 4 : De Selectie Visual Basic 6.0 1 Basisstructuren (herhaling) Sequentie (HK2) : Alle opdrachten gewoon na mekaar uitvoeren. Hier worden geen keuzes (selecties) gemaakt. Selectie : A.d.v. voorwaarden selecteren welke opdrachten uitgevoerd moeten worden. Enkelvoudige selectie (HK4) : IF THEN ELSE - ENDIF Meervoudige selectie (HK7) : SELECT - CASE - SWITCH Iteratie (herhaling) : een aantal opdrachten herhalen, die start- of stopvoorwaarden hebben. Met teller (HK5): FOR-NEXT Zolang voorwaarden voldaan (HK6): DO WHILE / LOOP DO LOOP / WHILE Totdat voorwaarden voldaan (HK6): DO UNTIL / LOOP DO LOOP / UNTIL Visual Basic 6.0 2
Hoofdstuk 4 : De Selectie H4VB1 Frame (groepsvak) : franaam Optionbuttons: optnaam Een winkelier krijgt 15% korting en een particulier geen korting. Visual Basic 6.0 3 Hoofdstuk 4 : De Selectie Gewone of enkelvoudige selectie : IF-statement If condition Then statements Else elsestatements End If Logische uitdrukking of condition = True / False (Null) Afhankelijk van het resultaat van een bepaalde selectievoorwaarde worden andere statements / opdrachten uitgevoerd. Visual Basic 6.0 4
Hoofdstuk 4 : H4VB1 If optwinkelier.value = True Then intkortingspercentage = 15 Else intkortingspercentage = 0 End If Visual Basic 6.0 5 Hoofdstuk 4 : Logische uitdrukkingen (Conditions) relationele operatoren: = gelijk aan <> niet gelijk aan (verschillend van) < kleiner dan > groter dan <= kleiner of gelijk aan >= groter of gelijk aan Like gelijkheid op basis van een patroon (zie vb.) Is gelijkheid van objecten logische operatoren: AND OR, XOR NOT Visual Basic 6.0 6
Hoofdstuk 4 : Logische uitdrukkingen (Conditions) voorbeelden Stel A=3, B=5 en C = 10 De condition (A <= B) AND (C <> 10) heeft de waarde False "abbba" Like "a*a" heeft de waarde True "F" Like "[A-Z]" heeft de waarde True "a2a" Like "a#a" heeft de waarde True "BAT123khg" Like "B?T* " heeft de waarde True? Any single character * Zero or more characters # Any single digit (0 9). [charlist] Any single character in charlist. Visual Basic 6.0 7 Hoofdstuk 4 : De Selectie Meerdere selecties : If curtotaal < 500 Then curkortingsperc = 10 Else If curtotaal < 1000 Then curkortingsperc = 15 Else curkortingsperc = 20 End If End If Hier krijgt curkortingsperc de waarde 10 indien het totaal kleiner is dan 500 15 vanaf een totaal van 500 en tot de waarde 1000 20 vanaf een totaal van 1000 Visual Basic 6.0 8
Hoofdstuk 4 : De Selectie Meerdere selecties : If curtotaal < 500 Then curkortingsperc = 10 ElseIf curtotaal < 1000 Then curkortingsperc = 15 Else curkortingsperc = 20 End If Hier slecht 1 maal End If Visual Basic 6.0 9 Hoofdstuk 4 : Sneltoets B.v. knop CmdSluiten : geef Caption de waarde &Sluiten De ampersand (&) zorgt dat het teken erna wordt onderlijnd. Je kan nu i.p.v. op de knop Sluiten te klikken ook de toetsencominatie Alt+S gebruiken (tijdens de uitvoering van je programma) Visual Basic 6.0 10
Hoofdstuk 4 : Round() - p98 Round(expression [,aantalcijfersnadekomma] ) Afronden naar het dichtstbijzijnde even getal Round(3.35,1) 3.4 Round(3.45,1) 3.4!!! Round(3.5,0) 4 Round(3.5) 4 Round(3.123,2) 3.12 Round(-2.456,2) -2.46 Enkel steeds juist bij Decimal-type (14 byte) Omgerekend in vlottende komma (Single = 4 byte) Visual Basic 6.0 11 Hoofdstuk 4 : H4VB1 Hoe Beginnen? 1. Ontwerp formulier 2. Inlezen gegevens Eenheidsprijs Aantal 3. Korting JA/NEEN? (Winkelier/Particulier) Toekenning intkortingspercentage 4. Berekening 5. Resultaten weergeven op het scherm 6. Declaraties controleren Declaratie van alle variabelen!!! Visual Basic 6.0 12
Hoofdstuk 4 : H4VB1 Hoe Beginnen? Stap 1: Ontwerp formulier : Slepen van objecten (knoppen, tekstvelden, ) Logische naamgeving volgens afspraken bv. cmdbereken, txtaantal, Visual Basic 6.0 13 Hoofdstuk 4 : H4VB1 Hoe Beginnen? Stap 2: Inlezen gegevens Eenheidsprijs Aantal cureenheidsprijs = CCur(txtEenheidsprijs.Text) intaantal = CInt(txtAantal.Text) Visual Basic 6.0 14
Hoofdstuk 4 : H4VB1 Hoe Beginnen? Stap 3: Korting JA/NEEN? If optwinkelier.value = True Then intkortingspercentage = 15 Else intkortingspercentage = 0 End If Visual Basic 6.0 15 Hoofdstuk 4 : H4VB1 Hoe Beginnen? Stap 4: Berekening (zie boek pagina 92) curkorting = Round(curTotaal * intkortingspercentage / 100, 2) curtebetalenincl = curtotaal - curkorting curbtwbedrag = Round(curTeBetalenIncl * conbtwperc / _ (100 + conbtwperc), 2) curtebetalenexcl = curtebetalenincl - curbtwbedrag Visual Basic 6.0 16
Hoofdstuk 4 : H4VB1 Hoe Beginnen? Stap 5: Resultaten weergeven op het scherm txttotaal.text = CStr(curTotaal) txtkortingspercentage.text = CStr(intKortingspercentage) txtkorting.text = CStr(curKorting) txttebetalenincl.text = CStr(curTeBetalenIncl) txttebetalenexcl.text = CStr(curTeBetalenExcl) txtbtwbedrag.text = CStr(curBTWbedrag) Visual Basic 6.0 17 Hoofdstuk 4 : Aansprekingen in de code Naam: Jos Eigenschappen Haar (waarden: blond, bruin, zwart, ) Geslacht (waarden: Man of Vrouw) Kleding (waarden: Mooi, Lelijk) Boekentas (waarden: Ja, Neen) Als ik hem een boekentas wil geven: Naam Eigenschap Waarde object Jos.Boekentas = Ja Visual Basic 6.0 18
Hoofdstuk 4 : Aansprekingen in de code Naam: txttotaal Eigenschappen Text (waarden: [de inhoud ervan]) BackColor (waarden: vbyellow, vbred, ) TabStop (waarden: True, False) Als ik de tekst wil invullen: Naam object Eigenschap Waarde txttotaal.text = 68,85 txttotaal.text = Cstr(curTotaal) Visual Basic 6.0 19 Hoofdstuk 4 : H4VB2 De gebruiker moet raden naar een getal tussen 1 en 100 - Entertoets of Evalueer klikken Standaardknop : cmdevalueer.default = TRUE -Nieuw spel : nieuw Random getal genereren -Einde : einde programma Visual Basic 6.0 20
Hoofdstuk 4 : Declaratie Een variabele kan ook buiten een procedure worden geclareerd (op t niveau van het formulier) Nodig als je een variabele in verschillende procedures nodig hebt: Private mintwillekeurig As Integer of Dim mintwillekeurig As Integer Extra prefix m in de naamgeving Visual Basic 6.0 21 Hoofdstuk 4 : Randomize en Rnd Randomize [getal] Een willekeurig getal wordt gegenereerd door een formule (generator) die gebruik maakt van een getal. De systeemtijd wordt gebruikt indien we geen getal opgeven. Rnd [(getal)] Rnd(0) het laatst gegenereerde getal Rnd krijg je t volgend getal in de rij van de willekeurige getallen Indien je Randomize niet gebruikt, genereert Rnd telkens dezelfde reeks van willekeurige getallen tussen 0 en 1 (0 inbegrepen, 1 niet inbegrepen) Visual Basic 6.0 22
Hoofdstuk 4 : Int() en Fix() Int(getal) Geeft het grootste geheel getal dat kleiner of gelijk is aan het argument. Fix(getal) Laat de getallen na de komma weg Int(3.5) 3 Fix(3.5) 3 Int(3.8) 3!! Fix(3.8) 3 Int(5) 5 Fix(5) 5 Int(-3.2) -4 Fix(-3.2) -3 Visual Basic 6.0 23 Hoofdstuk 4 : Vartype() en TypeName() Vergelijk zelf Int() en Fix() met Round() De volgende functies kan je gebruiken om het type van een variabele op te vragen: Vartype(variabelenaam) geeft een waarde terug (tabel p 105) vb. Vartype(intGetal) geeft waarde 3 terug (Integer) TypeName(varialbelenaam) geeft een string terug die het type weergeeft vb. TypeName(IntGetal) geeft Integer Visual Basic 6.0 24
Hoofdstuk 4 : Oefeningen Het raadspel uitbreiden = Oefening 4 (p110) aantal raadbeurten bijhouden en weergeven gebruik image voor handje voor hoger / lager (point05.ico) (point03.ico) imghoger imglager Zorg dat je eerst op de knop Nieuw spel moet klikken vooraleer je gaat raden. Anders is het te raden getal 0. cmdevalueer.enabled = False txtgetal.enabled = False Visual Basic 6.0 25 Oefening 2 (p109) Hoofdstuk 4 : Oefeningen Visual Basic 6.0 26