Les 2 Basisbouwstenen (deel 1)

27
Les 2 Basisbouwstenen (deel 1) Programmeren met Visual Basic Karl Moens

description

Les 2 Basisbouwstenen (deel 1). Programmeren met Visual Basic Karl Moens. Overzicht. Oplossing van de vorige oefening Basisbouwstenen: Procedures Sub-procedures Functions Property-procedures Tests Oefening. Oplossing van de oefening. - PowerPoint PPT Presentation

Transcript of Les 2 Basisbouwstenen (deel 1)

Page 1: Les 2 Basisbouwstenen (deel 1)

Les 2Basisbouwstenen

(deel 1)

Programmerenmet

Visual Basic

Karl Moens

Page 2: Les 2 Basisbouwstenen (deel 1)

Program

meren m

et Visula B

asic – Les 2

Overzicht

• Oplossing van de vorige oefening• Basisbouwstenen: Procedures

– Sub-procedures– Functions– Property-procedures

• Tests• Oefening

Page 3: Les 2 Basisbouwstenen (deel 1)

Program

meren m

et Visula B

asic – Les 2

Oplossing van de oefeningOpgave: de schuifbalken telkens met 1 /

1% of 10 / 10% laten wijzigen afhankelijk van de instelling “waarden” of “percentages”.

Oplossing:– de waarde van de schuifbalk moet een geheel getal zijn

en 1% van de max. waarde van de aparte kleuren is 2,55– de maximale "max" waarde van de schuifbalk is 32767;

kiezen we 25500 als maximale waarde, dan is:small change: 1 =100 1% = 255large change: 10 = 100 10% = 2550

– alle waarden voor de RGB-functie moeten dan wel door 100 gedeeld worden

Page 4: Les 2 Basisbouwstenen (deel 1)

Program

meren m

et Visula B

asic – Les 2

Oplossing van de oefening

– Programmacode:• initialisatie: sngFactor = 100

• optWaarde_Click()sngFactor = 100

hsbBlauw.SmallChange = sngFactor

hsbBlauw.LargeChange = sngFactor * 10

• optPercentage_Click()sngFactor = 255

hsbBlauw.SmallChange = sngFactor

hsbBlauw.LargeChange = sngFactor * 10

• Change-event van de schuifbalkenfrmLes1.BackColor = RGB(hsbRood.Value / 100, hsbGroen.Value

/ 100, hsbBlauw.Value / 100)

Idem voor deandere kleuren

Idem voor deandere kleuren

Page 5: Les 2 Basisbouwstenen (deel 1)

Program

meren m

et Visula B

asic – Les 2

Basisbouwstenen: procedures• Een VB-programma bestaat uit

verschillende procedures (bijv. event-procedures)

• Het gebruik van aparte procedures laat toe:– het programma op te splitsen in logische

onderdelen;– herhalende onderdelen slechts 1 keer te

coderen;

Page 6: Les 2 Basisbouwstenen (deel 1)

Program

meren m

et Visula B

asic – Les 2

Procedures

• Voordelen– eenvoudiger te debuggen:elk onderdeel omvat

slechts 1 logische eenheid– “code re-use”: procedures opnieuw gebruiken

als onderdelen van andere programma’s

• Soorten– Sub-procedures: geven geen waarde terug– Functie-procedures: geven een waarde terug– Property-procedures: om met objecten te

werken

Page 7: Les 2 Basisbouwstenen (deel 1)

Program

meren m

et Visula B

asic – Les 2

Sub-procedures

• Een sub-procedure is een blok programmacode dat wordt uitgevoerd als gevolg van een (interne of externe) event

• Syntax[Private|Public][Static]Sub procedurenaam (argumenten)

instructies

End Sub

• Private of Public?– Een Private-procedure kan enkel worden aangeroepen

vanuit procedures uit de eigen module

– Een Public-procedure kan worden aangeroepen vanuit alle andere procedures in alle andere modules

Page 8: Les 2 Basisbouwstenen (deel 1)

Program

meren m

et Visula B

asic – Les 2

Sub-procedures

Door het gebruik van "Public" procedures te beperken is er minder gevaar dat per vergissing een verkeerde procedure wordt aanroepen.

"Public"-procedures horen meestal thuis in een Standard-module en niet in een Form-module.

Gouden Regel 3:Gebruik "Public" waar nodig en

"Private" waar mogelijk

Page 9: Les 2 Basisbouwstenen (deel 1)

Program

meren m

et Visula B

asic – Les 2

Sub-procedures

• In een "Static"-procedure blijven de waarden van alle lokale variabelen (d.w.z. die binnen deze procedure zijn gedefinieerd) bewaard tussen de verschillende aanroepen door. Normaal worden alle lokale variabelen gereset bij iedere aanroep. (zie Les2A.vbp)

• Bij de aanroep van een procedure kunnen argumenten worden meegegeven (zie verder "Argumentenlijst").

• Het sub-procedureblok wordt beëindigd met "End Sub". De uitvoering van een sub-procedure kan voortijdig worden beëindigd met de "Exit Sub" instructie.

Page 10: Les 2 Basisbouwstenen (deel 1)

Program

meren m

et Visula B

asic – Les 2

Argumentenlijst• Argumenten kunnen op verschillende wijze

worden doorgegeven.[ByVal | ByRef] varnaam[( )] [As type]

• In principe worden de argumenten "By Reference" doorgegeven: de variabele in de procedure verwijst rechtstreeks naar de variabele in de aanroepende procedure en kan dus worden gewijzigd! "ByRef" is dus default en mag worden weggelaten.

• Indien "ByVal" wordt gebruikt wordt een nieuwe lokale variabele aangemaakt met als waarde de waarde van de variabele in de aanroepende procedure. (zie Les2B.vbp) "ByVal" is aan te bevelen.

• Meerdere argumenten worden van elkaar gescheiden met een komma.

Page 11: Les 2 Basisbouwstenen (deel 1)

Program

meren m

et Visula B

asic – Les 2

Argumentenlijst

• Optionele argumenten (bepaald aantal)Optional [ByVal | ByRef] varnaam[( )] [As type] [=

defaultwaarde]Geeft aan dat dit argument optioneel is. Indien dit

argument niet wordt meegegeven, wordt (indien voorzien) de defaultwaarde gebruikt.

Alle optionele argumenten moeten achteraan de argumentenlijst staan.

Kan gecombineerd worden met ByVal of ByRef.Indien het type van het optionele argument een variant is,

kan met de "IsMissing" functie worden nagegaan of dit argument is ingevuld of niet.

(zie Les2C.vbp)

Page 12: Les 2 Basisbouwstenen (deel 1)

Program

meren m

et Visula B

asic – Les 2

Argumentenlijst

• Optionele argumenten (onbepaald aantal)Optional ParamArray varname( ) [As Variant]

– Is steeds het laatste argument van de argumentenlijst

– Dit argument kan alleen een array van variants zijn en het aantal elementen van de array moet niet op voorhand worden bepaald. Het effectieve aantal elementen kan worden bepaald met de LBound (benedengrens) en UBound (bovengrens) functies.

– ByVal of ByRef kan niet worden gebruikt (het is steeds impliciet "ByRef")

Page 13: Les 2 Basisbouwstenen (deel 1)

Program

meren m

et Visula B

asic – Les 2

Functie-procedures

• Alles wat is gezegd over sub-procedures geldt ook voor functie-procedures (inclusief argumentenlijsten).

• Syntax:[Private|Public][Static]Function functienaam (argumenten)

[As type]instructies

End Function

• Een functie geeft een waarde terug en dus moet het variabeletype van een functie worden gedefinieerd (default is "Variant")

Page 14: Les 2 Basisbouwstenen (deel 1)

Program

meren m

et Visula B

asic – Les 2

Functie-procedures

• De return-waarde moet worden toegewezen aan de functienaam om deze door te geven.Private Function Optelling (intWaarde1 As Integer,

intWaarde2 As Integer) As Integer

Optelling=intWaarde1 + intWaarde2

End Function

• De functie wordt aangeroepen zoals een ingebouwde functie, d.w.z. rechts van het '=' teken.intResultaat=Optelling(50,23)

Page 15: Les 2 Basisbouwstenen (deel 1)

Program

meren m

et Visula B

asic – Les 2

Functie-procedures

• De "Exit Function" opdracht verlaat de functie voortijdig (d.w.z. voordat de "End Function" opdracht wordt bereikt.

• Indien geen waarde wordt toegekend aan de functie krijgt deze een default waarde mee:– numerieke functies het getal 0

– string functies een lege string

– variant functies de variantwaarde "Empty"

– object functies de objectwaarde "Nothing"

Page 16: Les 2 Basisbouwstenen (deel 1)

Program

meren m

et Visula B

asic – Les 2

Property-procedures

(later)

Page 17: Les 2 Basisbouwstenen (deel 1)

Program

meren m

et Visula B

asic – Les 2

Tests

• "Choose"-testfunctie– Syntax

Choose(index, keuze-1[, keuze -2, ... [, keuze -n]])

– Deze functie geeft afhankelijk van de waarde van index (1 t.e.m. n), de waarde van keuze-1, …, keuze-n terug.

Page 18: Les 2 Basisbouwstenen (deel 1)

Program

meren m

et Visula B

asic – Les 2

Tests• Voorwaarden

In een test-voorwaarde worden twee expressies met elkaar vergeleken d.m.v. de volgende operatoren

> groter dan >= groter dan of gelijk aan

< kleiner dan <= kleiner dan of gelijk aan

= gelijk aan <> niet gelijk aan

Like gelijkt op een "patroon"

Het patroon is een string met karakters en "wildcards":? één willekeurig karakter

* onbepaald aantal willekeurige karakters

# één cijfer

[karakterlijst] één karakter uit deze lijst

[!karakterlijst] één karakter niet in deze lijst

Page 19: Les 2 Basisbouwstenen (deel 1)

Program

meren m

et Visula B

asic – Les 2

Tests

Als de vergelijking juist is, krijgt de voorwaarde de waarde "True"; anders is de voorwaarde "False"

Page 20: Les 2 Basisbouwstenen (deel 1)

Program

meren m

et Visula B

asic – Les 2

Tests

• "Switch"-testfunctie– Syntax

Switch(expressie-1, waarde-1[, expressie-2, waarde-2 … [, expressie-n, waarde-n]])

– Alle expessies worden ge-evalueerd en de overeenstemmende waarde van de eerste expressie die "True" als resultaat heeft, wordt door deze functie teruggegeven.

– Voorbeeld:Taal = Switch(Stad = "London", "Engels", Stad

= "Roma", "Italiaans", Stad = "Paris", "Frans")

Page 21: Les 2 Basisbouwstenen (deel 1)

Program

meren m

et Visula B

asic – Les 2

Tests

• "IIf"-testfunctie– Syntax

IIf(expressie, true-deel, false-deel)

– Deze functie evalueert de expressie: als de expressie "True" is wordt het "true-deel teruggegeven, zoniet wordt het "false-deel" teruggegeven.

Page 22: Les 2 Basisbouwstenen (deel 1)

Program

meren m

et Visula B

asic – Les 2

Tests• "If … then … else"-test

– SyntaxIf voorwaarde1 Then

[instructieblok-1][ElseIf voorwaarde2 Then[instructieblok -2]] ...[Else[instructieblok -n]]

End If

– De verschillende voorwaarden zullen achtereenvolgens worden getest, tot als er een "True" is: het daaropvolgende instructieblok wordt uitgevoerd en het "If"-blok wordt dan verlaten.

Page 23: Les 2 Basisbouwstenen (deel 1)

Program

meren m

et Visula B

asic – Les 2

Tests

– Indien geen enkele voorwaarde "True" is wordt het instructieblok na de "Else" uitgevoerd.

Page 24: Les 2 Basisbouwstenen (deel 1)

Program

meren m

et Visula B

asic – Les 2

Tests• "Select…Case"-test

– SyntaxSelect Case testexpressieCase expressielijst-1

instructies[Case expressielijst-2

instructies…Case expressielijst-n

instructies][Case Else

instructies]End Select

Page 25: Les 2 Basisbouwstenen (deel 1)

Program

meren m

et Visula B

asic – Les 2

Tests

– De expressielijsten worden achtereenvolgens vergeleken met de testexpressie. Telkens het resultaat "True" is worden de daaropvolgende instructies uitgevoerd.

– Indien geen enkele expressielijst "True" geeft, worden de instructies na de "Case Else" uitgevoerd.

– De expressielijst:• een lijst variabelen, getallen of strings met komma's

van elkaar gescheiden (bijv. intGetal, 0, 1, 2, 3, "ABC", "DEF")

Page 26: Les 2 Basisbouwstenen (deel 1)

Program

meren m

et Visula B

asic – Les 2

Tests

• expressie1 To expressie2

Alle waarden van expressie1 tot en met expressie2

Bijv.: Case 20 To intMaximum

• Is vergelijjkingsoperator expressie

Bijv.: Case Is > 20

– De verschillende vormen van de expressielijst mogen worden gecombineerd:

Case 1, 2, 4 To 5, Is >25

Page 27: Les 2 Basisbouwstenen (deel 1)

Program

meren m

et Visula B

asic – Les 2

Oefening

1. Eenvoudige rekenmachineVoorzie twee invoervakken en één uitvoervak,

zodanig dat de 4 hoofdbewerkingen op de waarden in de invoervakken kunnen worden toegepast en het resultaat in het uitvoervak verschijnt.

2. "RPN"-rekenmachineOntwerp een rekenmachine die volgens de RPN-

principes werkt.

zie: http://www.hpmuseum.org/rpn.htm