Enter 2e graad - Algoritmisch Denken Met Python - inkijk methode
ALGORITMISCH DENKEN MET PYTHON
Je hebt zeker al algoritmen gemaakt zonder dat je het weet. Als je algoritmen laat uitvoeren op een computer spreken we vlug van programmeren. In deze module leer je algoritmen programmeren in Python, een krachtige en eenvoudige programmeertaal die veel gebruikt wordt. Door in een bepaalde taal te programmeren krijg je heel wat mogelijkheden om de computer naar je hand te zetten. Tijd om de wereld van het programmeren te verkennen!
INKIJKEXEMPLAARDIEKEURE
WAT JE LEERT IN DEZE MODULE
Wat een algoritme is
• Patronen herkennen
• Wat abstractie is
Wat decompositie is
Decompositie toepassen
• Wat debuggen is
• Een gestructureerde aanpak toepassen bij het oplossen van problemen
Een programma starten en bewaren in Python
• De Command Line Interface van Python gebruiken
• Een programma uitvoeren in Python
Wat een variabele is
Wat een expressie is
• De functies: print, input, type
• Enkele belangrijke datatypes: integer, float, string, bool, list
Wat operatoren zijn
• Enkele operatoren: rekenkundige operatoren en stringoperatoren
Wat een keuze is: eenzijdig of tweezijdig
Wat een voorwaarde is
• Een keuze programmeren in Python
• Enkele operatoren: vergelijkingsoperatoren en logische operatoren
Een voorwaardelijke herhaling programmeren in Python
• Een begrensde herhaling programmeren in Python
• De functie range
De membership operator in
FOUTEN - PROBLEMEN
Bij het schrijven van programma's maak je soms fouten. Een eerste soort fout is een logische fout. Je hebt een fout gemaakt in je algoritme of in de datatypes van je programma. Begin opnieuw bij je analyse en zoek de fout in je redenering. Een tweede soort fout is een syntaxfout. Je maakt een typefout, je vergeet een dubbelpunt ... De foutmelding helpt je op weg.
ALGORITMEN: WAT EN HOE?
Wat is een algoritme?
In het dagelijks leven kom je in aanraking met algoritmen. Overal om je heen zie je algoritmen.
Voorbeelden
INKIJKEXEMPLAARDIEKEURE
Ingrediënten (4 personen)
200 g gezouten spek
4 eieren
500 g spaghetti
25 cl room
100 g Parmezaanse kaas
2 teentjes look
1 sjalot
Bereiding
1 Kook de pasta al dente.
2 Bak intussen het spek krokant, voeg sjalot en look toe.
3 Meng in een kom de room, eieren, kaas, knoflook, peper en zout en klop het mengsel met een vork tot een min of meer gladde massa.
4 Giet de pasta in een vergiet af en doe hem terug in de warme pan.
5 Meng het spek en het eimengsel onder de pasta.
6 Verwarm de pasta nu nog even heel kort (1 minuut) op een laag vuur en serveer het gerecht.
Een vetvlek verwijderen uit kleding
• Pak een doek en dep met wat afwasmiddel op de vlek.
• Wrijf met de doek over de vetvlekken.
• Laat het kledingstuk drogen.
Programma opnemen, bekijken en wissen
OPNEMEN
Tik op TV-gids > selecteer een programma en kies Opnemen.
Je kan ook de instellingen van je opnames aanpassen als je dat wilt.
BEKIJKEN
Tik op Mijn TV > Opgenomen > kies een opname en tik op
WISSEN
Tik op Mijn TV > Opgenomen > kies een opname > > of Opname wissen.
Voor bijna alles wat je doet, maak je gebruik van een algoritme. Bijvoorbeeld wanneer je de hond uitlaat, een ei bakt of naar een serie kijkt via een streamingdienst. Algoritmen beheersen ons leven. Ook de info die je op het internet vindt, wordt bepaald door algoritmen
HIeronder staan enkele definities voor een algoritme.
Zijn de definities juist of fout? Kruis aan.
Een algoritme is een soort stappenplan. Het zijn instructies die in een bepaalde volgorde worden uitgevoerd.
juist fout
Een algoritme is een set regels in een niet bepaalde volgorde om een probleem op te lossen.
juist fout
Een algoritme is de basis voor een computerprogramma. Het is een recept dat je aan de computer geeft om een probleem op te lossen. Als de computer het programma doorloopt, moet hij de verschillende instructies in het algoritme (= het recept) uitvoeren.
juist fout
Even doordenken
Een algoritme is niet meer dan een aantal willekeurige stappen die je volgt om een bepaald doel te bereiken.
INKIJKEXEMPLAARDIEKEURE
juist fout
Een algoritme is een eindige reeks instructies die vanuit een gegeven begintoestand naar een beoogd doel leidt.
juist fout
Een algoritme is een lijstje met instructies die een vaste volgorde beschrijft en bepaalt hoe je een probleem oplost.
juist fout
In grote steden zie je vaak hoge gebouwen. Dit kunnen oude of recente gebouwen zijn. Uit esthetisch oogpunt wordt steeds gezorgd voor een zekere eenheid in een gebouw. Zo krijgt niet elke verdieping een andere indeling maar zijn de meeste verdiepingen gelijk. Er zit een patroon in het ontwerp van gebouwen.
Ontwerp een gebouw
Rooster
Als er een patroon zit in het uiterlijk van een gebouw, dan is het mogelijk om een algoritme te maken voor dat gebouw.
Teken de voorgevel van het gebouw hiernaast in het rooster. Laat de eerste kolom leeg.
INKIJKEXEMPLAARDIEKEURE
Enkele afspraken:
- steen = zwart vakje
- glas = wit vakje
- een gebouw van 6 (gelijkvloers en 5 verdiepingen)
- een glazen middenstuk van 3 vakjes voor de eerste vier verdiepingen
- 3 vensters links en rechts van het glazen middenstuk
Deze oefening kan je ook online maken. Scan de QR-code.
Abstractie
Ziet het gebouw in het rooster er ongeveer hetzelfde uit als op de foto? Bij het tekenen van het gebouw in het rooster heb je alle overbodige details weggelaten en de essentie behouden. Wanneer je iemand verschillende foto's van hoge gebouwen en jouw tekening toont, dan zal die persoon meteen de juiste foto uitkiezen. Het gebouw blijft herkenbaar ook al heb je details zoals kleur, soort gesteente, het exacte aantal verdiepingen … weggelaten. Je hebt abstractie toegepast.
Abstractie komt van het Latijnse woord 'abstráhere', wat 'weglaten' betekent. Het is een denkproces waarbij je nagaat welke onderdelen essentieel zijn en welke je kunt weglaten.
Van jongs af aan heb je onbewust al abstractie toegepast. Denk maar aan tekeningen van mensen of dieren. Met slechts enkele lijnen herkent iedereen het getekende dier.
INKIJKEXEMPLAARDIEKEURE
Ook kunstenaars zijn meesters in het abstraheren. De Nederlandse kunstenares Mieke van Doorn maakte verschillende abstracties van het schilderij 'Het melkmeisje' van Johannes Vermeer. In haar werk blijf je steeds het originele schilderij herkennen.
Je kan nu een algoritme schrijven om het gebouw te laten tekenen. Dit algoritme kan op meerdere manieren opgebouwd worden. Vooraleer je hier aan begint, is het belangrijk om je tekening nog eens goed bekijken. Zie je gelijkenissen? Komen er bepaalde rijen of delen van rijen terug?
Hoeveel verschillende soorten rijen zie je in het gebouw?
Als je voor die rijen een algoritme schrijft, dan kan je dit gebruiken in het algoritme van het gebouw. Dat is decompositie. In plaats van het probleem in zijn geheel op te lossen, ga je op zoek naar deelproblemen die je oplost en dan verwerkt in de oplossing van het geheel. Je deelt een probleem op in kleinere deelproblemen.
Dit komt ook voor in andere vakken en disciplines.
Geschiedenis
In de lessen geschiedenis bestudeer je verschillende periodes: de prehistorie, het oude Nabije Oosten, de klassieke oudheid, de middeleeuwen, de nieuwe tijd … Omdat er over die periodes heel veel te vertellen is, worden de geschiedkundige periodes onderverdeeld in een aantal domeinen.
Geschiedkundige periode
het economische domein het politieke domein het sociale domein het culturele domein
INKIJKEXEMPLAARDIEKEURE
Decompositie kom je heel vaak tegen.
Scan de code voor nog meer voorbeelden …
Maak een algoritme voor het ontworpen gebouw
Maak voor elke soort rij een algoritme. Gebruik hiervoor de onderstaande symbolen. Je start telkens in het eerste vakje van een rij. Zoek ook naar de gelijkenissen in een rij. Probeer een kort algoritme te maken. Start onderaan.
INKIJKEXEMPLAARDIEKEURE
Ga één blokje naar rechts.
Ga één blokje naar links.
Ga één blokje naar beneden.
Ga één blokje naar boven.
Vul het blokje met deze kleur.
n Ga 'n' keer één blokje naar rechts. Je kan dit ook doen met de andere pijltjes.
n ( ) Voer 'n' keer de combinatie tussen de haakjes uit.
Algoritme
> rij 1:
> rij 2:
> rij 3:
> rij 4:
Gebouw in het rooster rij 3 rij 4 rij 2 rij 1
Gebruik de algoritmen van de rijen om het algoritme van het gebouw te maken. De eerste regels van het algoritme staan er al. We bouwen het gebouw rij voor rij op. Houd er rekening mee dat alle deelalgoritmen gemaakt zijn voor een rij van links naar rechts. Vul het algoritme verder aan in de eerste tabel.
bovenlaag
5e verdieping
4e verdieping
3e verdieping
2e verdieping
1e verdieping
gelijkvloerse verdieping
20 rij 2
bovenlaag
INKIJKEXEMPLAARDIEKEURE
5e verdieping
4e verdieping
3e verdieping
2e verdieping
1e verdieping
gelijkvloerse verdieping terug rij 2
20 rij 2 terug rij 2 rij 1 rij 1
We maken ook een deelalgoritme om terug te keren naar het begin van de volgende rij: het deelalgoritme terug
terug
Vul het deelalgoritme aan.
Herschrijf het algoritme in de tweede tabel. Maak nu gebruik van het deelalgoritme 'terug'.
Bestudeer het gemaakte algoritme. Worden sommige regels herhaald? Vind je een patroon?
Omcirkel in verschillende kleuren de herhalingen die je ziet.
Noteer hieronder het algoritme zo compact mogelijk. >
Wil je meer lezen over algoritmen en gebouwen? Scan de QR-codes.
1 MIJN EERSTE PROGRAMMA
INKIJKEXEMPLAARDIEKEURE
De meeste algoritmen worden geschreven om door een digitaal toestel zoals een computer, tablet, smartphone, smartwatch, robot, slimme koelkast of camera … uitgevoerd te worden.
Om een algoritme door een digitaal toestel te laten uitvoeren, heb je een programmeertaal nodig. Je maakt een (computer)programma van het algoritme. Misschien heb je al eens gewerkt met een grafische programmeertaal zoals Scratch. Via het slepen van voorgeprogrammeerde blokken maak je een programma. De meeste programmeertalen zijn echter tekstueel. Ze bieden je meer mogelijkheden om de computer juist aan te sturen.
In deze module leer je algoritmen uitwerken in de programmataal Python.
Waar komt de naam Python vandaan?
>>> print("Mijn eerste programma!")
Mijn eerste programma!
1.1 Van Scratch naar Python
Scratch
Python
INKIJKEXEMPLAARDIEKEURE
>>> print("Mijn eerste programma!")
Mijn eerste programma!
1.2 Mijn eerste commando in Python
Als je tekst wilt laten verschijnen op het scherm gebruik je de functie print (). We weten dat print een functie is door de haakjes die erachter staan. Tussen de haakjes schrijf je de tekst die je wilt laten verschijnen op het scherm. Tekst staat altijd tussen dubbele of enkele aanhalingstekens ("" of ''). Ze geven het begin en het einde van een tekst aan.
print("tekst")
Tekst: sliert van tekens tussen aanhalingstekens
Commando (invoer)
Resultaat (uitvoer)
print("Mijn eerste commando!") Mijn eerste commando!
print("1-AXE-212") 1-AXE-212
print("3 + 5") 3 + 5
1.3 Een programma uitvoeren in Python
1.3.1 Starten met Python
1 Surf naar https://www.python.org
2 op Downloads en installeer de laatste versie van Python.
3 Na de installatie vind je deze map terug in het startmenu van Windows.
4 Start de Python-omgeving. op
De Command Line Interface (CLI) wordt geopend.
INKIJKEXEMPLAARDIEKEURE
Na de drie pijltjes (>>>) kan je commando's invoeren om ze daarna te laten uitvoeren.
5 een Pythoncommando en druk op Enter .
Je ziet meteen de uitvoer van het commando. Zo kan je Pythoncommando's testen.
1.3.2 Een programma maken en bewaren
Als je een programma schrijft, bewaar je dit best eerst in een bestand.
1 Open de Command Line Interface (CLI) van Python.
2 Maak een nieuw bestand aan. op File - New File
INKIJKEXEMPLAARDIEKEURE
3 het programma uit.
Tijdens het intypen van een commando krijg je hulp. Ook de kleuren helpen je om te controleren of je goed bezig bent.
4 Bewaar het programma.
Kies de juiste map om het programma in te bewaren en geef het bestand een passende naam.
Na de bestandsnaam staat het pad naar het bestand. Een Pythonprogramma heeft altijd de bestandsextensie .py
INKIJKEXEMPLAARDIEKEURE
1.3.3 Een programma uitvoeren
1 op Run - Run Module of op
2 Het programma wordt uitgevoerd en de uitvoer verschijnt in de Python Shell.
INKIJKEXEMPLAARDIEKEURE
2 ONDER DE MOTORKAP
INKIJKEXEMPLAARDIEKEURE
Nu je weet hoe je een programma moet bewaren en uitvoeren, is het tijd om te leren programmeren. Bij programmeren komt steeds dezelfde werkwijze terug:
Probleemstelling
Dit is een duidelijke omschrijving van het probleem. Wat is het probleem? Welk resultaat wil je?
Analyse
Je maakt een analyse van het probleem. Wat heb je nodig om het probleem op te lossen?
Algoritme
Je schrijft het algoritme uit. Kan je het probleem opsplitsen in deelproblemen?
Programma
Je zet het algoritme om in een programma. Je schrijft het programma in een programmeertaal.
Testen
Je controleert of je programma werkt door het te testen.
2.1 Een nieuwe touch
Probleemstelling
Je wilt de muren van je slaapkamer een nieuwe look geven door ze te verven in een ander kleur. De verf heb je al gekozen. Met 1 liter verf kan je 7 vierkante meter verven. Voor een ideale dekking heb je 2 lagen nodig. Bereken hoeveel liter verf je nodig hebt om een muur van je kamer te verven.
Analyse
Lees de probleemstelling aandachtig en denk na wat je nodig heb om dit probleem op te lossen. Wat weet je al? Wat is er gegeven? Je maakt een analyse van de probleemstelling.
Hoeveel m² is de muur?
- Wat moet je hier berekenen?
- Wat heb je nodig voor deze berekening?
Hoeveel liter verf heb je nodig voor één laag?
Hoeveel lagen moet ik verven?
Algoritme
De oplossing is vrij eenvoudig:
- Bereken de oppervlakte van de muur.
- Deel de oppervlakte door 7 om het aantal liter verf voor één laag te bekomen.
- Vermenigvuldig het aantal liter verf met het aantal lagen dat je moet verven.
Programma
De breedte van de muur is 5 m en de hoogte ervan is 2 m.
Het programma kan er dan zo uitzien:
INKIJKEXEMPLAARDIEKEURE
Testen
Je test altijd of je programma goed werkt.
Dit programma bestaat hier uit één regel en kan je meteen in de CLI uittesten:
Je hebt ongeveer 3 liter verf nodig om de muur twee lagen te geven.
Vind je dit een goede oplossing?
print(((5*2)/7) * 2)
print(((5*2)/7) * 2)
2.85714285714
Welke verbeteringen zou je aan het programma willen aanbrengen?
2.1.1 Variabelen
Het programma gebruikt de afmetingen van je slaapkamer. Dit programma kan je dus enkel gebruiken voor deze kamer. Het zou efficiënter zijn als je in het programma de breedte en de hoogte van een kamer kan ingeven.
Soms wil je in een programma een getal of een resultaat van een berekening kunnen opslaan. Dit kan door een variabele te gebruiken. Een variabele is een verwijzing naar een stukje geheugen waarin een waarde wordt bewaard.
INKIJKEXEMPLAARDIEKEURE
Variabele: plaats in het geheugen met een naam waarin een waarde wordt bewaard die je later nog nodig hebt
Het geheugen kan je vergelijken met een opbergsysteem voor smartphones in de klas of met een pakjesautomaat.
waarde
Dit opbergsysteem voor smartphones heeft 30 genummerde vakken. In elk vakje kan je één smartphone opbergen. Elk vakje heeft een nummer zodat een leerling goed kan onthouden in welk vak zijn smartphone zit en die zo makkelijk kan terugvinden. Er bestaan geen twee vakjes met hetzelfde nummer.
naam variabele
waarde
In elke locker zit er één pakje. De inhoud van de pakjes verschillen van elkaar. Elke locker heeft een nummer zodat je jouw pakje vlot in ontvangst kan nemen. Er bestaan geen twee lockers met hetzelfde nummer. naam variabele
Vakje in een opbergsysteem of locker in een pakjesautomaat Variabele nummer naam inhoud waarde
Een variabele heeft een naam zodat je meteen de waarde terugvindt. Er bestaan geen twee variabelen met dezelfde naam.
De naam van een variabele: - begint altijd met een letter, - bevat geen spaties.
Als de naam van een variabele uit meerdere woorden bestaat, dan gebruik je een laag streepje of underscore om de woorden van elkaar te scheiden.
Bijvoorbeeld: beginwaarde_loon en straat_nr
INKIJKEXEMPLAARDIEKEURE
De toekenning
Aan een variabele ken je een waarde toe door een gelijkheidsteken (=) te gebruiken. Die waarde kan tekst, een getal of een resultaat van een bewerking zijn.
Toekenning: naam variabele = expressie
Voorbeelden
2.1.2 Datatypes: integer, float en string
Er bestaan verschillende soorten waarden, bv. een getal of tekst. Als je voor de eerste keer een waarde aan een variabele toekent, dan maak je de variabele aan en geef je die een (data)type. Het type wordt bepaald door de waarde die je erin plaatst. Wat je kan doen met die variabele is afhankelijk van het type.
integer (int)
Dit is een geheel getal, een getal zonder cijfers na de komma dat positief, negatief, of nul kan zijn.
-5 0 float (float)
string (str)
Dit is een reëel getal. Met andere woorden, een decimaal getal Een ander woord voor een decimaal getal is een kommagetal. Als komma wordt een punt gebruikt.
Dit is tekst die bestaat uit geen of meerdere tekens en staat altijd tussen dubbele aanhalingstekens.
2.1.3 Expressie
Aan een variabele kan je een waarde toekennen of een resultaat van een berekening. Zo'n berekening of bewerking die tot een resultaat leidt, heet een expressie of uitdrukking
Expressie: een combinatie van één of meerdere variabelen, waarden en functies gescheiden door operatoren die als resultaat één waarde oplevert
INKIJKEXEMPLAARDIEKEURE
2.1.4 Operatoren
Rekenkundige operatoren
Met rekenkundige operatoren kan je bewerkingen met getallen uitvoeren. De rekenkundige operatoren staan in stijgende prioriteit.
Operator Betekenis
// het quotiënt na een integer of gehele deling
% de rest na een integer of gehele deling (= modulo of restberekening)
Haakjes in een expressie krijgen de hoogste prioriteit. Dit wil zeggen dat bewerkingen die tussen haakjes staan eerst worden uitgerekend.
Open de CLI en geef de expressies in. Welke waarde krijg je? Vul aan in de tabel. Gaat het om het datatype integer of float? Omcirkel het juiste antwoord.
100 / 5 integer/float
5 * 8 integer/float
32 // 5 integer/float
2.0 * 6 integer/float
36 % 5.0 integer/float
100 + 25 integer/float
100.0 - 25 integer/float
(100 + 50) / 5 integer/float
100 + 50 / 5 integer/float
Wat kun je besluiten? Vul aan met het juiste type.
Als een getal van het type float in een expressie staat, dan heeft de waarde van de expressie ook het type . Het resultaat van een deling heeft steeds een waarde van het type .
Stringoperatoren
Met stringoperatoren kan je bewerkingen uitvoeren met teksten. Je kan stukjes tekst bij elkaar optellen. Ze worden dan aan elkaar geplakt. Strings kan je ook vermenigvuldigen.
Voorbeelden
Operator
+het samenvoegen van twee teksten tot één tekst "kerst" + "vakantie""kerstvakantie"
*het maken van een string die bestaat uit een herhaling van de originele tekst
Nog voorbeelden
prijs = 100.0 aantal = 5 totaalprijs = prijs * aantal
INKIJKEXEMPLAARDIEKEURE
De expressie en de variabele zijn gegeven. Vul de waarde en het type verder aan in de tabel.
In een programma voer je eerst de gegevens of de waarden in.
Het programma voert vervolgens de verschillende bewerkingen uit.
Hierna verschijnt het resultaat op het scherm.
INVOER
VERWERKING
UITVOER
De functie print() (uitvoer) ken je al, maar je kunt er meer dan enkel tekst mee schrijven.
print([expressie[, expressie …]])
[]: hetgeen tussen rechthoekige haakjes staat, mag maar moet niet gebruikt worden.
Voorbeelden
Opdracht (invoer)
INKIJKEXEMPLAARDIEKEURE
Resultaat (uitvoer)
print() Je krijgt een lege regel. print("leve het leven!") leve het leven!
print(2, "februari", 2023) 2 februari 2023
naam = "Mathilde" print("Naam: " + naam)
naam = "Filip" print("Naam:", naam)
Naam: Mathilde
Naam: Filip
De functie input() vraagt de gebruiker om gegevens in te voeren. Deze functie heeft een waarde van het type string, een stukje tekst.
input("tekst") type string
Voorbeelden
Programma
voornaam = input("Geef je voornaam in: ") familienaam = input("Geef je familienaam in: ") print(voornaam, familienaam)
korting = input("Wat is de korting? ") print("De korting bedraagt", korting, "%.")
Uitvoer
Geef je voornaam in: Ben
Geef je familienaam in: Verdickt
Ben Verdickt
Wat is de korting? 5 De korting bedraagt 5 %.
Je ziet dat de verschillende waarden in de print-functie gescheiden worden door een spatie.
2.1.6 De functie type
Maak dit programma dat twee ingegeven getallen met elkaar optelt in de CLI van Python.
getal1 = input("Geef een getal in: ") getal2 = input("Geef een getal in: ") som = getal1 + getal2 print ("het resultaat =", som)
Test het programma uit met de volgende waarden.
Vul het resultaat aan in de tabel.
5 7
INKIJKEXEMPLAARDIEKEURE
Klopt het resultaat? ja nee
Zo niet, wat is er hier gebeurd?
Merk je dat je programma niet helemaal doet wat je vraagt, dan kan de functie type je helpen. Deze functie wordt gebruikt om het datatype van een expressie te tonen.
type(expressie)
type van de waarde van de expressie
Voorbeelden
>>> type(5)
<class 'int'>
>>> type(6.2)
<class 'float'>
>>> type("Hallo")
<class 'str'>
>>> type (input("Geef een getal in: "))
Geef een getal in: 5
<class 'str'>
De waarde die de functie input() oplevert, heeft het type string. Of je nu tekst of een getal invoert het type zal altijd een string zijn, een stukje tekst.
int(expressie) type integer float(expressie) type float str(expressie) type string
Voorbeelden
Opdracht (invoer) Resultaat (uitvoer)
int(7.5)
int(8.1)
int("15") 15
int("20.5") foutmelding
Int("20.5") geeft een foutmelding omdat wat tussen de aanhalingstekens staat een float is en geen integer.
Wijzig het programma zodat het de twee ingegeven getallen nu wel correct optelt.
getal1 = int(input("Geef een getal in: ")) getal2 = int(input("Geef een getal in: ")) som = getal1 + getal2 print ("het resultaat =", som)
INKIJKEXEMPLAARDIEKEURE
Test het programma uit met de volgende waarden. Vul het resultaat aan in de tabel.
5 7
Klopt het resultaat? ja nee
In deze illustratie staan de datatypes en functies die je al kent in Python.
2.2 Juist genoeg verfpotten
Het programma dat het aantal liter verf berekent om de muur van je kamer te verven kan efficiënter geschreven worden. In dit programma gaan we nu een abstractie maken van de echte afmetingen van je kamer en van de eigenschappen van de verf. Alle gegevens die nodig zijn om dit op te lossen, geven we in. We berekenen hoeveel verfpotten we nodig hebben om de muur te verven.
Het is een goede gewoonte om in je programma enkele regels commentaar toe te voegen. Je noteert in enkele regels wat een stukje code precies inhoudt. Bij moeilijkere stukken in je programma voeg je best wat uitleg toe zodat je het beter begrijpt. Als je het programma later wilt aanpassen, dan weet je weer meteen de betekenis van de code.
Met het hekje (#) schrijf je een regel commentaar. Python zal dit negeren en doet hier niets mee.
Programma
Als je het aantal liter verf deelt door het aantal liter per pot krijg je meestal een kommagetal. Je kunt geen halve potten verf kopen. De functie int(liter_verf / liter_pot) geeft je het cijfer voor de komma van deze deling. Dat is meestal één pot te weinig. Door er 0.99 bij op te tellen krijg je het juiste aantal potten.
Aan de kleur van het programma kan je zien of je goed bezig bent: Kleur Betekenis in Python
Een gereserveerd woord is een woord dat een speciale betekenis heeft in Python. Je mag deze woorden niet gebruiken als namen voor variabelen zoals de woorden import, and, for, in …
Testen
Test het programma uit met de volgende waarden. Vul de tabel verder aan.
INKIJKEXEMPLAARDIEKEURE
Zit er nog een fout in, pas je programma aan tot het werkt. Dat is debuggen Een (computer)bug is een fout in een programma. Debuggen betekent het testen en bijsturen van een programma totdat het foutloos werkt.
2.3 Zoveel snoepen
Probleemstelling
Je organiseert een verjaardagsfeestje en wilt de aanwezigen overladen met snoepen. De snoepen worden eerlijk verdeeld onder de aanwezigen.
Maak een programma waarin je berekent hoeveel snoepen iedereen krijgt en hoeveel er nog over zijn.
Analyse
Wat moet je invoeren?
Waarde Type aanwezigen integer aantal_gekocht integer
Wat moet je berekenen? - hoeveel snoepen iedereen krijgt - hoeveel snoepen er over zijn, de rest
INKIJKEXEMPLAARDIEKEURE
Je kan dit op twee manieren oplossen: met een gewone deling of met een gehele deling. Beide oplossingen worden hier uitgewerkt zodat je goed weet hoe een gehele deling met rest werkt.
Wat moet je uitvoeren?
Waarde Type per_persoon integer rest_snoepen integer
Algoritme
We zetten het algoritme in een Nassi-Shneiderman diagram (NSD) om het makkelijk leesbaar te maken.
Vaak is het nodig om in een algoritme ook een keuze of een selectie in te bouwen. Het algoritme zal dan niet volledig doorlopen worden. De gebruiker bepaalt welke delen uitgevoerd worden. Aan de hand van een voorwaarde bepaalt de gebruiker welke opdrachten uitgevoerd worden.
De selectie in Scratch:
Eenzijdige
VOORWAARDE
OPDRACHTENBLOK
VOORWAARDE
OPDRACHTENBLOK
OPDRACHTENBLOK
Een selectie kan je schematisch zo weergeven:
Eenzijdige selectie
Tweezijdige selectie
waar onwaar
opdracht(en) opdracht(en) voorwaarde
Enkel als aan de voorwaarde voldaan is, worden een aantal opdrachten uitgevoerd. Daarna worden de andere opdrachten van het programma uitgevoerd.
In Python wordt dat:
if <voorwaarde>: <opdrachtenblok> <opdrachtenblok>
Voorbeeld
Het programma invoeren:
waar onwaar
opdracht(en) opdracht(en) opdracht(en) voorwaarde
Als aan de voorwaarde voldaan is, worden een aantal opdrachten uitgevoerd. Is de voorwaarde niet voldaan dan wordt andere opdrachten uitgevoerd. Daarna worden de andere opdrachten van het programma uitgevoerd.
INKIJKEXEMPLAARDIEKEURE
if <voorwaarde>: <opdrachtenblok> else <opdrachtenblok> <opdrachtenblok>
Het opdrachtenblok bestaat uit één of meerdere opdrachten onder elkaar. Het staat ingesprongen ten opzichte van de regel erboven. Zodra je een lijn aan de marge typt, behoort het niet meer tot het blok.
wordt altijd uitgevoerd
wordt uitgevoerd als voorwaarde waar is wordt uitgevoerd als voorwaarde onwaar is
Het programma uitvoeren:
Voorwaarde: een expressie die de waarde waar (True) of onwaar (False) heeft
In Python worden de begrippen True (waar) en False (onwaar) gebruikt. True en False worden altijd met een hoofdletter geschreven.
True en False zijn waarden van het (data)type bool, booleaanse waarden.
3.2 De vergelijkingsoperatoren
In een voorwaarde staat steeds een vergelijkingsoperator. De uitkomst van deze operator kan slechts twee antwoorden hebben: True of False. Zowel numerieke als alfanumerieke gegevens kunnen gebruikt worden in een voorwaarde. De alfanumerieke gegevens worden gesorteerd volgens de ASCII-code. De ASCII-tabel is een coderingstabel die elke letter, cijfer en teken omzet naar een binair getal dat door de computer gebruikt kan worden.
Zoek de waarde van volgende voorwaarden en noteer in de tabel.
Operator Omschrijving
<kleiner dan / komt alfabetisch voor"kasteel"<"huis"
> groter dan / komt alfabetisch na 15 > 10
<= kleiner dan of gelijk aan "stoel" <= "zetel"
>= groter dan of gelijk aan 90 >= 90
== gelijk aan
INKIJKEXEMPLAARDIEKEURE
600 == 900
!=verschillend van (niet gelijk aan)3.14 != 3.15
Soms leidt een probleemstelling tot een voorwaarde waarbij iets moet gebeuren als die onwaar is. Dat is niet mogelijk en wordt opgelost door de voorwaarde om te keren.
Voorbeeld uit het dagelijks leven
Voorwaarde Omgekeerde voorwaarde
Bij slecht weer: True: /
False: buitenspelen
Voorbeelden
Bij goed weer: True: buitenspelen
False: /
Voorwaarde Omgekeerde voorwaarde
prijs <= 100 prijs > 100
zin == "stop" zin != "stop"
geboortejaar > 2020 geboortejaar <= 2020
3.2.1 Klimaatvriendelijk wonen
Probleemstelling
Het is belangrijk dat iedereen een steentje bijdraagt aan het klimaat. Dit kan je doen door je huis zo goed mogelijk te isoleren. Hoogrendementsglas (HR-glas) isoleert twee tot drie keer beter dan gewoon dubbel glas en vier tot vijf keer beter dan enkel glas. Door het plaatsen van HR-glas kan je dus heel wat energiekosten besparen.
INKIJKEXEMPLAARDIEKEURE
Vlaams Energie- en Klimaatagentschap
Als je in een bestaande woning de bestaande beglazing vervangt door hoogrendementsglas dan krijg je een premie van 16 euro/m² met een maximum van 40 % van het factuurbedrag inclusief btw.
Maak een programma om de premie te berekenen.
Analyse
Wat moet er ingevoerd worden?
Waarde
oppervlakte_glas
factuurbedrag float
Wat moet er berekend worden?
- Premie = oppervlakte glas x 16
- Als de premie hoger is dan 40 % van factuurbedrag dan wordt deze beperkt tot 40 % van het factuurbedrag (= de maximumpremie).
lees oppervlakte glas lees factuurbedrag bereken premie bereken maximumpremie ja nee
premie > maximumpremie
premie = maximumpremie schrijf premie
INKIJKEXEMPLAARDIEKEURE
Programma
Testen
Test het programma met volgende waarden. Vul de premie aan in de tabel.
3.2.2 Even of oneven
Probleemstelling
Maak een programma dat een geheel getal inleest en bepaalt of het even of oneven is.
INKIJKEXEMPLAARDIEKEURE
Analyse
Wat moet er ingevoerd worden?
Waarde Type getal integer
Wat moet er berekend worden?
- Wanneer is een geheel getal even?
Wat moet er uitgevoerd worden? even of oneven
Algoritme
lees getal
ja nee schrijf even schrijf oneven getal is deelbaar door 2
Programma
Het programma invoeren:
Het programma uitvoeren:
Testen
Test het programma met volgende waarden. Vul 'even' of 'oneven' aan in de tabel.
3.3 Soms blijf
je keuzes
maken
In sommige situaties heb je niet voldoende met één keuze maar heb je meerdere keuzes nodig om tot het resultaat te komen.
Probleemstelling
Schrijf een programma dat de begin- en einddatum van een ingegeven seizoen weergeeft. Controleer ook of het seizoen juist geschreven is.
Analyse
Wat moet er ingevoerd worden?
Waarde Type seizoen string
Wat moet er gecontroleerd worden? het ingegeven seizoen
Wat moet er uitgevoerd worden? begin- en einddatum van het seizoen
Algoritme
lees seizoen ja nee
seizoen == "lente"
INKIJKEXEMPLAARDIEKEURE
seizoen == "zomer"
tussen 21/3 en 20/6 ja nee
seizoen == "herfst"
tussen 21/6 en 20/9 ja nee
seizoen == "winter"
tussen 21/9 en 20/12 ja nee
tussen 21/12 en 20/3verkeerd geschreven
Programma
Je ziet een opeenvolging van if en else in dit programma. Als je else en if samentrekt, krijg je elif
else: gevolgd door een if ➝ elif
INKIJKEXEMPLAARDIEKEURE
Met elif maak je het programma korter:
Testen
Test het programma uit voor de verschillende seizoenen.
Als de eerste voorwaarde in het programma een True oplevert, dan stopt het programma. De volgorde van de voorwaarden is dus belangrijk.
Wat zal de uitvoer van het programma zijn als het getal 5 wordt ingelezen? Vul aan in de tabel.
Programma
Programma
Uitvoer: Uitvoer:
3.4 Logische of
booleaanse operatoren
Soms wil je in één vraag meerdere gegevens combineren. Bijvoorbeeld als iemand koffie wenst, vraag je "met melk of suiker" en niet "met melk" en nadien "met suiker". Analoog kun je in een voorwaarde, in plaats van meerdere if/elif/else te gebruiken, logische of booleaanse operatoren gebruiken om voorwaarden te combineren.
Zal het resultaat True of False zijn? Vul aan in de tabel. Logische
INKIJKEXEMPLAARDIEKEURE
Vul de volgende zinnen aan.
De logische operator AND is enkel True als
De logische operator OR is True als
3.4.1 Een eenvoudige rekenmachine
Probleemstelling
Programmeer een rekenmachine waarmee je kunt optellen, aftrekken, vermenigvuldigen en delen.
Analyse
Wat moet er ingevoerd worden?
Waarde
getal1 float getal2 float bewerking string
Wat moet er berekend worden? het resultaat van de bewerking van twee getallen
- Zijn er uitzonderingen? Delen door nul is niet mogelijk.
Wat moet er uitgevoerd worden? het resultaat van de bewerking of een foutmelding
Algoritme
lees getal1
lees getal2
lees bewerking ja nee
bewerking == "+"
INKIJKEXEMPLAARDIEKEURE
bewerking == "-"
schrijf getal1 + getal2 ja nee
bewerking == "x"
schrijf getal1 – getal2 ja nee
bewerking == "/" en getal2 != 0
schrijf getal1 x getal2 ja nee
schrijf getal1 / getal2schrijf delen door 0 kan niet
Programma
Testen
Test het programma uit met de volgende waarden. Vul het resultaat aan in de tabel.
4 PROGRAMMEREN IS RECYCLEREN
Met het begrip decompositie heb je kennisgemaakt. Je gaat een probleem niet in zijn geheel oplossen maar je gaat het opdelen in kleinere deelproblemen die je afzonderlijk oplost.
Voor grotere problemen is dit zeker noodzakelijk.
Veelvoorkomende problemen:
- Hoe lang is een string?
- Wat is het grootste getal in een reeks getallen?
- Een getal afronden tot twee cijfers na de komma
- Een leeftijd berekenen …
De ontwikkelaars van programmeertalen weten dit en hebben daarom deze kleine problemen al voor ons geprogrammeerd in een functie
Functie: herbruikbare programmeercode met een bepaalde functionaliteit, namelijk het berekenen van een waarde of het uitvoeren van een actie
Een functie heeft:
- een functienaam;
- x, y …: 0, 1 of meerdere argumenten;
- terugkeerwaarde en/of actie die moeten uitgevoerd worden.
4.1 Ingebouwde functies
Deze functies ken je al.
FunctieFunctienaamArgument(en)Terugkeerwaarde Actie print("Hallo")print "Hallo" - Hallo komt op het scherm. print("ik", "jij")print"ik" en "jij" - ik jij komt op het scherm. input("woord?")input"woord?"het ingelezen woord woord? komt op het scherm en er wordt gewacht op de ingave van een woord
Er bestaan nog andere functies.
abs(<getal>) Dit geeft de absolute waarde van een getal.
round(<getal>[,<decimalen>])
len(<string>)
Een getal wordt afgerond op het opgegeven aantal decimalen.
Dit is de lengte van een string en geeft het aantal tekens weer. len("") len("Enter") 0 5
Test deze functies uit in de CLI van Python.
INKIJKEXEMPLAARDIEKEURE
round(15.639)
4.2 Module: verzameling van functies
Niet alle functies zijn zomaar beschikbaar. Voor sommige functies moet je een module importeren om die te kunnen gebruiken.
Module FunctieBetekenis
mathsqrt(<getal>)Dit berekent de vierkantswortel van een getal. randomrandom()Dit geeft een willekeurig float getal tussen 0 en 1, met 0 inbegrepen. randintrandint(<getal1>, <getal2>)
Voorbeelden
>>> import math
>>> math.sqrt(9)
3.0
>>> math.sqrt(256.0)
16.0
>>> math.sqrt(1050.569)
32.41248216351225
Dit geeft een willekeurig integer getal gelegen tussen getal1 en getal2, met de grenzen inbegrepen.
Maak een programma dat de wortels berekent van een vierkantsvergelijking: ax² + bx + c = 0.
Analyse
Wat moet er ingevoerd worden?
Waarde Type a integer b integer c integer
Wat moet er berekend worden?
- De discriminant: d = b² - 4ac
- De wortels x = –b± d 2a of een tekst in het geval dat d < 0 is
Wat moet er uitgevoerd worden? de wortel(s) of een tekst
Algoritme
INKIJKEXEMPLAARDIEKEURE
lees a lees b lees c bereken de discriminant ja nee bereken wortel1 bereken wortel2 schrijf wortel1 en wortel2 ja nee bereken wortel schrijf wortel schrijf er zijn geen reële wortels discriminant > 0 discriminant == 0
Programma
Testen
Test het programma uit met de volgende waarden.
Vul het resultaat aan in de tabel.
abcresultaat (uitvoer)
14-5 242
INKIJKEXEMPLAARDIEKEURE
4.3 Zelf functies maken
Je kunt ook zelf functies maken.
Enkele afspraken
De naam van een functie:
- bestaat uit alleen letters, cijfers en underscores; - start niet met een cijfer; - bestaat uit alleen kleine letters; - omschrijft wat de functie doet.
Definiëren van een functie: def functienaam([<argumentenlijst>]): opdrachtenblok
Functie met terugkeerwaarde eindigt met: return terugkeerwaarde
Oproepen van een functie: functienaam([<argumentenlijst>])
Probleemstelling
Schrijf een programma dat een gebruiker naar zijn leeftijd vraagt en laat weten in welk jaar die 100 jaar wordt. Maak een functie om het jaartal te bepalen.
Analyse
Wat moet er ingevoerd worden?
Waarde Type leeftijd integer huidig_jaar integer verjaard string
Wat moet er berekend worden?
- Hoe bereken je het jaar waarop de gebruiker 100 jaar wordt?
- Met wat moet je rekening houden?
INKIJKEXEMPLAARDIEKEURE
Wat moet er uitgevoerd worden? het jaar waarop de gebruiker 100 jaar wordt
Algoritme
lees leeftijd
lees huidig_jaar lees verjaard
bereken het jaar waarop de gebruiker 100 wordt ja nee jaar = jaar - 1 schrijf jaar verjaard == "nee"
INKIJKEXEMPLAARDIEKEURE
Programma
Programma invoeren
Programma uitvoeren
In de functie worden hier andere namen voor variabelen gebruikt dan in het programma. Dit is niet verplicht. Het is om aan te geven dat het over verschillende variabelen gaat. De variabele "jaar" in de functie is een ander geheugenvakje dan de variabele "eeuweling" in het programma.
Testen
Test het programma uit voor jezelf en voor anderen zoals je vrienden, familieleden …
4.3.1 Hoger lager
Probleemstelling
Speel je mee? Het spelletje gaat als volgt: de computer denkt aan een willekeurig getal tussen 0 en 10 en jij probeert het te raden. De computer kan drie mogelijke antwoorden geven: gewonnen, hoger of lager. Maak dit programma.
INKIJKEXEMPLAARDIEKEURE
Analyse
Wat moet er ingevoerd worden? Waarde
getal
Wat moet er bepaald worden? het zoekgetal
Wat moet er uitgevoerd worden? - gewonnen, hoger of lager - het zoekgetal
Algoritme
bepaal het zoekgetal lees getal ja
getal == zoekgetal
getal < zoekgetal
schrijf gewonnen ja nee
schrijf hoger
schrijf zoekgetal
schrijf lager
Programma
Programma invoeren
Programma uitvoeren
Testen
Geef de volgende testgegevens in het programma en noteer het resultaat.