Professional Documents
Culture Documents
Gestructureerd Programmeren
Gestructureerd Programmeren
Gestructureerd Programmeren
Inhoud
1 Inleiding ........................................................................................................................................... 4
1.1 Software .................................................................................................................................. 5
1.2 Leren programmeren ............................................................................................................ 10
1.3 Wat is Gestructureerd Programmeren? ................................................................................ 12
1.4 Hoe gaan we te werk? ........................................................................................................... 13
1.4.1 Flowchart ....................................................................................................................... 14
1.4.2 Pseudocode ................................................................................................................... 15
1.5 Hoe gaat u te werk? .............................................................................................................. 16
2 Sequentie....................................................................................................................................... 17
2.1 “Hello World” ........................................................................................................................ 18
2.2 “Hello, ” naam ....................................................................................................................... 24
2.3 “Hello,” familienaam + voornaam ......................................................................................... 30
2.4 Som ........................................................................................................................................ 35
2.4.1 Functies ......................................................................................................................... 42
2.5 Conversie van Celsius naar Fahrenheit ................................................................................. 44
2.6 Bereken oppervlakte en omtrek van een rechthoek ............................................................ 49
2.7 Bereken de oppervlakte en de omtrek van een cirkel .......................................................... 54
2.8 Tentoonstelling 1 ................................................................................................................... 59
2.9 Factuur 1................................................................................................................................ 64
2.10 Punten ................................................................................................................................... 69
2.11 Verbruik ................................................................................................................................. 74
2.12 Bestelling ............................................................................................................................... 79
2.13 Stringcommando’s in Python ................................................................................................ 84
3 Selectie .......................................................................................................................................... 88
3.1 Boolean expressie.................................................................................................................. 91
3.1.1 Vergelijkingsoperatoren in Python ................................................................................ 91
3.1.2 Logische operatoren in Phyton ..................................................................................... 91
3.1.3 Syntax in Python ............................................................................................................ 92
3.2 Is een getal positief?.............................................................................................................. 93
Inleiding 1
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Inleiding 2
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Inleiding 3
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
1 Inleiding
In deze handleiding leren we Gestructureerd Programmeren.
Maar ik herhaal, de nadruk ligt op het leren programmeren en niet op het leren programmeren in
Python. Dit is een belangrijke nuance die betekent dat ik niet inga op de typische kenmerken en
syntax van de programmeertaal Python. Ik kies Python als programmeertaal omdat het relatief
simpel is om mee aan de slag te gaan en het ook een populaire programmeertaal is, dus een
kennismaking met altijd mooi meegenomen.
Een bijkomend voordeel is dat Python nauw aansluit bij Pseudocode waar ik in deze handleiding
gebruik van maak.
U kunt Python installeren op uw eigen PC (op Moodle deel ik een video hoe u dit kunt doen). Maar
omdat de nadruk ligt op het leren programmeren, en niet op Python, maak ik het me gemakkelijk en
gebruik ik een online tool: https://www.online-python.com/
Inleiding 4
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
1.1 Software
Voor het tekenen van de Stroomdiagram kunt u gebruik maken van de website
app.diagrams.net (het vroegere draw.io).
Inleiding 5
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Inleiding 6
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
U ziet er reeds een voorbeeldje staan, links kunt u de specifieke symbooltjes voor het
Stroomschema selecteren.
Inleiding 7
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
De symbolen kunt u in het diagram slepen en verbinden. Als u een symbool toevoegt kunt u
vanuit dat symbool verdere verbindingen leggen.
U kunt ook verbindingslijnen trekken tussen twee reeds aanwezige symbolen. Zorg dat u een
groen bolletje ziet om de verbinding te verankeren.
Inleiding 8
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Inleiding 9
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Leren programmeren is niet de programmeercode, de oplossing, uit het hoofd leren. Ik wil dit nog
eens extra benadrukken, voor deze handleiding en alle volgende programmeerhandleidingen die u
doorneemt, leer de programmeercode niet uit het hoofd.
Inleiding 10
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
In deze handleiding probeer ik u met vele eenvoudige voorbeelden het “leren programmeren” aan te
leren.
Misschien zegt u op een gegeven ogenblik wel iets als “Ja, nog zo’n oefening, ik heb het nu wel
gehad”. Goed zo, dit betekent dat u structuren herkent, patronen herkent, dan bent u goed op weg
om te leren programmeren.
Sommige van de programmeeropdrachten zullen later in deze cursus terugkomen als opdrachten.
Hou dit document dus bij de hand, als naslagwerk, als inspiratiebron.
Inleiding 11
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Gestructureerd programmeren kan worden gezien als een subdiscipline van procedureel
programmeren, een van de belangrijke programmeerparadigma's voor het programmeren van
computers. De programmeur beperkt zich in dit concept tot de vier basis controlestructuren en past
het concept abstractie consequent toe. Abstractie wil hier zeggen: het vermijden van lange
programmablokken door het veelvuldig toepassen van relatief kleine subroutines.
Inleiding 12
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Bepaal:
Vervolgens wordt het algoritme, stappenplan om via instructies de gevraagde uitvoer te krijgen,
uitgewerkt in een flowchart, Pseudocode en vertaald naar Python.
Inleiding 13
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
1.4.1 Flowchart
Ik geef de code weer als een Flowchart.
Bijvoorbeeld:
Inleiding 14
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
1.4.2 Pseudocode
Pseudocode is geen programmeertaal, het is een eenvoudige manier om instructies structureel en
begrijpelijk te noteren. Het schrijven van pseudocode is echter wel vergelijkbaar met het schrijven
van programmeercode. Iedere stap van het algoritme wordt in volgorde opgeschreven en er is ook
een eenvoudige syntax.
Pseudocode Betekenis
INPUT De gebruiker voert gegevens in en houdt deze gegevens bij in variabelen.
OUTPUT Gegevens worden weergegeven (op het scherm).
IF ... THEN... ELSE ... Een beslissing/Selectie. Als een bepaalde conditie waar is doe dan dit ander
doe dat.
WHILE ... Een lus/iteratie. Zolang een bepaalde conditie waar is doe.
FOR ... Een lus/iteratie. Doe een aantal keer.
REPEAT ... UNTIL ... Een lus/iteratie. Herhaal tot aan een bepaalde conditie voldaan is.
STORE Bewaar een waarde in een variabele (of in een record van een databank).
Een variabele is een voorbehouden locatie in het computergeheugen waar u een waarde kunt
bijhouden/stokkeren voor later hergebruik.
Inleiding 15
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Wat u niet doet is dit document laten liggen, dan op een blauwe maandagavond, zo juist voor het
einde van de cursus, dit in één keer volledig doornemen en denken dat u het kent.
1. Het kan geen kwaad dit document eerst eens volledig door te nemen. Maar daar mag het
niet bij blijven, nadien herneemt u het document.
2. De eerste voorbeeldopdrachten kunt u volledig doornemen, doorlezen in het document om
u vertrouwd te maken met de werkwijze.
3. Na een paar voorbeeldopdrachten gaat u echter meedenken, u leest enkel de opdracht en
probeert zelf te bepalen wat de uitvoer, invoer en de bewerkingen zijn. Ik heb bewust de
opdracht en de verschillende stappen in de uitvoer elk op een eigen pagina gezet, zodat u
niet, per toeval, reeds de oplossing ziet.
4. U vergelijkt uw oplossing met mijn oplossing. Er kunnen kleine verschillen zijn, denk erover
na, wellicht is uw oplossing even goed als de mijne.
5. Vervolgens gaat u de flowchart tekenen, dit kan een snelle schets zijn. Vergelijk uw oplossing
met die van mij. Zijn er verschillen, weet dat er meer dan één oplossing mogelijk is, misschien
is uw oplossing ook een goede oplossing. Denk er over na, twijfelt u, stel de vraag op het
forum en we bespreken dit.
6. Met de flowchart bij de hand, schrijft u de pseudocode uit op basis van uw, correcte,
flowchart.
7. Vervolgens probeert u uw pseudocode te vertalen en te programmeren in Python. Twijfelt u
aan de correcte syntax, neem dan gerust een kijkje naar mijn oplossing.
8. Doet uw programma wat het moet doen, oké, opdracht volbracht. Doet uw programma niet
wat het moet doen keer dan terug naar puntje 3 en probeer te achterhalen wat u mist of
waar het fout loopt. Vindt u de oplossing niet, deel uw foutieve code op het forum en we
bespreken dit.
9. Bijna iedere voorbeeldopdracht bevat wel iets nieuws, lees dus zeker ook mijn oplossing
eens door.
Doe dit niet allemaal in één lange sessie die tot in de nachtelijke uren loopt. Nee, maak regelmatig
een voorbeeldopdracht, 1 of 2 per dag, een half uurtje per dag. Iedere dag gedurende een paar
weken.
Inleiding 16
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
2 Sequentie
De sequentie is een opeenvolging van instructies, de ene na de andere. U leest de instructies van
boven naar beneden (of van links naar rechts zoals in Blueprint Visual Scripting van Unreal Engine).
Invoer
opvragen
Bewerkingen
uitvoeren
Uitvoer
weergeven
Sequentie 17
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Sequentie 18
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Uitvoer
Invoer
Bewerkingen
Opmerking
1. U stelt u steeds eerst de vraag welke uitvoer het programma verwacht. Wat moet het
programma doen?
2. Vervolgens, welke invoer hebt u nodig om de gewenste uitvoer te bekomen.
3. Tenslotte vraagt u zich af welke bewerkingen er moeten gebeuren op de invoer om de
gewenste uitvoer te bekomen.
Bovenstaande volgorde is niet altijd van toepassing. Het kan bijvoorbeeld zijn dat u een formule, een
bewerking, krijgt en dan vertrekt u vanuit deze formule.
Merk ook op dat ik in de vraagstelling een andere volgorde gebruikt dan in het programmeren zelf
waar u meestal:
1. De invoer opvraagt
2. De bewerking uitvoert
3. De uitvoer weergeeft
Sequentie 19
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Sequentie 20
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Pseudocode Python
OUTPUT “Hello World” print("Hello World")
print("Hello World")
Sequentie 21
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Sequentie 22
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Sequentie 23
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Sequentie 24
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Uitvoer
Invoer
Uw naam.
Bewerkingen
Geen bewerkingen.
Sequentie 25
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Sequentie 26
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Pseudocode Python
INPUT naam naam = input("Geef uw naam in: ")
OUTPUT “Hello, ” naam print("Hello, ", naam)
Sequentie 27
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Merk op dat ik in de uitvoer “Hello, Geert” eigenlijk een spatie te veel heb.
De print() functie in Python voegt zelf spaties toe tussen de verschillende delen. U hoeft deze zelf
niet te typen.
De spatie achter de komma binnen "Hello, " moest er dus niet staan. De spatie mag, moet, weg.
print("Hello,", naam)
Sequentie 28
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
In Python, net als in vele, maar niet alle, programmeertalen, zijn namen hoofdlettergevoelig.
Onthoud dit, u zal de fout nog wel een paar keer maken!
Sequentie 29
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Sequentie 30
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Uitvoer
Invoer
familienaam
voornaam
Bewerkingen
Opmerking
Sequentie 31
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Sequentie 32
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Pseudocode Python
INPUT familienaam familienaam = input("Geef uw familienaam in: ")
INPUT voornaam voornaam = input("Geef uw voornaam in: ")
STORE naam = familienaam + " " + voornaam naam = familienaam + " " + voornaam
OUTPUT “Hello,” naam print("Hello, ", naam)
#Invoer
#Bewerking
#Uitvoer
print("Hello,", naam)
Sequentie 33
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Sequentie 34
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
2.4 Som
Tel twee getallen bij mekaar op.
Sequentie 35
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Uitvoer
Invoer
Getal1
Getal2
Bewerkingen
Opmerking
Sequentie 36
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Sequentie 37
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Pseudocode Python
INPUT getal1 getal1 = int(input("Getal 1: "))
INPUT getal2 getal2 = int(input("Getal 2: "))
STORE som = getal1 + getal2 som = getal1 + getal2
OUTPUT som print(getal1, " + ", getal2, " = ", som)
#Invoer
#Bewerking
#Uitvoer
Merk op dat de input geconverteerd wordt naar een geheel getal met de functie int().
int(input("Getal 1: "))
Om te converteren naar een kommagetal (een floating point) gebruikt u de functie float().
float(input("Getal 1: "))
Om een getal om te zetten naar een string (tekst) gebruikt u de functie str().
Sequentie 38
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Sequentie 39
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Later, maar nog niet tijdens deze startercursus, gaan we deze fouten moeten opvangen. Voor nu
laten we deze fouten voor wat ze zijn en gaan we ervan uit dat de gebruiker de correcte waarden
invult.
Sequentie 40
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Omdat we de conversie naar een integer getal, via int(), niet doen worden 7 en 2 niet gezien als een
getal maar als een teken en worden 7 en 2 samengevoegd tot 72 en niet opgeteld!
Sequentie 41
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
2.4.1 Functies
Als u naar de website https://www.online-python.com/ gaat dan ziet u er onderstaande code staan.
return (a + b)
Eigenlijk is dit dezelfde oefening als deze die we net besproken hebben.
return (a + b)
De print wordt iets anders uitgewerkt dan wij tot nu toe gedaan hebben er wordt gewerkt met
placeholders.
sum(a, b)
De a gaat in parameter a en de b gaat in parameter b. Toevallig komen de namen hier overeen maar
dit is geen vereiste.
Het werken met functies is een belangrijke workflow in programmeren en is vooral heel nuttig
wanneer de functie complexere programmeercode bevat die herhaaldelijk hergebruikt moet worden.
Sequentie 42
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Hoewel ik het belang van functies niet genoeg kan onderlijnen, en we er later zeker gebruik gaan van
maken, ga ik ze verder in deze handleiding, op een enkele uitzondering na, niet gebruiken.
Voor de eerder eenvoudige berekeningen die we hier maken zou het gebruik van functies teveel van
het goede zijn en ons eerder afleiden van het doel van deze handleiding, namelijk gestructureerd
programmeren.
Sequentie 43
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Sequentie 44
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Uitvoer
Graden fahrenheit.
Invoer
Graden celsius
Bewerkingen
Sequentie 45
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Sequentie 46
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Pseudocode Python
INPUT celsius celsius = int(input("Geef graden celsius in: "))
STORE fahrenheit = (9/5) * celsius + 32 fahrenheit = (9/5) * celsius + 32
OUTPUT fahrenheit print(celsius, "graden celsius =", fahrenheit,
"graden fahrenheit.")
#Invoer
#Bewerking
#Uitvoer
Sequentie 47
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Sequentie 48
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Sequentie 49
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Uitvoer
Invoer
Bewerkingen
Sequentie 50
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Sequentie 51
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Pseudocode Python
INPUT lengte lengte = float(input("Geef de lengte van de
rechthoek in (cm): "))
INPUT breedte breedte = float(input("Geef de breedte van de
rechthoek in (cm): "))
STORE oppervlakte = lengte * breedte oppervlakte = lengte * breedte
STORE omtrek = 2 * (lengte + breedte) omtrek = 2 * (lengte + breedte)
OUTPUT oppervlakte print("Oppervlakte =", oppervlakte, "cm².")
OUTPUT omtrek print("Omtrek =", omtrek, "cm.")
#Invoer
#Bewerking
#Uitvoer
Sequentie 52
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Sequentie 53
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Sequentie 54
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Uitvoer
Invoer
Bewerkingen
Opmerking
We hebben de waarde van π (pi) nodig. We kunnen deze zelf ingeven namelijk 3.1415927 of we
kunnen deze gaan halen uit de math-bibliotheek van Python.
Een bibliotheek is een verzameling van functies, de math-bibliotheek is een verzameling van
mathematische functies.
Sequentie 55
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Sequentie 56
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Pseudocode Python
IMPORT Math import math
INPUT straal straal = float(input("Geef de straal van de cirkel
in: "))
STORE oppervlakte = straal * straal * π oppervlakte = round(straal * straal * math.pi, 2)
STORE omtrek = 2 * straal * π omtrek = round(2 * straal * math.pi, 2)
OUTPUT oppervlakte print("Oppervlakte =", oppervlakte)
OUTPUT omtrek print("Omtrek =", omtrek)
#Import
import math
#Invoer
#Bewerking
#Uitvoer
Merk op dat de functie round() wordt gebruikt om af te ronden, hier op 2 cijfer na de komma. Pi
wordt uit de bibliotheek math gehaald vandaar math.pi.
Sequentie 57
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Sequentie 58
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
2.8 Tentoonstelling 1
U gaat met uw gezin, of met vrienden, naar een tentoonstelling.
Vraag naar het aantal kinderen, het aantal jongeren en het aantal volwassenen.
Sequentie 59
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Uitvoer
Te betalen inkom
Invoer
Aantal kinderen
Aantal jongeren
Aantal volwassenen
Bewerkingen
PrijsKinderen = 0
PrijsJongeren = Aantal jongeren * 20
PrijsVolwassenen = Aantal volwassenen * 30
Totaal = PrijsJongeren + PrijsVolwassenen
Opmerking
Omdat kinderen niets betalen is het niet echt nodig naar het aantal kinderen te vragen, ik heb het in
dit voorbeeld echter wel gedaan, doet u dit niet dan is dit ook oké.
Sequentie 60
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Sequentie 61
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Pseudocode Python
INPUT AantalKinderen AantalKinderen = int(input("Aantal kinderen
jonger dan 12 jaar: "))
INPUT AantalJongeren AantalJongeren = int(input("Aantal jongeren
tussen 12 en 18 jaar: "))
INPUT AantalVolwassenen AantalVolwassenen = int(input("Aantal
volwassenen (ouder dan 18 jaar): "))
STORE PrijsJongeren = Aantal jongeren * 20 PrijsJongeren = AantalJongeren * 20
STORE PrijsVolwassenen = Aantal volwassenen PrijsVolwassenen = AantalVolwassenen * 30
* 30
STORE Totaal = PrijsJongeren + Totaal = PrijsJongeren + PrijsVolwassenen
PrijsVolwassenen
OUTPUT Totaal print("Inkomprijs =", Totaal)
#Invoer
"))
#Bewerking
PrijsJongeren = AantalJongeren * 20
PrijsVolwassenen = AantalVolwassenen * 30
#Uitvoer
Sequentie 62
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Sequentie 63
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
2.9 Factuur 1
Maak een eenvoudige factuur aan die de prijs exclusief BTW van de factuur en het BTW-percentage
opvraagt en vervolgens de BTW en de prijs inclusief BTW berekent.
Sequentie 64
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Uitvoer
BTW
Prijs inclusief BTW
Invoer
Bewerkingen
Sequentie 65
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Sequentie 66
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Pseudocode Python
INPUT Prijs exclusief BTW PrijsExclusiefBTW = float(input("Geef de prijs
zonder BTW in: "))
INPUT BTW-Percentage BTW_Percentage = float(input("Geef het BTW-
percentage in: "))
STORE BTW = Prijs exclusief BTW / 100 * BTW- BTW = PrijsExclusiefBTW / 100 *
percentage BTW_Percentage
STORE Prijs inclusief BTW = Prijs exclusief BTW PrijsInclusiefBTW = PrijsExclusiefBTW + BTW
+ BTW
OUTPUT BTW print("BTW =", round(BTW, 2), "€.")
OUTPUT Prijs inclusief BTW print("Prijs inclusief BTW =",
round(PrijsInclusiefBTW, 2), "€.")
#Invoer
#Bewerking
#Uitvoer
Sequentie 67
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Sequentie 68
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
2.10 Punten
Schrijf een programma dat de score van drie toetsen op 20 inleest.
Sequentie 69
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Uitvoer
Totaalscore
Gemiddeldescore
Percentage
Invoer
punt1
punt2
punt3
Bewerkingen
Opmerking
Een toets staat op 20 punten en er zijn 3 toetsen, 3 x 20 = 60. Vandaar die 60.
Sequentie 70
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Sequentie 71
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Pseudocode Python
INPUT punt1 punt1 = float(input("Geef punt1 in op 20: "))
INPUT punt2 punt2 = float(input("Geef punt2 in op 20: "))
INPUT punt3 punt3 = float(input("Geef punt3 in op 20: "))
STORE totaalscore= punt1 + punt2 + punt3 totaalscore = punt1 + punt2 + punt3
STORE gemiddeldescore = totaalscore / 3 gemiddeldescore = totaalscore / 3
STORE percentage = Totaalscore / 60 * 100 Percentage = totaalscore / 60 * 100
OUTPUT totaalscore print("Totaalscore =", round(totaalscore, 2))
OUTPUT gemiddeldescore print("Gemiddelde score =",
round(gemiddeldescore, 2))
OUTPUT percentage print("Percentage =", round(Percentage, 2),
"%")
#Invoer
#Bewerking
gemiddeldescore = totaalscore / 3
#Uitvoer
Sequentie 72
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Sequentie 73
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
2.11 Verbruik
Stel, uw wagen verbruikt 4.3 liter benzine per 100 km. Dit is een vast gegeven aangezien u minstens
10 jaar met de wagen wilt rijden.
Sequentie 74
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Uitvoer
Verbruik
Invoer
Bewerkingen
Nu we weten hoeveel het verbruik is per liter kunt u gemakkelijk de prijs berekenen op basis van het
aantal gereden kilometers.
Sequentie 75
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Sequentie 76
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Pseudocode Python
INPUT prijs per kilometer prijsperkilometer = float(input("Geef de
benzineprijs van de tankbeurt in: "))
INPUT aantal kilometers aantalkilometers = float(input("Geef het aantal
gereden kilometers in: "))
STORE verbruik = 4.3 / 100 * aantalkilometers * verbruik = 4.3 / 100 * aantalkilometers *
prijsperkilometer prijsperkilometer
OUTPUT verbruik print("Het verbruik is", round(verbruik, 2), "€.")
#Invoer
in: "))
"))
#Bewerking
#Uitvoer
Sequentie 77
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Sequentie 78
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
2.12 Bestelling
Om de plaatselijke vereniging te helpen bij hun jaarlijkse festiviteit ontwerpen we een
programmaatje dat de bestellingen berekent. Om gemakkelijk te werken zijn er maar een beperkt
aantal bestellingen mogelijk die allen een vaste prijs hebben:
Frisdrank = 2 €
Chips = 1.5 €
Hamburgers = 3 €
Sequentie 79
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Uitvoer
Invoer
Bewerkingen
Sequentie 80
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Ik heb ervoor gekozen de meerdere INPUTs en OUTPUTs samen te nemen, dit om het overzicht te
behouden. Ik had deze ook mogen uitsplitsen zoals ik gedaan heb voor de berekeningen.
Sequentie 81
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Pseudocode Python
INPUT aantalfrisdrank aantalfrisdrank = int(input("Geef het aantal
bestelde frisdranken in: "))
INPUT aantalchips aantalchips = int(input("Geef het aantal bestelde
chips in: "))
INPUT aantalhamburgers int(input("Geef het aantal bestelde hamburgers
in: "))
STORE totaalfrisdrank = aantalfrisdrank * 2 totaalfrisdrank = aantalfrisdrank * 2
STORE totaalchips = aantalchips * 1.5 totaalchips = aantalchips * 1.5
STORE totaalhamburgers = aantalhamburgers * totaalhamburgers = aantalhamburgers * 3
3
STORE totaalbestelling = totaalfrisdrank + totaalbestelling = totaalfrisdrank + totaalchips +
totaalchips + totaalhamburgers totaalhamburgers
OUTPUT totaalfrisdrank print("Totaal bestelde frisdranken =",
totaalfrisdrank)
OUTPUT totaalchips print("Totaal bestelde chips =", totaalchips)
OUTPUT totaalhamburgers print("Totaal bestelde hamburgers =",
totaalhamburgers)
OUTPUT totaalbestelling print("Totaal bestelling =", totaalbestelling)
#Invoer
"))
"))
#Bewerking
totaalfrisdrank = aantalfrisdrank * 2
totaalhamburgers = aantalhamburgers * 3
#Uitvoer
Sequentie 82
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Sequentie 83
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
print(Tekst)
print("Lengte:", len(Tekst))
Tekst = Tekst.upper()
Sequentie 84
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Sequentie 85
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Een string is een tekenreeks, een lijst van tekens, of in het jargon van de programmeurs een array
(hoewel Python hier een uitzondering op is en enkel spreekt van een lijst en niet van een array).
U kunt dan ook een string behandelen als een geïndexeerde lijst van tekens die begint bij 0, het
eerste teken van de string heeft dus de index 0.
Sequentie 86
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Sequentie 87
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
3 Selectie
In het dagelijks leven doen we het constant, beslissingen nemen. Als een bepaalde conditie vervult
is dan… anders…. Als het regent dan nemen we de auto anders gaan we per fiets.
In een computerprogramma is het niet anders. Ook hier zullen heel vaak beslissingen genomen
dienen te worden. De beslissingen worden genomen naargelang de uitkomst van
een vergelijking (een conditie) waar is of onwaar is. Is deze vergelijking waar, dan gaat het
programma de Waar-kant uit, anders, de vergelijking is onwaar, dan gaat het de Onwaar-kant uit.
Beslissingen worden genomen door middel van programmeercode gebruikmakend van Conditional
Statements.
Selectie 88
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Selectie 89
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Selectie 90
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
De beslissing bestaat uit een conditie/vergelijking en is ene booleaanse expressie. De uitkomst van
de vergelijking is dus ofwel Waar (true) ofwel Onwaar (false).
Een conditie kan ook uit meerdere vergelijkingen bestaan. Meerdere vergelijkingen worden aan
mekaar verbonden door logische operatoren.
Selectie 91
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
elif conditie2:
else:
Merk de : op!
De insprong van de acties is nodig (en niet optioneel) in Python.
Selectie 92
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Als het getal groter dan of gelijk is aan 0 dan wordt de tekst “Getal is positief” getoond.
Selectie 93
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Uitvoer
“Positief”
Invoer
Getal
Bewerkingen
Selectie 94
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Selectie 95
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Pseudocode Python
INPUT getal int(input("Geef een getal in:"))
IF getal >= 0 THEN if getal >= 0:
OUTPUT “Positief” print(getal, "is positief.")
#Invoer
#Bewerking
if getal >= 0:
#Uitvoer
Selectie 96
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Selectie 97
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Selectie 98
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Let op, de insprong is essentieel voor Python, laat u deze weg dan krijgt u een foutmelding
“IdentationError: expected an indented Block”.
Selectie 99
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Als het getal groter dan of gelijk is aan 0 dan wordt de tekst “Getal is positief” getoond anders
verschijnt de tekst “Getal is negatief”.
Selectie 100
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Uitvoer
“Positief”
“Negatief”
Invoer
Getal
Bewerkingen
Opmerking
Deze opdracht is een uitbreiding van de vorige opdracht, u kunt dus de vorige oplossing als basis
nemen, patroonherkenning.
Selectie 101
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Selectie 102
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Pseudocode Python
INPUT getal int(input("Geef een getal in:"))
IF getal >= 0 THEN if getal >= 0:
OUTPUT “Positief” print(getal, "is positief.")
ELSE else:
OUTPUT “Negatief” print(getal, "is negatief.")
#Invoer
#Bewerking
if getal >= 0:
#Uitvoer
else:
#Uitvoer
Selectie 103
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Selectie 104
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Selectie 105
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Als het getal groter dan is dan 0 dan wordt de tekst “Getal is positief” getoond anders als het getal
kleiner is dan 0 is dan verschijnt de tekst “Getal is negatief” anders, het getal is gelijk aan nul,
verschijnt “Getal is nul”.
Selectie 106
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Uitvoer
“Positief”
“Negatief”
“Nul”
Invoer
Getal
Bewerkingen
If Getal > 0 then “Positief” else if getal < 0 then “Negatief” else “Nul”
Opmerking
Deze opdracht is een uitbreiding van de vorige opdracht, u kunt dus de vorige oplossing als basis
nemen, patroonherkenning.
Selectie 107
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Selectie 108
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Pseudocode Python
INPUT getal int(input("Geef een getal in:"))
IF getal > 0 THEN if getal >= 0:
OUTPUT “Positief” print(getal, "is positief.")
ELSE IF getal < 0 THEN elif getal < 0:
OUTPUT “Negatief” print(getal, "is negatief.")
ELSE else:
OUTPUT “Nul” print(getal, "is nul.")
#Invoer
#Bewerking
if getal > 0:
#Uitvoer
#Uitvoer
else:
#Uitvoer
Selectie 109
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Selectie 110
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Selectie 111
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Selectie 112
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Selectie 113
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Uitvoer
Totaalprijs
Invoer
Aankoopprijs
Bewerkingen
Opmerking
Deze opdracht heeft net als de opdracht “Is een getal positief of negatief?” twee opties, de structuur
zal dus gelijkaardig zijn.
Selectie 114
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Opmerking, er zijn andere structuren mogelijk die ook een correcte oplossing bieden.
Selectie 115
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Zo zou u de Output binnen de If-structuur kunnen opnemen en geen variabele totaalprijs gebruiken.
Dit zou eveneens een goede oplossing zijn.
Selectie 116
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Nog een optie kan de onderstaande zijn. Hier wordt gecontroleerd of de aankoopprijs kleiner is dan
50 en indien dit het geval is dan wordt de aankoopprijs verhoogt met 5 euro. Tenslotte wordt de
aankoopprijs weergegeven.
Selectie 117
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Pseudocode Python
INPUT aankoopprijs aankoopprijs = int(input("Geef de aankoopprijs
in:"))
IF aankoopprijs < 50 THEN if aankoopprijs < 50:
STORE aankoopprijs = aankoopprijs + 5 aankoopprijs = aankoopprijs + 5
OUTPUT aankoopprijs print("De totale prijs is", aankoopprijs, "€.")
#Invoer
#Bewerking
#Bewerking
aankoopprijs = aankoopprijs + 5
#Uitvoer
Selectie 118
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Selectie 119
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Selectie 120
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
3.6 Factuur 2
Maak een eenvoudige factuur aan die de prijs exclusief BTW van de factuur en het BTW-percentage
opvraagt en vervolgens de BTW en de prijs inclusief BTW berekent. Bij contante betaling wordt 10%
korting gegeven.
Selectie 121
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Uitvoer
BTW
Prijs inclusief BTW
Invoer
Bewerkingen
Selectie 122
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Selectie 123
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Pseudocode Python
INPUT Prijs exclusief BTW PrijsExclusiefBTW = float(input("Geef de prijs
zonder BTW in: "))
INPUT BTW-Percentage BTW_Percentage = float(input("Geef het BTW-
percentage in: "))
STORE BTW = Prijs exclusief BTW / 100 * BTW- BTW = PrijsExclusiefBTW / 100 *
percentage BTW_Percentage
STORE Prijs inclusief BTW = Prijs exclusief BTW PrijsInclusiefBTW = PrijsExclusiefBTW + BTW
+ BTW
OUTPUT BTW print("BTW =", round(BTW, 2), "€.")
OUTPUT Prijs inclusief BTW print("Prijs inclusief BTW =",
round(PrijsInclusiefBTW, 2), "€.")
#Invoer
#Bewerking
#Uitvoer
Selectie 124
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
We kunnen van deze oplossing starten en “gewoon” uitbreiden met het nieuwe gegeven: “10%
korting bij contante betaling.
Uitvoer
Prijs na korting
BTW
Prijs inclusief BTW
Invoer
Bewerkingen
Selectie 125
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Selectie 126
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Pseudocode Python
INPUT Prijs exclusief BTW PrijsExclusiefBTW = float(input("Geef de prijs
zonder BTW in: "))
INPUT BTW-Percentage BTW_Percentage = float(input("Geef het BTW-
percentage in: "))
INPUT ContanteBetaling ContanteBetaling = input("Contante betaling?
(j/n): ")
IF contantebetaling = true THEN if ContanteBetaling.lower() == "j":
STORE Prijs exclusief BTW * 0.9 PrijsExclusiefBTW =
PrijsExclusiefBTW * 0.9
STORE BTW = Prijs exclusief BTW / 100 * BTW- BTW = PrijsExclusiefBTW / 100 *
percentage BTW_Percentage
STORE Prijs inclusief BTW = Prijs exclusief BTW PrijsInclusiefBTW = PrijsExclusiefBTW + BTW
+ BTW
OUTPUT Prijs na korting print("Prijs na eventuele korting =",
round(PrijsExclusiefBTW, 2), "€.")
OUTPUT BTW print("BTW =", round(BTW, 2), "€.")
OUTPUT Prijs inclusief BTW print("Prijs inclusief BTW =",
round(PrijsInclusiefBTW, 2), "€.")
#Invoer
#Bewerking
if ContanteBetaling.lower() == "j":
#Uitvoer
"€.")
Selectie 127
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Met de functie lower() wordt tekst omgezet naar kleine letters: ContanteBetaling.lower()== "j"
Selectie 128
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Selectie 129
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
3.7 Tentoonstelling 2
U gaat met uw gezin, of met vrienden, naar een tentoonstelling.
Selectie 130
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Uitvoer
Invoer
leeftijd
Bewerkingen
If leeftijd >= 18 then “30 €” else if leeftijd < 12 then “Gratis” else “20 €”
Opmerking
Dit is een gelijkaardige opdracht als de opdracht Tentoonstelling 1 uit het vorige hoofdstuk maar
omdat er nu niet naar het aantal kinderen, aantal jongeren en aantal volwassenen gevraagd wordt,
maar wel naar de leeftijd, krijgen we een andere uitwerking.
Selectie 131
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Selectie 132
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Pseudocode Python
INPUT leeftijd leeftijd = int(input("Geef je leeftijd in:"))
IF leeftijd >= 18 THEN if leeftijd >= 18:
OUTPUT “Inkom is 30 €.” print("Inkom is 30 €.")
ELSE IF leeftijd < 12 THEN elif leeftijd < 12:
OUTPUT “Inkom is gratis.” print("Inkom is gratis.")
ELSE else:
OUTPUT “getal is nul” print("Inkom is 20 €.")
#Invoer
#Bewerking
#Uitvoer
print("Inkom is 30 €.")
#Uitvoer
print("Inkom is gratis.")
else:
#Uitvoer
print("Inkom is 20 €.")
Selectie 133
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Selectie 134
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Selectie 135
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Selectie 136
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Bij Taxi Noord wordt de prijs van een taxirit als volgt berekend: 20 € startkosten op te tellen bij 2 €
per kilometer.
Bij Taxi Noord wordt de prijs van een taxirit als volgt berekend: 50 € startkosten op te tellen bij 1.5 €
per kilometer.
Geef het aantal te rijden kilometers in en laat de computer u vertellen welk taxibedrijf het
goedkoopst is.
Selectie 137
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Uitvoer
Goedkoopste taxibedrijf
Invoer
Aantal kilometers
Bewerkingen
TaxiNoord = 20 + AantalKilometers * 2
TaxiZuid = 50 + AantalKilometers * 1.5
If TaxiNoord < TaxiZuid then “TaxiNoord” else “TaxiZuid”
Selectie 138
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Selectie 139
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Pseudocode Python
INPUT AantalKilometers AantalKilometers = int(input("Geef het aantal
kilometers in:"))
STORE TaxiNoord = 20 + AantalKilometers * 2 TaxiNoord = 20 + (AantalKilometers * 2)
STORE TaxiZuid = 50 + AantalKilometers * 1.5 TaxiZuid = 50 + (AantalKilometers * 1.5)
IF TaxiNoord < TaxiZuid THEN if TaxiNoord < TaxiZuid:
OUTPUT “TaxiNoord” print("TaxiNoord is het goedkoopst met
een prijs van", TaxiNoord, "€.")
ELSE else:
OUTPUT “TaxiZuid” print("TaxiZuid is het goedkoopst
met een prijs van", TaxiZuid, "€.")
#Invoer
#Bewerking
TaxiNoord = 20 + (AantalKilometers * 2)
#Uitvoer
"€.")
else:
#Uitvoer
"€.")
Selectie 140
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Selectie 141
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Selectie 142
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Selectie 143
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
3.9 Premie
Bij de heraanleg van de straat moet het regenwater gescheiden worden van het afvalwater.
De stad heeft een tegemoetkoming van 75% met een maximum van 1750 €.
Selectie 144
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Uitvoer
Premie
Eigenkost
Invoer
Kost
Bewerkingen
Selectie 145
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Selectie 146
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Pseudocode Python
INPUT Kost Kost = float(input("Geef de kostprijs van de
werken in:"))
STORE Premie = Kost * 0.75 Premie = Kost * 0.75
IF Premie > 1750 THEN if Premie > 1750:
Premie = 1750 Premie = 1750
STORE Eigenkost = Kost - Premie Eigenkost = Kost - Premie
OUTPUT Eigenkost print("De eigenkost bedraagt:", Eigenkost, "€.")
OUTPUT Premie print("De premie bedraagt:", Premie, "€.")
#Invoer
#Bewerking
Premie = 1750
#Uitvoer
Selectie 147
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Selectie 148
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Selectie 149
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Selectie 150
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Uitvoer
Geslaagd of niet
Invoer
Percentage
Aantal tekorten
Aantal onwettige afwezigheden
Bewerkingen
Opmerking
Aan u de keuze.
De moeilijkheid in deze oefening ligt in de meerdere condities die u moet combineren. Ik herneem
nog eens de tabellen die u kunnen helpen.
Selectie 151
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Selectie 152
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Pseudocode Python
INPUT Percentage Percentage = float(input("Geef het percentage
in:"))
INPUT Aantal tekorten AantalTekorten = int(input("Geef het aantal
tekorten in:"))
INPUT Aantal onwettige afwezigheden AantalOnwettigAfwezig = int(input("Geef het
aantal onwettige afwezigheden in:"))
IF Percentage >= 50 and AantalTekorten <= 1 if Percentage >= 50 and AantalTekorten <= 1 and
and AantalOnwettigeAfwezigheden <= 2 THEN AantalOnwettigAfwezig <= 2 :
OUTPUT “Geslaagd.” print("Geslaagd.")
ELSE else:
OUTPUT “Niet geslaagd!” print("Niet geslaagd!")
#Invoer
afwezigheden in:"))
#Bewerking
<= 2 :
#Uitvoer
print("Geslaagd.")
else:
#Uitvoer
print("Niet geslaagd!")
Selectie 153
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Selectie 154
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Selectie 155
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Bijkomend:
Indien de cursist geslaagd is met een % tussen de 50% (inbegrepen) en de 70% dan is hij
“Geslaagd met voldoening”.
Indien de cursist geslaagd is met een % tussen de 70% (inbegrepen) en de 90% dan is hij
“Geslaagd met onderscheiding”.
Indien hij geslaagd is met een % van 90% of meer dan is hij “Geslaagd met grote
onderscheiding”.
Selectie 156
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Uitvoer
Geslaagd of niet
“Geslaagd met voldoening” of “Geslaagd met onderscheiding” of “Geslaagd met grote
onderscheiding”
Invoer
Percentage
Aantal tekorten
Aantal onwettige afwezigheden
Bewerkingen
Opmerking
Dit is een uitbreiding op de vorige opdracht die u als basis kunt gebruiken.
De uitbreiding is dat indien de cursist geslaagd is er niet enkel moet komen “Geslaagd” maar ook, op
basis van het percentage, de wijze waarop.
Er zijn opnieuw verschillende benaderingen mogelijk maar ik denk dat van hoog naar laag vaak het
gemakkelijkste is.
If Percentage >= 90 then “Geslaagd met grote onderscheiding” else If Percentage >=70 then
“Geslaagd met onderscheiding” else “Geslaagd met voldoening”
Selectie 157
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Selectie 158
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Pseudocode Python
INPUT Percentage Percentage = float(input("Geef het percentage
in:"))
INPUT Aantal tekorten AantalTekorten = int(input("Geef het aantal
tekorten in:"))
INPUT Aantal onwettige afwezigheden AantalOnwettigAfwezig = int(input("Geef het
aantal onwettige afwezigheden in:"))
IF Percentage >= 50 and AantalTekorten <= 1 if Percentage >= 50 and AantalTekorten <= 1 and
and AantalOnwettigeAfwezigheden <= 2 THEN AantalOnwettigAfwezig <= 2 :
IF Percentage >= 90 THEN if Percentage >= 90:
OUTPUT “Geslaagd met grote print("Geslaagd met grote
onderscheiding.” onderscheiding.")
ELSE IF Percentage >= 70 THEN elif Percentage >= 70:
OUTPUT “Geslaagd met print("Geslaagd met
onderscheiding.” onderscheiding.")
ELSE else:
OUTPUT “Geslaagd met print("Geslaagd met
voldoening.” voldoening.")
ELSE else:
OUTPUT “Niet geslaagd!” print("Niet geslaagd!")
Selectie 159
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
#Invoer
afwezigheden in:"))
#Bewerking
<= 2 :
#Uitvoer
#Uitvoer
else:
#Uitvoer
else:
#Uitvoer
print("Niet geslaagd!")
Selectie 160
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Selectie 161
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Selectie 162
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Selectie 163
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
4 Iteratie (herhalingen)
Een Selectie gaat op basis van een conditie die al dan niet waar is een keuze maken en een bepaalde
richting uit gaan.
Een Iteratie, een herhaling, herhaalt iets zolang de conditie waar is.
Een Boolean expressie is een expressie (een stelling) die enkel de uitkomst waar (true)
of onwaar (false) kan hebben.
De beslissing bestaat uit een conditie/vergelijking en is ene booleaanse expressie. De uitkomst van
de vergelijking is dus ofwel Waar (true) ofwel Onwaar (false).
Een conditie kan ook uit meerdere vergelijkingen bestaan. Meerdere vergelijkingen worden aan
mekaar verbonden door logische operatoren.
De begrensde herhaling – het aantal keer dat de herhaling plaats vindt, de lus moet doorlopen
worden, ligt vast.
De voorwaardelijke herhaling – de herhaling blijft duren zolang een voorwaarde geldt (waar is).
else:
Voorbeeld:
for x in range(6):
print(x)
else:
print("Einde herhaling!")
Merk op dat Python, net zoals de meeste programmeertalen, begint te tellen bij 0.
Merk dat de herhaling niet stopt bij 6, zoals misschien verwacht, maar bij 5. De 6 staat dus
voor het aantal keer dat de lus moet doorlopen worden, beginnende bij 0.
De else: is optioneel en hoeft u niet te gebruiken (de meeste programmeertalen kennen dit trouwens
niet). U moet in Python dan wel opnieuw de insprong verwijderen om aan te geven dat de lus
beëindigd is.
for x in range(6):
print(x)
print("Einde herhaling!")
print(x)
print("Einde herhaling!")
U kunt zelfs een derde parameter meegeven, deze derde parameter bepaalt het interval, het aantal
dat bij de teller iedere lus moet worden bijgeteld. Standaard is het interval 1.
print(x)
print("Einde herhaling!")
U kunt in plaats van een range een lijst (een array) doorlopen.
for x in fruit:
print(x)
print("Einde herhaling!")
print(x)
print("Einde herhaling!")
Onderstaande code zal “Peer” niet tonen door gebruik te maken van continue.
for x in fruit:
if x == "Peer":
continue
print(x)
print("Einde herhaling!")
Merk op dat u, uiteraard, een Selectie en een Iteratie kunt combineren in dezelfde code.
Let op, het commando Continu zorgt voor de onderbreking van de structuur, voor de Flow Chart is
dit gewoon een statement/commando als een ander.
Onderstaande code zal “Peer” en “Kiwi” niet tonen door gebruik te maken van break.
for x in fruit:
if x == "Peer":
break
print(x)
print("Einde herhaling!")
else:
Voorbeeld:
teller = 0
print(teller)
teller += 1
else:
print("Einde herhaling!")
Merk op dat de teller van waarde moet veranderen binnen de lus zodat ook de conditie onwaar kan
worden. Doet u dit niet dan komt uw programma in een “oneindige lus”.
U kunt ook hier de else: weglaten, zorg dat de lus beëindigd wordt door niet langer in te springen.
teller = 0
print(teller)
teller += 1
print("Einde herhaling!")
Om de getallen van 1 tot 6 te krijgen moet u de beginwaarde van de teller wijzigen naar 1 en de lus
doorlopen zolang de teller <= 6.
teller = 1
print(teller)
teller += 1
print("Einde herhaling!")
teller = 1
print(teller)
if teller == 3:
break
teller += 1
print("Einde herhaling!")
Let op, als u dezelfde structuur overneemt met een continue gaat u een oneindige lus krijgen
omdat de teller += 1, die de conditie wijzigt, altijd zal worden overgeslagen vanaf dat de teller de
waarde 3 bereikt.
teller = 0
teller += 1
if teller == 3:
continue
print(teller)
print("Einde herhaling!")
Merk op dat, omdat de teller nu eerst verhoogd wordt voordat hij wordt getoond (print()) dat de
teller weer moet starten bij 0 en de conditie teller < 6 moet zijn om de getallen van 1 tot 6 te
krijgen met uitzondering van 3.
Bijvoorbeeld, u vraagt de gebruiker om een getal in te lezen tussen 0 en 10. Zolang hij dit niet doet
blijft het programma de vraag herhalen.
#Invoer
#Uitvoer
Voor de opdrachten die volgen mag u, tenzij anders gevraagd, de invoercontrole achterwege laten
zodat we ons kunnen focussen op de structuur van het eigenlijke programmeerprobleem.
Let op, geeft u geen getal in maar tekst dan krijgt u nog steeds een fout.
De oplossing valt een beetje buiten de doelstellingen van deze handleiding die de nadruk legt op
programmeerstructuren en minder op typische Python-code maar hier is een oplossing.
try:
val = int(getal)
valid = False
else:
valid = True
except Exception:
valid = False
return valid
#Invoer
#Uitvoer
Ik heb een functie geschreven die het getal, de laagste waarde en de hoogste waarde als parameters
ontvangt.
return valid
Met
try:
except Exception:
vangt u fouten op zonder dat er een foutmelding verschijnt (tenzij een foutmelding die u zelf schrijft).
val = int(getal)
een fout genereren. De code springt dan naar except Exception: en de variabele valid, die
teruggegeven wordt door de functie, krijgt de waarde False.
except Exception:
valid = False
Hebt u wel een getal getypt dan wordt de “normale” controle uitgevoerd en naargelang het resultaat
van de conditie wordt aan de variabele valid de waarde True of False gegeven.
valid = False
else:
valid = True
return valid
De invoer gebeurt zonder de conversie naar int() zoals in het vorige voorbeeld.
#Invoer
De while lus roept de functie validate(getal, 0, 10) aan met de nodige parameters en wordt
herhaalt zolang de waarde die wordt teruggegeven door de functie False is.
Zoals gezegd, deze code is iets teveel van het goede voor de doelstellingen van deze cursus maar ik
wou ze toch even meegeven.
Herhaal dit zolang u niet op een toets, bv. de toets “x” drukt.
Uitvoer
teller
Invoer
willekeurige toets
Bewerkingen
teller = teller + 1
Pseudocode Python
STORE Teller = 0 Teller = 0
OUTPUT Teller print(Teller)
INPUT “Nog een getal” NogEenGetal = input('Wenst u nog een getal
(druk op een toets om door te gaan, druk op x
om te stoppen)?')
WHILE “Nog een getal” != “X” while(NogEenGetal.upper() != "X"):
Teller = Teller + 1 Teller = Teller + 1
OUTPUT Teller print(Teller)
INPUT “Nog een getal” NogEenGetal = input('Wenst u nog een
getal (druk op een toets om door te gaan, druk
op x om te stoppen)?')
OUTPUT “Einde herhaling” print("Einde herhaling")
Teller = 0
# Uitvoer Teller
print(Teller)
#Invoer
while(NogEenGetal.upper() != "X"):
#Bewerking
Teller = Teller + 1
#Uitvoer
print(Teller)
#Invoer
#Uitvoer na de lus
print("Einde herhaling")
Merk op dat door de functie upper() te gebruiken u zowel een kleine “x” als een grote “X” kunt
ingeven. U moet natuurlijk testen op de grote “X”.
while(NogEenGetal.upper() != "X"):
Geef de gevraagde wiskundige tafel, dit is de vermenigvuldiging van de gevraagde tafel met alle
getallen van 1 tot en met 10, weer op het scherm.
Uitvoer
Invoer
tafel
Bewerkingen
Pseudocode Python
INPUT tafel tafel = int(input("Welke tafel (1 tot 10): "))
FOR x van 1 tot 11 for x in range(1, 11):
OUTPUT x * tafel print(x, "x", tafel, "=", x * tafel )
#Invoer
#Bewerking + uitvoer
#Invoer
#Invoercontrole
#Bewerking + uitvoer
Uitvoer
Invoer
Geen invoer
Bewerkingen
Pseudocode Python
FOR teller van 1 tot 11 for teller in range(1, 11):
FOR x van 1 tot 11 for x in range(1, 11):
OUTPUT teller * tafel print(teller, "x", x, "=", teller * x )
#Bewerking + uitvoer
Dit is een eenvoudig voorbeeld van een dubbele lus, een lus in een lus.
Uitvoer
Omgekeerde tekst
Invoer
Tekst
Bewerkingen
Lengte = len(Tekst)
Binnen een lus: Omgekeerd = Omgekeerd + Tekst[Lengte – (x + 1)]
U moet bij x 1 optellen omdat een lus standaard begint te letten bij 0.
Pseudocode Python
INPUT Tekst Tekst = input("Geef een tekst in: ")
STORE Omgekeerd = “” Omgekeerd = ""
STORE Lengte Lengte = len(Tekst)
FOR x = 0 tot Lengte for x in range(0, Lengte):
STORE Omgekeerd = Omgekeerd + Omgekeerd = Omgekeerd + Tekst[Lengte - (x+1)]
Tekst[Lengte - (x+1)]
OUTPUT Omgekeerd print(Omgekeerd)
#Invoer
Omgekeerd = ""
#Bewerkingen
Lengte = len(Tekst)
#Uitvoer
print(Omgekeerd)
Wie tot nu toe de handleiding goed gevolgd heeft weet dat met veel minder code kan.
#Invoer
#Bewerkingen
Omgekeerd = Tekst[::-1]
#Uitvoer
print(Omgekeerd)
Het programma moet 20 keer met 2 dobbelstenen gooien. De worpen moeten getoond worden.
Uitvoer
Invoer
Geen invoer
Bewerkingen
Gemiddelde = Som / 20
Opmerking
import random
Een willekeurig geheel getal tussen 1 en 6 kan als volgt worden gegenereerd.
Dobbel1 = random.randint(1,6)
Pseudocode Python
IMPORT random import random
STORE Som = 0 Som = 0
FOR x = 1 tot 21 for x in range(1,21):
STORE Dobbel1 = willekeurig getal Dobbel1 = random.randint(1,6)
tussen 1 en 6 inbegrepen
STORE Dobbel2 = willekeurig getal Dobbel2 = random.randint(1,6)
tussen 1 en 6
STORE Worp = Dobbel1 + Dobbel2 Worp = Dobbel1 + Dobbel2
STORE Som = Som + worp Som = Som + Worp
OUTPUT Worp print("Worp", x , "=", Worp)
STORE Gemiddelde = Som / 20 Gemiddelde = Som / 20
OUTPUT Gemiddelde print("Het gemiddelde aantal geworpen ogen
is", Gemiddelde)
import random
Som = 0
for x in range(1,21):
#Bewerkingen
Dobbel1 = random.randint(1,6)
Dobbel2 = random.randint(1,6)
#Uitvoer
#Bewerking
Gemiddelde = Som / 20
#Uitvoer
Uitvoer
Invoer
Aantal dobbelsteenworpen
Bewerkingen
Opmerking
Omdat de worpen pas getoond mogen worden nadat het gemiddelde getoond is moeten deze
worden bijgehouden in een lijst.
In Python kunt u een lege lijst aanmaken door een naam te kiezen en deze gelijk te stellen aan een
lege lijst [].
Ogen = []
Ogen.append(Worp)
for x in range(0,Aantal):
print(Ogen[x])
Pseudocode Python
IMPORT random import random
STORE Som = 0 Som = 0
STORE Ogen Ogen = []
INPUT Aantal Aantal = int(input("Hoeveel worpen wilt u
gooien?"))
FOR x = 1 tot Aantal + 1 for x in range(1,Aantal + 1):
STORE Dobbel1 = willekeurig getal Dobbel1 = random.randint(1,6)
tussen 1 en 6 inbegrepen
STORE Dobbel2 = willekeurig getal Dobbel2 = random.randint(1,6)
tussen 1 en 6
STORE Worp = Dobbel1 + Dobbel2 Worp = Dobbel1 + Dobbel2
STORE Worp in Ogen Ogen.append(Worp)
STORE Som = Som + worp Som = Som + Worp
STORE Gemiddelde = Som / 20 Gemiddelde = Som / 20
OUTPUT Gemiddelde print("Het gemiddelde aantal geworpen ogen
is", Gemiddelde)
FOR x = 0 tot Aantal for x in range(0,Aantal):
OUTPUT Ogen[x] print("Worp", x + 1 , "=", Ogen[x])
import random
Som = 0
Ogen = []
#Invoer
#Bewerkingen
Dobbel1 = random.randint(1,6)
Dobbel2 = random.randint(1,6)
Ogen.append(Worp)
#Uitvoer
Uitvoer
Invoer
Opmerking
Omdat u alle ingelezen getallen nadien nog eens moet tonen moet u deze bijhouden in een lijst.
Pseudocode Python
STORE Getallen Getallen = []
INPUT Getal Getal = int(input("Geef een getal
in."))
WHILE Getal >= 0 while(Getal >= 0):
STORE Getal in Getallen Getallen.append(Getal)
INPUT Getal Getal = int(input("Geef een getal
in."))
FOR Getal in Getallen for x in range(0, len(Getallen)):
OUTPUT Getal print(Getallen[x])
Getallen = []
#Invoer
Getallen.append(Getal)
#Uitvoer
print(Getallen[x])
Merk op dat u de lengte van een lijst Getallen kunt opvragen met de functie len().
len(Getallen)
Uitvoer
Invoer
Bewerkingen
Opmerkingen
Hou een lijst bij voor de cursisten, een lijst voor Nederlands en een lijst voor Frans.
De lijst cursisten wordt meteen opgevuld met de namen, de andere lijsten zijn leeg.
Nederlands = []
Frans = []
Pseudocode Python
STORE Cursisten Cursisten = ["Lode", "Emmelie", "Elise"]
STORE Nederlands = [] Nederlands = []
STORE Frans = [] Frans = []
FOR Iedere cursist for x in range(0,3):
INPUT Punten Nederlands Punten = int(input(Inputtekst))
STORE Punten Nederlands.append(Punten)
FOR Iedere cursist for x in range(0,3):
INPUT Punten Frans Punten = int(input(Inputtekst))
STORE Punten Frans.append(Punten)
FOR Iedere cursist for x in range(0,3):
BEREKEN Percentage Percentage = (Nederlands[x] + Frans[x]) /
2 * 10
OUTPUT Percentage print("Het percentage voor",
Cursisten[x], "is", Percentage, "%")
Inputtekst = "Geef de punten (0 tot 10) voor Nederlands voor " + Cursisten[x] +
"."
Nederlands = []
Frans = []
#Input
for x in range(0,3):
Cursisten[x] + "."
Punten = int(input(Inputtekst))
Nederlands.append(Punten)
for x in range(0,3):
Cursisten[x] + "."
Punten = int(input(Inputtekst))
Frans.append(Punten)
#Uitvoer
for x in range(0,3):
Met invoercontrole.
Nederlands = []
Frans = []
#Input
for x in range(0,3):
Cursisten[x] + "."
Punten = int(input(Inputtekst))
Punten = int(input(Inputtekst))
Nederlands.append(Punten)
for x in range(0,3):
Cursisten[x] + "."
Punten = int(input(Inputtekst))
Punten = int(input(Inputtekst))
Frans.append(Punten)
#Uitvoer
for x in range(0,3):
4.11 Tentoonstelling 3
U gaat met uw gezin, of met vrienden, naar een tentoonstelling.
Uitvoer
Invoer
leeftijd
Bewerkingen
If leeftijd >= 18 then “30 €” else if leeftijd < 12 then “Gratis” else “20 €”
Opmerking
Dit is een gelijkaardige opdracht als de opdracht Tentoonstelling 2 uit het vorige hoofdstuk maar in
plaats van de inkom per persoon te tonen moet nu de inkom voor het volledige gezin/groep getoond
worden.
Het afsluiten van de invoer per gezin/groep kan bv. door -1 in te typen.
Pseudocode Python
INPUT leeftijd leeftijd = int(input("Geef de leeftijd in (afsluiten
met -1):"))
STORE Inkom = 0 inkom = 0
WHILE Leeftijd != -1 while leeftijd != -1:
IF leeftijd >= 18 THEN if leeftijd >= 18:
STORE Inkom + 30 inkom += 30
ELSE IF leeftijd < 12 THEN elif leeftijd < 12:
STORE Inkom + 0 inkom += 0
ELSE else:
STORE Inkom + 30 inkom += 20
INPUT leeftijd leeftijd = int(input("Geef de
leeftijd in (afsluiten met - 1):"))
Output Inkom print("De inkom voor het gezin, de groep, is:",
inkom)
#Invoer
inkom = 0
#Bewerking
inkom += 30
inkom += 0
else:
inkom += 20
#Invoer
#Uitvoer
Opmerking
inkom += 0
is dit niet overbodig? In theorie wel, in de praktijk houdt dit de structuur, die we reeds hadden,
overeind, ook al is het een beetje onlogisch.
De computer vraagt om een volgend getal en, indien u een nieuw getal wenst, telt het getal op bij de
vorige getallen. Herhaal dit zolang u niet stopt met getallen te vragen.
Uitvoer
Getallen
Som
Invoer
Bewerkingen
Opmerking
Omdat we altijd alle getallen moeten optellen en tonen, en omdat we niet weten hoeveel getallen er
moeten bijgehouden en getoond worden, moeten de getallen in een lijst (array) worden
bijgehouden.
Pseudocode Python
Import random import random
STORE Getallen = [] Getallen = []
STORE ToonGetallen = “” ToonGetallen = ""
STORE Willekeurig getal 1 Getallen.append(random.randint(1, 10))
STORE Willekeurig getal 2 Getallen.append(random.randint(1, 10))
STORE Som van de getallen som = Getallen[0] + Getallen[1]
OUTPUT Getallen en som ToonGetallen = str(Getallen[0]) + " + " +
str(Getallen[1])
print(ToonGetallen,"=",som)
INPUT “Verder of niet?” NogEenGetal = input('Wenst u nog een getal
(druk op een toets om door te gaan, druk op x
om te stoppen)?')
WHILE Verder while(NogEenGetal.upper() != "X"):
STORE Willekeurig getal Getallen.append(random.randint(1, 10))
STORE Som = 0 som = 0
STORE ToonGetallen = “” ToonGetallen = "
FOR ieder Getal for Getal in Getallen:
STORE Som som += Getal
STORE ToonGetallen ToonGetallen += str(Getal) + " + "
OUTPUT Getallen en som ToonGetallen = ToonGetallen[:-2]
print(ToonGetallen, "=", som)
INPUT Getallen en som NogEenGetal = input('Wenst u nog een
getal (druk op een toets om door te gaan, druk
op x om te stoppen)?')
import random
Getallen = []
ToonGetallen = ""
#Bereken de som
som = Getallen[0] + Getallen[1]
#Uitvoer
ToonGetallen = str(Getallen[0]) + " + " + str(Getallen[1])
print(ToonGetallen,"=",som)
#Invoer
NogEenGetal = input('Wenst u nog een getal (druk op een toets om door
te gaan, druk op x om te stoppen)?')
#Uitvoer
print(ToonGetallen, "=", som)
#Invoer
NogEenGetal = input('Wenst u nog een getal (druk op een toets om
door te gaan, druk op x om te stoppen)?')
Hebt u een +-teken, en een spatie teveel staan. U verwijdert de laatste twee tekens van een string
met:
ToonGetallen = ToonGetallen[:-2]
Getallen.clear()
Maar voor wie nu reeds een stapje verder wilt zetten kan onderstaande complexere voorbeelden
eens bestuderen.
Opdracht 264
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
5.1 21
Schrijf een programma dat:
de speler twee willekeurige getallen tussen de 1 en 10 (inbegrepen) geeft en deze twee getallen en
de som van deze twee getallen toont.
Het programma vraagt nu of de speler nog een willekeurig getal wenst. Die vraag wordt herhaald
zolang de speler een bijkomend getal vraagt of tot de som van de getallen groter is dan 21.
De speler moet zolang kunnen spelen tot hij besluit te stoppen met spelen.
Opmerking
Behandel dit als een opdracht, iets dat u volledig zelf moet uitwerken.
Op de volgende pagina vindt u een oplossing in Python, maar ga pas kijken nadat u zelf geprobeerd
hebt.
Weet dat uw oplossing altijd wat kan verschillen van mijn oplossing, zolang ze maar werkt.
Opdracht 265
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
import random
#Geef beginwaarden
Stoppen = "N"
Winst = 0
#Maak een lege array
Getallen = []
#Bepaal de uitvoertekst
ToonGetallen = str(Getallen[0]) + " + " + str(Getallen[1])
#Bereken de som
som = Getallen[0] + Getallen[1]
#Controleer of de 21 bereikt is
if som > 21:
#Bereken winst
Winst = Winst - 10
#Uitvoer
print("U verliest 10 €. Uw huidige winst is", Winst, "€.")
Opdracht 266
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
#Uitvoer
print("U wint 20 €. Uw huidige winst is", Winst, "€.")
#Uitvoer
print("U wint 5 €. Uw huidige winst is", Winst, "€.")
#Uitvoer
print("U wint 2 €. Uw huidige winst is", Winst, "€.")
#Uitvoer
print("Uw totale winst/verlies is", Winst,"€.")
Opdracht 267
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
1. U, de speler, moet een keuze kunnen maken tussen “schaar”, “steen” of “papier”.
2. De computer maakt zijn keuze.
3. Het programma vergelijkt beide keuzes en geeft aan wie er gewonnen is.
We gaan op deze oefening later nog terugkomen en verder uitbreiden, om te starten doen we enkel
het bovenstaande met volgende tips:
Denk zelf na over de programmeerstructuur, er kan enige variatie zitten in de volgorde van de
condities, de vergelijkingen, maar de structuur moet in grote lijnen gelijk zijn.
De Python-code bevat een paar nieuwigheden die u, uiteraard, nog niet kent.
Opdracht 268
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Uitvoer
Keuzes
Winnaar
Invoer
Bewerkingen
Vrij vertaald, controleer eerst of de beide keuzes gelijk zijn. Is dit het geval dan is er “Geen winanar”.
Zijn de keuzes niet gelijk, controleer dan de 3 mogelijke keuzes vanuit het standpunt van de speler
(of de computer, dit maakt niet uit). Voor iedere keuze van de speler, vergelijk met de twee
mogelijke overgebleven opties (de gelijke keuze is reeds verwerkt) van de computer en bepaal de
winnaar.
Opdracht 269
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Opdracht 270
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Pseudocode Python
IMPORT random import random
INPUT Keuze Speler Speler = input("Geef uw keuze in: R, P of S (rock,
paper, scissors): ")
STORE Keuze Computer Computer = random.choice(Opties)
Opdracht 271
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
import random
#Invoer
#Bewerking
Computer = random.choice(Opties)
#Uitvoer
#Bewerking en uitvoer
if Speler.upper() == Computer:
if Computer == "S":
else:
if Computer == "R":
else:
if Computer == "P":
else:
Opdracht 272
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
import random
Opties is een lijst met meerdere waarden van eenzelfde type (de meeste programmeertalen
gebruiken hier het woordje array).
Ik heb nog eens voor de alternatieve print() gekozen waarin u de variabelen direct kunt integreren in
de tekst. Vergeet de f vooraan niet. \n zorgt voor een nieuwe regel.
Speler.upper()
Hiermee wordt de ingevoerde waarde voor Speler omgezet naar hoofdletters. Dit laat toe dat de
speler ook kleine letters mag intypen.
Merk op dat de computer kiest uit een lijst met hoofdletters. Hoofdletters worden dus met
hoofdletters vergeleken.
Opdracht 273
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Opdracht 274
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Opdracht 275
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Opdracht 276
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Opdracht 277
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
5.2.1 Functies
Deze code is al vrij complex, zeker de flowchart is met het oog op verdere aanpassingen niet echt
meer handig.
Wat u kunt doen, en wat zelfs aan te bevelen is, is de code die bepaalt wie er wint in een eigen
functie.
Laat ons eerst naar de oplossing kijken, nadien volgt een woordje uitleg. Ik markeer alvast de
belangrijke veranderingen.
Opdracht 278
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
import random
#Bewerking en uitvoer
if Speler.upper() == Computer:
if Computer == "S":
else:
if Computer == "R":
else:
if Computer == "P":
else:
#Invoer
#Bewerking
Computer = random.choice(Opties)
#Uitvoer
BepaalWinnaar(Speler, Computer)
Opdracht 279
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Er is een functie aangemaakt met de naam BepaalWinnaar en met twee parameters Speler en
Computer.
Heel de code die de winnaar bepaalt is gewoon gekopieerd en geplakt binnen deze functie. Let wel
op de nodige insprong die in Python belangrijk is.
BepaalWinnaar(Speler, Computer)
Toevallig, en dit is zeker geen verplichting maar eerder een “toeval”, zijn de namen van de
parameters die we hier meegeven dezelfde namen als de namen van de parameters in de functie
zelf.
Uiteraard wordt de eerste parameter aan de eerste parameter van de functie toegekend en de
tweede parameters aan de tweede parameter van de functie.
Opdracht 280
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
De Flowchart wordt nu ook herwerkt als volgt. De Flowchart van het hoofdprogramma wordt nu heel
eenvoudig en verwijst naar de functie.
Het symbooltje om een functie aan te roepen is een rechthoek met een dubbele lijn.
Opdracht 281
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Opdracht 282
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
1. U, de speler, moet een keuze kunnen maken tussen “schaar”, “steen” of “papier”.
2. De computer maakt zijn keuze.
3. Het programma vergelijkt beide keuzes en geeft aan wie er gewonnen is.
Uitbreiding
We gaan dit nu uitbreiden met een invoercontrole en de mogelijkheid te blijven spelen zolang de
gebruiker niet op de x-toets druk.
U typt een “P” in voor “Paper”, een “R” voor “Rock”, een “S” voor “Scissors” of een “X” om te
stoppen.
Opdracht 283
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Uitvoer
Invoer
Bewerkingen
Opdracht 284
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Opdracht 285
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Opdracht 286
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
import random
#Bewerking en uitvoer
if Speler.upper() == Computer:
if Computer == "S":
else:
if Computer == "R":
else:
if Computer == "P":
else:
#Invoer
#Bewerking
Computer = random.choice(Opties)
#Uitvoer
BepaalWinnaar(Speler, Computer)
Opdracht 287
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Opdracht 288
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Speler = input("Geef uw keuze in: R, P of S (rock, paper, scissors) of een X om te stoppen: ")
Na de invoer moet er getest worden of de invoer correct is, dit gebeurt bijvoorbeeld via:
while Speler.upper() != "R" and Speler.upper() != "P" and Speler.upper() != "S" and Speler.upper() !=
"X":
Speler = input("Geef uw keuze in: R, P of S (rock, paper, scissors) of een X om te stoppen: ")
return Speler
Opdracht 289
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
De aangepaste code:
import random
#Bewerking en uitvoer
if Speler.upper() == Computer:
if Computer == "S":
else:
if Computer == "R":
else:
if Computer == "P":
else:
def Invoer():
return Speler
Opdracht 290
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
#Invoer
Speler = Invoer()
#Bewerking
Computer = random.choice(Opties)
#Uitvoer
BepaalWinnaar(Speler, Computer)
#Invoer
Speler = Invoer()
Stilaan wordt de code complexer en dringt de noodzaak om modulair te werken, met afzonderlijke
functies die herhalende taken op zich nemen, of louter om het overzichtelijker te houden, zich op.
Zoals we later in de cursus gaan zien wordt dit principe DRY (Don’t Repeat Yourself) genoemd
Opdracht 291
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Opdracht 292
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
import random
AantalGewonnenPC = 0
AantalGewonnenSpeler = 0
def Invoer():
Speler = input("Geef uw keuze in: R, P of S (rock, paper, scissors)
of een X om te stoppen: ")
while Speler.upper() != "R" and Speler.upper() != "P" and
Speler.upper() != "S" and Speler.upper() != "X":
Speler = input("Geef uw keuze in: R, P of S (rock, paper,
scissors) of een X om te stoppen: ")
return Speler
#Invoer
Opties = ["R", "P", "S"]
Speler = Invoer()
#Uitvoer
Opdracht 293
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
BepaalWinnaar(Speler, Computer)
#Invoer
Speler = Invoer()
#Uitvoer
print(f"\nAantal gewonnen spelletjes door de speler:
{AantalGewonnenSpeler}, aantal gewonnen spelletjes door de PC:
{AantalGewonnenPC}.\n")
Ziet er goed uit, maar als u dit laat lopen krijgt u een foutmelding.
Opdracht 294
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
Opdracht 295
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
import random
AantalGewonnenPC = 0
AantalGewonnenSpeler = 0
def Invoer():
Speler = input("Geef uw keuze in: R, P of S (rock, paper, scissors)
of een X om te stoppen: ")
while Speler.upper() != "R" and Speler.upper() != "P" and
Speler.upper() != "S" and Speler.upper() != "X":
Speler = input("Geef uw keuze in: R, P of S (rock, paper,
scissors) of een X om te stoppen: ")
return Speler
Opdracht 296
Informatica Programmeren – Start to Program
Gestructureerd Programmeren met Python
Linthoudt Geert
#Invoer
Opties = ["R", "P", "S"]
Speler = Invoer()
#Uitvoer
print(f"\nU koos voor {Speler}, de computer koos {Computer}.\n")
BepaalWinnaar(Speler, Computer)
#Invoer
Speler = Invoer()
#Uitvoer
print(f"\nAantal gewonnen spelletjes door de speler:
{AantalGewonnenSpeler}, aantal gewonnen spelletjes door de PC:
{AantalGewonnenPC}.\n")
Opdracht 297