Steeds vaker wordt programmeren in het onderwijsprogramma opgenomen. Niet zo verwonderlijk eigenlijk als je ziet dat het bedrijfsleven staat te springen naar afgestudeerden in de informatica. Veel sectoren zijn tegenwoordig in meer of mindere mate afhankelijk van informatica. Een beetje ICT-kennis en probleemoplossend vermogen heb je tegenwoordig overal wel nodig. Ook thuis kan een beetje ICT-kennis en probleemoplossend vermogen handig zijn bijvoorbeeld bij problemen met je internetverbinding of laptop thuis. Maar dat is niet de enige reden dat programmeren steeds meer aandacht krijgt. Naast dat je met programmeren je probleemoplossend vermogen verbetert, biedt programmeren je ook nieuwe mogelijkheden voor het leerproces. Informaticus, Mitch Resnick, zegt in zijn TED-talk: Let's teach kids to code het volgende: "When you learn to read and write, it opens up opportunities for you to learn so many other things. When you learn to read, you can then read to learn. And it's the same thing with coding. If you learn to code, you can code to learn."
Na het doorlopen van deze lessenserie
heb je kennis en begrip van de programmeerconcepten,
ken je de syntax van Python,
kun je Python programma's lezen en in hoofdlijnen aangeven wat ze doen,
kun je een probleem in (logische) stappen opdelen om vervolgens de stappen te coderen,
kun je vertellen waarom programmeren belangrijk is,
kun je vertellen wat de voordelen van Python zijn,
weet je wat variabelen, operatoren, data types, loops, functies en condities zijn en wanneer je ze moet gebruiken,
kun je variabelen, loops, lijsten, functies en condities aanmaken,
kun je verschillende soorten datatypen herkennen en opnoemen,
ken je het verschil tussen een variabel en een parameter,
ken je een paar standaardfuncties van Python, zoals print() en input(),
kun je commentaar in je code zetten zodat de code voor een ander makkelijk is te volgen,
kun je eenvoudige programma's schrijven in Python,
(verdieping) weet je wat Object Georiënteerd Programmeren (OOP) is,
(verdieping) kun je de voordelen van OOP opnoemen,
(verdieping) weet je wat objecten, methoden en classes zijn en
(verdieping) kun je objecten en classes aanmaken en gebruiken.
Succes met deze lessenserie.
Aniel Bhulai
Januari 2022
1. Wat is Python?
De programmeertaal Python wordt door veel mensen en bedrijven gebruikt. Het is een veelzijdige programmeertaal die steeds populairder wordt. Waarschijnlijk omdat Python makkelijk te leren is.
Python is ontwikkeld door de Nederlandse programmeur Guido van Rossum. De eerste versie van Python was ontwikkeld in 1991. Daarna zijn er meerdere versies uitgebracht.
Python is een tekstgebaseerde programmeertaal en wordt o.a. gebruikt voor webdevelopment, software development, Machine learning en artificial intelligence, Data Science, Maken van desktop GUI’s en Game development. Populaire spellen die in Python zijn geschreven zijn bijvoorbeeld Civilization, The Sims en Battlefield. Python wordt ook veel gebruikt voor data analyse, omdat Python veel libraries (voorgeprogrammeerde codes die je in je programma's kunt gebruiken) heeft om data analyse makkelijk te doen.
Zoals eerder aangegeven is Python makkelijk te leren. Je hebt hiervoor geen programmeervoorkennis nodig. In deze serie van Python lessen zullen we de basis van Python behandelen. Niet alle functionaliteiten van Python komen dus aan de orde.
1.1 Voordelen van Python
Waarom zou je nou Python leren als er al zoveel andere programmeertalen zijn? Wat is het nut ervan en de toegevoegde waarde om Python te leren? Hieronder hebben we een aantal voordelen opgesomd voor de vraag waarom je Python zou willen leren.
Efficiënt
Python is efficiënt. Naast dat Python makkelijk is te leren en te schrijven, maakt Python het ontwikkelproces sneller. Dit komt door de vele frameworks, libraries en modules die Python heeft. Zelf hoef je dus niet alles vanaf nul te bedenken.
De codes in de frameworks, libraries e.d. kun je hergebruiken om sneller te schrijven. Door het hergebruik van codes is de kans op het maken van fouten daardoor klein.
Veelzijdig
Python is een erg veelzijdige programmeertaal en werkt overal even efficiënt. Zoals al eerder aangegeven kent Python veel toepassingen waaronder ook in deep learning, procesautomatisering, het Internet of Things (IoT), data engineering en nog veel meer.
Dat Python zo veelzijdig is, komt met name door de grote hoeveelheid ondersteunde functies, methodes, libraries en frameworks. Deze ondersteunde functies hebben o.a. gemaakt dat Python een gebruikersvriendelijke programmeertaal is geworden.
Ondersteunende community
Naast de officiële documentatie van Python is er voor Python gebruikers een actieve en ondersteunde community waar je je vragen kunt stellen en om hulp kunt vragen. Daarnaast kun je allerlei cursussen, tutorials, websites en andere materialen vinden over Python op het Internet.
Grote bedrijven
Python wordt ook steeds meer in de zakelijke wereld gebruikt. Denk maar aan o.a. de dienstverleningssector, de gezondheidszorg sector, de banken en verzekeringssector en de luchtvaart sector.
Grote bedrijven die Python gebruiken zijn onder andere Google, NASA, YouTube, HP, IBM en Dropbox. Leren programmeren in Python kan dus goed zijn voor je carrière.
2. Python installeren
Voordat je Python kunt gebruiken, moet je het programma eerst downloaden en installeren op je computer. Python kun je downloaden van de officiële Python website, www.python.org. Als je Python 3 installeert, krijg je ook het gratis programma IDLE. IDLEstaat voor Integrated Development and Learning Environment en is een basis editor voor beginners waarmee je Pythoncodes kunt schrijven en bewerken (editen). Een screenshot van IDLE zie je in figuur 2-1.
In deze lessenserie gaan we de online Python editor, CodeSkulptor3, gebruiken. Hiervoor hoef je dus niets te installeren.
3. Programmeren
3.1 Denk als een computer
Om goed te leren programmeren is het belangrijk om als een computer te denken. De uit te voeren taken moeten in kleine stukjes worden opgedeeld, zodat ze makkelijk te volgen zijn en dat er geen misverstanden kan ontstaan. De opgedeelde stukken moeten eenduidig zijn en het moet onmogelijk zijn om ze verkeerd te interpreteren.
Een computerprogramma is in feite een reeks instructies geschreven in een programmeertaal (bv. Python) die een computer volgt om een taak uit te voeren. Die reeks instructies worden een algoritme genoemd. Een algoritme is dus een reeks eenvoudige instructies om een taak uit te voeren. Programmeren of coderen willen zeggen dat je een stap-voor-stapinstructie, dus een algoritme, schrijft die de computer vertelt wat hij moet doen.
Het volgende is een voorbeeld van een algoritme in pseudocode1) voor een computergestuurde lift. De lift moet nl. weten wanneer die omhoog of omlaag moet gaan en bij welke verdieping hij moet stoppen.
1. Wacht tot de liftdeuren dicht zijn
2. Wacht tot er op een knop is gedrukt
Als de gekozen verdieping hoger ligt dan de huidige
Beweeg de lift omhoog
Als de gekozen verdieping lager ligt dan de huidige
Beweeg de lift omlaag
3. Wacht tot de verdieping gelijk is aan de gekozen verdieping
4. Open de liftdeuren
Elke stap moet precies en duidelijk zijn om de lift goed en veilig te laten werken. Er mag geen mogelijkheid bestaan voor een andere interpretatie.
1) Vaak wordt er een tussenstap gebruikt om een algoritme te schrijven. Deze tussenstap wordt pseudocode genoemd. Pseudocode is een vorm van gestructureerde tekst (vaak Engels) die algoritmen definieert en die het mogelijk maakt om je te richten op de kernlogica van algoritmen voordat je met programmeren start. Het belangrijkste doel van pseudocode is om duidelijk te beschrijven wat een programma beoogd te doen. Pseudocode is niet uitvoerbaar op een computer.
3.2 Opdrachten
Opdracht 3
a) Bedenk een algoritme om een auto te starten.
b) Bereid het algoritme van opdracht 3a uit om een auto te rijden.
c) Vult het algoritme van opdracht 3b aan om een auto te stoppen.
Opdracht 4
Bedenk een algoritme om 4 pakken melk bij Albert Heijn af te rekenen bij de kassa.
4. Python quickstart
Zoals eerder aangegeven is Python een tekstgebaseerde programmeertaal. Dit betekent dat je als ontwikkelaar de Python codes in een teksteditor schrijft en die bestanden (de .py bestanden) vervolgens in de Python-interpreter plaatst om uit te voeren. Aangezien wij de online Python editor, CodeSkulptor3, gaan gebruiken kun je de code ook direct in de CodeSkulptor editor typen i.p.v. bijvoorbeeld in een teksteditor zoals bv. Wordpad of Notepad++.
4.1 Opdrachten
Typ in CodeSkulptor3 links in de editor print("Hello, World!") en klik op run. Als je het goed gedaan hebt verschijnt aan de rechterkant in het output venster het volgende:
Sla de code van opdracht 1 op door op de "Save" knop te drukken.
Download nu het bestand en open het met een teksteditor, bv. Wordpad in Windows of Notepad++. Als het goed is, zie je in het bestand print("Hello, World!") staan.
Welke extensie heeft het bestand?
Typ in het gedownloade bestand onder print("Hello, World!") print("Dit is mijn eerste Python code.")
Upload dit bestand in CodeSkulptor3 met de "Load" button en run the code. Als het goed gaat zul je het volgende in de output zien:
5. Syntax
In opdracht 3 van hoofdstuk 4.1 heb je gezien dat de extensie van een Python bestand .py is. Zorg er voor dat je je bestand altijd opslaat met de .py extensie als je Python codes in een teksteditor als Wordpad schrijft. Mocht je op een laptop werken, kun je ook de Thonny IDE (Integrated Development Environment) downloaden. Dit is een simpele editor voor Python gebruikers met o.a. syntax-highlighting (zie figuur 5-1).
5.1 inspringen
Bij veel programmeertalen wordt inspringen (Eng.: indentation) gebruikt om de leesbaarheid van de code beter te maken. Bij Python echter is inspringen belangrijk om een codeblok aan te geven. De code in figuur 5-2
zal een
Line 2: SyntaxError: bad input
foutmelding geven bij het uitvoeren ervan. Wanneer de code wordt ingesprongen zoals in figuur 5-3 zal de code goed uitgevoerd worden.
Het aantal keren dat ingesprongen wordt mag je zelf bepalen, mits je tenminste 1x inspringt en het aantal keren dat in een codeblok wordt ingesprongen steeds hetzelfde is. De code in figuur 5-4 zal een foutmelding geven omdat in regel 2 één keer is ingesprongen en in regel 3 twee keren.
5.2 Opdrachten
De volgende code geeft een foutmelding. Corrigeer deze code zodat er geen foutmelding verschijnt.
6. Commentaar
Bekijk de volgende code en vertel wat het programma doet.
Als het goed is kon je op basis van de bovenstaande code zonder het programma te draaien (runnen) al vertellen wat dit programma doet. Dat komt omdat er in het programma zgn. commentaar is opgenomen.
In Python start commentaar met een # teken. Alles wat na het # teken volgt, wordt genegeerd tijdens het runnen van het programma. Commentaar in je code is goed om de volgende redenen:
Met commentaar kun je uitleggen wat een stukje code doet.
Met commentaar kun je je code leesbaarder maken.
Met commentaar kun je fouten opsporen door stukjes code niet te laten uitvoeren.
7. Variabelen
Bekijk nogmaals de volgende code
In deze code worden het eerste getal en tweede getal opgeslagen in een zgn. variabele, getal1 en getal2. Variabelen onthouden een stukje informatie. Je kunt een variabele vergelijken met een doos, waarin data kunnen worden bewaard. Deze doos wordt gelabeld (krijgt een naam) om later de data uit de doos te halen door naar de label te verwijzen. Zo staat in de variabele getal1, het eerste getal dat de gebruiker opgeeft. In variabele getal2 staat het tweede getal opgeslagen die de gebruiker heeft opgegeven.
7.1 Opdrachten
Opdracht 1
Schrijf alle variabelen op van de bovenstaande code.
Schrijf een programma dat de lengte en breedte van een kamer vraagt aan de gebruiker en vervolgens de oppervlakte voor je uitrekent en dat op het scherm toont. Gebruik drie variabelen.
Breid het programma van opdracht 2 uit zodat het programma ook de inhoud van de kamer berekent. Laat zowel de oppervlakte als de inhoud op het scherm zien.
Hoeveel variabelen heb je bij je programma in opdracht 1c gebruikt?
Opdracht 2
Om uit te rekenen hoeveel 1 inch in centimeters is, dien je het aantal inches te vermenivuldigen met 2,54. Schrijf een programma dat het aantal inches omrekent naar het aantal centimeters.
- het programma moet aan de gebruiker het aantal inches vragen,
- het programma moet het resultaat weergeven als bv. "1 inch is 2.54 cm".
Opdracht 3
Om te zien of je een gezond gewicht hebt in verhouding tot je lengte kun je gebruik maken van de zgn. Body Mass Index, ook wel de BMI waarde genoemd. De BMI geeft een inschatting van hoe gezond je lichaamsgewicht is. Je kunt je BMI waarde zelf uitrekenen door je gewicht in kilogrammen te delen door het kwadraat van je lichaamslengte in meters. Als je bijvoorbeeld 60 kilogram weegt en je bent 1,65 meter lang, dan bereken je je BMI waarde als volgt: 60 kilo / (1,65 x 1,65 meter) = 22,1. Voor volwassenen ligt een gezond BMI tussen de 18,5 en de 25. Maar dit geldt niet voor iedereen.
Schrijf op basis van het bovenstaande een programma dat de BMI waarde uitrekent voor een willekeurig persoon.
8. Operatoren
In hoofdstuk 7 hebben jullie kennis kunnen maken met variabelen. In variabelen kunnen we data opslaan, zoals bv. getallen. Om bewerkingen op die getallen te kunnen doen, gebruiken we operatoren. Er bestaan verschillende soorten operatoren. Voorlopig beperken we ons tot de volgende operatoren:
Operator
Beschrijving
Voorbeeld
+
Optellen
x + y
-
Aftrekken
x - y
*
Vermenivuldigen
x * y
/
Delen
x / y
%
Modulo (geeft de restwaarde van een deling)
x%y
=
Een waarde toekennen
x = 9
!=
Niet gelijk aan
x != y
==
Gelijk aan
x == 9
>
Groter dan
x > y
<
Kleiner dan
x < y
>=
Groter dan of gelijk aan
x >= y
<=
Kleiner dan of gelijk aan
x <= y
8.1 Opdrachten
Schrijf een programma dat
a) aan de gebruiker twee getallen vraagt. Maak gebruik van variabelen om de getallen op te slaan,
b) de twee getallen met elkaar vermenigvuldigt. Maak gebruik van de juiste operator en bewaar het resultaat in een variabel,
c) het resultaat van de vermenigvuldiging op het scherm toont.
d) Zet commentaar in je code, zodat het duidelijk is voor een ander wat je code doet.
9. Strings
Strings in de informatica zijn een reeks tekens of karakters. In Python kun je strings weergeven met enkele quotes, 'Hello' of met dubbele quotes, "Hello".
In print("Hello World!") is Hello World! een string. Je kunt ook zgn. multiline strings maken door gebruik te maken van drie quotes.
9.1 Opdrachten
Typ de volgende code in en bekijk de output.
Schrijf de code uit opdracht 1 zodanig op zodat de output op 1 regel verschijnt.
10. Data typen
In hoofdstuk 7 hebben jullie kennis kunnen maken met variabelen. We kunnen in variabelen verschillende soorten zaken opslaan. Denk bv. aan getallen en karakters. We kunnen hele getallen in een variabel opslaan, maar ook decimale getallen. Kortom, we kunnen verschillende soorten data typen in een variabel opslaan. Met de verschillende data typen kun je verschillende dingen doen. Met getallen kun je bv. rekenen. Met karakters kun je bv. woorden en zinnen maken. Het concept data typen is belangrijk in programmeren. In Python wordt de data type ingesteld wanneer je een waarde aan een variabele toekent. In deze lessen serie zullen we ons beperken tot de volgende data typen:
Voorbeeld
Data type
x = "Hello World"
str
x = 10
int
x = 10.5
float
x = ["koffie", "thee", "water"]
list
x = ("koffie", "thee", "water")
tuple
Tabel 10-1
Je kunt echter ook zelf de data type opgeven. Dat gaat dan op de volgende manier voor bv. de string data type: x = str("Hello World")
10.1 Opdrachten
Opdracht 1
Geef in de onderstaande gevallen aan om wat voor data type het gaat en geef dit expliciet weer.
Voorbeeld: x = "Hello World". Het gaat hier om een string data type. We kunnen dit ook expliciet aan Python meegeven door x =str("Hello world") op te schrijven.
a) x = 10
b) y = 10.78
c) myList = ["appel", "peer", "banaan"]
d) T = ("Volvo", "Hyundai", "Mercedes")
e) y = "Waar ga je naar toe?"
f) z = 245.90
g) arr = ["Jan", "Karin", "Mies"]
h) x = ("Peter", "Hanna", "Pieter")
Opdacht 2
Schrijf een programma dat
- de gebruiker vraagt om een getal in te voeren,
- vervolgens de gebruiker vraagt om een tweede getal in te voeren en
- daarna het product berekent van de twee getallen.
Laat het programma het product van de twee getallen op het scherm tonen als
"Het product van 2 en 4 is 8".
11. Loops
Bij programmeren is een loop (lus) een reeks instructies die worden herhaald totdat aan een bepaalde voorwaarde is voldaan. Met een loop kun je dus aangeven dat een instructie meerdere keren moet worden uitgevoerd. De twee meest voorkomende soorten loops in Python zijn de for-loop en de while-loop.
for-loop
Met de for-loop kun je een stukje code herhalen zonder die opnieuw te hoeven in te voeren. Je kunt met de for-loop iets een bepaald aantal keren herhalen, bv. als je de namen van een klas met 25 leerlingen wilt printen. For-loops zijn handig als je weet hoe vaak een taak moet worden herhaald. In figuur 11-1 worden de cijfers 0 tot en met 9 getoond door gebruik te maken van een for-loop. Let op dat we in informatica bij 0 beginnen te tellen. De code in figuur 11-1 toont de eerste 10 cijfers, beginnend vanaf 0.
while-loop
Soms wil je dat een loop herhaald wordt totdat er iets verandert. In dat soort gevallen kun je dan het beste de while-loop gebruiken. Een while-loop is actief zolang een bepaalde voorwaarde "waar" is. Deze voorwaarde heet de loop-voorwaarde. Het resultaat (de output) van figuur 11-1 kunnen we ook bereiken door een while-loop te gebruiken. In figuur 11-2. geven we met de loop-voorwaarde i < 10 aan dat de while-loop net zolang moet door gaan totdat er niet meer aan die voorwaarde wordt voldaan.
11.1 Opdrachten
Bekijk de volgende video over loops en maak de opdrachten.
12. Condities
In het leven komen we soms situaties tegen waarin we een beslissing moeten nemen. Op basis van de genomen beslissingen bepalen we vervolgens wat we daarna gaan doen. Bij het programmeren moeten we soms ook beslissingen nemen. Op basis van deze beslissingen wordt dan het volgende blok code uitgevoerd. Het nemen van beslissingen bij programmeren doen we door middel van if-else statements. Bekijk de code in figuur 12-1.
In dit stukje code wordt "x is groter dan 10" alleen op het scherm getoond als de regel x > 10 waar is. Wanneer x niet voldoet aan de voorwaarde x > 10 wordt regel 5, de else-statement, uitgevoerd.
12.1 Opdrachten
13. Functies
Een functie is een codeblok met een specifieke taak dat wordt uitgevoerd wanneer het wordt aangeroepen. Met een functie hoef je dezelfde coderingsregel slechts eenmaal in te voeren. Functies maken codes herbruikbaar. We kunnen gegevens doorgeven aan een functie en een functie kan als resultaat gegevens als output teruggeven.
Python kent veel handige functies voor het uitvoeren van bepaalde taken. Als een functie wordt aangeroepen, haalt Python de codering voor die functie op en voert hem vervolgens uit. Als de functie is afgelopen, keert het programma terug naar de coderingsregel om het volgende commando uit te voeren.
Een paar functies in Python hebben we al gezien, nl. de print() en de input() functies.
13.1 Functies maken en aanroepen
We kunnen ook zelf functies maken en aanroepen.
In figuur 13-1 hebben we bv. een functie groet() gemaakt. Telkens wanneer deze functie wordt aangeroepen zal er Hallo! op het scherm worden getoond. Het aanmaken van een functie gebeurt met de def keyword. Na de def keyword volgt de naam van de functie gevolgd door een dubbele punt. De functie roepen we aan door de naam van de functie. In het voorbeeld is dat groet(). Aan de ()kun je zien dat we een functie aanroepen en geen variabele.
13.2 Data doorgeven aan functies
We kunnen data aan functies doorgeven.
In figuur 13-2 is een functie gemaakt die de temperatuur van graden celsius omzet naar graden fahrenheit. In de functie celsius_naar_fahrenheit(celsius)wordt een variabele celsius meegegeven. Deze variabele noemen we een parameter. Parameters zijn dus speciale variabelen die een waarde doorgeven aan een functie. Door de functie aan te roepen met een waarde wordt de code in de functie uitgevoerd.
13.3 Data terugkrijgen van functies
Functies kunnen ook data teruggeven, een zgn. retourwaarde. Hiertoe voeg je de return statement toe aan het programma gevolgd door de waarde die moet worden teruggegeven.
In figuur 13-3 wordt op regel 4 de waarde van de variabele getal teruggegeven. De input() functie in regel 2 stuurt nl. altijd een string terug, zelfs als er een getal is ingevoerd. Het getal wordt in regel 2 daarom ook als een string opgeslagen in de variabele getypt. Om van de string een getal te maken, gebruiken we in regel 3 de int data type. Die converteert de string in een getal en slaat het op in de variabele getal. Vervolgens wordt de waarde van de variabele getal door de return statement teruggegeven.
13.4 Opdrachten
14. Lijsten
De lijsten datastructuur in Python wordt gebruikt om gegevens in één set te ordenen. Lijsten zijn reeksen. Elk element van een reeks krijgt een nummer, d.w.z. het indexnummer of de positie van het element. Het eerste indexcijfer is nul, het tweede indexcijfer is één, de derde indexcijfer is twee, enzovoort. Op lijsten kunnen we bewerkingen toepassen zoals indexeren, optellen, vermenigvuldigen, e.d. In figuur 14-1 is een simpele lijst in Python te zien. Door de print() functie in combinatie met de lijst te gebruiken, kunnen we de inhoud van de lijst afdrukken.
14.1 for-loop in lijsten
Door een for-loop te gebruiken kunnen we elk element uit de lijst apart afdrukken. In figuur 14-2. is x een variabele die verwijst naar een element in de lijst.
14.2 Elementen in lijsten benaderen
Zoals eerder gezegd heeft elk element een indexnummer in de lijst. Zo heeft in figuur 14-3 het element appels het indexnummer 0, het element melk het indexnummer 1 en het element kaas het indexnummer 2. De indexnummers geven de positie van het element weer in de lijst. We kunnen daarom ook een element in de lijst benaderen door het indexnummer.
Wanneer we alleen melk willen afdrukken, kunnen we het indexnummer van het element melk gebruiken, zoals in figuur 14-3 is aangegeven.
14.3 Elementen in lijsten wijzigen
We kunnen door gebruik te maken van het indexnummer ook een element in de lijst wijzigen. Als we bv. in figuur 14-4 appels willen wijzigen in brood. Dan kan dat door in de lijst te refereren naar het indexnummer van het element. Appels heeft indexnummer 0 in de lijst. Door naar dit indexnummer te refereren en een nieuwe waarde eraan toe te kennen, wordt de waarde van het element aangepast.
14.4. Elementen toevoegen aan lijsten
We kunnen elementen aan een lijst toevoegen door gebruik te maken van de append() methode in Python. In figuur 14-5 wordt met boodschappenlijst.append("wortels")"wortels" toegevoegd aan het einde van de boodschappenlijst.
14.5 Elementen uit een lijst verwijderen
Door gebruik te maken van de remove() methode in Python kunnen we een element uit een lijst verwijderen. In figuur 14-6 wordt met boodschappenlijst.remove("kaas"), "kaas" uit de boodschappenlijst verwijderd.
14.6 Opdrachten
Bekijk de volgende video over lijsten en maak de opdrachten.
Ster-hoofdstukken en -opdrachten
De ster-hoofdstukken zijn een verdieping op de behandelde stof. De leerstof van deze hoofdstukken kunnen je ondersteunen bij de ster-opdrachten. Het wordt daarom aanbevolen om eerst deze hoofdstukken door te nemen alvorens met de ster-opdrachten aan de gang te gaan. De ster-opdrachten zijn uitdagende opdrachten, waarbij de stof iets verder gaat dan wat er al is behandeld. Bij de ster-opdrachten zul je een korte uitleg krijgen van de nieuwe leerstof met een paar links naar websites waar je meer informatie of uitleg over het onderwerp zult krijgen. In principe werk je zelfstandig aan de ster-opdrachten. Natuurlijk kun je de docent altijd om hulp vragen indien je niet uitkomt.
*15. Object Georiënteerd Programmeren
Naarmate je meer bedreven zult raken in programmeren, zul je merken dat je programma's ook groter worden; het aantal regels codes zullen toenemen. Een spel bestaat al heel gauw uit duizenden of zelfs miljoenen regels aan codes. Een programmeerstijl dat tegenwoordig vaak gebruikt wordt is het Object Georiënteerd Programmeren (Eng.: Object Oriented Programming). Dit wordt afgekort als OOP. Bij OOP wordt er gebruik gemaakt van classes (klassen), objecten en methoden als basis programmeercomponenten. Deze componenten helpen
om een groot programma te organiseren in kleine modules,
om een ingewikkeld programma te ontwerpen, en
om fouten (zgn. bugs) in programma's te vinden en op te lossen.
*15.1 Objecten
Bij OOP worden er logische objecten gemaakt. Deze objecten hebben een naam en bestaan uit eigenschappen en methoden. Eigenschappen zijn waarden (bv. hoogte, breedte, kleur) die verbonden zijn met objecten. Je zou ook kunnen zeggen dat de eigenschappen de variabelen zijn in die objecten.
In de klasse auto's kun je bv. Mercedes, Tesla en Ford hebben. Mercedes, Tesla en Ford zijn de objecten uit de klasse auto's en zijn dus de namen van de objecten. Deze objecten kunnen verschillende kleuren hebben. Dit zijn de eigenschappen van de objecten (bv. een rode Ford).
*15.2 Methoden
Naast eigenschappen bevatten objecten methoden. Methoden zijn acties of taken die een object kan uitvoeren. Ze lijken veel op eigenschappen, met als enige verschil dat methoden functies zijn die in een object zitten en geen variabelen die in een object zitten.
Doordat de programmacode is onderverdeeld in objecten, is de herbruikbaarheid van de code beter en is deze makkelijker te onderhouden.
In het voorbeeld van de auto's uit hoofdstuk 15.1 zijn bv. starten, rijden en remmen de methoden van een object.
*15.3 Classes
Objecten worden onderverdeeld in klassen (Eng.: Classes), die gebruikt worden om door de programmeur gedefinieerde datastructuren te creëren. Classes definiëren functies die methoden worden genoemd. Deze methoden identificeren het gedrag en de acties die een object, dat van de class is gemaakt, met zijn gegevens kan uitvoeren. Een object dat van een class is gemaakt noemt men een instantie (Eng.: instance). Een class is een blauwdruk voor hoe iets moet worden gedefinieerd. Het bevat eigenlijk geen data. Terwijl een instance een object is, opgebouwd vanuit een class en echte data bevat.
Alle objecten in een class hebben vergelijkbare eigenschappen en kunnen over het algemeen dezelfde taken uitvoeren. In het voorbeeld hieronder (zie figuur 15-2) kunnen alle Mercedessen, Tesla's en Fords starten, rijden en remmen.
*15.4 Classes en objecten aanmaken
Bekijk figuur 15-3 hieronder. In deze figuur zie je een class Persoon.
Peter, paul en mary zijn de objecten, de zgn. instances, van de class Persoon. In de class Persoon is bijvoorbeeld gedefinieerd hoe een persoon eruit ziet. Een persoon heeft een naam, leeftijd, haren, handen, voeten, ogen, oren, e.d. Dit is dus de blauwdruk voor een persoon. In een instance (dus het object dat uit een class is gecreëerd) kun je de personen uniek maken door de persoon eigenschappen mee te geven. Zo kun je als eigenschap een bepaalde kleur aan de ogen en haren mee te geven. Op die manier maak je de persoon uniek.
Elk object is dus een instance van de class en heeft soortgelijke eigenschappen en kan soortgelijke taken uitvoeren als de andere objecten in de class.
In Python maak je een class met de keyword class gevolgd door de naam van de class en een dubbele punt :. In figuur 15-4 zie je een voorbeeld van hoe een class en object worden aangemaakt.
Alle classes hebben een __init__() functie (zie regel 3 in figuur 15-4). Door de naam van de class te gebruiken kun je een object creëren. De waarden van het object kun je meegeven door gebruik te maken van de __init__() functie (zie regel 8 en 11 in figuur 15-4). De __init__() functie wordt gebruikt om waarden aan object eigenschappen toe te kennen. Deze wordt elke keer aangeroepen wanneer een object wordt aangemaakt.
Methoden in objecten
Objecten kunnen ook methoden bevatten. Dat zijn functies die horen bij een object. Zie figuur 15-5.
Het aanroepen van een object gaat dus als volgt: object.eigenschappen (zie figuur 15-4 regel 15 voor een voorbeeld) of object.methode (zie figuur 15-5 regel 15 voor een voorbeeld).
De self parameter in regel 4 van figuur 15-5 is een referentie naar de huidige instance van de class en wordt gebruikt om variabelen te benaderen die behoren tot de classes. De naam van de self parameter kun je zelf kiezen, mits het de eerste parameter is van elke functie in de class.
*16. Ster-opdrachten
*16.1 Password generator
In games, security, simulatie en test applicaties worden vaak random functies gebruikt om bv. willekeurige waarden te genereren. Python kent ook een aantal random functies. Deze functie zijn echter niet direct te benaderen. Om die random functies te kunnen gebruiken dien je eerst de random module te importeren. Een module kun je beschouwen als een library met aantal functies die je kunt gebruiken in je programmeercode. De random module kun je als volgt importeren
import random
Uit de random module kun je bv. de choice() functie aanroepen. Dat gaat dan op de volgende manier random.choice(). De choice() functie kan een willekeurige element uit bv. een lijst selecteren.
In dit voorbeeld wordt willekeurig een item uit de boodschappenlijst getoond door gebruik te maken van de random.choice() functie. Probeer het maar eens.
Maak een password generator die willekeurig wachtwoorden genereert. Je programma moet aan de volgende voorwaarden voldoen:
Je programma vraagt aan de gebruiker uit hoeveel tekens het wachtwoord moet bestaan.
Het programma kiest uit een lijst met tekens waaruit het wachtwoord bestaat.
Het programma print het wachtwoord op het scherm.
Maak gebruik van de random.choice() functie.
Zet commentaar in je code zodat het voor een ander duidelijk is wat een stukje code doet.
*16.2 Leeftijd berekenen
Er zijn verschillende manieren om in Python met datum of tijd te werken. Eén manier om met datum en tijd te werken is gebruik te maken van de datetime module van Python. Een module kun je beschouwen als een library met aantal functies die je kunt gebruiken in je programmeercode. De datetime module kun je als volgt importeren
import datetime
Modules kunnen naast functies ook zgn. objecten bevatten. Objecten kunnen methodes (functies, acties of gebeurtenissen) en eigenschappen (waarden) bevatten.
Met de import datetime regel importeren we alle onderdelen uit de datetime module. Wanneer we slechts één object, bv. de datetime object, uit de module willen importeren, kunnen we dat als volgt doen
from datetime import datetime
Uit het object datetime kunnen we dan bv. de methode now() gebruiken om de huidige datum en tijd weer te geven. De volgende code geeft de huidige datum en tijd weer.
from datetime import datetime
huidige_tijd_datum = datetime.now()
print(huidige_tijd_datum)
Let op dat in dit voorbeeld zowel de module als het object datetime heten.
Het arrangement Inleiding programmeren in Python is gemaakt met
Wikiwijs van
Kennisnet. Wikiwijs is hét onderwijsplatform waar je leermiddelen zoekt,
maakt en deelt.
Auteur
Aniel Bhulai
Je moet eerst inloggen om feedback aan de auteur te kunnen geven.
Laatst gewijzigd
2024-01-28 11:46:11
Licentie
Dit lesmateriaal is gepubliceerd onder de Creative Commons Naamsvermelding-GelijkDelen 4.0 Internationale licentie. Dit houdt in dat je onder de voorwaarde van naamsvermelding en publicatie onder dezelfde licentie vrij bent om:
het werk te delen - te kopiëren, te verspreiden en door te geven via elk medium of bestandsformaat
het werk te bewerken - te remixen, te veranderen en afgeleide werken te maken
voor alle doeleinden, inclusief commerciële doeleinden.
Leeromgevingen die gebruik maken van LTI kunnen Wikiwijs arrangementen en toetsen afspelen en resultaten
terugkoppelen. Hiervoor moet de leeromgeving wel bij Wikiwijs aangemeld zijn. Wil je gebruik maken van de LTI
koppeling? Meld je aan via info@wikiwijs.nl met het verzoek om een LTI
koppeling aan te gaan.
Maak je al gebruik van LTI? Gebruik dan de onderstaande Launch URL’s.
Arrangement
IMSCC package
Wil je de Launch URL’s niet los kopiëren, maar in één keer downloaden? Download dan de IMSCC package.
Wikiwijs lesmateriaal kan worden gebruikt in een externe leeromgeving. Er kunnen koppelingen worden gemaakt en
het lesmateriaal kan op verschillende manieren worden geëxporteerd. Meer informatie hierover kun je vinden op
onze Developers Wiki.