Hoofdstuk 8: Functies en parameters

Vergelijkbare documenten
Python. Informatica. Renske Weeda

Python. Informatica. Renske Weeda

Functies. Huub de Beer. Eindhoven, 4 juni 2011

Programmeermethoden NA. Week 5: Functies (vervolg)

Toetsvoorbereiding Informatica HAVO/VWO 5 (T51) Programmeren met Python II. Duur: 70 minuten Datum: sept 2018

Programmeermethoden NA. Week 5: Functies (vervolg)

[15] Variabelen in functies (of: een woordje over scope)

II. ZELFGEDEFINIEERDE FUNCTIES

Meer Blokken. 1. Dit is een functie genaamd Maximum, die twee argumenten heeft: number1 en number2.

11. Eenvoudige programma s schrijven in Maxima

Pythoncursus. Opdrachtenserie 3. Tanja, Koen en Marein oktober Opdracht 1 - Turtlegraphics

Disclaimer Het bestand dat voor u ligt, is nog in ontwikkeling. Op verzoek is deze versie digitaal gedeeld. Wij willen de lezer er dan ook op wijzen

HOOFDSTUK 3. Imperatief programmeren. 3.1 Stapsgewijs programmeren. 3.2 If Then Else. Module 4 Programmeren

Small Basic Programmeren Text Console 2

afrondende suggesties worden gebruikt om dieper op het onderwerp in te gaan als daar tijd voor is.

[14] Functies. Volg mee via 14_Functies-1.py. We beginnen met een eenvoudig voorbeeldje:

Vaak wil je een code schrijven, waar je verschillende acties uitvoeren voor verschillende beslissingen. Je kan daarbij keuzestructuren gebruiken.

OEFENINGEN PYTHON REEKS 6

afrondende suggesties worden gebruikt om dieper op het onderwerp in te gaan als daar tijd voor is.

Informatie over. 5VWO DT51: JavaLogo. Casper Bezemer. Toetsweek 1 13 oktober 2016

Een spoedcursus python

OEFENINGEN PYTHON REEKS 1

Programmeren A. Genetisch Programma voor het Partitie Probleem. begeleiding:

PYTHON REEKS 2: FUNCTIES. Mathias Polfliet

Programmeren (1) Examen NAAM:

Modelleren en Programmeren

Als een PSD selecties bevat, deelt de lijn van het programma zich op met de verschillende antwoorden op het vraagstuk.

Arduino Cursus, Deel 2 Programmeren. Simon Pauw, ZB45, Amsterdam

OEFENINGEN PYTHON REEKS 1

Programmeermethoden NA

Functioneel programmeren

Je gaat leren programmeren en een spel bouwen met de programmeertaal Python. Websites zoals YouTube en Instagram zijn gebouwd met Python.

Python. Informatica. Renske Smetsers

In Vlaanderen bestaat er nog geen leerlijn programmeren! Hierdoor baseren wij ons op de leerlijn die men in Nederland toepast voor basisscholen.

10 Meer over functies

VOORBLAD SCHRIFTELIJKE TOETSEN

Zo gaat jouw kunstwerk er straks uitzien. Of misschien wel heel anders.

OEFENINGEN PYTHON REEKS 1

Het relaas van de beginnende programmeur. Het hoe en waarom van de assistent

Controle structuren. Keuze. Herhaling. Het if statement. even1.c : testen of getal even of oneven is. statement1 statement2

Wat als je een heleboel informatie wilt opslaan? Bijvoorbeeld alle namen van iedereen die bij jouw dojo's aanwezig is? Hier gebruik je een lijst voor:

Je moet nu voor jezelf een overzicht zien te krijgen over het onderwerp Complexe getallen. Een eigen samenvatting maken is nuttig.

De keuzestructuur. Versie DD

Python. Vraag 1: Expressies en types. Vraag 1 b: Types -Ingebouwde functies- Vraag 1 a 3/10/14

Basisvaardigheden algebra. Willem van Ravenstein Den Haag

Programmeermethoden. Recursie. week 11: november kosterswa/pm/

De sheets zijn gebaseerd op met name hoofdstuk. D. Bell en M. Parr, Java voor studenten, Prentice Hall,

Java Les 3 Theorie Herhaal structuren

Programmeren. a. 0, 0, 0 b. 0, 0, 27 c. 15, 12, 0 d. 15, 12, 27

44 De stelling van Pythagoras

Basis Figuren. De basis figuren zijn een aantal wiskundige figuren die je al in de wiskunde lessen hebt gekregen.

Modeluitwerking Tentamen Computationele Intelligentie Universiteit Leiden Informatica Vrijdag 11 Januari 2013

1.1 Rekenen met letters [1]

Python. Informatica. Renske Smetsers

algoritmiek - antwoorden

Willem van Ravenstein

Algoritmisch Denken: Dodo s Bit Parity

Arduino Zuid-Limburg Workshop 2

Je gaat leren programmeren in Ruby. En daarna in Ruby een spelletje maken. Websites zoals Twitch en Twitter gemaakt zijn met behulp van Ruby?

Een eenvoudig algoritme om permutaties te genereren

Practicum Ox intro. Practicum Ox intro. VU Numeriek Programmeren 2.5. Charles Bos. Vrije Universiteit Amsterdam. 3 april /18

Informatica: C# WPO 9

Extra oefeningen hoofdstuk 12: Omtrek - Oppervlakte - Inhoud

Inleiding Programmeren 2

Computervaardigheden. Universiteit Antwerpen. Computervaardigheden en Programmatie. Grafieken en Rapporten 1. Inhoud. Wat is scripting?

Inlezen gegevens; één stroom en één periode

Seven segments of Pi

Handleiding IDEP: Inlezen gegevens; meerdere stromen/periodes/aangevers

Inleiding tot programmeren: Javascript

Oefeningenexamen Informatica: juni 2015

OEFENINGEN PYTHON REEKS 5

Naam:... INFO / WIS-INF / ASIB / IAJ. Theorie

PROS1E1 Gestructureerd programmeren in C Dd/Kf/Bd

Vakgroep CW KAHO Sint-Lieven

Pythoncursus. Eindopdracht L-systemen. Joost, Koen, Marein en Ramon december 2015

Datum. Vraag het bedrag in BEF. Reken om naar EURO. Toon het bedrag in EURO. --- Vraag het bedrag in BEF Reken om naar EURO---

13. Symbool-, Lijnstijlbibliotheek (Resource Editor)... 1

Paradox van zelfreproductie. IN2505-II Berekenbaarheidstheorie. Zelfreproductie? Programma s en zelfreproductie. College 11.

Achtste college algoritmiek. 8 april Dynamisch Programmeren

DE ASTRO PI PROGRAMMEREN VOOR MISSION ZERO

6.1 Kwadraten [1] HERHALING: Volgorde bij berekeningen:

Een topprogrammeur in het OO programmeren is Graig Larman. Hij bedacht de volgende zin:

Rekenen aan wortels Werkblad =

Module 3: Scratch programmeren: is het logisch of is het niet logisch?

Algoritmen en programmeren: deel 2 - basis

Inleiding Programmeren 2

Programmeermethoden NA. Week 3: Controlestructuren

Informatica: C# WPO 10

College Introductie

Het installatiepakket haal je af van de website

De Sense HAT heeft een temperatuursensor waarmee je de temperatuur. #lees de temperatuur van de sensor en sla op als temp

De Sense HAT heeft een temperatuursensor waarmee je de temperatuur. #lees de temperatuur van de sensor en sla op als temp

Taak na blok 1 startles 8

6.0 Voorkennis AD BC. Kruislings vermenigvuldigen: Voorbeeld: 50 10x ( x 1) Willem-Jan van der Zanden

Kleuren met getallen Afbeeldingen weergeven

Turbo Pascal (deel 1)

Probot kennismaking. Rpt[ ] Rpt

Small Basic Console Uitwerking opdrachten

Zonnevangers met een functie

ProefToelatingstoets Wiskunde B

Transcriptie:

Hoofdstuk 8: Functies en parameters Leerdoelen: Het nut van functies Eigen functies creëren Parameters en argumenten gebruiken Waardes uit functies retourneren middels return Functie benamingen Commentaar in functies Variabele scope en levensduur Lokale en globale variabelen Het gebruik van functies om grip te krijgen op complexiteit

Mededelingen: Mailbox vol met repl.it mail? Zet mail ontvangen uit in je profile De planner staat op course.cs.ru.nl/pythonvo (deze link staat ook op Montiplaza)

Eigen functies maken: waarom? Opdelen in samenhangende delen (=functies), Maakt programmeren overzichtelijker: focus even op 1 ding maken & testen Waarom functies? Code hergebruiken Betere structuur Minder fouten maken Makkelijker fouten opsporen

Functies met parameters voor deeltaken Grote of complexe taken deel je op in deeltaken. Elke deeltaak los je apart van de rest op. Een functie kun je vaker aanroepen. Dat scheelt heel veel tikwerk. Soms lijken twee functies veel op elkaar, maar verschillen ze in kleine details. Je kan dan parameters gebruiken om de details aan te geven. Hoe dat werkt zien we nu. We gaan functies schrijven met parameters dat een kinderliedje (met veel herhalingen) voor ons kan zingen.

De wielen van de bus. De wielen van de bus gaan rond en rond Draaien rond, draaien rond De wielen van de bus gaan rond en rond Als de bus gaat rijden De deuren van de bus gaan open en dicht Open en dicht, open en dicht De deuren van de bus gaan open en dicht Als de bus gaat rijden werkblad De wissers van de bus gaan heen en weer Heen en weer, heen en weer De wissers van de bus gaan heen en weer Als de bus gaat rijden Alle tekst afdrukken? Allemaal overtikken? ook voor alle 120 andere couplets, of.. patroon ontdekken Probleem makkelijker maken

Opgave 8.2.3 De wielen van de bus. De wielen van de bus gaan rond en rond Draaien rond, draaien rond De wielen van de bus gaan rond en rond Als de bus gaat rijden De deuren van de bus gaan open en dicht Open en dicht, open en dicht De deuren van de bus gaan open en dicht Als de bus gaat rijden De wissers van de bus gaan heen en weer Heen en weer, heen en weer De wissers van de bus gaan heen en weer Als de bus gaat rijden Alle tekst afdrukken? Allemaal overtikken? ook voor alle 120 andere couplets, of.. patroon ontdekken Probleem makkelijker maken

Opgave 8.2.3 De wielen van de bus. De wielen van de bus gaan rond en rond Rond en rond, rond en rond De wielen van de bus gaan rond en rond Als de bus gaat rijden De deuren van de bus gaan open en dicht Open en dicht, open en dicht De deuren van de bus gaan open en dicht Als de bus gaat rijden Onderstreep in het bovenste couplet wat precies hetzelfde is als in het onderste couplet.

Opgave 8.2.3 De wielen van de bus. De wielen van de bus gaan rond en rond Rond en rond, rond en rond De wielen van de bus gaan rond en rond Als de bus gaat rijden De deuren van de bus gaan open en dicht Open en dicht, open en dicht De deuren van de bus gaan open en dicht Als de bus gaat rijden herhalingen in beide coupletten onderstreept... Dit kun je met een gewone print(... ) afwerken

Opgave 8.2.3 De wielen van de bus. De deuren van de bus gaan open en dicht Open en dicht, open en dicht De deuren van de bus gaan open en dicht Als de bus gaat rijden deel actie Blijft er iets in het bovenste couplet over wat zich herhaalt? Omcirkel alle voorkomens. Wat voor iets is dit? Geef het een naam. Blijft er nog iets over in het bovenste couplet wat zich herhaalt? Teken een rechthoek om alle voorkomens. Geef het een naam.

Opgave 8.2.3 De wielen van de bus. De wielen van de bus gaan rond en rond Rond en rond, rond en rond De wielen van de bus gaan rond en rond Als de bus gaat rijden De deuren van de bus gaan open en dicht Open en dicht, open en dicht De deuren van de bus gaan open en dicht Als de bus gaat rijden deel actie

Opgave 8.2.3 De wielen van de bus. De deuren deel van de bus gaan open actie en dicht Open actie en dicht, open en actiedicht De deuren deel van de bus gaan open en actiedicht Als de bus gaat rijden De wissers deel van de bus gaan heen en actieweer Heen actie en weer, heen en actieweer De wissers deel van de bus gaan heen en actieweer Als de bus gaat rijden Vervang herhalende delen in liedje door de variabele (dus ipv wielen schrijf je deel)

Opgave 8.2.3 De wielen van de bus. Hier maken we een functie definitie van: def zingcouplet( deel, actie ): print( "De + deel + van de bus gaan + actie ) print( actie +, + actie ) print( "De + deel + van de bus gaan + actie ) print( "Als de bus gaat rijden ) Als je nu de functie aanroept: zingcouplet( deuren", open en dicht") Vult het deuren in bij deel (want die staat als eerste) en open en dicht bij actie (want die staat als tweede)

Opgave 8.2.3 Functies maken en gebruiken # FUNCTIE DEFINITIES def zingcouplet( deel, actie ): print( "De " + deel + " van de bus gaan + " actie ) print( actie + "," + actie ) print( "De " + deel + " van de bus gaan + " actie ) print( "Als de bus gaat rijden" ) print( "\n" ) # HOOFDPROGRAMMA: AANROEP VAN FUNCTIES zingcouplet( "wielen", "rond en rond") zingcouplet( "wissers", "heen en weer") zingcouplet( "lichten", "aan en uit")

Opgave 8.2.3 Functies maken en gebruiken LIVE CODING # FUNCTIE DEFINITIES def zingcouplet( deel, actie ): print( "De " + deel + " van de bus gaan + " actie ) print( actie + "," + actie ) print( "De " + deel + " van de bus gaan + " actie ) print( "Als de bus gaat rijden" ) print( "\n" ) # HOOFDPROGRAMMA: AANROEP VAN FUNCTIES zingcouplet( "wielen", "rond en rond") zingcouplet( "wissers", "heen en weer") zingcouplet( "lichten", "aan en uit")

Wanneer gebruik je functies? Gebruik je dezelfde code een paar keer??? Heb je een deja-vu gevoel??? Niet copy-pasten! Maak gebruik van functies en parameters

Functies definiëren en gebruiken import turtle turtle.pendown() # tekenen van een vierkant turtle.forward(50) turtle.right(90) turtle.forward(50) turtle.right(90) turtle.forward(50) turtle.right(90) turtle.forward(50) turtle.done() import turtle #Definitie: instructies voor een vierkant def vierkant(): turtle.forward(50) turtle.right(90) turtle.forward(50) turtle.right(90) turtle.forward(50) turtle.right(90) turtle.forward(50) turtle.pendown() vierkant() #Aanroep: teken de vierkant! turtle.done()

Functies gebruiken import turtle #Definitie: instructies voor vierkant def vierkant(): turtle.forward(50) turtle.right(90) turtle.forward(50) turtle.right(90) turtle.forward(50) turtle.right(90) turtle.forward(50) turtle.pendown() vierkant() #Aanroep: teken vierkant! turtle.right(30) vierkant() #Aanroep: teken vierkant! turtle.done() Voordeel van functies: Je kunt iets tekenen ZONDER bezig te zijn met details hergebruik: veel minder code! Aanpasbaar op 1 plek

Parameters gebruiken import turtle import turtle turtle.pendown() # tekenen van een vierkant turtle.forward(50) turtle.right(90) turtle.forward(50) turtle.right(90) turtle.forward(50) turtle.right(90) turtle.forward(50) turtle.done() #Definitie: instructies voor een vierkant # met een gegeven lengte def vierkant( lengte ): turtle.forward( lengte ) turtle.right(90) turtle.forward( lengte ) turtle.right(90) turtle.forward (lengte ) turtle.right(90) turtle.forward (lengte ) turtle.pendown() #Aanroep: teken vierkant met lengte 50 vierkant( 50 ) turtle.done()

Hoe het programma verloopt import turtle 3 4... 9 #FUNCTIE DEFINITIE def vierkant(lengte): turtle.forward(lengte) turtle.right(90) turtle.forward(lengte) turtle.right(90) turtle.forward(lengte) turtle.right(90) turtle.forward(lengte) 12 13 18 1 2 10 #HOOFDPROGRAMMA MET FUNCTIE AANROEPEN turtle.pendown() vierkant( 50 ) #Aanroep: teken vierkant! turtle.right(30) vierkant( 50 ) #Aanroep: teken vierkant! 11 turtle.done() 19

Terugblik: functies met parameters import turtle #FUNCTIE DEFINITIE def tekenvierkant( lengte ): turtle.forward( lengte ) turtle.right( 90 ) turtle.forward( lengte ) turtle.right( 90 ) turtle.forward( lengte ) turtle.right( 90 ) turtle.forward( lengte ) Functie definiëren #HOOFDPROGRAMMA turtle.pendown() tekenvierkant(50) #teken een vierkant turtle.right(30) tekenvierkant(50) #teken een vierkant Functie aanroepen turtle.done()

Functie met parameters Voorbeeld: import turtle #FUNCTIE DEFINITIE def tekenlijn(lengte): turtle.forward(lengte) In het algemeen: #HOOFDPROGRAMMA MET FUNCTIE AANROEP turtle.pendown() tekenlijn( 50 ) #Aanroep: teken lijn van 50 turtle.done() #FUNCTIE DEFINITIE def zinnigenaamincamelcase(parameter1, parameter2): doeiets() #HOOFDPROGRAMMA MET FUNCTIE AANROEP zinnigenaamincamelcase(waarde1, waarde2)

Functie definitie en aanroep In het algemeen: #FUNCTIE DEFINITIE def zinnigenaamincamelcase(parameter1, parameter2): doeiets() #HOOFDPROGRAMMA MET FUNCTIE AANROEP zinnigenaamincamelcase(waarde1, waarde2) Functie definiëren Functie aanroepen

Functie met parameters LIVE CODING Doel: schrijf een functie die de omtrek van een rechthoek uitrekent en afdrukt Parameters: krijgt twee getallen mee voor berekening breedte en hoogte Berekening: omtrek = 2*breedte + 2*hoogte Roep je functie aan. De breedte is 5, de hoogte is 3 #FUNCTIE DEFINITIE def zinnigenaamincamelcase(parameter1, parameter2): doeiets() #HOOFDPROGRAMMA MET FUNCTIE AANROEP zinnigenaamincamelcase(waarde1, waarde2)

Functie met parameters: oplossing Doel: schrijf een functie die de omtrek van een rechthoek uitrekent en afdrukt Parameters: krijgt twee getallen mee voor berekening breedte en hoogte Berekening: omtrek = 2*breedte + 2*hoogte Roep je functie aan. De breedte is 5, de hoogte is 3 #FUNCTIE DEFINITIE def berekenomtrekrechthoek ( breedte, hoogte ): omtrek = 2*breedte + 2*hoogte print(omtrek) #HOOFDPROGRAMMA MET FUNCTIE AANROEP berekenomtrekrechthoek(5,3)

Functies: Scope en levensduur Stel je wilt later dat omtrek nog gebruiken. Hekwerk kost 10E per meter. #FUNCTIE DEFINITIE def berekenomtrekrechthoek ( breedte, hoogte ): omtrek = 2*breedte + 2*hoogte print(omtrek) #HOOFDPROGRAMMA MET FUNCTIE AANROEP berekenomtrekrechthoek(5,3) kosten = 10*omtrek print(kosten) Dit kan niet, want omtrek bestaat alleen binnen de functie

Scope en levensduur #FUNCTIE DEFINITIE def berekenomtrekrechthoek(breedte, hoogte): omtrek = 2*breedte + 2*hoogte print(omtrek) #HOOFDPROGRAMMA MET FUNCTIE AANROEP berekenomtrekrechthoek(5,3) kosten = 10*omtrek print(kosten) omtrek wordt in functie definitie gemaakt, bestaat alleen in functie, Na afloop van functie bestaat het niet meer

Scope en levensduur #FUNCTIE DEFINITIE def berekenomtrekrechthoek(breedte, hoogte): omtrek = 2*breedte + 2*hoogte print(omtrek) #HOOFDPROGRAMMA MET FUNCTIE AANROEP berekenomtrekrechthoek(5,3) kosten_hekwerk = 10*omtrek print(kosten_hekwerk) omtrek wordt in functie definitie gemaakt, bestaat alleen in functie, na afloop van functie bestaat het niet meer Wil je omtrek toch nog gebruiken? 1. Dan moet de functie deze na afloop teruggeven (retourneren) In plaats van print(omtrek) gebruik je return omtrek 2. In hoofdprogramma de teruggegeven waarde opslaan

#FUNCTIE DEFINITIE def zinnigenaamincamelcase(parameter1, parameter2): Functie met parameters doe_iets #HOOFDPROGRAMMA MET FUNCTIE AANROEPEN zinnigenaamincamelcase(waarde1, waarde2) Doel: schrijf een functie die de omtrek van een rechthoek uitrekend en afdrukt def : Naam zinnigenaamincamelcase Parameters: heeft twee getallen nodig voor berekening breedte en hoogte (,. ) Berekening: omtrek = 2*breedte + 2*hoogte def omtrekrechthoek ( breedte, hoogte ): omtrek = 2*breedte + 2*hoogte return omtrek

Gebruik van return bij functie #FUNCTIE DEFINITIE #deze functie levert de omtrek van een rechthoek op def omtrekrechthoek ( breedte, hoogte ): omtrek = 2*breedte + 2*hoogte return omtrek Geef berekende omtrek terug #HOOFDPROGRAMMA MET AANROEP VAN FUNCTIE meters_hekwerk = omtrekrechthoek( 5, 3 ) print( Aan meter hekwerk nodig:", meters_hekwerk ) Sla teruggegeven waarde op in een variabele. Naam mag je zelf kiezen.

Functie definitie en aanroep #FUNCTIE DEFINITIE #deze functie levert de omtrek van een rechthoek op def omtrekrechthoek ( breedte, hoogte ): omtrek = 2*breedte + 2*hoogte return omtrek Geef berekende omtrek terug #HOOFDPROGRAMMA MET AANROEP VAN FUNCTIE meters_hekwerk = omtrekrechthoek( 5, 3 ) print( Aan meter hekwerk nodig is", meters_hekwerk ) kosten_hekwerk = 10*meters_hekwerk print( Kosten voor hekwerk is", kosten_hekwerk ) Sla teruggegeven waarde op in een variabele. Naam mag je zelf kiezen

Functies met return oefenen Maak nu van Hoofdstuk 8 Eigen Functies: Theorie en opgaven Maak eerst Opgave 8.2.4, en dan Opgave 8.2.5 Grootste waarde retourneren Opgave 8.2.5 Grootste waarde retourneren Over 5 minuten bespreken we deze samen. Ben je eerder klaar? Ga verder vanaf Opgave 8.1

Opgave 8.2.5 Grootste waarde retourneren Functie grootste Schrijf nu zelf een functie die twee getallen als parameters binnen krijgt en de grootste oplevert Roep de functie aan met getallen (4,5) en druk de grootste af. Voorbeeld: #FUNCTIE DEFINITIE #deze functie levert de omtrek van een rechthoek op def omtrekrechthoek ( breedte, hoogte ): omtrek = 2*breedte + 2*hoogte return omtrek #HOOFDPROGRAMMA MET AANROEP VAN FUNCTIE meters_hekwerk = omtrekrechthoek( 5, 3 ) print( Aan meter hekwerk nodig is", meters_hekwerk )

Functie grootste: stap 1 Opgave 8.2.5 Grootste waarde retourneren Schrijf nu zelf een functie die twee getallen als parameters binnen krijgt en de grootste oplevert Roep de functie aan met getallen (4,5) en druk de grootste af. #FUNCTIE DEFINITIE #deze functie levert de grootste op def isgrootste ( getal1, getal2 ): if getal1 >= getal2: return getal1 else: return getal2

Functie grootste: stap 2 Schrijf nu zelf een functie die twee getallen als parameters binnen krijgt en de grootste oplevert Roep de functie aan met getallen (4,5) en druk de grootste af. #FUNCTIE DEFINITIE #deze functie levert de grootste op def isgrootste ( getal1, getal2 ): if getal1 >= getal2: return getal1 else: return getal2 Opgave 8.2.5 Grootste waarde retourneren #HOOFDPROGRAMMA MET AANROEP VAN FUNCTIE grootstegetal = isgrootste( 4, 5) print( "De grootste is", grootstegetal )

Scope (oftewel: levensduur) #FUNCTIE DEFINITIE #deze functie levert de grootste op def isgrootste ( getal1, getal2 ): if getal1 >= getal2: return getal1 else: return getal2 #HOOFDPROGRAMMA MET AANROEP VAN FUNCTIE grootstegetal = isgrootste( 4, 5) print( "De grootste is", grootstegetal ) In onze programma krijgt getal1 de waarde 4. 1) Wanneer wordt getal1 gecreëerd? 2) Wat gebeurt er met getal1 na grootstegetal? Lokale variabele: bestaat alleen binnen een functie

Globale variabele minimum = 1 #FUNCTIE DEFINITIE #deze functie levert de grootste op def isgrootste ( getal1, getal2 ): if getal1 >= getal2: return getal1 else: return getal2 #HOOFDPROGRAMMA MET AANROEP VAN FUNCTIE grootstegetal = isgrootste( 4, 5) print( Grootste:", grootstegetal, en kleinste:, minimum) En als je een variabele buiten een functie wilt gebruiken? - Bovenaan definiëren en een waarde geven - Levensduur: hele programma Globale variabele: bestaat gedurende hele programma

Functie aanroep met parameters (in plaats van harde waardes) #VARIABELEN EN CONSTANTEN lengte_eerste_zijde = 5 lengte_tweede_zijde = 3 #FUNCTIE DEFINITIE #deze functie levert de omtrek van een rechthoek op def omtrekrechthoek ( breedte, hoogte ): omtrek = 2*breedte + 2*hoogte return omtrek #HOOFDPROGRAMMA MET AANROEP VAN FUNCTIE omtrek = omtrekrechthoek( lengte_eerste_zijde, lengte_tweede_zijde )

Functie aanroep met parameters (in plaats van harde waardes) #VARIABELEN EN CONSTANTEN lengte_eerste_zijde = 5 lengte_tweede_zijde = 3 #FUNCTIE DEFINITIE #deze functie levert de omtrek van een rechthoek op def omtrekrechthoek ( breedte, hoogte ): omtrek = 2*breedte + 2*hoogte return omtrek #HOOFDPROGRAMMA MET AANROEP VAN FUNCTIE omtrek = omtrekrechthoek( lengte_eerste_zijde, lengte_tweede_zijde )

Afhandelen foutieve invoer Wat doet de functie bij omtrekrechthoek(-5, 3)? Breedte en hoogte moeten natuurlijk > 0 zijn Een functie met een return moet altijd iets opleveren Afspraak: lever iets ongebruikelijks op, bijvoorbeeld -1 def omtrekrechthoek ( breedte, hoogte ): if breedte <= 0 or hoogte <= 0: return -1 else: omtrek = 2*breedte + 2*hoogte return omtrek

Fout afhandelen buiten functie #VARIABELEN EN CONSTANTEN lengte_eerste_zijde = 5 lengte_tweede_zijde = 3 #FUNCTIE DEFINITIE #deze functie levert de omtrek van een rechthoek op #levert -1 op bij ongeldige invoer (parameter waarden 0 of kleiner) def omtrekrechthoek ( breedte, hoogte ): if breedte <= 0 or hoogte <= 0: return -1 else: omtrek = 2*breedte + 2*hoogte return omtrek #HOOFDPROGRAMMA MET AANROEP VAN FUNCTIE omtrek = omtrekrechthoek( lengte_eerste_zijde, lengte_tweede_zijde ) #controleren op geldigen invoer en antwoord afdrukken if omtrek == -1: #er is ongeldige invoer gegeven print( "De getallen kunnen niet worden gebruikt." ) else: print( "De omtrek van je rechthoek is", omtrek )

Fout afhandelen buiten functie #FUNCTIE DEFINITIE #deze functie levert de omtrek van een rechthoek op #levert -1 op bij ongeldige invoer (parameter waarden 0 of kleiner def omtrekrechthoek ( breedte, hoogte ): if breedte <= 0 or hoogte <= 0: return -1 else: omtrek = 2*breedte + 2*hoogte return omtrek #HOOFDPROGRAMMA MET AANROEP VAN FUNCTIE omtrek = omtrekrechthoek( 5, 3 ) #controleren op geldigen invoer en antwoord afdrukken if omtrek == -1: #er is ongeldige invoer gegeven print( "De getallen kunnen niet worden gebruikt." ) else: print( "De omtrek van je rechthoek is", omtrek )

Programma structuur: #VARIABELEN EN CONSTANTEN PI = 3.14 #FUNCTIE DEFINITIE def printhallo() //acties of berekeningen: print( Hello World! ) #HOOFDPROGRAMMA MET AANROEP VAN FUNCTIE printhallo() Variabelen definiëren Functie definitie Functie aanroep Bij grote documenten is het lastig dingen terug te vinden. Afspraak: Boven aan je bestand zet je: Variabelen en constanten Functie definities

Verwerkings opdrachten Hoofdstuk 8 Eigen Functies: Theorie en opgaven Maak alle opdrachten (Optioneel mag je overslaan) (Afsluitende opgaven zijn voor volgende week) Turtle Graphics - Functies en Parameters: opgaven Niet te lang aan 1 opgave blijven werken Hoeven niet allemaal af

Tot slot Bij programmeren maak je gebruik van functies. Een functie heeft een naam en soms één of meerdere parameters. De functiedefinitie beschrijft wat de functie doet. Als je de functie wilt gebruiken, doe je een functieaanroep. Gebruik commentaar, zinvolle namen, en vaste structuur Je programma wordt overzichtelijker en kun je onderdelen makkelijker vaker gebruiken.

Mobiele internetbundel Bij Simyo: 1 = 30 MB Maak een website die uitrekent: a) Als je Euro s invult: hoeveel MB je krijgt. b) Als je MBs invult: hoeveel je moet betalen.

SpiekBriefje

Fouten opsporen Kijk naar grensgevallen, vreemde waarden, belangrijke groepen van waarden waarde 0 voor negatieve getallen enz. Debuggen: met trace-optie tracing table

Belangrijke aspecten bij programmeren Volledigheid: Heeft het eindproduct alles wat verwacht wordt? Correctheid: Doet alles het zoals je zou verwachten? Constructie: Hoe goed is de code geschreven? duidelijk en logisch opgebouwd gebruikt loops condities en functies 'harde' waardes worden vermeden Stijl: Is de code leesbaar? Zinvolle commentaar LogischeNamen (in camelcase) Goed programmeren gaat dus niet alleen om een werkende oplossing, maar juist om een degelijke aanpak en oplossing.