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

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

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

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

Python: Variable og beregninger, innlesing fra tastatur utskrift til skjerm. TDT4110 IT Grunnkurs Professor Guttorm Sindre

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

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

Python: Lister og tupler Gaddis: Kapittel 7

TDT4110 Informasjonsteknologi, grunnkurs Uke 35 Introduksjon til programmering i Python

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

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

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

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

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

Lage større programmer (Python, relatert til teoridelen om Software Engineering ) TDT 4110 IT Grunnkurs Professor Guttorm Sindre

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

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

Oppsummering fra sist

Python: Funksjoner og moduler Kapittel

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

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

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.

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.

Øvingsforelesning i Python (TDT4110)

Kapittel 1 En oversikt over C-språket

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

Mål. Pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Unntak (exceptions) (Kap 6) Dictionaries (Kap. 9) Terje Rydland - IDI/NTNU

Øvingsforelesning 5 Python (TDT4110)

Øvingsforelesning i Python (TDT4110)

Øvingsforelesning 5 Python (TDT4110)

TDT4105 Informasjonsteknologi, grunnkurs. Introduksjon til programmering i Matlab

TDT4110 IT Grunnkurs Høst 2015

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

INF109 - Uke 1b

Løse reelle problemer

Læringsmål og pensum. v=nkiu9yen5nc

TDT4127 Programmering og Numerikk

TDT4110 Informasjonsteknologi grunnkurs: Tema: Dictionaries og mengder (sets) - Kapittel 9. Professor Alf Inge Wang

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

MENGDER (SETS) Læringsmål og pensum. Kapittel 9.2

TDT4105 Informasjonsteknologi, grunnkurs (ITGK)

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

Løse reelle problemer

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

Velkommen til. IN1010 Objektorientert programmering Våren 2018

UNIVERSITETET I OSLO

Øvingsforelesning i Python (TDT4110)

INF 1000 høsten 2011 Uke september

INF1000 undervisningen INF 1000 høsten 2011 Uke september

Øvingsforelesning i Matlab (TDT4105)

Python: Oppslagslister (dictionaries) og mengder 3. utgave: Kapittel 9

Opphavsrett: Forfatter og Stiftelsen TISIP

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

MAT1030 Diskret Matematikk

Øvingsforelesning i Python (TDT4110)

TDT4110 Informasjonsteknologi grunnkurs: Tema: Lister og tupler. - 3rd edition: Kapittel 7. Professor Alf Inge Wang

Mål. Pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Dictionaries og sets (mengder) Utgave 3: Kap. 9. Terje Rydland - IDI/NTNU

Python: Funksjoner og moduler Kapittel

Repetisjon Novice Videregående Python PDF

Excited. Hvordan komme i gang med tekstbasert programmering? Centre for Excellent IT Education. Guttorm Sindre

Ta kontakt i pausen. Viktig at vi kommer i gang med dette arbeidet!

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

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

Velkommen til plenumsregning for MAT1030. MAT1030 Diskret matematikk. Repetisjon: Algoritmer og pseudokode. Eksempel fra boka. Eksempel

IN1000 Obligatorisk innlevering 7

TDT4105 Informasjonsteknologi grunnkurs Øvingsforelesning 2. Iver Dihle Skjervum Vit.ass. ITGK

Tirsdag 21/11. Onsdag 24/11. Tirsdag 12/12. TDT4110 Informasjonsteknologi grunnkurs: Tema: Et større case

TDT4105 Informasjonsteknologi, grunnkurs

TDT4110 IT Grunnkurs Høst 2016

Plenumsregning 1. MAT1030 Diskret Matematikk. Repetisjon: Algoritmer og pseudokode. Velkommen til plenumsregning for MAT1030

Øvingsforelesning i Matlab (TDT4105)

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

Del 3. Pekere RR 2016

TDT4102 Prosedyre og Objektorientert programmering Vår 2015

Utførelse av programmer, funksjoner og synlighet av variabler (Matl.)

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å.

Hvordan løse problemer med programmering?

IN1010 Objektorientert programmering Våren 2019

TDT4110 IT Grunnkurs Høst 2014

Objektorientert programmering i Python

Øvingsforelesning i Matlab TDT4105

TEKSTSTRENGER GRUNNLEGGENDE STRENGOPERASJONER. 2 TESTING, SØKING OG MANIPULERING AV TEKSTSTRENGER. 3 FORMATTERING. 5 BETINGEDE KONTROLLSTRUKTURER.

TDT4110 Informasjonsteknologi grunnkurs: Eksempler. Mangekanter

Øvingsforelesning TDT4105 Matlab

Seminaroppgaver IN1010, uke 2

MAT1030 Plenumsregning 1

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

TDT4105 Informasjonsteknologi, grunnkurs (ITGK)

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

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

Læringsmål og pensum. Designe et program

TDT4110 Informasjonsteknologi grunnkurs: Programmering: En større case. Professor Alf Inge Wang

Læringsmål og pensum. En større case. Mål Lære å lage større og sammensatte programmer Pensum Kapitlene 1-9 og 12.

TDT4110 IT Grunnkurs Høst 2016

Hvor gammel er du? Hvor gammel er du? Del 1: Skrive ut til skjerm. Gjøre selv. Skrevet av: Sindre O. Rasmussen, Kodeklubben Trondheim

INF109 - Uke 1a

Matematikk Øvingsoppgaver i numerikk leksjon 5 Skript

INF uke 2. Inputt, beslutninger, kontrollflyt og prosedyrer

Python: Filer og unntak Gaddis: Kapittel 6

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

Denne uka Vi trenger å Støttes av Hente data fra bruker Vise data til bruker Lagre data i minnet for bruk videre i programmet Fra tastatur: input() Tekst til skjerm: print() m.m. Variable, enkle datatyper: Heltall, flyttall, strenger, sannhetsverdier Lagre data permanent (og hente) Tekstfiler Binærfiler Andre former for input Andre former for output sammensatte datatyper: Lister, tupler, mengder, dictionary, objekter / klasser Prosessere data Styre hvorvidt og hvor ofte programsetninger utføres Valg Repetisjoner Operatorer =, += +, -, * >, ==, Kontrollstruktur standard sekvens if-setning løkker (while, for) Innebygdefunksjoner og metoder Kontrollstruktur Unntaksbehandling Rekursjon Gjøre programmet forståelig Bryte ned problemet i deler Oppnå fleksibilitet og gjenbrukbarhet Kommentarer Funksjoner Moduler Objektorientert design Klasser og arv Forstå hva vi har gjort feil Feilmeldinger Debugging 3

Læringsmål og pensum Mål Forstå hvorfor programmer deles 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) 4

Introduksjon til funksjoner Kapittel 5.1

Funksjoner: Hva og hvorfor? Funksjon: en gruppe kodelinjer som utfører en spesifikk oppgave kan minne om matematiske funk., men Python-funksjoner Kan inneholde alle slags handlinger, ikke bare matematikk Kan returnere et svar (som mat.funk.), men kan også la være Kan ta argumenter, men kan også la være Hvorfor bruke funksjoner? Dele et større program opp i mindre deler Lettere å forstå, enklere å teste, mer effektivt samarbeid Gjenbruk av kode Vi kan bruke funksjoner andre har skrevet, f.eks. print(), round() Vi kan selv definere nye funksjoner og bruke dem flere sted i ett program, eller i flere ulike programmer 6

Eksempel Skal beregne og presentere forskningsdata Vil ha en tydelig innrammet overskrift foran hver tabell med data Forskningsdataene beregnes på ulike måter, men skal vises med samme slags overskrift mange sted i programmet. Irriterende å gjenta koden mange sted: Definerer det i stedet som en funksjon Får da utført dette med bare en kodelinje flere sted i programmet: 7

Eksempel (forts.) Funksjonen print_data_heading() defineres her Kan så brukes flere sted i koden (kunne vært enda flere) KODE: headings_v1.py headings_v0.py viser UTEN funksjon, må da gjenta lik kode 8

Hvordan kjøres dette programmet? Registrerer at det defineres en funksjon, Utfører ikke linjene inni nå, bare husker def. til senere 9

Hvordan kjøres dette programmet? Fortsetter etter definisjonen, vanlig kodelinje som utføres som normalt 10

Hvordan kjøres dette programmet? Neste kodelinje er et kall til den definerte funksjonen. Da hopper utførelsen dit 11

Hvordan kjøres dette programmet? Og utfører i rekkefølge de Neste kodelinje treetkode-linjene er kall til den idefinerte funksjonen funksjonen. Da hopper utførelsen dit 12

Hvordan kjøres dette programmet? Etter at tredje linje inni funksjonen er ferdig, vender utførelsen tilbake dit kallet kom fra. Fortsetter med neste linje, dette er ei løkke som kjører 25 ganger 13

Hvordan kjøres dette programmet? Når vi etter hvert kommer til neste funksjonskall, hopper utførelsen igjen til funksjonens kode 14

Hvordan kjøres dette programmet? og tilbake igjen der vi slapp i hovedskriptet når funksjonen er ferdig 15

Definere og kalle funksjoner Kapittel 5.2

Lage en funksjon Generelt oppsett for definisjon av funksjon: 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 kodeblokk som hører til funksjonen NB! Denne må skrives med innrykk!!! (samme som for if, while, for viser hvilken kode som hører til) 17

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() 18

Overføring av argumenter til funksjoner Kapittel 5.5

Argumenter og parametre Funksjon uten parametre, f.eks. def print_data_heading( ): Lite fleksibelt, eksakt samme overskrift hver gang Med parameter(e): ulike overskrifter fra gang til gang 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 20

Argumenter -> parametre Vanligst: Samme antall argumenter som parametre Samme rekkefølge Kalles positional arguments Se kodeeksempel headings_v2.py, headings_v3.py Korrekt rekkefølge kan avvikes i kallet hvis vi oppgir hvilket argument som skal gis til hvilken parameter Kalles keyword arguments Se kodeeksempel headings_v3.py (siste linje i koden) 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 headings_v4.py 21

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 23

Oppgave Start med programmet tabell_v0.py. Lag en funksjon som kan printe ut en tabell som vist i eksempel på kjøring For alle oppgaver, lag gjerne flere kall til funksjonen så man ser at den kan brukes flere ganger LETTERE: Ignorer delen med input fra bruker, lag en funksjon som bare printer en helt identisk tabell hver gang (fast antall rader og kolonner med fast bredde) tabell_v05.py MIDDELS: Lag funksjonen slik figuren over indikerer. Dvs. basert på tall brukeren har gitt inn, skal kallet i skriptet gi argument til funksjonen, og funksjonen må ha parametre som gir mulighet til å regulere størrelsen på tabellen. tabell_v1.py VANSKELIG: gjør MIDDELS + (a) endre funksjonen så en av parametrene gis en default-verdi, og vis et kall hvor dette benyttes til å droppe argument for den parameteren. (b) Endre program og funksjon så kolonnebredde blir en global variabel i stedet for en parameter. tabell_v2.py 24

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) 25

Oppsummering Funksjoner kan ta imot verdier i parametre. en variabel som tar imot en verdi når funksjonen blir kalt: def funksjon(param1, param2): kode... # Variable Verdier kan overføres til funksjoner ved hjelp av argumenter: funksjon(argument1, argument2) Vanligst: posisjonelle argumenter # Verdier 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 26