TDP002 - Imperativ programmering

Relevanta dokument
TDIU01 - Programmering i C++, grundkurs

Funktioner. Linda Mannila

Språket Python - Del 2 Grundkurs i programmering med Python

TDP002 - Imperativ programmering

Python. Datatyper. Mer om datatyper. Heltal - 3 Flyttal - 2,456 Listor - [1,2,3,4] Strängar - spam!

Läsöversikt. Föreläsningar 2-6. Genomförande av laborationer

Grundläggande datalogi - Övning 1

Problemlösning och funktioner Grundkurs i programmering med Python

TDP002 - Imperativ programmering

C++ - En introduktion

Sammanfattning. Listor. List-manipulering. Matris. /home/lindahlm/activity-phd/teaching/11dd1310/exercise3/exercise3.py September 13, 20111

TDP002 - Imperativ programmering

Introduktion till programmering SMD180. Föreläsning 3: Funktioner

729G74 IT och programmering, grundkurs. Tema 3. Föreläsning 2 Jody Foo,

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.

TDP002 Imperativ programmering

Uppgifter teknik HT17 (uppdaterad v. 40)

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.

Föreläsning 4 Programmeringsteknik DD1310. Felhantering. Syntax. try och except är reserverade ord som används för hantering av exekverings fel.

TDIU01 - Programmering i C++, grundkurs

Funktionens deklaration

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Exempelduggan. Luffarschack. Koda spel

Kurslitteraturen. C-nivå Villkorssatser [kap 8] if & elif & else and & or Loopar [kap 9] for

Repetition i Python 3. Exemplen fac. Exemplen fac motivering. Exemplen fac i Python

TDP002 - Imperativ programmering

Introduktion till programmering SMD180. Föreläsning 9: Tupler

Användarhandledning Version 1.2

Föreläsning 18 Filer och avbildningar

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt

Introduktion till programmering SMD180. Föreläsning 2: Variabler, uttryck och satser

TDDE44 Programmering, grundkurs

Pythons standardbibliotek

Språket Python - Del 1 Grundkurs i programmering med Python

Programmering I Tobias Wrigstad fredag, 2009 augusti 28

Selektion och iteration

Introduktion till programmering D0009E. Föreläsning 9: Tupler och dictionaries

TDP002 - Imperativ programmering

Tentamen i Introduktion till programmering

Imperativ och Funktionell Programmering i Python #TDDD73. Fredrik Heintz,

TDP002 - Imperativ programmering

Fly me to the moon. Laboration om relationer, TDDC75 Diskreta strukturer. Mikael Asplund. 5 september 2017

Deklarativ programmering

Skolan för Datavetenskap och kommunikation PROGRAMMERINGSTEKNIK FÖRELÄSNING 15

Metoder. Inledande programmering med C# (1DV402)

Labora&on 2 Funk&oner, if och loop övningar/uppgi:er

Övningsuppgifter kapitel 8

Föreläsning 2 Programmeringsteknik och C DD1316

Översikt. Varför lära sig detta? Motivering Syntax och semantik Imperativa språkets byggstenar och Python. PL-boken Kap 1 (repetition):

729G04 Programmering och diskret matematik. Python 3: Loopar

Planering Programmering grundkurs HI1024 HT 2014

Några inbyggda funktioner (med resultat!) Introduktion till programmering D0009E. Föreläsning 4: Villkor och rekursion. Modulus-operatorn.

Föreläsning 5 Programmeringsteknik DD1310. Modulen doctest. Exempel. Doctest Dictionary Filhantering

Skolan för Datavetenskap och kommunikation PROGRAMMERINGSTEKNIK FÖRELÄSNING 18

Idag: Centrerad utskrift. Granskning. DD1311 Programmeringsteknik med PBL. Granskning Felhantering GUI. Föreläsning 15.

Strängar. TDDD64 Programmering i Python Föreläsning 4. Peter Dalenius Institutionen för datavetenskap

729G04 Programmering och diskret matematik. Föreläsning 4

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning

Datalogi för E Övning 3

Erfarenheter från labben

729G04 Programmering och diskret matematik. Föreläsning 7

Imperativ programmering. Föreläsning 2

TDDC76 - Programmering och Datastrukturer

Imperativ programmering. Föreläsning 3

Klasser och objekt, referenser Grundkurs i programmering med Python

Ordlistor, filhantering och ut på webben. Linda Mannila

Introduktion till programmering SMD180. Föreläsning 4: Villkor och rekursion

Introduktion till programmering D0009E. Föreläsning 5: Fruktbara funktioner

Använda Python Laboration 1 GruDat, DD1344

Grundläggande Datalogi

Listor. TDDD73 Funktionell och imperativ programmering i Python Föreläsning 7. Peter Dalenius Institutionen för datavetenskap

TDDC77 Objektorienterad Programmering

Tutorial: Python på 90 minuter

Agenda. Arrayer deklaration, åtkomst Makron Flerdimensionella arrayer Initiering Strängar Funktioner och arrayer. Övningar nu och då

Introduktion till programmering SMD180. Föreläsning 5: Fruktbara funktioner

GPT föreläsning 8. Förra veckan: Man kan ta tiden på en sorterad teckensträng Förra gången: Problemlösning på lägre nivå kan sortera funktioner

Programmering C: Tentamen of 5 Prioritet och associativitet hos operatorerna i C De viktigaste operatorerna: Prioritet Kategori Operator

Funktioner. TDDD73 Funktionell och imperativ programmering i Python Föreläsning 8. Peter Dalenius Institutionen för datavetenskap

Den klassiska programmodellen. Introduktion till programmering D0009E. Föreläsning 11: Filer och undantag. Filsystem. Interaktiva program.

Föreläsning 6 Programmeringsteknik och Matlab DD1312

Övning 6. Ali Tofigh 24 Oktober, 2006

Omprov 11/11. på förmiddagen.

Föreläsningsanteckningar, Introduktion till datavetenskap HT S4 Datastrukturer. Tobias Wrigstad

Kodexempel från Programmering 2 Tobias Wrigstad, Ph.D.

Tentamen Grundläggande programmering

Laboration 6 Formulär och stränghantering övningar/uppgifter

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6

Planering av ett större program, del 2 - for och listor. Linda Mannila

729G74 IT och programmering, grundkurs. Tema 3. Föreläsning 1 Jody Foo,

TDP002 Imperativ programmering. Laborationsmaterial emacs python-mode

Laboration: Whitebox- och blackboxtesting

Mer grafik. Jan Erik Moström

Föreläsning 10 Datalogi 1 DA2001. Utskrift på skärmen. Syntax. print( Hej ) Hur är det? Hej. print( Hej,end= ) print( Hur är det? ) HejHur är det?

Mer till P-uppgiften: Dokumentation. Nyheter. Algoritm för sökning. Mer hjälp. DD1311 Programmeringsteknik med PBL

Datalogi, grundkurs 1

Java, klasser, objekt (Skansholm: Kapitel 2)

v. 42 Python HT17 En introduktion Oscar Bergqvist

Funktionell programmering DD1361

Att förstå hur man konstruerar modulära program Att kunna skapa nya funktioner Att förstå hur data skickas mellan funktioner

Planering Programmering grundkurs HI1024 HT TIDAA

Multipel tilldelning. Introduktion till programmering D0009E. Föreläsning 6: Iteration. while-satsen. Kom ihåg. Snurror kontra rekursion

Transkript:

TDP002 - Imperativ programmering Underprogram Pontus Haglund Institutionen för datavetenskap Anpassatt från material ursprungligen av: Eric Elfving

1 Underprogram Parametrar Returvärden Räckvidd och skuggning 2 Annat kul Tabeller Set Comprehensions

1 Underprogram Parametrar Returvärden Räckvidd och skuggning 2 Annat kul Tabeller Set Comprehensions

3 / 21 Underprogram Ibland vill man återanvända kod Man skulle kunna kopiera och klistra in... MEN Det blir jobbigt att läsa Du får problem om det är något fel i koden du kopierat Därför finns underprogram, ett bra sätt att samla satser som hör bra ihop.

4 / 21 Funktioner def say_hi(): print('hi') >>> say_hi() Hi I python finns en typ av underprogram, funktioner. Deklareras med def. Indentering bestämmer var funktionen slutar.

5 / 21 Funktioner Parametrar def say_hi(name): print('hi', name) >>> say_hi('kalle') Hi Kalle Med hjälp av parametrar kan man göra sina funktioner mer generella så att de fungerar för fler fall.

6 / 21 Funktioner Returvärden def mult(a,b): return a*b >>> mult(4,5) 20 Funktioner kan returnera värden till den som anropar dem. Utan return kommer funktionen ge tillbaka värdet None

7 / 21 Funktioner help-funktionen def mult(a,b): """Denna kommentar beskriver funktionen på ett bra sätt, t.ex. vad den gör och vilka parametrar den tar emot """ return a*b >>> help(mult)... Eftersom man inte anger typer på parametrar eller returvärden har bör man beskriva det noggrant. Om man gör det med en sträng precis under funktionshuvudet går det att läsa med help-funktionen. Vi kräver att ni gör det för alla icke-triviala (och helst alla) funktioner ni skapar.

8 / 21 Funktioner Parametrar Funktioner kan anropas med antingen positionsargument eller namngivna parametrar Man kan kombinera, men bara i rätt ordning. def fun(a,b,c): pass Anrop a b c fun(4,2,5) 4 2 5 fun(b=2, c=5, a=6) 6 2 5 fun(2, c=3, b=5) 2 5 3 fun(b=2, 3, a=5) SynaxError: Non-keyword arg after keyword arg

9 / 21 Funktioner Defaultargument Underprogram kan ha defaultargument (skönsvärden) def print_stars(n): for i in range(n): print('*', end='') print() >>> print_stars(20) ******************** def print_stars(n=30): for i in range(n): print('*', end='') print() >>> print_stars(20) ******************** >>> print_stars() ******************************

10 / 21 Funktioner Defaultargument Om man vill ha defaultargument måste de komma i slutet av parameterlistan: def fun(a, b=4, c=2): return a+b+c def fun(a, b=4, c): return a+b+c SyntaxError: non-default argument follows default argument Detta för att interpretatorn annars får det svårt att veta om vi vill ha defaultvärdet eller om det var nästa parameter vi menade.

11 / 21 Underprogram Defaultargument Vi har redan använt funktioner med defaultargument: print([object,...], *, sep=' ', end='\n', file=sys.stdout) open(file, mode='r', buffering= 1, encoding=none, errors=none, newline=none, closefd=true)

12 / 21 Underprogram Defaultargument Defaultargument evalueras (beräknas) en gång, vid funktionsdefinitionen (när den skapas). def f(val, lst=[]): lst.append(val) return lst >>> f(1) [1] >>> f(2) [1, 2] >>> f(3) [1, 2, 3] def f(val, lst=none): if lst is None: lst = [] lst.append(val) return lst >>> f(1) [1] >>> f(2) [2] >>> f(3) [3]

13 / 21 Underprogram Returvärden Python har stöd för flera returvärden! def f(): return 1,2,3 Anrop a b c a = f() (1, 2, 3) - - a, b, c = f() 1 2 3 a, *b = f() 1 (2, 3) - a,b = f() ValueError: too many values to unpack (expected 2) Under huven skapas en tupel vid return och packas upp vid tilldelningen.

14 / 21 Underprogram Räckvidd och skuggning Variabler som skapas i en funktion finns endast inne i den funktionen. Om namnet redan är taget skapas en lokal variabel. >>> a=4 >>> def scope(b):... a=b... print(a)... >>> scope(5) 5 >>> a 4

15 / 21 Underprogram Räckvidd och skuggning Man kan dock använda sig av namn som finns utanför. >>> a=4 >>> def scope(b):... print(a)... >>> scope(5) 4 Här används globala variabler! Det är inte oftast inte rekommenderat, som grundregel ska allt som krävs i funktionen skickas som parametrar!

1 Underprogram Parametrar Returvärden Räckvidd och skuggning 2 Annat kul Tabeller Set Comprehensions

17 / 21 Mer om tabeller Består av nyckel-värde assiciationer Nycklarna måste vara hashbara (oförändliga) Funktionerna keys och values tar fram nycklarna respektive värdena Ordningen är inte säker >>> tabell = {} >>> tabell['namn'] = 'Kalle' >>> a = tabell['hej'] Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 'hej' >>> tabell[1] = 4 >>> tabell.keys() dict_keys([1, 'namn']) >>> tabell.values() dict_values([4, 'Kalle'])

18 / 21 Tabeller Funktionen items ger tupler av (nyckel, värde) och är bra om man vill iterera över en tabell >>> for k, v in tabell.items():... print('{} => {}'.format(k,v))... 1 => 4 namn => Kalle

19 / 21 Set Ett set är en kombination av en lista och en tabell Fungerar som en tabell i att de har unika nycklar utan jämbördes ordning. Fungerar som en lista i att den endast har värden. Kan ses som en tabell med endast nycklar. Innehållet kan därför inte ändras eller indexeras. har även matematiska operationer för mängdteori >>> set('aabcc') {'a', 'b', 'c'} >>> a = set('abc') >>> b = set('abde') >>> a.union(b) {'a', 'b'} >>> a.symmetric_difference(b) {'c', 'e', 'd'}

20 / 21 Comprehensions Antag att vi vill skapa följande lista: [0, 2, 4, 6, 8, 10, 12, 14, 16, 18] Som vanligt finns det många lösningar: range: lst = list(range(0,20,2)) Lite problemlösning med en loop: lst = [] for x in range(20): if x % 2 == 0: list.append(x) Python har även vad som kallas list comprehensions: res = [x for x in range(20) if x % 2 == 0]

21 / 21 Comprehensions I sin lättaste form består comprehensions av ett uttryck och en loop: >>> [x*2 for x in range(5)] [0, 2, 4, 6, 8] Man kan även generera annat än just listor: >>> names = ['Kalle', 'Moa'] >>> {name: 0 for name in names} {'Kalle': 0, 'Moa': 0}

www.liu.se