MODULE ALGORITMISCH DENKEN
PYTHON
MET
2e GRAAD
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!
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
Ingebouwde functies in Python: int, float, str, abs, round, len, sqrt, random, randit
• Zelf functies maken in Python
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.
ALGORITMISCH DENKEN MET PYTHON 2
3 ENTER ALGORITMEN: WAT EN HOE? 4 HOOFDSTUKKEN 1 MIJN EERSTE PROGRAMMA 11 2 ONDER DE MOTORKAP 18 3 HET LEVEN BESTAAT UIT KIEZEN 30 4 PROGRAMMEREN IS RECYCLEREN 40 5 NOG EEN RONDJE BIJ 48 FOUTEN - PROBLEMEN 58 OEFENINGEN 60 STUDIEWIJZER 70 APPLY TEKENINGEN IN PYTHON 71
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
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
ALGORITMISCH DENKEN MET PYTHON 4
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.
Een algoritme is niet meer dan een aantal willekeurige stappen die je volgt om een bepaald doel te bereiken.
Een algoritme is een set regels in een niet bepaalde volgorde om een probleem op te lossen.
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 juist fout juist fout
Even doordenken
Een algoritme is een eindige reeks instructies die vanuit een gegeven begintoestand naar een beoogd doel leidt.
Een algoritme is een lijstje met instructies die een vaste volgorde beschrijft en bepaalt hoe je een probleem oplost.
juist fout juist fout 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.
5
Ontwerp een gebouw
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.
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.
ALGORITMISCH DENKEN MET PYTHON 6
Rooster
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.
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.
Het melkmeisje, Johannes Vermeer
© Mieke van Doorn
© Mieke van Doorn
© Mieke van Doorn Kubistisch, geometrische Met zo veel mogelijk Met zo weinig mogelijk vlakken geometrische vormen geometrische vormen, met behoud van de essentie van de compositie van het schilderij
7
Decompositie
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
Decompositie kom je heel vaak tegen.
Scan de code voor nog meer voorbeelden …
ALGORITMISCH DENKEN MET PYTHON 8
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.
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.
Ga 'n' keer één blokje naar rechts. Je kan dit ook doen met de andere pijltjes. n ( )
n
Algoritme
Voer 'n' keer de combinatie tussen de haakjes uit.
> rij 1: > rij 2: > rij 3: > rij 4: Gebouw in het rooster
9
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 bovenlaag 5e verdieping 5e verdieping 4e verdieping 4e verdieping 3e verdieping 3e verdieping 2e verdieping 2e verdieping 1e verdieping 1e verdieping gelijkvloerse verdieping 20 rij 2 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.
ALGORITMISCH DENKEN MET PYTHON 10
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?
11
> 1 MIJN EERSTE PROGRAMMA I N V O E R U I T V O E R V E R W E R K I N G >>> print("Mijn eerste programma!") Mijn eerste programma!
1.1 Van Scratch naar Python
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
ALGORITMISCH DENKEN MET PYTHON 12
I N V O E R
V E R W E R K I N G U I T V O E R
Scratch Python
>>> print("Mijn eerste programma!")
(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
13
De Command Line Interface (CLI) wordt geopend.
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.
ALGORITMISCH DENKEN MET PYTHON 14
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
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.
15
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
ALGORITMISCH DENKEN MET PYTHON 16
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.
17
MOTORKAP
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.
ALGORITMISCH DENKEN MET PYTHON 18
2
1 > 6
ONDER DE
5 m 2 m
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:
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? Welke verbeteringen zou je aan het programma willen aanbrengen?
19
> >>> print((5*2)/7) * 2 >>> print((5*2)/7) * 2 2.85714285714 >>>
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.
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
Een variabele heeft een naam zodat je meteen de waarde terugvindt. Er bestaan geen twee variabelen met dezelfde naam.
ALGORITMISCH DENKEN MET PYTHON 20
Vakje in een opbergsysteem of locker in een pakjesautomaat
Variabele nummer naam inhoud waarde
© Deschuyffeleer
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
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
Naam variabele Waarde Toekenning weekdag donderdag weekdag = "donderdag" breedte 5 breedte = 5 btw 0.21 btw = 0.21 getal1 10 getal1 = 10 getal2 7 getal2 = 7 som 17 som = getal1 + getal2
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.
Type Betekenis
Voorbeelden integer (int)
Dit is een geheel getal, een getal zonder cijfers na de komma dat positief, negatief, of nul kan zijn. 1000 -5 0 float (float)
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.
"" "Hallo" "9000"
5.0 3.658 -153.26 string (str)
21
! TIP
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
2.1.4
Operatoren
Rekenkundige operatoren
Met rekenkundige operatoren kan je bewerkingen met getallen uitvoeren. De rekenkundige operatoren staan in stijgende prioriteit.
Operator
Expressie Waarde + optellen 5 + 6 2.5 + 3.8 11 6.3 - aftrekken 5 – 6 -1 * vermenigvuldigen 5 * 6 30 / delen 15 / 3 20 / 3 5.0 6.6666666667 ** machtsverheffing of exponent 2**3 8 // het quotiënt na een integer of gehele deling 15 // 3 20 // 3 5 6
Betekenis
% de rest na een integer of gehele deling (= modulo of restberekening) 15 % 3 20 % 3 0 2
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.
Expressie
Waarde
Type 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
ALGORITMISCH DENKEN MET PYTHON 22
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 Betekenis Expressie Waarde
+ 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 "K" * 3 2 * "pa" "KKK" "papa"
Nog voorbeelden
Expressie Variabele Waarde Type
prijs = 100.0 aantal = 5 totaalprijs = prijs * aantal
prijs aantal totaalprijs
100.0 5 500.0
float integer float getal = 5 getal = getal + 1 getal getal 5 6 integer integer
De expressie en de variabele zijn gegeven. Vul de waarde en het type verder aan in de tabel.
Expressie
Variabele Waarde Type
verbruik = 8 prijs_benzine = 1.73 afstand = 500 kostprijs = (prijs_benzine * verbruik * afstand) / 100
verbruik prijs_benzine afstand kostprijs
8 integer teller = 1 teller = teller + 1 teller teller som = 0 som = som + 30 som = som + 50
som som som aantal = 30 aantal = aantal / 2 aantal aantal woord1 = "programmeren" woord2 = "is" woord3 = "fijn" zin = woord1 + " " + woord2 + " " + woord3
woord1 woord2 woord3 zin
23
2.1.5
Invoer en uitvoer
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)
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)
ALGORITMISCH DENKEN MET PYTHON 24
Test het programma uit met de volgende waarden. Vul het resultaat aan in de tabel.
getal1 getal2 resultaat (uitvoer) 5 7
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) 7 int(8.1) 8 int("15") 15 int("20.5") foutmelding float(10) 10.0 float("3.1415") 3.1415 str(5) "5" str(12.6) "12.6"
Int("20.5") geeft een foutmelding omdat wat tussen de aanhalingstekens een float is en geen integer.
25
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)
Test het programma uit met de volgende waarden. Vul het resultaat aan in de tabel.
getal1 getal2 resultaat (uitvoer) 5 7
Klopt het resultaat? ja nee
In deze illustratie staan de datatypes en functies die je al kent in Python.
TIP
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.
ALGORITMISCH DENKEN MET PYTHON 26
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 rood commentaar paars functies (print, input, type, int, float, str) groen tekst (= string) zwart variabele oranje gereserveerd woord van 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. breedte_ kamer hoogte_ kamer dekking lagen liter_pot aantal_potten
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.
27
10
5 2
2 7 6 3 9 2 7
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
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.
Gewone deling
lees aanwezigen lees aantal_gekocht per_persoon = int(aantal_gekocht / aanwezigen) rest_snoepen = aantal_gekocht – per_persoon * aanwezigen schrijf per_persoon schrijf rest_snoepen
Gehele deling
lees aanwezigen lees aantal_gekocht per_persoon = aantal_gekocht // aanwezigen rest_snoepen = aantal_gekocht % aanwezigen schrijf per_persoon schrijf rest_snoepen
ALGORITMISCH DENKEN MET PYTHON 28
Programma
Gewone deling
Gehele deling
Testen
Wat is het resultaat bij de volgende ingevoerde waarden? aanwezigen aantal_gekocht per_persoon rest_snoepen 10 65 7 103
29