2e GRAAD
MODULE
ALGORITMISCH DENKEN MET PYTHON
2
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!
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.
3
ENTER
ALGORITMEN: WAT EN HOE?
...........................................................................................................................................
4
HOOFDSTUKKEN
1
MIJN EERSTE PROGRAMMA
2
ONDER DE MOTORKAP
3
HET LEVEN BESTAAT UIT KIEZEN
4
PROGRAMMEREN IS RECYCLEREN
5
NOG EEN RONDJE BIJ
FOUTEN - PROBLEMEN OEFENINGEN
...........................................................................................................................
......................................................................................................................................................
...................................................................................
18
30
.........................................................................
40
..........................................................................................................................................................
48
...........................................................................................................................................................................
..........................................................................................................................................................................................................................................
STUDIEWIJZER
11
58
60
..............................................................................................................................................................................................................................
70
APPLY
TEKENINGEN IN PYTHON
.................................................................................................................................................................
71
11
1 MIJN EERSTE PROGRAMMA
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? >
_____________________________________________________________________________________________________________________________________________________________________________________________
________________________________________________________________________________________________________________________________________________________________________________________________
________________________________________________________________________________________________________________________________________________________________________________________________
I N V O E R
>>> print("Mijn eerste programma!")
V E R W E R K I N G
U I T V O E R
Mijn eerste programma!
12
ALGORITMISCH DENKEN MET PYTHON
1.1 Van Scratch naar Python Scratch I N V O E R
Python
>>> print("Mijn eerste programma!")
V E R W E R K I N G U I T V O E R
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
13
1.3 Een programma uitvoeren in Python 1.3.1 Starten met Python 1 2
Surf naar https://www.python.org. 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
.
14
ALGORITMISCH DENKEN MET PYTHON
De Command Line Interface (CLI) wordt geopend.
Na de drie pijltjes (>>>) kan je commando's invoeren om ze daarna te laten uitvoeren.
Enter
5
een Pythoncommando en druk op
.
Je ziet meteen de uitvoer van het commando. Zo kan je Pythoncommando's testen.
15
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.
3
op File - New File.
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.
16
ALGORITMISCH DENKEN MET PYTHON
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.
17
1.3.3 Een programma uitvoeren 1
2
op Run - Run Module of op
.
Het programma wordt uitgevoerd en de uitvoer verschijnt in de Python Shell.
18
ALGORITMISCH DENKEN MET PYTHON
2 ONDER DE MOTORKAP 1>6 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. 5m
2m
19
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:
>>> print((5*2)/7) * 2
Testen Je test altijd of je programma goed werkt. Dit programma bestaat hier uit één regel en kan je meteen in de CLI uittesten:
>>> print((5*2)/7) * 2 2.85714285714 >>>
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? >
_____________________________________________________________________________________________________________________________________________________________________________________________
________________________________________________________________________________________________________________________________________________________________________________________________
________________________________________________________________________________________________________________________________________________________________________________________________
20
ALGORITMISCH DENKEN MET PYTHON
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
© Deschuyffeleer
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. waarde 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.
21
! TIP
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.
5.0 3.658 -153.26
string (str)
Dit is tekst die bestaat uit geen of meerdere tekens en staat altijd tussen dubbele aanhalingstekens.
"" "Hallo" "9000"
22
ALGORITMISCH DENKEN MET PYTHON
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
Betekenis
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
%
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
23
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
integer
prijs_benzine
_____________________________
_____________________________
afstand = 500
afstand
_____________________________
_____________________________
kostprijs = (prijs_benzine * verbruik * afstand) / 100
kostprijs
_____________________________
_____________________________
teller = 1
teller
_____________________________
_____________________________
teller = teller + 1
teller
_____________________________
_____________________________
som = 0
som
_____________________________
_____________________________
som = som + 30
som
_____________________________
_____________________________
som = som + 50
som
_____________________________
_____________________________
aantal = 30
aantal
_____________________________
_____________________________
aantal = aantal / 2
aantal
_____________________________
_____________________________
woord1 = "programmeren"
woord1
_____________________________
_____________________________
woord2 = "is"
woord2
_____________________________
_____________________________
woord3 = "fijn"
woord3
_____________________________
_____________________________
zin
_____________________________
_____________________________
verbruik = 8 prijs_benzine = 1.73
zin = woord1 + " " + woord2 + " " + woord3
_____________________________
24
ALGORITMISCH DENKEN MET PYTHON
2.1.5 Invoer en uitvoer INVOER
In een programma voer je eerst de gegevens of de waarden in. Het programma voert vervolgens de verschillende bewerkingen uit.
VERWERKING UITVOER
Hierna verschijnt het resultaat op het scherm.
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: Mathilde
naam = "Filip" print("Naam:", naam)
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
Uitvoer
voornaam = input("Geef je voornaam in: ") familienaam = input("Geef je familienaam in: ") print(voornaam, familienaam)
Geef je voornaam in: Ben Geef je familienaam in: Verdickt Ben Verdickt
korting = input("Wat is de korting? ") print("De korting bedraagt", korting, "%.")
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)
25
Test het programma uit met de volgende waarden. Vul het resultaat aan in de tabel. getal1
getal2
5
7
Klopt het resultaat?
ja
resultaat (uitvoer) ___________________________________________________
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.
26
ALGORITMISCH DENKEN MET PYTHON
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
5
7
Klopt het resultaat?
ja
resultaat (uitvoer) ___________________________________________________
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.
TIP
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.
27
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
5
2
10
2
7
6
3
9
2
7
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.
28
ALGORITMISCH DENKEN MET PYTHON
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
Gehele deling
lees aanwezigen
lees aanwezigen
lees aantal_gekocht
lees aantal_gekocht
per_persoon = int(aantal_gekocht / aanwezigen)
per_persoon = aantal_gekocht // aanwezigen
rest_snoepen = aantal_gekocht – per_persoon * aanwezigen
rest_snoepen = aantal_gekocht % aanwezigen
schrijf per_persoon schrijf rest_snoepen
schrijf per_persoon schrijf rest_snoepen
29
Programma Gewone deling
Gehele deling
Testen Wat is het resultaat bij de volgende ingevoerde waarden? aanwezigen
aantal_gekocht
10
65
7
103
per_persoon
rest_snoepen
__________________________________________
__________________________________________
__________________________________________
__________________________________________
58
ALGORITMISCH DENKEN MET PYTHON
FOUTEN - PROBLEMEN
Tijdens het programmeren zal je af en toe fouten maken. Er zijn twee soorten fouten: - Logische fouten Er zit een fout in je analyse, in de oplossing van het probleem. Dit ontdek je bij het debuggen. - Syntactische fouten Dit is een fout in de grammatica van de programmeertaal. Je krijgt een foutmelding bij het uitvoeren van het programma. We bespreken enkele veelvoorkomende syntactische fouten.
Variabele niet gekend Mogelijke fouten: - Je hebt een typfout gemaakt. - Je hebt nog geen waarde toegekend aan de variabele. De variabele is nog niet gebruikt in je programma. Voorbeeld
Typeconversie fout Je probeert een datatype te converteren naar een ander type, maar dit lukt niet. De ingegeven waarde kan niet omgezet worden naar het gewenste type. Voorbeeld
Foutmelding bij 256,36 → De komma in een decimaal getal geef je in als een punt.
59
Nog een voorbeeld
Foutmelding bij int("7.5") → Het getal 7,5 is een decimaal getal en geen geheel getal.
Fout in toekenning Voorbeeld
Wanneer je een waarde toekent aan een variabele, dan staat de variabele altijd links en de waarde ervan komt na het gelijkheidsteken.
Syntaxfout bij het gebruik van specifieke taalelementen Voorbeeld
for teller in range (5) print ("teller") Je bent het dubbelpunt vergeten.
→ for teller in range(5): print ("teller")
60
ALGORITMISCH DENKEN MET PYTHON
OEFENINGEN
Moeilijkheidsgraad van een oefening Makkelijk
Gemiddeld
Moeilijk
Opeenvolging of sequentie Berekeningen in een programma ( zie p. 18 t.e.m. 29)
1
Programma
1
Wat wordt er in dit programma berekend? >
2
____________________________________________________________________________________________________________________________________
Kan je een betere naam geven voor de variabelen? Vul aan. Variabele
Naam
x
___________________________________________________________________________________________
y
___________________________________________________________________________________________
a
___________________________________________________________________________________________
b
___________________________________________________________________________________________
61
Variabelen en hun waarden ( zie p. 18 t.e.m. 29)
2
Het is belangrijk om de waarden van de variabelen in je programma te weten. Voor complexere programma's is dit niet eenvoudig. Het is dan aan te raden om een tabel te maken waar je per opdracht de waarden van de variabelen bijhoudt. Je ziet dan meteen als er een foutje is ingeslopen. Dat is ook een vorm van debuggen van je programma. Programma
Testen Test het programma uit. 1
Wat zijn de waarden van de variabelen bij de verschillende opdrachten? Vul de tabel verder aan.
Opdracht
Waarde nadat de opdracht is uitgevoerd eerste
tweede
derde
eerste = 2
2
tweede = 3
2
3
_____________________
_____________________
_____________________
_____________________
_____________________
_____________________
_____________________
_____________________
_____________________
_____________________
_____________________
_____________________
derde = eerste * tweede tweede = derde - eerste eerste = eerste + tweede + derde derde = tweede * eerste
2
Wat zijn de laatste waarden voor de variabelen 'eerste', 'tweede' en 'derde'? Vul aan.
eerste = ________________________
tweede = ________________________
derde = ________________________
Wat doet het programma? ( zie p. 18 t.e.m. 29)
3
Programma
Wat gebeurt er in dit programma?
62
ALGORITMISCH DENKEN MET PYTHON
In de juiste volgorde ( zie p. 18 t.e.m. 29)
4
Je hebt deelgenomen aan twee wielerwedstrijden en wilt graag je gemiddelde snelheid berekenen. Zet de opdrachtregels van het programma in de juiste volgorde. Nummer van 1 tot 4.
totale_afstand = afstand_rit1 + afstand_rit2 print(gemiddelde_snelheid) totale_tijd = tijd_rit1 + tijd_rit2 gemiddelde_snelheid = totale_afstand / totale_tijd
Temperatuur ( zie p. 18 t.e.m. 29)
5
Er bestaan verschillende temperatuurschalen. Wij gebruiken de schaal van Celsius. De Amerikanen gebruiken de schaal van Fahrenheit. Ben je benieuwd hoe warm of koud het is in Amerika? Maak een programma dat de temperatuur in graden Celsius omzet naar een temperatuur in graden Fahrenheit. Bewaar je bestand:
oplCelsius_Fahrenheit.
Wat is de formule om graden Celsius om te zetten in graden Fahrenheit? F = ________________________________________________
Afstand tussen twee meetkundige figuren ( zie p. 18 t.e.m. 29)
6
De afstand tussen twee meetkundige figuren is de lengte van het kortste verbindingslijnstuk tussen die figuren. De afstand tussen de punten A en B is de lengte van het lijnstuk AB. Je kunt de afstand noteren als d(AB) met de d van afstand. Voor de punten A(xA,yA) en B(xB,yB) is de afstand tussen A en B gelijk aan: d(AB) =
(xB – xA)2 + (yB – yA)2
Maak een programma om de kortste afstand tussen twee punten bepaalt. Bewaar je bestand:
oplAfstand_tweepunten.
63
Keuze of selectie Meerderjarig (zie p. 30 t.e.m. 39)
7
In België ben je vanaf 18 jaar volwassen of meerderjarig. Maak een programma dat het geboortejaar van iemand inleest. Als deze persoon dit jaar 18 wordt of ouder dan 18 is, verschijnt er "Proficiat, je bent meerderjarig!" Bewaar je bestand:
oplMeerderjarig.
Het resultaat van een programma ( zie p. 30 t.e.m. 39)
8
Programma
Testen Test het programma uit met de volgende getallen. Vul de tabel aan. getal1
getal2
1
1
5
5
10
1
1
10
getal3 ______________________________________________
______________________________________________
______________________________________________
______________________________________________
Onweer ( zie p. 30 t.e.m. 39)
9
Bepaal hoe ver de bliksem van jou is verwijderd. Tel het aantal seconden tussen het zien van de bliksem en het horen van de donder. Het geluid verplaatst zich met een snelheid van 343 meter per seconde. Elke 3 seconden is ongeveer een afstand van 1 km. Als het onweer nog meer dan 5 km ver is, loop je naar een veilige plaats. Anders ga je best op de grond liggen. Bewaar je bestand:
oplOnweer.
64
ALGORITMISCH DENKEN MET PYTHON
Graad van verdienste ( zie p. 30 t.e.m. 39)
10
Maak een programma dat het eindresultaat van je rapport inleest en op basis daarvan je graad van verdienste weergeeft. - geslaagd op voldoende wijze: een gewogen percentage van minder dan 68% - geslaagd met onderscheiding: een gewogen percentage van minstens 68% - geslaagd met grote onderscheiding: een gewogen percentage van minstens 77% - geslaagd met grootste onderscheiding: een gewogen percentage van minstens 85% Bewaar je bestand:
TIP
oplGraad_van_verdienste.
Werk van klein naar groot en vermijd dubbele voorwaarden.
Aanmelden ( zie p. 30 t.e.m. 39)
11
Maak een programma dat een gebruikersnaam en een wachtwoord opvraagt. Als beide matchen dan verschijnt het bericht: "Je krijgt toegang!" en anders "Verboden toegang!". Je mag zelf de gebruikersnaam en het wachtwoord bepalen. Bewaar je bestand:
oplAanmelden.
Het kleinste getal ( zie p. 30 t.e.m. 39)
12
Maak een programma dat het kleinste getal van 3 getallen bepaalt. Bewaar je bestand:
opl_Kleinste_getal.
Schrikkeljaar ( zie p. 30 t.e.m. 39)
13
Maak een programma dat van een ingelezen jaartal nagaat of het een schrikkeljaar is of niet. Zoek op wanneer een jaar een schrikkeljaar is. Noteer het antwoord hieronder. > _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ Bewaar je bestand:
oplSchrikkeljaar.
65
Functies Positief, negatief of nul ( zie p. 40 t.e.m. 47)
14
Maak een programma dat een geheel getal inleest en bepaalt of het positief, negatief of nul is. Gebruik een functie om dit op te lossen. Welke functie gebruik je? ________________________ Bewaar je bestand:
oplPos_neg_nul.
Dollar ( zie p. 40 t.e.m. 47)
15
Maak een programma met een functie die een bedrag in euro omzet naar een bedrag in dollar en afrondt op 2 cijfers na de komma. 1
Wat is de huidige koers? 1 dollar = ________________________ euro
2
Welke functie gebruik je om af te ronden? ________________________________________________
Bewaar je bestand:
oplDollar.
Seconden ( zie p. 40 t.e.m. 47)
16
Geef in een programma de tijd in uur, minuten en seconden in. Schrijf een functie dat deze tijd omzet naar een tijd in seconden. Bijvoorbeeld Tijd: 13:53:34 Totaal aantal seconden: 50014 Bewaar je bestand:
oplSeconden.
Testen Noteer enkele testwaarden en het resultaat in de tabel. uur
minuten
seconden
resultaat (uitvoer)
________________________
________________________
________________________
________________________________________________
________________________
________________________
________________________
________________________________________________
________________________
________________________
________________________
________________________________________________
66
ALGORITMISCH DENKEN MET PYTHON
Herhaling of iteratie Oneindige lus ( zie p. 48 t.e.m. 57)
17
Welke onderstaande code(s) geeft een oneindige lus, een lus die niet eindigt? Kruis aan.
Omtrek van de aarde ( zie p. 48 t.e.m. 57)
18
Maak een programma dat berekent hoe vaak je een sigarettenpapier (0,1 mm) moet dubbelvouwen om de omtrek van de aarde te krijgen. Elke keer je een sigarettenpapier dubbelvouwt, dan verdubbelt de dikte. De omtrek van de aarde is 40 000 km. 1
Schat op voorhand! Ik denk ________________________ keer.
2
Hoeveel mm is 40 000 km? ________________________________________________
3
Hoeveel keer moet je het sigarettenpapier dubbelvouwen om de omtrek van de aarde te bereiken? ________________________________________________
Bewaar je bestand:
oplOmtrek_aarde.
Het getal raden (zie p. 48 t.e.m. 57)
19
Nu je herhaling kent, kan je het spel hoger lager spelen tot het getal geraden is. Schrijf een programma waarin de computer een willekeurig getal tussen 1 en 10 bepaalt. De gebruiker geeft getallen in tot het het juiste getal geraden is. Na elke invoer verschijnt: "Gevonden in ... pogingen" of "Hoger" of "Lager". Gebruik de functie die gemaakt is op pagina 47. Je zal die functie wel moeten aanpassen. Het programma moet weten of het getal gevonden is: ja of nee. De functie heeft dus een terugkeerwaarde nodig. Gebruik een Booleaanse variabele "Gevonden" om te bepalen of het programma moet stoppen of niet. Bewaar je bestand:
oplGetal_raden.
67
De lengte van een string ( zie p. 48 t.e.m. 57)
20
In Python bestaat een ingebouwde functie om de lengte van een string te bepalen. Dit is een heel eenvoudig algoritme. Maak zelf een functie om de lengte van een string te bepalen. Bewaar je bestand:
oplLengte_string
Vermenigvuldigingstafel ( zie p. 48 t.e.m. 57)
21
Lees een getal in. Maak een programma dat een getal inleest en vervolgens de vermenigvuldigingstafel van dat getal uit te voeren. Het programma geeft de onderstaande output (uitvoer).
Bewaar je bestand:
oplVermenigvuldigingstafel.
Wat is het resultaat? ( zie p. 48 t.e.m. 57)
22
Programma
Wat is het resultaat van het programma? > _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________
68
ALGORITMISCH DENKEN MET PYTHON
Driehoeksgetal ( zie p. 48 t.e.m. 57)
23
Schrijf een programma dat een getal opvraagt en de som berekent van dit getal met alle voorgaande getallen. Voorbeeld: getal = 4, driehoeksgetal met basis 4 is 1 + 2 + 3 + 4 = 10 Bewaar je bestand:
oplDriehoeksgetal.
Faculteit (zie p. 48 t.e.m. 57)
24
Schrijf een programma dat een getal opvraagt en de faculteit ervan berekent. Zorg dat de uitzondering 0! wordt opgevangen. Bewaar je bestand:
oplFaculteit.
De grootste lengte ( zie p. 48 t.e.m. 57)
25
Maak een list met daarin de lengte van de leerlingen van de klas. Plaats de lengtes van de leerlingen in de list volgens hun klasnummer. Schrijf een programma dat de grootste lengte als resultaat heeft. Voorbeeld list:
[1.56, 1.86, 1.69, 1.84, 1.72, 1.65, 1.94, 1.78, 1.72, 1.83] Bewaar je bestand:
oplGrootste_lengte.
Fibonacci ( zie p. 48 t.e.m. 57)
26
Maak een programma dat een getal inleest. Dit getal is de positie in de rij waarvan je het Fibonaccigetal moet berekenen. Voorbeeld: g etal = 15 15e Fibonaccigetal = 610 Herwerk het programma van Fibonacci dat op pagina 55 staat. Maak een functie om het zoveelste getal in de Fibonaccirij te berekenen. opgFibonacci
oplFibonacci_herwerkt
69
Letters in een woord ( zie p. 48 t.e.m. 57)
27
Maak een programma dat een woord en een letter inleest. Het programma schrijft hoeveel keer een letter voorkomt in het woord. Bewaar je bestand:
oplLetters.
Grootste gemene deler ( zie p. 48 t.e.m. 57)
28
De grootste gemene deler van twee getallen is het grootste natuurlijke getal dat deler is van beide getallen. Euclides heeft een algoritme gemaakt om de ggd te berekenen. Het algoritme is gebaseerd op het principe dat de grootste gemene deler van twee getallen niet verandert als het kleinere getal van het grotere getal wordt afgetrokken. Zo is 21 de grootste gemene deler van 252 en 105 (252 = 21 × 12, 105 = 21 × 5) maar ook de ggd van 147 (252 - 105) en 105 is gelijk is aan 21. Je kan dit proces steeds herhalen. Je trekt van het grootse getal van twee getallen het kleinste af tot één van de getallen nul wordt. De grootste gemene deler is het resterende getal (dat niet nul is). Maak een programma met daarin een functie die de grootste gemene deler van twee getallen berekent. Bewaar je bestand:
oplGrootste_gemene_deler.
70
ALGORITMISCH DENKEN MET PYTHON
STUDIEWIJZER
Ik heb de leerstof onder de knie.
Ik twijfel nog vaak.
Ik maak nog fouten.
Ik begrijp wat een algoritme is. Ik begrijp wat abstractie is. Ik begrijp wat debuggen is. Ik begrijp wat patronen zijn. Ik kan patronen herkennen in een probleemstelling. Ik begrijp het nut van het opsplitsen van een probleem in kleinere problemen. Ik kan een probleem opsplitsen in kleinere problemen. Ik begrijp het verschil tussen een algoritme en een programma. Ik kan op een gestructureerde manier een probleem omzetten in een oplossing. Ik kan een programma schrijven in Python. Ik kan een programma uitvoeren in Python. Ik begrijp wat variabelen zijn. Ik begrijp wat (data)types zijn. Ik ken de datatypes: integer, float, string en boolean. Ik begrijp wat een list is. Ik begrijp wat een keuze of selectie is. Ik kan een keuze toepassen in een algoritme. Ik kan eenzijdige en tweezijdige keuze uitwerken. Ik begrijp wat een herhaling is. Ik kan een herhaling toepassen in een algoritme. Ik begrijp het verschil tussen een voorwaardelijke en een begrensde herhaling. Ik begrijp wat een functie is. Ik ken enkele ingebouwde functies van Python. Ik kan zelf een functie maken.
71
APPLY Tekeningen in Python Met Turtle (schildpad) kan je leuke tekeningen maken in Python. De schildpad kan vooruit (forward) en achteruit (backward) bewegen of naar rechts (right) of links (left) stappen. Je kan de schildpad ook optillen, neerzetten en verplaatsen. De turtle start in het midden van je scherm op positie (0,0) en kijkt naar rechts. Je start met een eenvoudige tekening: een vierkant.
Je kan het vierkant nu een kleur geven. Op de website https://trinket.io/docs/colors vind je de namen van de kleuren door op een kleurvak te klikken. Hieronder staat enkel het programma om het vierkant een kleur te geven. De functie om een vierkant te tekenen is al gemaakt en staat hierboven.
Tot slot laat je de vierkanten herhalen met een for-loop. De kleur van de rand is random.
Experimenteer met Turtle! Verander het vierkant in een driehoek door het beginpunt te verplaatsen.
Colofon
Auteur Guy Steppe Eerste druk 2022 SO 2022/70 Bestelnummer 90 809 0223 ISBN 978 90 4864 320 2 KB D/2022/0147/70 NUR 126/128/129 - Thema YPMT6 Design en lay-out die Keure Verantwoordelijke uitgever die Keure, Kleine Pathoekeweg 3, 8000 Brugge RPR 0405 108 325 - © die Keure, Brugge
Die Keure wil het milieu beschermen. Daarom kiezen wij bewust voor papier dat het keurmerk van de Forest Stewardship Council® (FSC®) draagt. Dit product is gemaakt van materiaal afkomstig uit goed beheerde, FSC®gecertificeerde bossen en andere gecontroleerde bronnen.
Niets uit deze uitgave mag verveelvoudigd en/of openbaar gemaakt worden door middel van druk, fotokopie, microfilm of op welke wijze ook zonder voorafgaande schriftelijke toestemming van de uitgever. No parts of this book may be reproduced in any form by print, photoprint, microfilm or any other means without written permission from the publisher. De uitgever heeft naar best vermogen getracht de publicatierechten volgens de wettelijke bepalingen te regelen. Zij die niettemin menen nog aanspraken te kunnen doen gelden, kunnen dat aan de uitgever kenbaar maken.