Python: Intro til funksjoner. TDT4110 IT Grunnkurs Professor Guttorm Sindre

Like dokumenter
Python: Intro til funksjoner. TDT4110 IT Grunnkurs Professor Guttorm Sindre

YouTube-kanal ITGK. Læringsmål og pensum

Python: Løkker. TDT4110 IT Grunnkurs Professor Guttorm Sindre

TDT4110 Informasjonsteknologi grunnkurs: Tema: Enkle funksjoner. - 3rd edition: Kapittel Professor Alf Inge Wang

Python: Funksjoner og moduler Kapittel

Python: Valg og betingelser. TDT4110 IT Grunnkurs Professor Guttorm Sindre

Øvingsforelesning 5 Python (TDT4110)

Python: Funksjoner og moduler Kapittel

Øvingsforelesning 5 Python (TDT4110)

Løse reelle problemer

TDT4110 Informasjonsteknologi, grunnkurs Uke 35 Introduksjon til programmering i Python

Python: Løkker. TDT4110 IT Grunnkurs Professor Guttorm Sindre

Læringsmål og pensum. if (be): else (not_to_be):

if (be): else (not_to_be): TDT4110 Informasjonsteknologi grunnkurs: Tema: Betingelser og logiske uttrykk Utgave 3: Kap.

TDT4110 Informasjonsteknologi grunnkurs: Tema: Betingelser og logiske uttrykk. - 3rd edition: Kapittel 3. Professor Alf Inge Wang

I denne oppgaven skal vi repetere litt Python-syntaks, det er en god blanding av alle tingene du har lært i Python til nå.

TDT4110 Informasjonsteknologi grunnkurs: Tema: Betingelser og logiske uttrykk Utgave 3: Kap. 3

Oppsummering fra sist

Løse reelle problemer

TDT4110 Informasjonsteknologi grunnkurs: Tema: Løkker. - 3rd edition: Kapittel 4. Professor Alf Inge Wang

Kapittel 1 En oversikt over C-språket

Feilmeldinger, brukerinput og kontrollflyt

Repetisjon, del 2. TDT 4110 IT Grunnkurs Professor Guttorm Sindre

Finne ut om en løsning er helt riktig og korrigere ved behov

Læringsmål og pensum. Intro løkker. Mål Lære om begrepet løkker Lære om bruk av while-løkke Lære om bruk av for-løkke Pensum. Kapittel 4.

TDT4110 IT Grunnkurs Høst 2016

Repetisjon, del 1. TDT 4110 IT Grunnkurs Professor Guttorm Sindre

Øvingsforelesning i Python (TDT4110)

Repetisjon Novice Videregående Python PDF

TDT4110 IT Grunnkurs Høst 2015

Med løkke: Læringsmål og pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Løkker/Sløyfer Utgave 3: Kap. 4 Utgave 2: Kap. 5. Mål.

Finne ut om en løsning er helt riktig og korrigere ved behov

IN1000 Obligatorisk innlevering 7

INF uke 2. Inputt, beslutninger, kontrollflyt og prosedyrer

TDT4110 IT Grunnkurs Høst 2016

Hvordan løse problemer med programmering?

Python: Løkker. TDT4110 IT Grunnkurs Professor Guttorm Sindre

Innhold uke 4. INF 1000 høsten 2011 Uke 4: 13. september. Deklarasjon av peker og opprettelse av arrayobjektet. Representasjon av array i Java

Læringsmål og pensum. Intro til returverdifunksjoner: Generering av tilfeldige tall 27/09/16

TDT4110 Informasjonsteknologi grunnkurs: Tema: Funksjoner med retur og moduler Utgave 3: Kap

Øvingsforelesning i Python (TDT4110)

Utførelse av programmer, metoder og synlighet av variabler i JSP

Innhold uke 7. Objektorientert programmering i Python: Introduksjon. Lite tilbakeblikk: Programflyt og skop. Lite tilbakeblikk: Funksjoner er uttrykk

TDT4110 Informasjonsteknologi grunnkurs: Tema: Funksjoner med retur og moduler. - 3rd edition: Kapittel Professor Alf Inge Wang

Øvingsforelesning 1 Python (TDT4110)

Programmeringsspråket C

AlgDat - Øvingsforelesning 1 Introduksjon til Python, lenkede lister og øving 1

Læringsmål og pensum. v=nkiu9yen5nc

Objektorientert programmering i Python

Noen innebygde funksjoner - Vektorisering

Seminaroppgaver IN1010, uke 2

Python: Rekursjon (og programmering av algoritmer) Python-bok: Kapittel 12 + teoribok om Algoritmer

TDT4105 Informasjonsteknologi grunnkurs: Uke 43: Datastrukturer (kap. 8)

UNIVERSITETET I OSLO

Python: Valg og betingelser. TDT4110 IT Grunnkurs Professor Guttorm Sindre

TDT4110 Informasjonsteknologi grunnkurs: Kapittel 1 Introduksjon til Programmering og Python. Professor Alf Inge Wang

Husk at du skal ha to vinduer åpne. Det ene er 'Python Shell' og det andre er for å skrive kode i.

TDT4110 Informasjonsteknologi grunnkurs: Uke 43: Datastrukturer (kap. 8)

Verden - Del 2. Steg 0: Oppsummering fra introduksjonsoppgaven. Intro

Noen innebygde funksjoner - Vektorisering

TDT4105 Informasjonsteknologi, grunnkurs. Matlab 5: Løkker (FOR og WHILE) Matlab 6: Problemløsning / Algoritmer

Metoder med parametre, løkker og arrayer

Python: Variable og beregninger, input og utskrift. TDT4110 IT Grunnkurs Professor Guttorm Sindre

Plenumsregning 1. Kapittel 1. Roger Antonsen januar Velkommen til plenumsregning for MAT1030. Repetisjon: Algoritmer og pseudokode

Systemutvikling (Software Engineering) TDT 4110 IT Grunnkurs Professor Guttorm Sindre

Informasjon Eksamen i IN1000 og IN1001 høsten a) 1 poeng. 1b) 1 poeng. Tid. Oppgavene. Tillatte hjelpemidler. 30. november kl. 14.

Semantisk Analyse del I

TDT4105 Informasjonsteknologi, grunnkurs. Introduksjon til programmering i Matlab

lage og bruke funksjoner som tar argumenter lage og bruke funksjoner med returverdier forklare forskjellen mellom globale og lokale variabler

TDT4105 Informasjonsteknologi, grunnkurs (ITGK)

Et lite oppdrag i bakgrunnen

Øvingsforelesning i Matlab TDT4105

Programmering i R. 6. mars 2004

IN uke 2. Presis forståelse av programmering

INF109 - Uke 1a

MAT1030 Diskret Matematikk

TDT4127 Programmering og Numerikk

Øvingsforelesning i Python (TDT4110)

TDT4102 Prosedyre og Objektorientert programmering Vår 2015

Ark 1 av 18. programmeringsspråkenes. Velkommen til IN 211. verden. IN 211 Programmeringsspråk

Øvingsforelesning i Matlab (TDT4105)

Python: Strenger 3. utgave: Kapittel 8

Velkommen til. IN1010 Objektorientert programmering Våren 2018

Øvingsforelesning 3 Python (TDT4110)

Øvingsforelesning i Python (TDT4110)

INF1000 EKSTRATILBUD. Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen

INF5110 Obligatorisk Oppgave 2 del 2. Andreas Svendsen SINTEF. 23. April Oversikt

<?php. count tar en array som argument, og returnerer et tall som uttrykker antallet innførsler i arrayen.

INF2810: Funksjonell Programmering. Tilstand og verditilordning

TDT4110 Informasjonsteknologi grunnkurs: Kapittel 7 Filer og unntak ( exceptions ) Professor Alf Inge Wang Stipendiat Lars Bungum

Læringsmål uke 7. Objektorientert programmering i Python: Introduksjon. Innhold uke 7. Lite tilbakeblikk: Programflyt og skop

Husk at du skal ha to vinduer åpne. Det ene er 'Python Shell' og det andre er for å skrive kode i.

Mattespill Nybegynner Python PDF

I dag skal vi ved hjelp av ganske enkel Python-kode finne ut om det er mulig å tjene penger på å selge og kjøpe en aksje.

Plan: Parameter-overføring Alias Typer (Ghezzi&Jazayeri kap.3 frem til 3.3.1) IN 211 Programmeringsspråk

MAT1030 Plenumsregning 1

IN uke 1. Komme i gang med programmering

INF 1000 høsten 2011 Uke september

Øvingsforelesning i Matlab (TDT4105)

Øvingsforelesning TDT4105 Matlab

Transkript:

Python: Intro til funksjoner TDT4110 IT Grunnkurs Professor Guttorm Sindre

Snart referansegruppemøte Viktig mulighet for å gi tilbakemelding på emnet Pensumbøker Forelesninger Øvingsforelesninger Veiledning på sal Øvingsoppgaver Andre læringsressurser (kollokvier, Piazza, videoer ) Ros, kritikk, forbedringsforslag Jeg går ut av auditoriet ca. 10 min før pause i dag Så kan referansegruppemedl. fasilitere en diskusjon Også mulig å kontakte ref.gr.medl. på andre måter Epost, pauser, Se itgk.idi.ntnu.no for hvem som er i ref.gr. fra din klasse 2

Læringsmål og pensum Mål Forstå hvorfor man deler opp programmer i funksjoner Bli i stand til å definere og kalle funksjoner Klare å bruke lokale variable Klare å overføre parametre til funksjoner Lære fornuftig bruk av globale variable og konstanter Pensum 3.utg. Python: Ch. 5.1-5.7 (2.utg. Ch. 3) 3

Introduksjon til funksjoner Kapittel 5.1

Introduksjon til funksjoner Funksjon: en gruppe kodelinjer som utfører en spesifikk oppgave Hvorfor bruke funksjoner? Dele et større program opp i mindre deler Tydelig struktur, bedre oversikt: lettere å forstå Enklere testing: en og en funksjon Lettere samarbeid mellom flere personer Gjenbruk av kode Hvis samme kode trengs flere steder i ett program, kalle funksjonen alle disse stedene Kortere program, raskere skrevet Hvis samme operasjoner trengs i mange programmer alle kalle samme funksjon: enda mer tid spart 5

Funksjoner vs. tidligere lært Funksjoner vs. Variable: Variabel: Huske data (dvs. verdier) til senere bruk Funksjon: Huske operasjoner (dvs. kodelinjer) til senere bruk Funksjoner vs. Løkker: Løkker: Gjøre samme kodelinje(r) om igjen en bestemt plass i programmet Formål: REPETISJON Funksjon: Gjøre samme kodelinjer flere ulike steder i ett program, eller i flere ulike program Formål: GJENBRUK 6

Oppdeling # Program uten funksjoner statement statement statement statement statement statement statement statement # Program med funk def func1( ): statement statement statement def func2( ): statement statement Statement Eksempler: sang_plain.py Vs. sang_m_funk.py

Typer av funksjoner Det fins ulike typer funksjoner: Ferdigdefinerte vs. Egendefinerte Ferdigdefinerte: allerede laget av andre, vi kan bruke dem Egendefinerte må vi lage selv før de kan brukes Funksjoner med og uten returverdi Med returverdi: gir en verdi tilbake til hvor funksjonen ble kalt Eksempel på kall: navn=input('navn? ') Funksjoner med returverdi: neste uke Uten returverdi: gir ingen verdi tilbake Eksempel på kall: print ('Navn? ') Funksjoner kan ha parametre kan tilpasse sin atferd til argumenter som blir gitt inn 8

Definere og kalle funksjoner Kapittel 5.2

Lage en funksjon En funksjon lages ved å skrive definisjonen av funksjonen: def funksjons_navn(): kode kode etc. Første linje kalles funksjonshode: Markerer starten på funksjon med det reserverte ordet def, fulgt av navnet på funksjonen, parenteser og et kolon. Resten av koden kalles ei kodeblokk som hører til funksjonen NB! Kodeblokken må skrives med innrykk!!! 10

Definisjon og kall av funksjoner Disse setninger fører til at funksjonen refreng blir opprettet # Definisjon av funksjon def refreng(): print( Jeg gikk meg over sjø og land ) print( Der møtte jeg ) # forts. # Kall av funksjonen refreng() Denne setningen kaller funksjonen slik at den blir kjørt. 11

Bruk av flere funksjoner Programmer kan bygges av flere funksjoner. Vanlig praksis: hovedfunksjon kalles main( ): hovedlogikken i programmet gjengir overordnet struktur i programmet kaller andre funksjoner som er definert Men vi må ha minst en kodelinje utenfor main() skriptet / hovedprogrammet Minimal løsning: her utføres kun et kall av main() 12

Kall av flere funksjoner def refreng(): print('jeg gikk meg over sjø og land,') def vers(verb): print('jeg hører hjemme i ',verb, 'land,, sep= ) def main(): print('jeg GIKK MEG OVER SJØ OG LAND') refreng() vers( klappe')... #hovedprogram main() 13

Kall av flere funksjoner def refreng(): print('jeg gikk meg over sjø og land,') def vers(verb): print('jeg hører hjemme i ',verb, 'land,, sep= ) def main(): print('jeg GIKK MEG OVER SJØ OG LAND') refreng() vers( klappe')... #hovedprogram main() 14

Kall av flere funksjoner def refreng(): print() print('jeg gikk meg over sjø og land,') def vers(verb): print('jeg hører hjemme i ',verb, 'land,, sep= ) def main(): print('jeg GIKK MEG OVER SJØ OG LAND') refreng() vers( klappe')... #hovedprogram Siste ufullførte kall main() 15

Kall av flere funksjoner def refreng(): print('jeg gikk meg over sjø og land,') def vers(verb): print('jeg hører hjemme i ',verb, 'land,, sep= ) def main(): print('jeg GIKK MEG OVER SJØ OG LAND') refreng() vers( klappe')... #hovedprogram Siste ufullførte kall main() 16

Kall av flere funksjoner def refreng(): print('jeg gikk meg over sjø og land,') def vers(verb): print('jeg hører hjemme i ',verb, 'land,, sep= ) def main(): print('jeg GIKK MEG OVER SJØ OG LAND') Siste ufullførte kall refreng() vers( klappe')... #hovedprogram Nest siste main()v 17

Kall av flere funksjoner def refreng(): print('jeg gikk meg over sjø og land,') def vers(verb): print('jeg hører hjemme i ',verb, 'land,, sep= ) def main(): print('jeg GIKK MEG OVER SJØ OG LAND') Siste ufullførte kall refreng() vers( klappe')... #hovedprogram Nest siste main() 18

Kall av flere funksjoner def refreng(): print('jeg gikk meg over sjø og land,') def vers(verb): print('jeg hører hjemme i ',verb, 'land,, sep= ) def main(): print('jeg GIKK MEG OVER SJØ OG LAND') refreng() vers( klappe')... #hovedprogram Siste ufullførte kall main() 19

Kall av flere funksjoner def refreng(): print('jeg gikk meg over sjø og land,') def vers(verb): print('jeg hører hjemme i ',verb, 'land,, sep= ) def main(): print('jeg GIKK MEG OVER SJØ OG LAND') Siste ufullførte kall refreng() vers( klappe')... #hovedprogram Nest siste main() 20

Kall av flere funksjoner def refreng(): print('jeg gikk meg over sjø og land,') def vers(verb): print('jeg hører hjemme i ',verb, 'land,, sep= ) def main(): print('jeg GIKK MEG OVER SJØ OG LAND') refreng() Siste ufullførte kall vers( klappe')... #hovedprogram Nest siste main() 21

Kall av flere funksjoner def refreng(): print('jeg gikk meg over sjø og land,') def vers(verb): print('jeg hører hjemme i ',verb, 'land,, sep= ) def main(): print('jeg GIKK MEG OVER SJØ OG LAND') refreng() vers( klappe')... #hovedprogram Siste ufullførte kall main() 22

Kall av flere funksjoner def refreng(): print('jeg gikk meg over sjø og land,') def vers(verb): print('jeg hører hjemme i ',verb, 'land,, sep= ) def main(): print('jeg GIKK MEG OVER SJØ OG LAND') refreng() vers( klappe')... #hovedprogram Ingen flere instruksjoner, programmet ferdig! main() 23

Designe et program for å bruke funksjoner Kapittel 5.3

Top-down design En måte å tenke på Bryt programmet ned i en serie av deloppgaver For hver deloppgave: Kan den brytes ned videre? Når alle deloppgaver er så enkle at videre nedbrytning er poengløs, skrives koden Bygger skjelettet først, så fylle inn detaljene Motsatte: bottom-up design, først lage de detaljerte kodelinjene, så tenke på funksjonsoppdeling 25

Hierarkisk skjema Hierarkisk skjema kan brukes for å lage en grafisk oversikt over et program: main() hent_input() beregn_bruttlønn() beregn_bruttlønn() beregn_fradrag() lønn() input_timer() input_timelønn() beregn_skatt() beregn_fradrag() 26

Pause kjøring til brukeren trykker enter Av og til er det ønskelig at programmet pauser F.eks.: Mer tekst enn det som får plass på skjermen på en gang Mye å lese for brukeren Vente til brukeren sier det er greit å fortsette Til å gjøre dette kan man bruke funksjonen input: input( Trykk på ENTER for å gå videre ) 27

Overføring av argumenter til funksjoner Kapittel 5.5

Argumenter og parametre Ulike behov for funksjoner: Gjøre eksakt det samme hver gang den kalles Trenger INGEN parametre, jfr. def refreng( ): Kunne gjøre litt ulike ting fra gang til gang Bruker en eller flere parametre, jfr. def vers(verb): Parameter: Står inni funksjonsparentesen i def-linja Fungerer som en lokal variabel i funksjonskoden Argument: Står inni funksjonsparentesen der den kalles Kan være en verdi, variabel, eller uttrykk som blir en verdi Argumentverdien overføres til funksjonen, Dvs. puttes inn for parametervariabelen når funksjonen utføres 29

Argumenter -> parametre Vanligst: Samme antall argumenter som parametre Samme rekkefølge Kalles positional arguments Se kodeeksempel sang_m_funk_position.py Korrekt rekkefølge kan avvikes i kallet hvis vi oppgir hvilket argument som skal gis til hvilken parameter Kalles keyword arguments Se kodeeksempel sang_m_funk_keyword.py Kan også i noen tilfeller avvike antall Bruke færre argumenter enn funksjonen har parametre NB: Kun hvis de som droppes har default-verdier Se kodeeksempel sang_m_funk_default.py 30

Lokale og globale variable Kapittel 5.4 + 5.6

Lokale vs. globale variable En lokal variabel blir opprettet inni en funksjon skal kun brukes lokalt i funksjonen er umulig å nevne i kode utenom variabelens skop En global variabel Defineres i hovedprogrammet Er synlig der og i alle programmets funksjoner Bruk av globale variable Kan uten videre brukes / vises av alle funksjoner Kan endres hvis man i funk. skriver global variabelnavn IKKE anbefalt, annet enn for konstanter Se eksempel fylkesmann_u_forklaring.py / fylkesmann_m_forklaring.py 32

Oppsummering Funksjoner gir mange fordeler: Bedre struktur, arbeidsdeling, kortere programmer, gjenbruk Særlig hvis like eller lignende oppgaver skal gjøres mange steder En funksjon må defineres og består av hode og kropp: def funksjonsnavn(): kode... En funksjon kalles (kjøres) med funksjonsnavnet: funksjonsnavn() Lokale variable lurt for interne beregninger i funksjonen Plass frigjøres igjen straks funksjon er slutt Globale variable mindre lurt (unntatt konstanter) 33

Oppsummering Funksjoner kan ta imot verdier i parametre. en variabel som tar imot en verdi når funksjonen blir kalt: def funksjon(param1, param2): # Variable kode... Verdier kan overføres til funksjoner ved hjelp av argumenter: funksjon(argument1, argument2) # Verdier Vanligst: posisjonelle argumenter rekkefølge av argumenter matcher parameterlista i funksjonshodet Men kan avvike keyword-argumenter: muliggjør annen rekkefølge default-verdier: gjør at man kan droppe parametre 34

Neste uke: Mer om funksjoner, moduler (kap.5.7-5.10) Aktuelle spørsmål for quiz: «what happens when the end is reached» (Checkpoint 5.8) «What is a variable s scope?» (Checkpoint 5.11) «What are the pieces / variables called?» (Checkpoint 5.13, 5.14) «What is a parameter variable s scope?» (Checkpoint 5.15) «When a parameter is changed?» (Checkpoint 5.16) «What is the scope of a global variable?» (Checkpoint 5.18) «What does the following statement do?» (Checkpoint 5.25) «What happens if the same seed value is always used» (Checkpoint 5.30) «A variable created inside a function block is known as a» (Review, Multiple Choice 4) «When possible you should avoid using» (Review, Multiple Choice 12) «A global variable whose value cannot be changed» (Review, Multiple Choice 14) «This standard library function returns a random» (Review, Multiple Choice 15/16) «This statement causes a function to end» (Review, Multiple Choice 17) «Void functions do not return any value» (Review, True or False 2) «A statement in a function can access a local variable» (Review, True or False 7) «Name and describe two parts of a function definition.» (Review, Short Answer 2) «what happens when the end of the function» (Review, Short Answer 3) «What will the following program display?» (Algorithm Workbench 4) «Write a function named area» (Algorithm Workbench 9) Noen av disse gis i «kahootisert form» Pluss 1-2 helt uannonserte spørsmål, men også om funksjoner 35