De keuzestructuur Versie DD
Tot nu toe Programma in rechte lijn = sequentie of opeenvolging
Nieuw Vertakking in parcours = selectie of keuzestructuur
Controlestructuren Opeenvolging = sequentie Keuze = selectie Herhaling = iteratie Via controlestructuren kan je de volgorde beïnvloeden waarmee instructies worden uitgevoerd.
De selectie of keuzestructuur De enkelvoudige keuze De tweevoudige keuze De trapsgewijze meervoudige keuze (ElseIf) De geneste tweevoudige keuze De meervoudige keuze (Select Case)
Eenzijdige keuze: NS-diagram Ja Voorwaarde Opdracht 1 Opdracht 2 Opdracht n Nee IF <voorwaarde> THEN <opdracht 1> <opdracht 2> <opdracht n> ENDIF Insprong alleen omwille van leesbaarheid!
Voorwaarden = Booleaanse expressie = Uitdrukking (formule) die als resultaat een Booleaanse waarde (True/False) oplevert. Meestal opgebouwd als een vergelijking tussen twee waarden m.b.v. relationele operatoren.
Relationele operatoren (vergelijkingsoperatoren) Operator Betekenis Voorbeeld < kleiner dan If A < 50 Then > groter dan If C > 1000 Then <= kleiner of gelijk If X <= Y Then >= groter of gelijk If Aantal >= 10 Then = gelijk aan If Antwoord = ja Then <> verschillend van If Invoer <> Keuze Then
Voorbeelden van voorwaarden If AantalPunten < 10 Then If x = y Then If antwoord = "ja" Then If txtnaam.text <> "" Then
Voorbeeld In bioskoop Petromolis kost een kaartje 5,00 EUR. Vanaf 5 kaartjes krijg je 5 % korting. Laat aantal kaartjes invoeren en druk de prijs af. (Gebruik constanten waar aangewezen.)
Ook mogelijk: TeBetalen = TeBetalen - (TeBetalen * Kortingspercentage)
Tweezijdige keuze: NS-diagram Ja Voorwaarde Opdracht A1 Opdracht B1 Opdracht A2 Opdracht B2 Opdracht An Opdracht Bn Nee IF <voorwaarde> THEN <opdracht A1> <opdracht A2> <opdracht An> ELSE <opdracht B1> <opdracht B2> <opdracht Bn> ENDIF ELSE altijd op aparte regel!!!
Voorbeeld Laat twee getallen invoeren en bereken het verschil: het kleinste getal moet altijd van het grootste afgetrokken worden.
Complexe voorwaarden Twee of meer voorwaarden kunnen gecombineerd worden tot een complexe voorwaarde m.b.v. logische operatoren.
Logische operatoren Operator Betekenis Voorbeeld AND Het resultaat is Waar als beide voorwaarden Waar opleveren. If (Naam = Jan ) AND (aantal >= 50) Then OR Het resultaat is Waar als minstens één van beide Waar oplevert. If (Aantal < 10) OR (Aantal > 2000) Then XOR Het resultaat is waar als één en slechts één van beide voorwaarden Waar oplevert. If (A < 5) XOR (B < 5) Then NOT Keert de waarheidswaarde van een Booleaanse uitdrukking om. If Not ( (A=5) OR (A= 10) ) Then = uitdrukking die True of False oplevert
Opgepast met AND en OR Als je voorwaarden verbindt met AND/OR moeten aan weerzijden van AND/OR een volledige vergelijking staan! Fout : If a < 5 or > 10 then Juist: If a < 5 or a > 10 then Suggestie: werk met haakjes: If (a < 5) or (a > 10) then
AANVULLING: ANDERE MOGELIJKHEDEN
TRAPSGEWIJS MEERVOUDIGE KEUZE
Trapsgewijs meervoudige keuze: NS-diagram Ja Voorwaarde Nee Ja Voorwaarde Nee Ja Voorwaarde Nee
Trapsgewijs meervoudige keuze: syntax If <voorwaarde1> Then <opdracht A1> <opdracht A2> <opdracht An> ElseIf <voorwaarde2> Then <opdracht B1> <opdracht B2> <opdracht Bn> ElseIf <voorwaarde3> Then <opdracht C1> <opdracht C2> <opdracht Cn> Else <opdracht D1> <opdracht D2> <opdracht Dn> ENDIF
GENESTE KEUZE
Geneste keuze De gehele structuur tussen If en End If geldt als één opdracht. Overal waar één opdracht kan staan, kan dus ook een keuzestructuur staan.
Geneste keuze: voorbeeld 1 Ja Voorwaarde Nee Ja Voorwaarde Nee Ja Voorwaarde Nee
IF <voorwaarde1> THEN IF <voorwaarde2> THEN <opdracht A1> <opdracht A2> <opdracht An> ELSE <opdracht B1> <opdracht B2> <opdracht Bn> ENDIF ELSE IF <voorwaarde3> THEN <opdracht C1> <opdracht C2> <opdracht Cn> ELSE <opdracht D1> <opdracht D2> <opdracht Dn> ENDIF ENDIF Geneste keuze: voorbeeld 1
Geneste keuzes: voorbeeld 2 Ja Voorwaarde Nee Opdracht 1 Ja Voorwaarde Nee Opdracht 2 Opdracht 3 Opdracht 4
Geneste keuze: voorbeeld 2 IF <voorwaarde1> THEN <opdracht A1> <opdracht A2> <opdracht An> ELSE IF <voorwaarde2> THEN <opdracht C1> <opdracht C2> <opdracht Cn> ELSE <opdracht D1> <opdracht D2> <opdracht Dn> ENDIF ENDIF
MEERVOUDIGE KEUZE MET SELECT CASE
Meervoudige keuze met Select Case dagnummer =.. Select Case dagnummer Case 1 dagnaam = maandag Case 2 dagnaam = dinsdag Case 7 dagnaam = zondag Case Else dagnaam = onjuist nummer Deze structuur alleen gebruiken als de keuze afhankelijk is van één waarde. Na elke 'Case' komt telkens een van de mogelijke waarden van de uitdrukking bovenaan. End Select
Meervoudige keuze met Select Case Select Case <testwaarde> Case <voorwaarde 1> <opdrachtenreeks 1> Case <voorwaarde 2> <opdrachtenreeks 2> Case <voorwaarde 3> <opdrachtenreeks 3> Case Else End Select <opdrachtenreeks else>
Select case: mogelijke voorwaarden Voorbeeld Case 400 Case 300, 400, 500 Case 10 to 25 Case Is >= 99 Case 5, 7, 9, 13 to 17, Is > 51 Verklaring Test op één waarde. Test op meerdere waarden. (, = OF) Test tussen grenzen (inclusief!). Test met vergelijkingsoperator. ('Is' wordt automatisch ingevoegd) Combinatie van voorgaande. (, = OF)
Samenvatting IF <voorwaarde> THEN <opdracht 1> <opdracht 2> <opdracht n> ENDIF IF <voorwaarde> THEN <opdracht A1> <opdracht A2> <opdracht An> ELSE <opdracht B1> <opdracht B2> <opdracht Bn> ENDIF If <voorwaarde1> Then <opdracht A1> <opdracht A2> <opdracht An> ElseIf <voorwaarde2> Then <opdracht B1> <opdracht B2> <opdracht Bn> ElseIf <voorwaarde3> Then <opdracht C1> <opdracht C2> <opdracht Cn> Else <opdracht D1> <opdracht D2> <opdracht Dn> ENDIF Select Case <testwaarde> End Select Case <voorwaarde 1> <opdrachten 1> Case <voorwaarde 2> <opdrachten 2> Case <voorwaarde 3> <opdrachten 3> Case Else <opdrachten else>