Programmeren les 12

1 / 20
suivant
Slide 1: Diapositive
InformaticaMiddelbare schoolhavo, vwoLeerjaar 4

Cette leçon contient 20 diapositives, avec quiz interactifs et diapositives de texte.

time-iconLa durée de la leçon est: 60 min

Éléments de cette leçon

Slide 1 - Diapositive

Functies
.Een stroomdiagram van een functie zie je hiernaast.

Deze functie heeft als naam berekenVerzendkosten().
Aan de hand van een ingevoerde prijs berekent de functie wat de verzendkosten zijn. Dat bedrag retourneert de functie vervolgens.

Slide 2 - Diapositive

We gaan eerst kijken naar functies die al standaard in Python beschikbaar zijn. Daarna gaan we zelf functies programmeren.
Tot nu toe hebben we al best veel standaardfuncties in Python gebruikt. Je kan die herkennen door () achter de functienaam. Denk maar terug aan print() en input(). Deze functies zijn altijd beschikbaar in Python en zijn voorgeprogrammeerd. Je hoeft hier zelf dus niets voor te doen.

Slide 3 - Diapositive

naam = input("Wat is je naam?")
De functie input() doet twee dingen.
•    Het print de tekst die tussen de haakjes staat. Vervolgens wacht het op invoer van de gebruiker.
•    De functie geeft vervolgens die invoer terug.

Bij het aanroepen van de functie input() kun je een waarde meegeven. In het voorbeeld is dat de tekst 'Wat is je naam?'. Die waarde noem je het argument. Het argument wordt opgeslagen in de variabele uitvoertekst. In het stroomschema zie je die in het eerste blok tussen de haakjes staan.

De variabele uitvoertekst noem je de parameter van de functie.

Slide 4 - Diapositive

Verschil argument en parameter
In het rechter stroomdiagram wordt de functie input() gedeclareerd. Daarbij zet je de parameter tussen de haakjes in het eerste blok. Die parameter is de variabele waarin het argument wordt opgeslagen als de functie wordt aangeroepen. Dat aanroepen gebeurt in het derde blok van het linker stroomdiagram. Het argument is de waarde die je daarbij tussen de haakjes van de functieaanroep zet. Het argument "Wat is je naam?" wordt dus bij het aanroepen van de functie opgeslagen in de parameter uitvoertekst. Met die parameter gaat de functie vervolgens aan de slag.

  • Het argument hoort bij het aanroepen van een functie in het linker stroomdiagram.
  • De parameter hoort bij de declaratie van een functie: die zie je in het rechterdiagram.

Slide 5 - Diapositive

Ook de aanroep en declaratie van de standaardfunctie print() kunnen we in een stroomdiagram weergeven

Er is een belangrijk verschil tussen print() en input(). De functie print() retourneert niets.
 
Met deze code is het niet mogelijk om het resultaat op te slaan in de variabele tekst. Probeer het maar eens uit te voeren.

Slide 6 - Diapositive

Standaardfuncties
Behalve print() en input() zijn er nog meer standaardfuncties. Bijvoorbeeld int(). Hieronder zie je een tabel met drie standaardfuncties. Er staat bij vermeld welke parameter die hebben en wat ze retourneren.

Slide 7 - Diapositive

Methoden
Een aantal functies ziet er bijzonder uit. Kijk maar naar het voorbeeld hiernaast:

De functies lower() en now() zijn bijzonder omdat er iets voor staat.

Je zou misschien verwachten dat dit dan ook mogelijk is:

Slide 8 - Diapositive

Maar helaas is dat niet het geval.
Hoe komt dat?
De functies lower() en now() zijn geen losse functies, maar ze horen altijd bij een object.
Zulke functies noem je methoden.
lower() hoort bijvoorbeeld bij een object van het type string. In het voorbeeld is dat object de variabele naam.
De methode lower() kun je niet gebruiken bij andere typen variabelen.
Net zo dat now() altijd bij een datetime hoort.

Maar het is nu nog niet helemaal duidelijk waarom je niet óók lower(naam)  zou kunnen gebruiken. Om te begrijpen hoe dat precies werkt moet je weten wat objectgeoriënteerd programmeren is. Wat we deze periode niet gaan doen.

Slide 9 - Diapositive

Er zijn ook functies en methoden met meer dan één parameter.
Voorbeelden daarvan zijn datetime(2019, 9, 1)  en range(1,50,10).
Bij datetime() geef je drie integers op: het jaar, de maand en de dag.
Bij range kun je kiezen voor twee of drie argumenten.

Het derde argument bij de tweede for-loop is optioneel. Je kunt het opgeven, maar het is niet verplicht.

De functie range() heeft wel drie parameters: die zou je de namen beginwaarde, eindwaarde en stapgrootte kunnen geven. Je bent echter niet verplicht om drie argumenten op te geven: dat mogen er ook twee zijn.

Slide 10 - Diapositive

Met range() is ten slotte nog iets bijzonders aan de hand:

Je kunt de uitkomst van range() opslaan in een variabele. Bijvoorbeeld met de naam lijst. Maar wat is het datatype wat de functie range() retourneert? Het is niet integer, maar een hele lijst met getallen. Om precies te zijn: een lijst met integers. Omdat de variabele lijst nu ook niet een gewoon datatype heeft, kun je het alleen printen met een sterretje ervoor. Alleen dan zie je de inhoud van de lijst.

Slide 11 - Diapositive

Slide 12 - Diapositive

Stappenplan python
De functiedeclaratie begint met het keyword def. Dat betekent dat je iets gaat definiëren. In dit geval is dat de functie vraagCijfer(). Na die naam zijn de haakjes () verplicht. Vervolgens moet er een dubbele punt komen.

De regels code die bij de functie horen, moet je inspringen. Net als bij een if-statement en een loop. Je ziet twee regels code in de functie. De eerste regel komt overeen met het tweede, derde en vierde blok van het stroomdiagram. De tweede regel code is vrijwel hetzelfde als het laatste blok van het stroomdiagram. Je hoeft in Python het datatype niet te vermelden: return cijfer is genoeg.

Slide 13 - Diapositive

Het aanroepen van de functie gaat nu zoals je dat gewend bent.
Zoals je ziet, zet je het hoofdprogramma onder de functie. Het is dan handig om met een commentaarregel aan te geven waar het hoofdprogramma begint.

De functie vraagCijfer() kun je korter schrijven. Het kan zelfs in één regel:

Achter return hoef je dus niet per se een variabele neer te zetten. Er mogen ook berekeningen en functie-aanroepen staan. Pas daar wel mee op. Als je veel code in één regel zet, wordt het onoverzichtelijk.
Bekijk het verschil maar tussen de volgende twee programma's, die dezelfde werking hebben.



Slide 14 - Diapositive

Programma 1
Programma 2

Slide 15 - Diapositive

Het is nuttig om validatie toe te voegen aan de functie vraagCijfer(). Want het cijfer dat de gebruiker invoert, mag niet groter zijn dan 10,0 en niet kleiner dan 1,0. Met de code hiernaast wordt de gebruiker gedwongen een cijfer tussen de 1,0 en 10,0 in te voeren.

Slide 16 - Diapositive

Er is nog iets in het programma dat verbeterd moet worden. Als je de eerste keer een 7.1 invoert en daarna een 7.2, dan geeft het programma een 7.15 als gemiddelde cijfer. Dat moet nog worden afgerond op één decimaal. Dat kan met de functie round().

Bij het aanroepen van de functie round() kun je één of twee argumenten opgeven, gescheiden door een komma. Als je er één opgeeft, wordt het argument afgerond naar een geheel getal. Je kunt ook twee argumenten opgeven: het tweede argument is dan het aantal decimalen waarop je wilt afronden.

Slide 17 - Diapositive

Even terug naar deze code.
Zowel bij het eerste als het tweede cijfer krijgt de gebruiker de boodschap “Voer het cijfer in:” te zien. Het is beter als je die boodschap per geval kunt opgeven. Het hoofdprogramma zou er dan bijvoorbeeld zo uit kunnen zien:

Slide 18 - Diapositive


Na deze les, 
wil ik...
de uitleg nog 1 keer horen
meer voorbeelden krijgen
meer oefeningen maken
de leerstof thuis nog even bekijken
overgaan naar nieuwe leerstof
nog meer te weten komen over de leerstof
niet meer te weten komen over de leerstof

Slide 19 - Sondage


Hoe vond je 
deze les?
😒🙁😐🙂😃

Slide 20 - Sondage