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

Like dokumenter
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

Auditorieøvingstider for alle linjer er postet på forsiden av wikien (under «Siste nytt»). Studenter som ikke kan møte til oppsatt tidspunkt, kan

Python: Funksjoner og moduler Kapittel

Python: Funksjoner og moduler Kapittel

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

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.

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

TDT4110 Informasjonsteknologi grunnkurs: Tema: Lister og tupler Kap 5: Egne moduler + et større eksempel Kap. 7

Oppsummering fra sist

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

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.

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

Øvingsforelesning 1 Python (TDT4110)

TDT4110 Informasjonsteknologi, grunnkurs Uke 35 Introduksjon til programmering i Python

TDT4110 Informasjonsteknologi grunnkurs: Tema: Mer om strenger. - 3rd edition: Kapittel 8. Professor Alf Inge Wang

Mål. Pensum. I større, kompliserte programmer er det viktig å organisere koden godt Modularisering: å gruppere relaterte funksjoner i moduler

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

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

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

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

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

Øvingsforelesning i Python (TDT4110)

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

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

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

IN1000 Obligatorisk innlevering 7

Læringsmål og pensum. v=nkiu9yen5nc

Øvingsforelesning 3 Python (TDT4110)

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

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

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

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

Løse reelle problemer

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

TDT4110 IT Grunnkurs Høst 2016

Læringsmål og pensum. Designe et program

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.

TDT4110 Informasjonsteknologi grunnkurs: Python: Repetisjon. Professor Alf Inge Wang

TDT4110 Informasjonsteknologi grunnkurs: Tema: Filer og unntak ( exceptions ) - 3rd edition: Kapittel 6. Professor Alf Inge Wang

Læringsmål og pensum. Inn- og utoperasjoner 21/10/16

Repetisjon Novice Videregående Python PDF

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

TDT4110 IT Grunnkurs Høst 2016

Python: Strenger 3. utgave: Kapittel 8

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.

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

Øvingsforelesning 5 Python (TDT4110)

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

Øvingsforelesning i Python (TDT4110)

TDT4110 IT Grunnkurs Høst 2014

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

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

Læringsmål og pensum. Oversikt

Løse reelle problemer

Øvingsforelesning 5 Python (TDT4110)

Hvordan løse problemer med programmering?

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

TDT4110 IT Grunnkurs Høst 2015

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

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

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

INF109 - Uke 1b

Hash-funksjoner. Introduksjon. Steg 1: Strekkoder. Eksempel. Skrevet av: Martin Strand

Oppgaver uke 1: Løsningsforslag

Prøveeksamen IN1000. IN Prøveeksamen. Dato november 2017 Tid 12:30-12:00 Alle trykte og skrevne hjelpemidler er tillatt.

Mål. Pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Et større case. Terje Rydland - IDI/NTNU. Lære å lage større og sammensatte programmer

Hangman. Steg 1: Velg et ord. Steg 2: Gjett en bokstav. Sjekkliste. Sjekkliste. Introduksjon

Øvingsforelesning TDT4105 Matlab

Læringsmål og pensum. Algoritmeeffektivitet

TDT4110 Informasjonsteknologi grunnkurs: Tema: Algoritmer i praksis. Professor Alf Inge Wang

Designe et program. TDT4110 Informasjonsteknologi grunnkurs: Kapittel 2 Python: Bruk av funksjoner, variabler og input/output. Mål.

Steg 1: Rest etter divisjon

Opphavsrett: Forfatter og Stiftelsen TISIP

TDT4110 Informasjonsteknologi grunnkurs: Kapittel 2 Python: Bruk av funksjoner, variabler og input/output. Professor Alf Inge Wang

Mål. Pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Filer og unntak (exceptions) Utgave 3: Kap. 6. Terje Rydland - IDI/NTNU

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

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

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

Pensum: Starting out with Python

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

Dictionary er et objekt som lagrer en samling av data. Minner litt om lister men har klare forskjeller:

OPPGAVE 1 OBLIGATORISKE OPPGAVER (OBLIG 1) (1) Uten å selv implementere og kjøre koden under, hva skriver koden ut til konsollen?

Øvingsforelesning TDT4105 Matlab

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

Objektorientert programmering i Python. Resten av semesteret. Innhold uke 9 Mer komplekse strukturer. Referanser og objekter, inkl Mentimeter spørsmål

MAT1030 Plenumsregning 1

Objektorientert programmering i Python

TDT4110 Informasjonsteknologi grunnkurs: Tema: Mer om strenger Utgave 3: Kap. 8

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

Informasjon Prøveeksamen i IN1000 høsten 2018

TDT4110 Informasjonsteknologi grunnkurs: Eksempler. Mangekanter

Løsningsforslag Kontinuasjonseksamen i TDT4110 Informasjonsteknologi - grunnkurs

TDT4105 Informasjonsteknologi, grunnkurs (ITGK)

Del 1 En oversikt over C-programmering

Kap 2: Løkker og lister

Transkript:

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

2 Læringsmål og pensum Mål Beherske returverdier og returverdifunksjoner Bruke matematikkbibliotek i Python Generere tilfeldige tallverdier Pensum Value-Returning Functions and Modules Starting out with Python 3rd edition: Chapter 5.7-5.10

3 Intro til returverdifunksjoner: Generering av tilfeldige tall Kapittel 5.7

4 Funksjoner - Enkel funksjon: grupperte uttrykk for å utføre en viss oppgave - Returverdifunksjoner: Tilsvarende ovenfor, men returnerer en verdi

5 Standard Library-funksjoner og import-uttrykket Standardbibliotek: bibliotek inneholdende forhåndskrevne funksjoner som kommer med Python Bibliotekfunksjoner utfører oppgaver som programmerere ofte trenger Eks: print, input, range Betraktes gjerne (men ikke nødvendigvis(!)) som «black box» Noen bibliotekfunksjoner er bygd inn i Pythontolkeren Bare kall funksjonen for å bruke den

6 Standard Library-funksjoner og import-uttrykket (forts.) En funksjon inne i et bibliotek, kan sees på som en svart boks, dvs. at vi bruker funksjonene uten å vite hva som foregår inne i den svarte boksen.

7 Å generere tilfeldige tall Tilfeldig genererte tall er nyttige i mange programmeringsøyemed Random-modulen: inneholder bibliotekfunksjoner til arbeid med tilfeldige tall «Dot notation»: notasjon for å kalle metoder som tilhører en gitt modul: Format: module_name.function_name() Eks: random.random()

8 Å generere tilfeldige tall (forts.) Funksjonen randint(): Genererer et tilfeldig heltall i intervallet spesifisert gjennom argumentet Returnerer det tilfeldige tallet til en annen del av programmet som kalte på denne funksjonen Det returnerte tallet kan brukes hvor som helst et heltall kan brukes Dette kan du eksperimentere med i interaktiv modus

9 Å generere tilfeldige tall (forts.) Kall av random-funksjon med to argumenter: To input argumenter Returnerer tilfeldig heltall som typisk lagres i en variabel

10 Å generere tilfeldige tall (forts.) Retur av verdi fra random-funksjon: Vise et tilfeldig tall i konsollet vha. randomfunksjon:

11 Å generere tilfeldige tall Funksjonen randrange: tilsvarende funksjonen range, men returnerer et tilfeldig valgt heltall fra den resulterende sekvensen: Samme argumenter som for funksjonen range Funksjonen random: returnerer et tilfeldig flyttall i intervallet [0.0,1.0) Funksjonen uniform: returnerer et tilfeldig flyttall, men tillater brukeren å spesifisere et intervall

12 Seeds for tilfeldige tall Tilfeldige tall laget av funksjoner i modulen random er egentlig pseudo-tilfeldige tall Seed-verdi: initialiserer formelen som genererer de tilfeldige tallene Du trenger å bruke forskjellige seeds for å få forskjellige serier med tilfeldige tall Default-verdien for seeds er systemtiden Du kan bruke funksjonen random.seed() for å sette ønsket seedverdi

13 Oppgave: random Skriv Python-koden for å skrive ut 10 tilfeldige tall i 4-gangen til konsoll ved hjelp av random-biblioteket. kode: firegangen.py

14 Skrive egne funksjoner med retur Kapittel 5.8

15 Å skrive egne returverdifunksjoner For å skrive en returverdifunksjon skriver du en enkel funksjon og legger til en eller flere return-uttrykk Format: return uttrykk Verdien til uttrykk vil returneres til den delen av programmet som kalte på funksjonen Uttrykket i utrykket return kan være et komplisert uttrykk som summen av to variable eller resultatet av en annen returverdifunksjon

16 Oppbygning av en funksjon. Når man definerer/lager en funksjon bruker man det reserverte ordet def All koden i funksjonen (kroppen) skrives i innrykk. Avslutter med return (når noe skal returneres) Funksjoner kan også skrives i den interaktive omgivelsen def funksjonsnavn (para1, para2, para3): kode kode return variabel Navn på funksjon Parametere Funksjonskropp Avslutning

17 Kall av funksjoner Ved kall av en funksjon brukes funksjonsnavnet, samt en liste av argumenter (verdier) som matcher navnet på funksjonen og lista av parametere: def arealrektangel (b,h): # Beregne areal av rektangel return b*h >>> print(arealrektangel(20,4)) 80 Resultatet Parametere Argumenter

18 Oppgave: funksjon Lag funksjonen bmi som beregner body mass index (BMI) ut ifra vekt og høyde. BMI beregnes på følgende ved å ta vekt oppgitt i kg delt på høyde oppgitt i meter i andre Benytt deg av def og return Skriv også koden for følgende: Spør brukeren om vekt og høyde Skriv ut bmi ved bruk av funksjonen bmi Bruk input og print kode: bmi.py

19 Å bruke IPO-kart IPO-kart: beskriver input (inndata), processing (prosessering) og output (utdata) til en funksjon Verktøy for å designe og dokumentere funksjoner Typisk presentert i kolonner Har normalt korte beskrivelser av inndata, prosessering og utdata uten å gå i detalj Inkluderer ofte nok informasjon til å erstatte et flytdiagram

20 Å bruke IPO-kart (forts.) def get_regular_price(): price=int(input("regular price? ")) return price

21 Å bruke IPO-kart (forts.) DISCOUNT_PERCENTAGE=0.20 def discount(price): discount = price*discount_percentage return discount

22 Å returnere boolske verdier Boosk funksjon: returnerer enten True eller False Brukes til å teste et kriterium for beslutningsstrukterer og repetitive strukturerer F.eks å repetere handlingen i en løkke til en teller har nådd et visst tall Vanlige beregninger, som å sjekke om et tall er partall kan enkelt repeteres gjennom å kalle på en funksjon Brukes til å forenkle sjekk av inndata for gyldighet Du kan spørre om verdier, og bare godta enkelte verdier ved å returnere True hvis inndata er en av disse Vi ser på et eksempel! kode: tre_gangen.py

23 Å returnere flere verdier I Python kan en funksjon returnere flere verdier Spesifisert etter return-uttrykket, atskilt av kommaer Format: return uttrykk1, uttrykk2, etc. Når du kaller på en slik funksjon i et tilordningsuttrykk trenger du en egen variabel på venstresiden av = operatoren for å ta i mot hver returnert verdi: def get_name(): first_name=input("first name? ") last_name=input("last name? ") return first_name,last_name first_name, last_name = get_name() kode: names.py

24 Modulen math Modulen math: er en del av standard library som inneholder nyttige funksjoner for å utføre matematiske beregninger Typisk akseptere en eller flere verdier som argumenter, deretter å utføre matematiske operasjoner og returnere resultatet Bruk av modulen betinger et import math-uttrykk

25 Funksjoner i Modulen math:

26 Modulen math (forts.) Modulen math definerer variablene pi og e, som er tilordnet de matematiske verdiene for pi og e Kan brukes i likninger som fordrer disse verdiene for å få mer nøyaktige resultater Variabler må også kalles på ved å bruke dotnotasjonen: Eks: circle_area = math.pi * radius**2

27 Lagre funksjoner i moduler Kapittel 5.10

28 Å lagre funksjoner i moduler I større, kompliserte programmer er det viktig å organisere koden godt Modularisering: å gruppere relaterte funksjoner i moduler Gjør at programmene er lettere å forstå, teste og vedlikeholde Gjør det lettere å bruke gode om igjen for flere programmer Importer modulen som inneholder den fordrede funksjonen til hvert program som trenger den

29 Å lagre funksjoner i moduler (forts.) En Module er en fil som inneholder Pythonkode Inneholder funksjonsdefinisjoner, men inneholder ikke kall til disse funksjonene Programmer vil importere modulene og kalle funksjonene Regler for modulnavn: Filnavn skal slutte med.py Kan ikke være det samme som et nøkkeluttrykk i Python Importer moduler med import-uttrykket

30 Funksjoner som bruker funksjoner et større eksempel Vi skal lage funksjonen romertall som tar inn et tall mellom 0 og 9 og returnerer et romertall som svarer til tallet. Romertallene fra 0 til 9 er som følger: 0=, 1=I, 2=II, 3=III, 4=IV, 5=V, 6=VI, 7=VII, 8=VIII, 9=IX Lag også koden slik at en bruker kan skrive inn et tall og få oversatt det til et romertall samt skrive det ut til konsollet så lenge at tallet brukeren skriver inn er større enn 0. Benytt def, if, elif,else,input,print,while og return. romertall_1.py

31 Funksjoner som bruker funksjoner et større eksempel (fortsettelse) For å angi det siste sifferet i et heltall som et romertall bruker vi symbolene I=1 og V=5 For å angi det nest siste sifferet i et heltall som et romertall bruker vi symbolene X=10 og L = 50 For å angi det nest-nest siste sifferet i et heltall som et romer tall bruker vi symbolene, C=100 og D = 500 etc Romertall oppfører seg på samme måte for tall større en 10, men da med brukes X, L og C brukes i stedet for I, V og X

32 Funksjoner som bruker funksjoner et større eksempel (fortsettelse) Vi skal utvide slik at vi kan skrive et romertall avhengig av hvilket siffer vi skal angi. Lag funksjonen romersiffer som tar inn 4 parametere: Bruk: n: heltall mellom 0 og 9 som skal oversettes til romertall. onechar: Angir hvilket romertall som skal brukes for enerplassen fivechar: Angir hvilket romertall som skal brukes for femmerplassen tenchar: Angir hvilket romertall som skal brukes for tierplassen For å angi bakerste siffer vil du gjøre følgende funksjonskall: r = romersiffer(n, I, V, X ) For å angi neste bakerste siffer vil du gjøre følgende funksjonskall: r = romersiffer(n, X, L, C ) Benytt def, if, elif, print og return. romertall_2.py

33 Funksjoner som bruker funksjoner et større eksempel (fortsettelse) Endre funksjonen romertall slik at man kan skrive inn et tall mellom 0 og 999 og får returnert et riktig romertall. Den nye funksjonen må plukke ut siffer for siffer og bruke funksjonen romersiffer for å generere riktig romertall: Bruk: Sjekke om tallet har siffer på hundreplassen -> C/D/M Sjekke om tallet har siffer på tierplassen -> X, L, C Sjekke om tallet har siffer på enerplassen -> I, V, X r = romertall(n) Benytt def, if, elif, print og return, samt heltallsdivisjon og restdivisjon for å gå igjennom ulike siffer. romertall_3.py

34 Oppsummering Dette kapittelet dekket: Returverdifunksjoner, inkludert Å skrive returverdifunksjoner Å bruke returverdifunksjoner Å returnere flere verdier fra en funksjon Å bruke bibliotekfunksjoner og import-uttrykket Moduler, inkludert Modulene random og math Å gruppere dine egne funksjoner i moduler