Enter 2e graad - Algoritmisch Denken Met Python - inkijk methode

Page 1


ALGORITMISCH DENKEN MET PYTHON

Je hebt zeker al algoritmen gemaakt zonder dat je het weet. Als je algoritmen laat uitvoeren op een computer spreken we vlug van programmeren. In deze module leer je algoritmen programmeren in Python, een krachtige en eenvoudige programmeertaal die veel gebruikt wordt. Door in een bepaalde taal te programmeren krijg je heel wat mogelijkheden om de computer naar je hand te zetten. Tijd om de wereld van het programmeren te verkennen!

INKIJKEXEMPLAARDIEKEURE

WAT JE LEERT IN DEZE MODULE

Wat een algoritme is

• Patronen herkennen

• Wat abstractie is

Wat decompositie is

Decompositie toepassen

• Wat debuggen is

• Een gestructureerde aanpak toepassen bij het oplossen van problemen

Een programma starten en bewaren in Python

• De Command Line Interface van Python gebruiken

• Een programma uitvoeren in Python

Wat een variabele is

Wat een expressie is

• De functies: print, input, type

• Enkele belangrijke datatypes: integer, float, string, bool, list

Wat operatoren zijn

• Enkele operatoren: rekenkundige operatoren en stringoperatoren

Wat een keuze is: eenzijdig of tweezijdig

Wat een voorwaarde is

• Een keuze programmeren in Python

• Enkele operatoren: vergelijkingsoperatoren en logische operatoren

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.

ALGORITMEN: WAT EN HOE?

Wat is een algoritme?

In het dagelijks leven kom je in aanraking met algoritmen. Overal om je heen zie je algoritmen.

Voorbeelden

INKIJKEXEMPLAARDIEKEURE

Ingrediënten (4 personen)

200 g gezouten spek

4 eieren

500 g spaghetti

25 cl room

100 g Parmezaanse kaas

2 teentjes look

1 sjalot

Bereiding

1 Kook de pasta al dente.

2 Bak intussen het spek krokant, voeg sjalot en look toe.

3 Meng in een kom de room, eieren, kaas, knoflook, peper en zout en klop het mengsel met een vork tot een min of meer gladde massa.

4 Giet de pasta in een vergiet af en doe hem terug in de warme pan.

5 Meng het spek en het eimengsel onder de pasta.

6 Verwarm de pasta nu nog even heel kort (1 minuut) op een laag vuur en serveer het gerecht.

Een vetvlek verwijderen uit kleding

• Pak een doek en dep met wat afwasmiddel op de vlek.

• Wrijf met de doek over de vetvlekken.

• Laat het kledingstuk drogen.

Programma opnemen, bekijken en wissen

OPNEMEN

Tik op TV-gids > selecteer een programma en kies Opnemen.

Je kan ook de instellingen van je opnames aanpassen als je dat wilt.

BEKIJKEN

Tik op Mijn TV > Opgenomen > kies een opname en tik op

WISSEN

Tik op Mijn TV > Opgenomen > kies een opname > > of Opname wissen.

Voor bijna alles wat je doet, maak je gebruik van een algoritme. Bijvoorbeeld wanneer je de hond uitlaat, een ei bakt of naar een serie kijkt via een streamingdienst. Algoritmen beheersen ons leven. Ook de info die je op het internet vindt, wordt bepaald door algoritmen

HIeronder staan enkele definities voor een algoritme.

Zijn de definities juist of fout? Kruis aan.

Een algoritme is een soort stappenplan. Het zijn instructies die in een bepaalde volgorde worden uitgevoerd.

juist fout

Een algoritme is een set regels in een niet bepaalde volgorde om een probleem op te lossen.

juist fout

Een algoritme is de basis voor een computerprogramma. Het is een recept dat je aan de computer geeft om een probleem op te lossen. Als de computer het programma doorloopt, moet hij de verschillende instructies in het algoritme (= het recept) uitvoeren.

juist fout

Even doordenken

Een algoritme is niet meer dan een aantal willekeurige stappen die je volgt om een bepaald doel te bereiken.

INKIJKEXEMPLAARDIEKEURE

juist fout

Een algoritme is een eindige reeks instructies die vanuit een gegeven begintoestand naar een beoogd doel leidt.

juist fout

Een algoritme is een lijstje met instructies die een vaste volgorde beschrijft en bepaalt hoe je een probleem oplost.

juist fout

In grote steden zie je vaak hoge gebouwen. Dit kunnen oude of recente gebouwen zijn. Uit esthetisch oogpunt wordt steeds gezorgd voor een zekere eenheid in een gebouw. Zo krijgt niet elke verdieping een andere indeling maar zijn de meeste verdiepingen gelijk. Er zit een patroon in het ontwerp van gebouwen.

Ontwerp een gebouw

Rooster

Als er een patroon zit in het uiterlijk van een gebouw, dan is het mogelijk om een algoritme te maken voor dat gebouw.

Teken de voorgevel van het gebouw hiernaast in het rooster. Laat de eerste kolom leeg.

INKIJKEXEMPLAARDIEKEURE

Enkele afspraken:

- steen = zwart vakje

- glas = wit vakje

- een gebouw van 6 (gelijkvloers en 5 verdiepingen)

- een glazen middenstuk van 3 vakjes voor de eerste vier verdiepingen

- 3 vensters links en rechts van het glazen middenstuk

Deze oefening kan je ook online maken. Scan de QR-code.

Abstractie

Ziet het gebouw in het rooster er ongeveer hetzelfde uit als op de foto? Bij het tekenen van het gebouw in het rooster heb je alle overbodige details weggelaten en de essentie behouden. Wanneer je iemand verschillende foto's van hoge gebouwen en jouw tekening toont, dan zal die persoon meteen de juiste foto uitkiezen. Het gebouw blijft herkenbaar ook al heb je details zoals kleur, soort gesteente, het exacte aantal verdiepingen … weggelaten. Je hebt abstractie toegepast.

Abstractie komt van het Latijnse woord 'abstráhere', wat 'weglaten' betekent. Het is een denkproces waarbij je nagaat welke onderdelen essentieel zijn en welke je kunt weglaten.

Van jongs af aan heb je onbewust al abstractie toegepast. Denk maar aan tekeningen van mensen of dieren. Met slechts enkele lijnen herkent iedereen het getekende dier.

INKIJKEXEMPLAARDIEKEURE

Ook kunstenaars zijn meesters in het abstraheren. De Nederlandse kunstenares Mieke van Doorn maakte verschillende abstracties van het schilderij 'Het melkmeisje' van Johannes Vermeer. In haar werk blijf je steeds het originele schilderij herkennen.

© Mieke van Doorn

© Mieke van Doorn

Het melkmeisje, Johannes Vermeer

© Mieke van Doorn Kubistisch, geometrische Met zo veel mogelijk Met zo weinig mogelijk vlakken geometrische vormen geometrische vormen, met behoud van de essentie van de compositie van het schilderij

Decompositie

Je kan nu een algoritme schrijven om het gebouw te laten tekenen. Dit algoritme kan op meerdere manieren opgebouwd worden. Vooraleer je hier aan begint, is het belangrijk om je tekening nog eens goed bekijken. Zie je gelijkenissen? Komen er bepaalde rijen of delen van rijen terug?

Hoeveel verschillende soorten rijen zie je in het gebouw?

Als je voor die rijen een algoritme schrijft, dan kan je dit gebruiken in het algoritme van het gebouw. Dat is decompositie. In plaats van het probleem in zijn geheel op te lossen, ga je op zoek naar deelproblemen die je oplost en dan verwerkt in de oplossing van het geheel. Je deelt een probleem op in kleinere deelproblemen.

Dit komt ook voor in andere vakken en disciplines.

Geschiedenis

In de lessen geschiedenis bestudeer je verschillende periodes: de prehistorie, het oude Nabije Oosten, de klassieke oudheid, de middeleeuwen, de nieuwe tijd … Omdat er over die periodes heel veel te vertellen is, worden de geschiedkundige periodes onderverdeeld in een aantal domeinen.

Geschiedkundige periode

het economische domein het politieke domein het sociale domein het culturele domein

INKIJKEXEMPLAARDIEKEURE

Decompositie kom je heel vaak tegen.

Scan de code voor nog meer voorbeelden …

Maak een algoritme voor het ontworpen gebouw

Maak voor elke soort rij een algoritme. Gebruik hiervoor de onderstaande symbolen. Je start telkens in het eerste vakje van een rij. Zoek ook naar de gelijkenissen in een rij. Probeer een kort algoritme te maken. Start onderaan.

INKIJKEXEMPLAARDIEKEURE

 Ga één blokje naar rechts.

 Ga één blokje naar links.

 Ga één blokje naar beneden.

 Ga één blokje naar boven.

Vul het blokje met deze kleur.

n  Ga 'n' keer één blokje naar rechts. Je kan dit ook doen met de andere pijltjes.

n ( ) Voer 'n' keer de combinatie tussen de haakjes uit.

Algoritme

> rij 1:

> rij 2:

> rij 3:

> rij 4:

Gebouw in het rooster rij 3 rij 4 rij 2 rij 1

Gebruik de algoritmen van de rijen om het algoritme van het gebouw te maken. De eerste regels van het algoritme staan er al. We bouwen het gebouw rij voor rij op. Houd er rekening mee dat alle deelalgoritmen gemaakt zijn voor een rij van links naar rechts. Vul het algoritme verder aan in de eerste tabel.

bovenlaag

5e verdieping

4e verdieping

3e verdieping

2e verdieping

1e verdieping

gelijkvloerse verdieping

 20  rij 2

bovenlaag

INKIJKEXEMPLAARDIEKEURE

5e verdieping

4e verdieping

3e verdieping

2e verdieping

1e verdieping

gelijkvloerse verdieping terug rij 2

 20  rij 2 terug rij 2 rij 1 rij 1

We maken ook een deelalgoritme om terug te keren naar het begin van de volgende rij: het deelalgoritme terug

terug

Vul het deelalgoritme aan.

Herschrijf het algoritme in de tweede tabel. Maak nu gebruik van het deelalgoritme 'terug'.

Bestudeer het gemaakte algoritme. Worden sommige regels herhaald? Vind je een patroon?

Omcirkel in verschillende kleuren de herhalingen die je ziet.

Noteer hieronder het algoritme zo compact mogelijk. >

Wil je meer lezen over algoritmen en gebouwen? Scan de QR-codes.

1 MIJN EERSTE PROGRAMMA

INKIJKEXEMPLAARDIEKEURE

De meeste algoritmen worden geschreven om door een digitaal toestel zoals een computer, tablet, smartphone, smartwatch, robot, slimme koelkast of camera … uitgevoerd te worden.

Om een algoritme door een digitaal toestel te laten uitvoeren, heb je een programmeertaal nodig. Je maakt een (computer)programma van het algoritme. Misschien heb je al eens gewerkt met een grafische programmeertaal zoals Scratch. Via het slepen van voorgeprogrammeerde blokken maak je een programma. De meeste programmeertalen zijn echter tekstueel. Ze bieden je meer mogelijkheden om de computer juist aan te sturen.

In deze module leer je algoritmen uitwerken in de programmataal Python.

Waar komt de naam Python vandaan?

>>> print("Mijn eerste programma!")

Mijn eerste programma!

1.1 Van Scratch naar Python

Scratch

Python

INKIJKEXEMPLAARDIEKEURE

>>> print("Mijn eerste programma!")

Mijn eerste programma!

1.2 Mijn eerste commando in Python

Als je tekst wilt laten verschijnen op het scherm gebruik je de functie print (). We weten dat print een functie is door de haakjes die erachter staan. Tussen de haakjes schrijf je de tekst die je wilt laten verschijnen op het scherm. Tekst staat altijd tussen dubbele of enkele aanhalingstekens ("" of ''). Ze geven het begin en het einde van een tekst aan.

print("tekst")

Tekst: sliert van tekens tussen aanhalingstekens

Commando (invoer)

Resultaat (uitvoer)

print("Mijn eerste commando!") Mijn eerste commando!

print("1-AXE-212") 1-AXE-212

print("3 + 5") 3 + 5

1.3 Een programma uitvoeren in Python

1.3.1 Starten met Python

1 Surf naar https://www.python.org

2 op Downloads en installeer de laatste versie van Python.

3 Na de installatie vind je deze map terug in het startmenu van Windows.

4 Start de Python-omgeving. op

De Command Line Interface (CLI) wordt geopend.

INKIJKEXEMPLAARDIEKEURE

Na de drie pijltjes (>>>) kan je commando's invoeren om ze daarna te laten uitvoeren.

5 een Pythoncommando en druk op Enter .

Je ziet meteen de uitvoer van het commando. Zo kan je Pythoncommando's testen.

1.3.2 Een programma maken en bewaren

Als je een programma schrijft, bewaar je dit best eerst in een bestand.

1 Open de Command Line Interface (CLI) van Python.

2 Maak een nieuw bestand aan. op File - New File

INKIJKEXEMPLAARDIEKEURE

3 het programma uit.

Tijdens het intypen van een commando krijg je hulp. Ook de kleuren helpen je om te controleren of je goed bezig bent.

4 Bewaar het programma.

Kies de juiste map om het programma in te bewaren en geef het bestand een passende naam.

Na de bestandsnaam staat het pad naar het bestand. Een Pythonprogramma heeft altijd de bestandsextensie .py

INKIJKEXEMPLAARDIEKEURE

1.3.3 Een programma uitvoeren

1 op Run - Run Module of op

2 Het programma wordt uitgevoerd en de uitvoer verschijnt in de Python Shell.

INKIJKEXEMPLAARDIEKEURE

2 ONDER DE MOTORKAP

INKIJKEXEMPLAARDIEKEURE

Nu je weet hoe je een programma moet bewaren en uitvoeren, is het tijd om te leren programmeren. Bij programmeren komt steeds dezelfde werkwijze terug:

Probleemstelling

Dit is een duidelijke omschrijving van het probleem. Wat is het probleem? Welk resultaat wil je?

Analyse

Je maakt een analyse van het probleem. Wat heb je nodig om het probleem op te lossen?

Algoritme

Je schrijft het algoritme uit. Kan je het probleem opsplitsen in deelproblemen?

Programma

Je zet het algoritme om in een programma. Je schrijft het programma in een programmeertaal.

Testen

Je controleert of je programma werkt door het te testen.

2.1 Een nieuwe touch

Probleemstelling

Je wilt de muren van je slaapkamer een nieuwe look geven door ze te verven in een ander kleur. De verf heb je al gekozen. Met 1 liter verf kan je 7 vierkante meter verven. Voor een ideale dekking heb je 2 lagen nodig. Bereken hoeveel liter verf je nodig hebt om een muur van je kamer te verven.

Analyse

Lees de probleemstelling aandachtig en denk na wat je nodig heb om dit probleem op te lossen. Wat weet je al? Wat is er gegeven? Je maakt een analyse van de probleemstelling.

Hoeveel m² is de muur?

- Wat moet je hier berekenen?

- Wat heb je nodig voor deze berekening?

Hoeveel liter verf heb je nodig voor één laag?

Hoeveel lagen moet ik verven?

Algoritme

De oplossing is vrij eenvoudig:

- Bereken de oppervlakte van de muur.

- Deel de oppervlakte door 7 om het aantal liter verf voor één laag te bekomen.

- Vermenigvuldig het aantal liter verf met het aantal lagen dat je moet verven.

Programma

De breedte van de muur is 5 m en de hoogte ervan is 2 m.

Het programma kan er dan zo uitzien:

INKIJKEXEMPLAARDIEKEURE

Testen

Je test altijd of je programma goed werkt.

Dit programma bestaat hier uit één regel en kan je meteen in de CLI uittesten:

Je hebt ongeveer 3 liter verf nodig om de muur twee lagen te geven.

Vind je dit een goede oplossing?

print(((5*2)/7) * 2)

print(((5*2)/7) * 2)

2.85714285714

Welke verbeteringen zou je aan het programma willen aanbrengen?

2.1.1 Variabelen

Het programma gebruikt de afmetingen van je slaapkamer. Dit programma kan je dus enkel gebruiken voor deze kamer. Het zou efficiënter zijn als je in het programma de breedte en de hoogte van een kamer kan ingeven.

Soms wil je in een programma een getal of een resultaat van een berekening kunnen opslaan. Dit kan door een variabele te gebruiken. Een variabele is een verwijzing naar een stukje geheugen waarin een waarde wordt bewaard.

INKIJKEXEMPLAARDIEKEURE

Variabele: plaats in het geheugen met een naam waarin een waarde wordt bewaard die je later nog nodig hebt

Het geheugen kan je vergelijken met een opbergsysteem voor smartphones in de klas of met een pakjesautomaat.

waarde

Dit opbergsysteem voor smartphones heeft 30 genummerde vakken. In elk vakje kan je één smartphone opbergen. Elk vakje heeft een nummer zodat een leerling goed kan onthouden in welk vak zijn smartphone zit en die zo makkelijk kan terugvinden. Er bestaan geen twee vakjes met hetzelfde nummer.

naam variabele

waarde

In elke locker zit er één pakje. De inhoud van de pakjes verschillen van elkaar. Elke locker heeft een nummer zodat je jouw pakje vlot in ontvangst kan nemen. Er bestaan geen twee lockers met hetzelfde nummer. naam variabele

Vakje in een opbergsysteem of locker in een pakjesautomaat Variabele nummer naam inhoud waarde

Een variabele heeft een naam zodat je meteen de waarde terugvindt. Er bestaan geen twee variabelen met dezelfde naam.

©
Deschuyffeleer

De naam van een variabele: - begint altijd met een letter, - bevat geen spaties.

Als de naam van een variabele uit meerdere woorden bestaat, dan gebruik je een laag streepje of underscore om de woorden van elkaar te scheiden.

Bijvoorbeeld: beginwaarde_loon en straat_nr

INKIJKEXEMPLAARDIEKEURE

De toekenning

Aan een variabele ken je een waarde toe door een gelijkheidsteken (=) te gebruiken. Die waarde kan tekst, een getal of een resultaat van een bewerking zijn.

Toekenning: naam variabele = expressie

Voorbeelden

2.1.2 Datatypes: integer, float en string

Er bestaan verschillende soorten waarden, bv. een getal of tekst. Als je voor de eerste keer een waarde aan een variabele toekent, dan maak je de variabele aan en geef je die een (data)type. Het type wordt bepaald door de waarde die je erin plaatst. Wat je kan doen met die variabele is afhankelijk van het type.

integer (int)

Dit is een geheel getal, een getal zonder cijfers na de komma dat positief, negatief, of nul kan zijn.

-5 0 float (float)

string (str)

Dit is een reëel getal. Met andere woorden, een decimaal getal Een ander woord voor een decimaal getal is een kommagetal. Als komma wordt een punt gebruikt.

Dit is tekst die bestaat uit geen of meerdere tekens en staat altijd tussen dubbele aanhalingstekens.

2.1.3 Expressie

Aan een variabele kan je een waarde toekennen of een resultaat van een berekening. Zo'n berekening of bewerking die tot een resultaat leidt, heet een expressie of uitdrukking

Expressie: een combinatie van één of meerdere variabelen, waarden en functies gescheiden door operatoren die als resultaat één waarde oplevert

INKIJKEXEMPLAARDIEKEURE

2.1.4 Operatoren

Rekenkundige operatoren

Met rekenkundige operatoren kan je bewerkingen met getallen uitvoeren. De rekenkundige operatoren staan in stijgende prioriteit.

Operator Betekenis

// het quotiënt na een integer of gehele deling

% de rest na een integer of gehele deling (= modulo of restberekening)

Haakjes in een expressie krijgen de hoogste prioriteit. Dit wil zeggen dat bewerkingen die tussen haakjes staan eerst worden uitgerekend.

Open de CLI en geef de expressies in. Welke waarde krijg je? Vul aan in de tabel. Gaat het om het datatype integer of float? Omcirkel het juiste antwoord.

100 / 5 integer/float

5 * 8 integer/float

32 // 5 integer/float

2.0 * 6 integer/float

36 % 5.0 integer/float

100 + 25 integer/float

100.0 - 25 integer/float

(100 + 50) / 5 integer/float

100 + 50 / 5 integer/float

Wat kun je besluiten? Vul aan met het juiste type.

Als een getal van het type float in een expressie staat, dan heeft de waarde van de expressie ook het type . Het resultaat van een deling heeft steeds een waarde van het type .

Stringoperatoren

Met stringoperatoren kan je bewerkingen uitvoeren met teksten. Je kan stukjes tekst bij elkaar optellen. Ze worden dan aan elkaar geplakt. Strings kan je ook vermenigvuldigen.

Voorbeelden

Operator

+het samenvoegen van twee teksten tot één tekst "kerst" + "vakantie""kerstvakantie"

*het maken van een string die bestaat uit een herhaling van de originele tekst

Nog voorbeelden

prijs = 100.0 aantal = 5 totaalprijs = prijs * aantal

INKIJKEXEMPLAARDIEKEURE

De expressie en de variabele zijn gegeven. Vul de waarde en het type verder aan in de tabel.

Expressie

verbruik = 8

prijs_benzine = 1.73

afstand = 500

kostprijs = (prijs_benzine * verbruik * afstand) / 100

teller = 1

teller = teller + 1

som = 0

som = som + 30

verbruik

prijs_benzine afstand kostprijs 8 integer

teller

teller

som = som + 50 som som som

aantal = 30

aantal = aantal / 2 aantal aantal

woord1 = "programmeren"

woord2 = "is"

woord3 = "fijn"

zin = woord1 + " " + woord2 + " " + woord3 woord1 woord2 woord3 zin

2.1.5

Invoer en uitvoer

In een programma voer je eerst de gegevens of de waarden in.

Het programma voert vervolgens de verschillende bewerkingen uit.

Hierna verschijnt het resultaat op het scherm.

INVOER

VERWERKING

UITVOER

De functie print() (uitvoer) ken je al, maar je kunt er meer dan enkel tekst mee schrijven.

print([expressie[, expressie …]])

[]: hetgeen tussen rechthoekige haakjes staat, mag maar moet niet gebruikt worden.

Voorbeelden

Opdracht (invoer)

INKIJKEXEMPLAARDIEKEURE

Resultaat (uitvoer)

print() Je krijgt een lege regel. print("leve het leven!") leve het leven!

print(2, "februari", 2023) 2 februari 2023

naam = "Mathilde" print("Naam: " + naam)

naam = "Filip" print("Naam:", naam)

Naam: Mathilde

Naam: Filip

De functie input() vraagt de gebruiker om gegevens in te voeren. Deze functie heeft een waarde van het type string, een stukje tekst.

input("tekst") type string

Voorbeelden

Programma

voornaam = input("Geef je voornaam in: ") familienaam = input("Geef je familienaam in: ") print(voornaam, familienaam)

korting = input("Wat is de korting? ") print("De korting bedraagt", korting, "%.")

Uitvoer

Geef je voornaam in: Ben

Geef je familienaam in: Verdickt

Ben Verdickt

Wat is de korting? 5 De korting bedraagt 5 %.

Je ziet dat de verschillende waarden in de print-functie gescheiden worden door een spatie.

2.1.6 De functie type

Maak dit programma dat twee ingegeven getallen met elkaar optelt in de CLI van Python.

getal1 = input("Geef een getal in: ") getal2 = input("Geef een getal in: ") som = getal1 + getal2 print ("het resultaat =", som)

Test het programma uit met de volgende waarden.

Vul het resultaat aan in de tabel.

5 7

INKIJKEXEMPLAARDIEKEURE

Klopt het resultaat? ja nee

Zo niet, wat is er hier gebeurd?

Merk je dat je programma niet helemaal doet wat je vraagt, dan kan de functie type je helpen. Deze functie wordt gebruikt om het datatype van een expressie te tonen.

type(expressie)

type van de waarde van de expressie

Voorbeelden

>>> type(5)

<class 'int'>

>>> type(6.2)

<class 'float'>

>>> type("Hallo")

<class 'str'>

>>> type (input("Geef een getal in: "))

Geef een getal in: 5

<class 'str'>

De waarde die de functie input() oplevert, heeft het type string. Of je nu tekst of een getal invoert het type zal altijd een string zijn, een stukje tekst.

int(expressie) type integer float(expressie) type float str(expressie) type string

Voorbeelden

Opdracht (invoer) Resultaat (uitvoer)

int(7.5)

int(8.1)

int("15") 15

int("20.5") foutmelding

Int("20.5") geeft een foutmelding omdat wat tussen de aanhalingstekens staat een float is en geen integer.

Wijzig het programma zodat het de twee ingegeven getallen nu wel correct optelt.

getal1 = int(input("Geef een getal in: ")) getal2 = int(input("Geef een getal in: ")) som = getal1 + getal2 print ("het resultaat =", som)

INKIJKEXEMPLAARDIEKEURE

Test het programma uit met de volgende waarden. Vul het resultaat aan in de tabel.

5 7

Klopt het resultaat? ja nee

In deze illustratie staan de datatypes en functies die je al kent in Python.

2.2 Juist genoeg verfpotten

Het programma dat het aantal liter verf berekent om de muur van je kamer te verven kan efficiënter geschreven worden. In dit programma gaan we nu een abstractie maken van de echte afmetingen van je kamer en van de eigenschappen van de verf. Alle gegevens die nodig zijn om dit op te lossen, geven we in. We berekenen hoeveel verfpotten we nodig hebben om de muur te verven.

Het is een goede gewoonte om in je programma enkele regels commentaar toe te voegen. Je noteert in enkele regels wat een stukje code precies inhoudt. Bij moeilijkere stukken in je programma voeg je best wat uitleg toe zodat je het beter begrijpt. Als je het programma later wilt aanpassen, dan weet je weer meteen de betekenis van de code.

Met het hekje (#) schrijf je een regel commentaar. Python zal dit negeren en doet hier niets mee.

Programma

Als je het aantal liter verf deelt door het aantal liter per pot krijg je meestal een kommagetal. Je kunt geen halve potten verf kopen. De functie int(liter_verf / liter_pot) geeft je het cijfer voor de komma van deze deling. Dat is meestal één pot te weinig. Door er 0.99 bij op te tellen krijg je het juiste aantal potten.

Aan de kleur van het programma kan je zien of je goed bezig bent: Kleur Betekenis in Python

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.

INKIJKEXEMPLAARDIEKEURE

Zit er nog een fout in, pas je programma aan tot het werkt. Dat is debuggen Een (computer)bug is een fout in een programma. Debuggen betekent het testen en bijsturen van een programma totdat het foutloos werkt.

2.3 Zoveel snoepen

Probleemstelling

Je organiseert een verjaardagsfeestje en wilt de aanwezigen overladen met snoepen. De snoepen worden eerlijk verdeeld onder de aanwezigen.

Maak een programma waarin je berekent hoeveel snoepen iedereen krijgt en hoeveel er nog over zijn.

Analyse

Wat moet je invoeren?

Waarde Type aanwezigen integer aantal_gekocht integer

Wat moet je berekenen? - hoeveel snoepen iedereen krijgt - hoeveel snoepen er over zijn, de rest

INKIJKEXEMPLAARDIEKEURE

Je kan dit op twee manieren oplossen: met een gewone deling of met een gehele deling. Beide oplossingen worden hier uitgewerkt zodat je goed weet hoe een gehele deling met rest werkt.

Wat moet je uitvoeren?

Waarde Type per_persoon integer rest_snoepen integer

Algoritme

We zetten het algoritme in een Nassi-Shneiderman diagram (NSD) om het makkelijk leesbaar te maken.

Gewone deling

lees aanwezigen

lees aantal_gekocht

per_persoon = int(aantal_gekocht / aanwezigen)

rest_snoepen = aantal_gekocht – per_persoon * aanwezigen

schrijf per_persoon

schrijf rest_snoepen

Gehele deling

lees aanwezigen

lees aantal_gekocht

per_persoon = aantal_gekocht // aanwezigen

rest_snoepen = aantal_gekocht % aanwezigen

schrijf per_persoon

schrijf rest_snoepen

Programma

Gewone deling

Gehele deling

Testen

Wat is het resultaat bij de volgende ingevoerde waarden?

INKIJKEXEMPLAARDIEKEURE

3 HET LEVEN BESTAAT UIT KIEZEN

INKIJKEXEMPLAARDIEKEURE

In het dagelijks leven moet je keuzes maken, grote of kleine keuzes.

Naar welke film ga ik?

Welke hobby beoefen ik?

Welke studierichting kies ik?

Economie

Maatschappij & Welzijn

Bedrijfswetenschappen Economische wetenschappen

Humane wetenschappen

Maatschappij- en welzijnswetenschappen

Stem Biotechnologische STEMwetenschappen Natuurwetenschappen Technologische wetenschappen

Taal & cultuur Grieks-Latijn Latijn Moderne talen

Sport

Sportwetenschappen

Bedrijf en organisatieOrganisatie en logistiek

Maatschappij & Welzijn

Maatschappij & Welzijn / Sport

Biotechnieken Elektromechanische technieken Elektrotechnieken

Taal en communicatie

Zorg en welzijn

Elektriciteit Hout Mechanica

3.1 De keuze of selectie

Vaak is het nodig om in een algoritme ook een keuze of een selectie in te bouwen. Het algoritme zal dan niet volledig doorlopen worden. De gebruiker bepaalt welke delen uitgevoerd worden. Aan de hand van een voorwaarde bepaalt de gebruiker welke opdrachten uitgevoerd worden.

De selectie in Scratch:

Eenzijdige

VOORWAARDE

OPDRACHTENBLOK

VOORWAARDE

OPDRACHTENBLOK

OPDRACHTENBLOK

Een selectie kan je schematisch zo weergeven:

Eenzijdige selectie

Tweezijdige selectie

waar onwaar

opdracht(en) opdracht(en) voorwaarde

Enkel als aan de voorwaarde voldaan is, worden een aantal opdrachten uitgevoerd. Daarna worden de andere opdrachten van het programma uitgevoerd.

In Python wordt dat:

if <voorwaarde>: <opdrachtenblok> <opdrachtenblok>

Voorbeeld

Het programma invoeren:

waar onwaar

opdracht(en) opdracht(en) opdracht(en) voorwaarde

Als aan de voorwaarde voldaan is, worden een aantal opdrachten uitgevoerd. Is de voorwaarde niet voldaan dan wordt andere opdrachten uitgevoerd. Daarna worden de andere opdrachten van het programma uitgevoerd.

INKIJKEXEMPLAARDIEKEURE

if <voorwaarde>: <opdrachtenblok> else <opdrachtenblok> <opdrachtenblok>

Het opdrachtenblok bestaat uit één of meerdere opdrachten onder elkaar. Het staat ingesprongen ten opzichte van de regel erboven. Zodra je een lijn aan de marge typt, behoort het niet meer tot het blok.

wordt altijd uitgevoerd

wordt uitgevoerd als voorwaarde waar is wordt uitgevoerd als voorwaarde onwaar is

Het programma uitvoeren:

Voorwaarde: een expressie die de waarde waar (True) of onwaar (False) heeft

In Python worden de begrippen True (waar) en False (onwaar) gebruikt. True en False worden altijd met een hoofdletter geschreven.

True en False zijn waarden van het (data)type bool, booleaanse waarden.

3.2 De vergelijkingsoperatoren

In een voorwaarde staat steeds een vergelijkingsoperator. De uitkomst van deze operator kan slechts twee antwoorden hebben: True of False. Zowel numerieke als alfanumerieke gegevens kunnen gebruikt worden in een voorwaarde. De alfanumerieke gegevens worden gesorteerd volgens de ASCII-code. De ASCII-tabel is een coderingstabel die elke letter, cijfer en teken omzet naar een binair getal dat door de computer gebruikt kan worden.

Zoek de waarde van volgende voorwaarden en noteer in de tabel.

Operator Omschrijving

<kleiner dan / komt alfabetisch voor"kasteel"<"huis"

> groter dan / komt alfabetisch na 15 > 10

<= kleiner dan of gelijk aan "stoel" <= "zetel"

>= groter dan of gelijk aan 90 >= 90

== gelijk aan

INKIJKEXEMPLAARDIEKEURE

600 == 900

!=verschillend van (niet gelijk aan)3.14 != 3.15

Soms leidt een probleemstelling tot een voorwaarde waarbij iets moet gebeuren als die onwaar is. Dat is niet mogelijk en wordt opgelost door de voorwaarde om te keren.

Voorbeeld uit het dagelijks leven

Voorwaarde Omgekeerde voorwaarde

Bij slecht weer: True: /

False: buitenspelen

Voorbeelden

Bij goed weer: True: buitenspelen

False: /

Voorwaarde Omgekeerde voorwaarde

prijs <= 100 prijs > 100

zin == "stop" zin != "stop"

geboortejaar > 2020 geboortejaar <= 2020

3.2.1 Klimaatvriendelijk wonen

Probleemstelling

Het is belangrijk dat iedereen een steentje bijdraagt aan het klimaat. Dit kan je doen door je huis zo goed mogelijk te isoleren. Hoogrendementsglas (HR-glas) isoleert twee tot drie keer beter dan gewoon dubbel glas en vier tot vijf keer beter dan enkel glas. Door het plaatsen van HR-glas kan je dus heel wat energiekosten besparen.

INKIJKEXEMPLAARDIEKEURE

Vlaams Energie- en Klimaatagentschap

Als je in een bestaande woning de bestaande beglazing vervangt door hoogrendementsglas dan krijg je een premie van 16 euro/m² met een maximum van 40 % van het factuurbedrag inclusief btw.

Maak een programma om de premie te berekenen.

Analyse

Wat moet er ingevoerd worden?

Waarde

oppervlakte_glas

factuurbedrag float

Wat moet er berekend worden?

- Premie = oppervlakte glas x 16

- Als de premie hoger is dan 40 % van factuurbedrag dan wordt deze beperkt tot 40 % van het factuurbedrag (= de maximumpremie).

Wat moet er uitgevoerd worden?

Waarde

©

Algoritme

lees oppervlakte glas lees factuurbedrag bereken premie bereken maximumpremie ja nee

premie > maximumpremie

premie = maximumpremie schrijf premie

INKIJKEXEMPLAARDIEKEURE

Programma

Testen

Test het programma met volgende waarden. Vul de premie aan in de tabel.

3.2.2 Even of oneven

Probleemstelling

Maak een programma dat een geheel getal inleest en bepaalt of het even of oneven is.

INKIJKEXEMPLAARDIEKEURE

Analyse

Wat moet er ingevoerd worden?

Waarde Type getal integer

Wat moet er berekend worden?

- Wanneer is een geheel getal even?

Wat moet er uitgevoerd worden? even of oneven

Algoritme

lees getal

ja nee schrijf even schrijf oneven getal is deelbaar door 2

Programma

Het programma invoeren:

Het programma uitvoeren:

Testen

Test het programma met volgende waarden. Vul 'even' of 'oneven' aan in de tabel.

3.3 Soms blijf

je keuzes

maken

In sommige situaties heb je niet voldoende met één keuze maar heb je meerdere keuzes nodig om tot het resultaat te komen.

Probleemstelling

Schrijf een programma dat de begin- en einddatum van een ingegeven seizoen weergeeft. Controleer ook of het seizoen juist geschreven is.

Analyse

Wat moet er ingevoerd worden?

Waarde Type seizoen string

Wat moet er gecontroleerd worden? het ingegeven seizoen

Wat moet er uitgevoerd worden? begin- en einddatum van het seizoen

Algoritme

lees seizoen ja nee

seizoen == "lente"

INKIJKEXEMPLAARDIEKEURE

seizoen == "zomer"

tussen 21/3 en 20/6 ja nee

seizoen == "herfst"

tussen 21/6 en 20/9 ja nee

seizoen == "winter"

tussen 21/9 en 20/12 ja nee

tussen 21/12 en 20/3verkeerd geschreven

Programma

Je ziet een opeenvolging van if en else in dit programma. Als je else en if samentrekt, krijg je elif

else: gevolgd door een if ➝ elif

INKIJKEXEMPLAARDIEKEURE

Met elif maak je het programma korter:

Testen

Test het programma uit voor de verschillende seizoenen.

Als de eerste voorwaarde in het programma een True oplevert, dan stopt het programma. De volgorde van de voorwaarden is dus belangrijk.

Wat zal de uitvoer van het programma zijn als het getal 5 wordt ingelezen? Vul aan in de tabel.

Programma

Programma

Uitvoer: Uitvoer:

3.4 Logische of

booleaanse operatoren

Soms wil je in één vraag meerdere gegevens combineren. Bijvoorbeeld als iemand koffie wenst, vraag je "met melk of suiker" en niet "met melk" en nadien "met suiker". Analoog kun je in een voorwaarde, in plaats van meerdere if/elif/else te gebruiken, logische of booleaanse operatoren gebruiken om voorwaarden te combineren.

Zal het resultaat True of False zijn? Vul aan in de tabel. Logische

INKIJKEXEMPLAARDIEKEURE

Vul de volgende zinnen aan.

De logische operator AND is enkel True als

De logische operator OR is True als

3.4.1 Een eenvoudige rekenmachine

Probleemstelling

Programmeer een rekenmachine waarmee je kunt optellen, aftrekken, vermenigvuldigen en delen.

Analyse

Wat moet er ingevoerd worden?

Waarde

getal1 float getal2 float bewerking string

Wat moet er berekend worden? het resultaat van de bewerking van twee getallen

- Zijn er uitzonderingen? Delen door nul is niet mogelijk.

Wat moet er uitgevoerd worden? het resultaat van de bewerking of een foutmelding

Algoritme

lees getal1

lees getal2

lees bewerking ja nee

bewerking == "+"

INKIJKEXEMPLAARDIEKEURE

bewerking == "-"

schrijf getal1 + getal2 ja nee

bewerking == "x"

schrijf getal1 – getal2 ja nee

bewerking == "/" en getal2 != 0

schrijf getal1 x getal2 ja nee

schrijf getal1 / getal2schrijf delen door 0 kan niet

Programma

Testen

Test het programma uit met de volgende waarden. Vul het resultaat aan in de tabel.

4 PROGRAMMEREN IS RECYCLEREN

Met het begrip decompositie heb je kennisgemaakt. Je gaat een probleem niet in zijn geheel oplossen maar je gaat het opdelen in kleinere deelproblemen die je afzonderlijk oplost.

Voor grotere problemen is dit zeker noodzakelijk.

Veelvoorkomende problemen:

- Hoe lang is een string?

- Wat is het grootste getal in een reeks getallen?

- Een getal afronden tot twee cijfers na de komma

- Een leeftijd berekenen …

De ontwikkelaars van programmeertalen weten dit en hebben daarom deze kleine problemen al voor ons geprogrammeerd in een functie

Functie: herbruikbare programmeercode met een bepaalde functionaliteit, namelijk het berekenen van een waarde of het uitvoeren van een actie

Een functie heeft:

- een functienaam;

- x, y …: 0, 1 of meerdere argumenten;

- terugkeerwaarde en/of actie die moeten uitgevoerd worden.

4.1 Ingebouwde functies

Deze functies ken je al.

FunctieFunctienaamArgument(en)Terugkeerwaarde Actie print("Hallo")print "Hallo" - Hallo komt op het scherm. print("ik", "jij")print"ik" en "jij" - ik jij komt op het scherm. input("woord?")input"woord?"het ingelezen woord woord? komt op het scherm en er wordt gewacht op de ingave van een woord

Er bestaan nog andere functies.

abs(<getal>) Dit geeft de absolute waarde van een getal.

round(<getal>[,<decimalen>])

len(<string>)

Een getal wordt afgerond op het opgegeven aantal decimalen.

Dit is de lengte van een string en geeft het aantal tekens weer. len("") len("Enter") 0 5

Test deze functies uit in de CLI van Python.

INKIJKEXEMPLAARDIEKEURE

round(15.639)

4.2 Module: verzameling van functies

Niet alle functies zijn zomaar beschikbaar. Voor sommige functies moet je een module importeren om die te kunnen gebruiken.

Module FunctieBetekenis

mathsqrt(<getal>)Dit berekent de vierkantswortel van een getal. randomrandom()Dit geeft een willekeurig float getal tussen 0 en 1, met 0 inbegrepen. randintrandint(<getal1>, <getal2>)

Voorbeelden

>>> import math

>>> math.sqrt(9)

3.0

>>> math.sqrt(256.0)

16.0

>>> math.sqrt(1050.569)

32.41248216351225

Dit geeft een willekeurig integer getal gelegen tussen getal1 en getal2, met de grenzen inbegrepen.

>>> import random

>>> random.random()

0.6565233437970365

>>> random.random()

0.4135385037392362

>>> random.randint(0,10) 2 >>> random.randint(0,10) 5

4.2.1 Een vierkantsvergelijking oplossen

Probleemstelling

Maak een programma dat de wortels berekent van een vierkantsvergelijking: ax² + bx + c = 0.

Analyse

Wat moet er ingevoerd worden?

Waarde Type a integer b integer c integer

Wat moet er berekend worden?

- De discriminant: d = b² - 4ac

- De wortels x = –b± d 2a of een tekst in het geval dat d < 0 is

Wat moet er uitgevoerd worden? de wortel(s) of een tekst

Algoritme

INKIJKEXEMPLAARDIEKEURE

lees a lees b lees c bereken de discriminant ja nee bereken wortel1 bereken wortel2 schrijf wortel1 en wortel2 ja nee bereken wortel schrijf wortel schrijf er zijn geen reële wortels discriminant > 0 discriminant == 0

Programma

Testen

Test het programma uit met de volgende waarden.

Vul het resultaat aan in de tabel.

abcresultaat (uitvoer)

14-5 242

INKIJKEXEMPLAARDIEKEURE

4.3 Zelf functies maken

Je kunt ook zelf functies maken.

Enkele afspraken

De naam van een functie:

- bestaat uit alleen letters, cijfers en underscores; - start niet met een cijfer; - bestaat uit alleen kleine letters; - omschrijft wat de functie doet.

Definiëren van een functie: def functienaam([<argumentenlijst>]): opdrachtenblok

Functie met terugkeerwaarde eindigt met: return terugkeerwaarde

Oproepen van een functie: functienaam([<argumentenlijst>])

Probleemstelling

Schrijf een programma dat een gebruiker naar zijn leeftijd vraagt en laat weten in welk jaar die 100 jaar wordt. Maak een functie om het jaartal te bepalen.

Analyse

Wat moet er ingevoerd worden?

Waarde Type leeftijd integer huidig_jaar integer verjaard string

Wat moet er berekend worden?

- Hoe bereken je het jaar waarop de gebruiker 100 jaar wordt?

- Met wat moet je rekening houden?

INKIJKEXEMPLAARDIEKEURE

Wat moet er uitgevoerd worden? het jaar waarop de gebruiker 100 jaar wordt

Algoritme

lees leeftijd

lees huidig_jaar lees verjaard

bereken het jaar waarop de gebruiker 100 wordt ja nee jaar = jaar - 1 schrijf jaar verjaard == "nee"

INKIJKEXEMPLAARDIEKEURE

Programma

Programma invoeren

Programma uitvoeren

In de functie worden hier andere namen voor variabelen gebruikt dan in het programma. Dit is niet verplicht. Het is om aan te geven dat het over verschillende variabelen gaat. De variabele "jaar" in de functie is een ander geheugenvakje dan de variabele "eeuweling" in het programma.

Testen

Test het programma uit voor jezelf en voor anderen zoals je vrienden, familieleden …

4.3.1 Hoger lager

Probleemstelling

Speel je mee? Het spelletje gaat als volgt: de computer denkt aan een willekeurig getal tussen 0 en 10 en jij probeert het te raden. De computer kan drie mogelijke antwoorden geven: gewonnen, hoger of lager. Maak dit programma.

INKIJKEXEMPLAARDIEKEURE

Analyse

Wat moet er ingevoerd worden? Waarde

getal

Wat moet er bepaald worden? het zoekgetal

Wat moet er uitgevoerd worden? - gewonnen, hoger of lager - het zoekgetal

Algoritme

bepaal het zoekgetal lees getal ja

getal == zoekgetal

getal < zoekgetal

schrijf gewonnen ja nee

schrijf hoger

schrijf zoekgetal

schrijf lager

Programma

Programma invoeren

Programma uitvoeren

Testen

Geef de volgende testgegevens in het programma en noteer het resultaat.

INKIJKEXEMPLAARDIEKEURE

getal uitvoer: gewonnen, hoger, lager zoekgetal 5 4 10 1

Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.