Savvy handboek hoofdstuk 1

Page 1


1

De bouwstenen

Inhoudstafel

1.1 Waarom Python

Er bestaan heel wat verschillende soorten programmeertalen. In dit boek leer je programmeren in Python. Python is gemakkelijk (en zelfs leuk!) om te leren. In plaats van je in strikte syntaxisregels te storten, leest Python als Engels en is het eenvoudig te begrijpen voor iemand die nieuw is in programmeren.

In de programma’s worden vooral standaard programmeerstructuren gebruikt. Python biedt soms andere mogelijkheden, maar daar kiezen we in dit leerboek bewust niet voor, zodat je gemakkelijk naar een andere programmeertaal kan overschakelen.

Interpreteer en experimenteer

Taak

1 Lees onderstaande programma’s.

2 Wat denk je dat er gebeurt? Wat denk je dat de uitvoer is?

3 Open de programma’s in Thonny, voer ze uit en controleer of je onderstelling juist is.

Open Begroeting1.py

print("goeiemorgen")

Open Begroeting2.py

print("goeiemorgen") print("morgen")

Open Begroeting3.py

print("goeiemorgen", "morgen", "goeiedag")

Open Begroeting4.py

naam = input("Geef een naam in? ") print("goeiemorgen", naam)

Taak

1 Pas Begroeting4.py aan zodat de output wordt:

>>> %Run begroeting5.py

Geef een naam in? Piet goeiemorgen goeiemorgen Piet

2 Bewaar het programma als Begroeting5.py

Taak

1 Open Begroeting6.py en Begroeting7.py

2 Voer beide programma’s uit. Welk programma zou je gebruiken voor een chatbot?

Begroeting6.py.

print("goeiemorgen Piet")

Begroeting7.py.

naam = input("Met wie heb ik de eer?")

print("Dag", naam)

1.2 Uitvoer

Als je tekst wilt laten verschijnen op het scherm, dan 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. Deze tekst staat tussen aanhalingstekens (“” of ‘’). Deze geven het begin en het einde van de tekst aan.

print({<tekst>}) tekst ::= sliert van tekens tussen aanhalingstekens

Aandachtspunten:

> Na het uitvoeren van de print-functie volgt een Enter.

> Meerdere teksten worden gescheiden door een komma. De komma wordt in de uitvoer vervangen door een spatie.

Afspraak:

We gebruiken in dit boek “ ” en geen ‘’.

Voorbeelden:

commando

print(“2-FYS-212”)

uitvoer op scherm

2-FYS-212 print(“een”, “twee”) een twee print(“een”, “twee”, “drie”, “vier”) print(“hoedje van papier”)

een twee drie vier hoedje van papier

1.3 Variabelen

Een programma schrijf je niet voor één reeks waarden. Je wilt dat je programma breed toepasbaar is. Daarom verkiezen we Begroeting7.py boven Begroeting6.py. Iedereen die contact legt met de chatbot, wordt persoonlijk aangesproken. Je kan dit vergelijken met formules in een rekenblad, waarbij je celadressen invult in plaats van de waarden die in de cellen staan.

Wil je een probleem algemeen oplossen, gebruik dan variabelen om waarden in op te slaan. Naam in Begroeting7.py is een variabele.

Tijdens het verloop van een programma zal je ook waarden creëren die je tijdelijk moet opslaan omlater te kunnen gebruiken. Gebruik ook hiervoor variabelen.

Variabele ::= plaats in het geheugen met een naam waarin een waarde wordt bewaard. Je verwijst naar die plaats met de naam van de variabele.

Om een variabele aan te maken en een waarde te geven, gebruik je de toekenning.

Toekenning ::= <naam variabele> = <expressie>

naam = "Noah"

toekenning

naam variabele

naam

Noah variabele

waarde variabele

De eerste keer dat je in je programma een waarde toekent aan een specifieke variabele naam, wordt de bijhorende variabele gecreëerd. Als je later een andere waarde aan dezelfde variabele toekent, wordt de eerste waarde overschreven, de oorspronkelijke waarde geraakt verloren. In de metafoor van de doos: je maakt de doos leeg en stopt er iets nieuws in, de doos kan maar één inhoud bevatten. Een variabele bevat altijd de laatst-verkregen waarde.

Je kan aan een variabele een waarde toekennen of het resultaat van een berekening. Zo een berekening noemen we een expressie.

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

Voorbeelden:

naam variabele waarde toekenning

weekdag donderdag

breedte 5

btw 0.21

getal1 10

getal2 7

som 17

Aandachtspunten:

> Variabelen moeten geïnitieerd zijn voor je ze kan gebruiken.

>>> som = 0

weekdag = “donderdag”

breedte = 5

btw = 0.21

getal1 = 10

getal2 = 7

som = getal1 + getal2

> Onderstaande expressie geeft een foutmelding (NameError) als de variabele som niet werd geïnitieerd.

>>> som = som + 1

Afspraken:

> Geef betekenisvolle namen aan variabelen. Een uitzondering hierop zijn wegwerp variabelen. Dit zijn variabelen die slechts in een klein deel van de code gebruikt worden en daarna niet meer, bijvoorbeeld als teller.

> Gebruik enkel kleine letters in de naam van een variabele, geen hoofdletters.

> Een naam van een variabele bevat geen spaties.

> Een naam van een variabele begint met een letter

> Als je een naam voor een variabele wilt maken die uit meerdere woorden bestaat, gebruik dan het onderstrepingsteken (underscore) om de woorden te scheiden, bijvoorbeeld: beginwaarde_loon, straat_nr.

> Gebruik geen gereserveerde woorden als naam voor variabelen, dit zijn woorden met een speciale betekenis voor Python. Zie hieronder:

False

None

True and as assert break class continue def del elif else except finally for from global if import in is lambda nonlocal not or pass raise return try while with yield

Interpreteer en experimenteer

Taak

1 Open Som1.py.

2 Voer het programma uit. Kan je uitleggen wat er aan de hand is?

getal1 = input("Geef een getal in?") getal2 = input("Geef een getal in?") som = getal 1 + getal 2 print("De som is", som)

Initiëren van een variabele ::= een startwaarde toekennen aan de variabele

1.4

Datatypes: integer, float en string

Er bestaan verschillende soorten waarden, bijvoorbeeld 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 ook een (data)type. Het type wordt bepaald door de waarde die je erin plaatst. Wat je kan doen met de variabele is afhankelijk van het type.

type

integer (int)

float

string (str)

Afspraak:

betekenis

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

Dit is een reëel getal, m.a.w. een decimaal getal. Als decimaal teken wordt een punt gebruikt.

voorbeelden

1000 -5

0

5.0 3.658 -153.26

Dit is tekst die bestaat uit geen of meerdere tekens, omsloten door dubbele of enkele aanhalingstekens. “ ” “Hallo” “9000”

We gebruiken steeds dubbele aanhalingstekens om een string aan te duiden.

Een betere definitie van een variabele is:

variabele ::= plaats in het geheugen met een naam waarin een waarde van een bepaald type wordt bewaard. Je verwijst naar die plaats met de naam van de variabele.

Let op:

Een variabele krijgt het type van de waarde die je eraan toekent. Dit noemt “soft typing”. Plaats je een waarde van een ander type in de variabele, dan zal het type van deze variabele veranderen. Dit proberen we uiteraard te vermijden, behalve bij standaardaanpassingen die zich voordoen bij het delen van twee integers. Het resultaat is dan van het type float. In het volgende stukje code krijgt de variabele “getal” telkens een ander type.

code type variabele “getal” getal = “twee” getal = 5 getal = getal / 2 string integer float

1.5

Rekenkundige operatoren

Voor het uitvoeren van een berekening, heb je operatoren nodig. De betekenis van de operator en het soort operator is afhankelijk van het type van de variabele.

Met rekenkundige operatoren kun je bewerkingen op getallen uitvoeren. De rekenkundige operatoren staan in stijgende prioriteit:

// quotiënt berekenen na een integer

gehele deling

% rest berekenen na een integer of gehele deling (=

Haakjes in een expressie krijgen de hoogste prioriteit.

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

1.6 Invoer

De functie print() voor uitvoer ken je. Er bestaat een analoge functie om gegevens in te voeren:

variabele = input([<tekst>])

Het resultaat, de terugkeerwaarde, van de functie input () is van het type string

De <tekst> in de functie input() gebruik je om de uitvoerder van het programma duidelijk te maken welke input je wilt.

1.7 De functie type()

type(<expressie>) Geeft als resultaat het 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'>

1.8 Typeconversie functies

Met de typeconversie functies kun je het type van een waarde wijzigen, indien dit mogelijk is.

int(<expressie>) De waarde van de <expressie> wordt, indien mogelijk, omgezet naar het type integer, anders verschijnt er een foutmelding.

float(<expressie>) De waarde van de <expressie> wordt, indien mogelijk, omgezet naar het type float, anders verschijnt er een foutmelding.

str(<expressie>) De waarde van de <expressie> wordt, indien mogelijk, omgezet naar het type string, anders verschijnt er een foutmelding.

Voorbeelden:

opdracht (invoer) resultaat (uitvoer)

int(7.5) 7

int(8.1) 8

int(“15”) 15

int(“20.5”) foutmelding

Interpreteer en experimenteer

Taak

1 Open Som1.py

2 Pas het programma aan zodat het de som berekent van de ingevoerde getallen. Er worden gehele getallen ingevoerd.

3 Bewaar het programma als Som2.py

case-sensitive ::= de programmertaal Python is case-sensitive, m.a.w. er wordt een onderscheid gemaakt tussen hoofdletters en kleine letters.

1.9 De systematiek van het programmeren

Bij programmeren komt steeds dezelfde werkwijze terug:

> Probleemstelling

Dit is een duidelijke omschrijving van het concrete 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 ontwerpt een algoritme om het probleem op te lossen en schrijft het uit aan de hand van bijvoorbeeld een pseudocode, een Nassi-Schneiderman diagram of een flowchart.

Kan je het probleem opsplitsen in deelproblemen?

> Programma

Je zet het algoritme om in de gekozen programmeertaal.

> Testen

Je controleert of je programma werkt door het te testen. Vooraf bepaal je enkele testwaarden zodat alle uitzonderingsgevallen in je programma getest worden.

Gewonnen!

Probleemstelling

Je klas heeft deelgenomen aan een wedstrijd en gewonnen. Jullie krijgen een hele hoop filmtickets om gratis naar de cinema te gaan. Maak een programma waarin berekend wordt hoeveel tickets elke leerling krijgt en hoeveel tickets er nog overblijven.

Analyse

Invoer

waarde type

aantal_lln_klas integer aantal_tickets integer

Verwerking

Wat moet je berekenen? Wat doet het programma?

> Hoeveel tickets krijgt elke leerling?

> Hoeveel tickets blijven er over?

Uitvoer

waarde type tickets_per_lln integer tickets_over integer

Algoritme

Voor het noteren van het algoritme gebruiken we een soort pseudocode. We noteren kort wat er moet gebeuren.

lees aantal_lln_klas

lees aantal_tickets bereken tickets_per_leerling met integer deling bereken tickets_over met restoperator schrijf tickets_per_lln schrijf tickets_over

Programma

# Bereken het aantal filmtickets per leerlingen en de overschot #

# Lees het aantal lln in de klas en het aantal gewonnen tickets in.

aantal_lln_klas = int(input("Hoeveel leerlingen zittern er in de klas? "))

aantal_tickets = int(input("Hoeveel filmtickets heb je gewonnen? "))

# Bereken het aantal tickets per lln en de overschot. tickets_per_lln = aantal_tickets // aantal_lln_klas tickets_over = aantal_tickets % aantal_lln_klas

# Schrijf het aantal tickets per lln en de overschot uit. print("Elke leerling krijgt", tickets_per_lln, "filmtickets.") print("Er blijven", tickets_over, "filmtickets over.")

Bewaar het programma onder de naam Filmtickets.py

Testen

Kies testwaarden zodat je wel en geen rest hebt. Bijvoorbeeld:

aantal_lln_klas aantal_tickets tickets_per_lln tickets_over

20 40 2 0

20 50 2 10

commentaar ::= Maak er een gewoonte van om je programma te voorzien van commentaar. Zo wordt het programma leesbaarder voor anderen. Als je het programma later wilt aanpassen, zie je zelf ook wat de verschillende blokken programmacode doen. Een commentaarregel begint met ‘#’. Python negeert deze regel.

1.10 Typeconversie functies

Gemakkelijk

1 Je vader wil een rechthoekig stuk tuin afboorden en er een bloemenweide van maken. Om te bepalen hoeveel bloemenzaad en borderrand hij nodig heeft, moet hij de oppervlakte en omtrek van dat stuk gras weten. Maak een programma dat de omtrek en oppervlakte van een rechthoek berekent. Bepaal zelf wat moet worden ingegeven. Verzorg de uitvoer.

Bewaar het programma onder de naam Rechthoek.py.

2 De bank geeft kasbonnen uit met een vaste rentevoet en een vaste looptijd met enkelvoudige intrest. Maak een programma voor de bank dat de intrest berekent die een kasbon opbrengt. De waarde van de kasbon, de rentevoet en de looptijd worden ingegeven.

Je kan de enkelvoudige intrest berekenen via de formule I = k * i * n … met I = intrest, k = beginkapitaal, i = rentevoet (in de vorm 0,045) en n = looptijd in jaar

Bewaar het programma onder de naam Intrest1.py

3 Je bent geboeid door Amerika en wilt er graag naartoe. Maar hoe warm is het er nu juist? In België wordt de temperatuur weergegeven in graden Celsius, in Amerika in graden Fahrenheit. Maak een programma dat een ingegeven temperatuur in graden Celsius (C) omzet in het equivalent in graden Fahrenheit (F).

formule: F = C * 9 / 5 + 32

Bewaar het programma onder de naam Fahrenheit1.py

4 Je vindt je oude spaarpot terug. Nu wil je graag weten hoeveel euro er precies in zit. Maak een programma dat een geheel aantal eurocenten omzet naar twee hoeveelheden: het aantal euro’s en de resterende eurocenten.

Bewaar het programma onder de naam Geld.py

5 De toegangsprijs voor Technopolis is:

> jongeren tussen 0 en 18 jaar: € 22

> volwassenen: € 27

> 65+: € 25,50

Maak een programma dat de aantallen per categorie opvraagt en berekent hoeveel de toegangsprijs is voor de groep.

Bewaar het programma onder de naam Technopolis.py.

Gemiddeld

6 Maak een programma dat de inhoud en oppervlakte van een balk berekent. Bepaal zelf wat moet worden ingegeven. Verzorg de uitvoer.

Bewaar het programma onder de naam Balk.py

7 In Amerika is de munteenheid de Amerikaanse dollar. Maak een programma waarmee je een ingevoerd bedrag in euro kan omrekenen naar Amerikaanse dollar. Zoek de wisselkoers op het internet. Je hoeft niet af te ronden. Het resultaat wordt als volgt weergegeven: “X EUR is gelijk aan Y USD” met X het bedrag in euro en Y het bedrag in dollar.

Bewaar het programma onder de naam Wissel1.py

8 Je gaat elke dag joggen. Je weet welke afstand je aflegt en hoe lang je erover doet, maar hoe snel loop je nu eigenlijk? Als je een verplaatsing maakt is de afgelegde weg afhankelijk van je snelheid en de tijd van je verplaatsing.

De formule is S = v * t met S = afstand, v = snelheid en t = tijd.

Maak een programma om te berekenen hoe snel je loopt. Geef het aantal km in dat je hebt gejogd en de tijd in minuten. Bereken je snelheid in km/u.

Bewaar het programma onder de naam Snelheid1.py

9 Maak een programma om de inhoud van twee getalvariabelen te wisselen. Maak gebruik van gehele getallen.

Bijvoorbeeld:

bij de start van het programma

bij het einde van het programma getal1 7 getal1

10 getal2 10 getal2 7

Bewaar het programma onder de naam WisselVar.py.

10 Maak een programma om de oppervlakte van een driehoek te berekenen als de lengte van de drie zijden gekend zijn.

formule:

Bewaar het programma onder de naam Driehoek1.py

11 In een bedrijf dat stofzuigers verkoopt wordt het loon van een vertegenwoordiger als volgt berekend: het bestaat uit een vast gedeelte van 958,36 EUR en een variabel gedeelte. Het variabel gedeelte bedraagt 8,25 % van het omzetcijfer van deze vertegenwoordiger. Maak een programma om het loon te berekenen. Lees de naam van de vertegenwoordiger en het omzetcijfer in. Verwerk de naam en het loon in de uitvoer.

Bewaar het programma onder de naam Loon.py.

Gevorderd

12 De digitale tijdsaanduiding (bijvoorbeeld 10:51) is ingeburgerd. Ze wordt genoteerd als u:m met u = uren en m = minuten.

Maak een programma dat berekent hoeveel uren en minuten er tussen twee tijdstippen zitten. Voor de invoer geldt het volgende:

> De tijdstippen worden met een digitale tijdsaanduiding ingegeven;

> Je geeft voor beide tijdstippen apart de uren en minuten in;

> Het tweede tijdstip valt later dan het eerste tijdstip;

> Het tweede tijdstip valt in dezelfde dag als het eerste tijdstip.

Voorbeeld:

Geef het uur van het eerste tijdstip in? 10

Geef de minuten van het eerste tijdstip in? 50

Geef het uur van het tweede tijdstip in? 15

Geef de minuten van het tweede tijdstip in? 30

Tussen de twee tijdstippen zit 4 uren en 40 minuten.

Bewaar het programma onder de naam Tijd.py.

13 Een eeuw begint bij het jaar waarvan het jaartal eindigt op 00, bijvoorbeeld 2000. Het jaar 2000 is het eerste jaar van de 21ste eeuw. De 21ste eeuw duurt van 2000 tot en met 2099.

Maak een programma dat bepaalt tot welke eeuw een jaartal behoort.

Voorbeeld:

Geef het jaartal in? 1900 jaartal: 1900 – eeuw: 20

Bewaar het programma onder de naam Eeuw.py.

14 Maak een programma dat een ingegeven aantal seconden omrekent naar dagen, uren, minuten en overblijvende seconden.

Voorbeeld:

125200 sec = 1 dag, 10 uur, 46 min. en 40 sec.

Bewaar het programma onder de naam Seconden.py.

15 Maak een programma dat berekent op welke dag (maandag, dinsdag …) de n-de dag (1 <= n <= 365) van het jaar valt, als 1 januari (n = 1) op een donderdag valt. Je leest het dagnummer in en geeft als resultaat het nummer van de weekdag. Je gebruikt volgende afspraken:

Maak een tabel voor de eerste 15 dagen en probeer het patroon (verband tussen invoer en uitvoer) te vinden. invoer (n) dag

Bewaar de oefening onder de naam Weekdag.py.

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.