Maximum#

Het probleem: Gegeven twee getallen, welke van de twee getallen is het grootste?

De 3 p’s:

  • Probeer: Probeer het probleem op te lossen op papier.

  • Plan: Noteer de stappen die zijn gebruikt om het probleem op te lossen.

  • Programmeer: Vertaal de stappen naar een programmeertaal.

Stap 1: Probeer:

In dit voorbeeld is de probeerfase niet erg indrukwekkend. Gegeven twee getallen kunnen wij als mens al heel snel zien welke van de twee groter is.

Stap 2: Plan:

  1. Neem twee getallen a en b

  2. Als a > b dan is a het grootste, anders is b het grootste getal.

Stap 3: Programmeer:

Nu gaan we het plan omzetten in code. Deze cursus gebruikt hiervoor Python. De leerdoelen van dit werkcollege zijn:

  • Input en output

  • Variabelen

  • If-then-else

Dit is de kennis die nodig is om het gemaakte plan om te zetten tot programmacode.

Input en output#

De computer moet worden verteld welke twee getallen we met elkaar willen vergelijken. Dit kan gedaan worden met behulp van een input-functie. Een functie is een opdracht die een computer kan uitvoeren.

input()

De functie heeft als naam ‘input’. Door het gebruik van haakjes weet de computer dat het hier gaat om een functie en dat er dus een opdracht uitgevoerd moet worden. In dit geval weet de computer dat er gevraagd moet worden om input. Om de gebruiker van het programma te vertellen wat voor input er verwacht wordt, kunnen we een string toevoegen aan de functie. Een string wordt aangegeven met dubbele aanhalingstekens, zo weet de computer dat het om een zin/woord gaat.

input("Geef getal a")
input("Geef getal b")

De functie krijgt nu als parameter een string mee. De computer geeft deze zin als output voordat hij vraagt om input. Zo kan een gebruiker lezen welke input er gevraagd wordt. Om de computer enkel output te laten zien wordt de print-functie gebruikt.

print("Hello world")

De computer print nu “Hello world” als dit programma wordt gedraaid. “Hello world” wordt vaak gebruikt als eerste kennismaking met code. Voor Python is deze ene zin genoeg. Er is zelfs een Wikipedia-pagina met ‘hello world’-programma’s in allerlei verschillende programmeertalen!

Zie ook

Zie ook de uitleg in het boek over het printen van waarden.

Variabelen#

De computer wordt nu verteld om om input te vragen, maar er is nog niet verteld wat er met deze input moet gebeuren. Data kan bewaard worden in een variabele. Zie een variabele als een doos met daarop een naam, een adres en een type. In de doos wordt de data bewaard.

  • De naam bepalen we zelf als programmeur. Advies is om herkenbare namen te gebruiken voor variabelen. Dit maakt code leesbaarder. Werken met namen is voor ons als mensen makkelijker dan werken met geheugen adressen.

  • Het adres wordt door de computer bepaald. Zo weet de computer waar in het geheugen de data staat.

  • Het type vertelt de computer wat voor soort data het is.

getal_A = input("Geef getal a")
getal_B = input("Geef getal b")

De computer zal nu de data opslaan in de variabelen getal_A en getal_B.

Variabelen mogen geen spaties bevatten en moeten beginnen met een kleine letter. Er zijn twee verschillende manieren om variabelen op te schrijven. snake_case gebruikt de underscore als vervanging van de spatie. camelCase gebruikt hoofdletters voor elk nieuw woord. Welke van de twee gebruikt wordt maakt niet uit, maar wees consequent ter bevordering van de leesbaarheid van je code. Binnen Python is het wel gebruikelijk om de snake_case te gebruiken.

Datatypes#

Zie ook

Zie ook de uitleg in het boek over waarden en bijbehorende typen.

Er zijn verschillende soorten datatypes:

  • int: Een geheel getal van 32 of 64 bits groot.

  • float: Een kommagetal.

  • bool: Is afgeleid van boolean en heeft enkel de waarde True of False.

  • string: Een reeks van karakters, zoals woorden en zinnen. Deze wordt aangegeven met de dubbele aanhalingstekens.

  • list: Een lijst van objecten.

  • array: Een lijst van één type object.

Er zijn ook andere datatypes, maar voor nu is dit alles wat we gaan gebruiken. Zodra een variabele wordt gemaakt, probeert Python in te schatten welk datatype er wordt bedoeld. Dit gaat niet altijd goed. In andere talen, zoals Java, moet de programmeur aangeven welk datatype de variabele heeft.

getal_A = input("Geef getal a")

Om ervoor te zorgen dat de input echt een getal is en geen woord, kan de functie int() gebruikt worden.

getal_A = int(input("Geef getal a"))

De input die gegeven wordt, wordt nu omgezet naar een int.

Operatoren#

Zie ook

Zie ook de uitleg in het boek over operatoren.

Python kent verschillende operatoren om mee te rekenen en om variabelen te vergelijken.

Betekenis

groepering

( )

machtsverheffing

**

vermenigvuldiging, modulo, deling

* % / //

optelling, aftrekking

+ -

vergelijking

== !=, <, >, <=, >=

toekenning

=

If then else#

Zie ook

Zie ook de uitleg in het boek over if-statements

Stap 1 van het plan was: Neem twee getallen a en b. Via de input functie kan er gevraagd worden om twee getallen en deze worden opgeslagen in variabelen.

getal_A = int(input("Geef een geheel getal a: "))
getal_B = int(input("Geef een geheel getal b: "))

Nu stap 2 nog: de twee getallen moeten met elkaar vergeleken worden om te bepalen welke van de twee getallen het grootste is.

Het if-statement#

Met behulp van een if-statement kan een computer verteld worden of een stuk code wel of niet uitgevoerd moet worden. Als het if-statement true is, wordt de code binnen de if-statement uitgevoerd. Als het if-statement false is, slaat de computer de code over.

if conditie :
  Do this
  Do this
  Do this

Syntax#

Let op de dubbele punt na de conditie, deze is verplicht. Ook heel belangrijk binnen Python is het gebruik van tabs. De code die uitgevoerd moet worden als de if-statement true is, moet ingesprongen zijn (een tab of spaties, ook wel indentation genoemd). Dit is zeer gevoelig. Als de code ook maar één spatie uit lood ligt, werkt de code niet of geeft het een andere uitkomst dan gewenst.

Binnen Python hoeven er geen haakjes om de conditie. Ook hier geldt dat je consequent moet zijn. Dus overal haakjes in de if-statement of nergens.

Dit alles valt onder syntax. Als er een fout wordt gemaakt in de syntax, geeft de compiler een syntax error. Vaak geeft het ook een regelnummer waar het probleem is tegengekomen. Vaak ontbreken er dan dubbele punten. Een andere error die je tegen kunt komen is indentation error. Dan is er een probleem met het gebruik van indentations, met andere woorden, de tabs of spaties.

Het if-else statement#

Soms is het nodig om een computer te laten kiezen tussen twee opties. Als a waar is, voer opdracht a uit, en anders voer opdracht b uit.

if conditie :
  Do this
  Do this
  Do this
else:
  Do that
  Do that

Ook hier is het weer belangrijk om aan de tabs te denken en aan de dubbele punten!

De if-then-else boom#

Het is ook mogelijk om de computer te laten kiezen tussen verschillende opties. Dit kan gedaan worden door een else if te gebruiken, in Python aangegeven met elif. Als a waar is, voer opdracht a uit, anders als b waar is, voer opdracht b uit, anders voer opdracht c uit.

if conditie :
  Do this
  Do this
  Do this
elif conditie :
  Do this
  Do this
else:
  Do this
  Do this

Er kan een onbeperkte hoeveelheid else if-condities toegevoegd worden en er hoeft niet altijd geëindigd te worden met else. De else-statement wordt enkel uitgevoerd als alle bovenstaande statements false zijn. Zodra een true statement wordt gevonden, zullen de andere statements binnen de boom niet meer gecontroleerd worden.

if cijfer > 7.5:
    print("Goed")
elif cijfer > 5.5:
    print("Voldoende")
else:
    print("Onvoldoende")

Als het behaalde cijfer een 8 is, print dit programma ‘Goed’. Het ligt namelijk hoger dan een 7.5, dus het eerste statement is true en wordt uitgevoerd. De andere statements worden niet meer gecontroleerd. Dus ondanks dat een 8 ook hoger is dan een 5,5 wordt het woord ‘Voldoende’ niet geprint.

Als het behaalde cijfer een 6 is, print het programma ‘Voldoende’. De eerste statement is false, gezien 6 lager is dan een 7,5. De tweede statement is true en dus wordt het woord ‘Voldoende’ geprint.

Als het behaalde cijfer een 4 is, print het programma ‘Onvoldoende’ gezien de eerste twee statements false zijn, wordt automatisch het else-statement uitgevoerd.

Maximum probleem#

Met behulp van een if-else statement kan het programma afgerond worden. Het plan was:

  1. Neem twee getallen a en b

  2. Als a > b dan is a het grootste, anders is b het grootste getal.

Met behulp van inputs en variabelen was stap 1 opgelost.

getal_A = int(input("Geef een geheel getal a: "))
getal_B = int(input("Geef een geheel getal b: "))

Met behulp van if-else statements kunnen we stap twee oplossen door de twee getallen met elkaar te vergelijken en het grootste getal te printen.

getal_A = int(input("Geef een geheel getal a: "))
getal_B = int(input("Geef een geheel getal b: "))

if getal_A > getal_B:
    print(getal_A)
else:
    print(getal_B)

Opdrachten#

Opdracht 1#

Gegeven een stukje code, welke output verwacht je?

a.

a = 5
b = 2
print(a * b)

b.

a = "5"
b = 2
print(a * b)

c.

a = 5
b = 2
print(a < b)

d.

a = "5"
b = "2"
print(a + b)

e. % staat voor modulo rekenen

a = 5
b = 2
print(a % b)

f.

a = 5
b = a
a = 2
print(a)
print(b)

g. Er zijn twee manieren gegeven voor een deling, namelijk / en //. Zoek uit wat het verschil is om te bepalen wat de output is van onderstaand programma.

a = 5
b = 2
print(a / b)
print(a // b)

Opdracht 2#

Waarvoor kan dit programma gebruikt worden?

getal = int(input("Geef een geheel getal: "))
print(getal * getal)

Opdracht 3#

Wat is het nadeel van onderstaande code?

getal_A = int(input("Geef een geheel getal a: "))
getal_B = int(input("Geef een geheel getal b: "))
print(getal_A > getal_B)

Opdracht 4#

Wat is de output?

a.

a = 5
b = 2

if a < b:
    print(a)
print(b)

b.

a = 5
b = 2

if a > b:
    print(a)
print(b)

c.

a = 5
b = 2

if a == b:
    print(a)
    print(b)

d.

a = 5
b = 2

if a == b:
    print(a)
   print(b)

Opdracht 5#

Wat is de output?

a.

a = 5
b = 2

if a < b:
    print(a)
else:
    print(b)

b.

a = 5
b = 2

if a > b:
    print(a)
else:
    print(b)

c.

a = 5
b = 2

if a > b:
    print(a - b)
else:
    print(b - a)

print(a + b)

Opdracht 6#

Wat is de output?

a.

getal = 6.8

if getal > 7.5:
    print("hello")
elif getal > 5.5:
    print("bonjour")
else:
    print("hoi")

b.

getal = 8.2

if getal < 5.5:
    print("bonjour")
elif getal < 7.6:
    print("hoi")
else:
    print("hello")

c.

getal = 7.5

if getal >= 5.5 and getal < 7.5:
    print("hoi")
elif getal > 7.5:
    print("hello")
else:
    print("bonjour")

d.

getal = 6.8

if getal < 5.5:
    print("hoi")
else:
    if getal < 7.6:
        print("hello")
    else:
        print("bonjour")

Opdracht 7#

Wat is de output?

a.

x = 42

if x > 5 and x < 10:
    x = x * 2
elif x < 20:
    x = x / 2

print(x)

b.

x = 2

if x < 5:
    x = x * 2
elif x < 10:
    x = x / 2

print(x)

c.

x = 6

if x < 10:
    x = x * 2
if x < 20:
    x = x / 2

print(x)

d.

x = 42

if x > 5 and x < 10:
    x = x * 2
elif x < 5 or x > 10:
    x = x / 2
else:
    x = x + 2

print(x)

e.

x = 10

if x > 5 and x < 10:
    x = x * 2
elif x < 5 or x > 10:
    x = x / 2
else:
    x = x + 2

print(x)