Problemlösning och funktioner Grundkurs i programmering med Python

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

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

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

Föreläsning 12. Söndra och härska

Funktioner. Linda Mannila

Sätt att skriva ut binärträd

TDP002 - Imperativ programmering

Övningsuppgifter kapitel 8

Översikt. Stegvis förfining. Stegvis förfining. Dekomposition. Algoritmer. Metod för att skapa ett program från ett analyserat problem

Objektorienterad programmering Föreläsning 10. Copyright Mahmud Al Hakim Sorteringsalgoritmer

Klasser och objekt, referenser Grundkurs i programmering med Python

Föreläsning 3 Programmeringsteknik och C DD1316. Innehåll i listor. Uppdateringsoperatorer. +,* och listor. Listor. Indexering

TDP002 - Imperativ programmering

Föreläsning 12. Söndra och härska

Tenta (TEN3) i kursen 729G04 Programmering och diskret matematik 5 feb 2016, kl 14:00-18:00

Tentamen i Introduktion till programmering

Dagens föreläsning Programmering i Lisp. - Bindning av variabler (avs 14.6) fria variabler statisk/lexikalisk och dynamisk bindning

Erfarenheter från labben

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

Sortering. Brute-force. Sortering Ordna element enligt relation mellan nyckelvärden

Universitetet i Linköping Institutionen för datavetenskap Anders Haraldsson

Magnus Nielsen, IDA, Linköpings universitet

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

Sortering. Intern/ extern? Antaganden. Vad kan vi kräva? Rank sort. Rank sort. På en nod/ distribuerad? Jämförelsebaserad/ icke jämförelsebaserad?

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

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

Sökning och sortering. Linda Mannila

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

Konvexa höljet Laboration 6 GruDat, DD1344

Python. Vi har ofta behov av att behandla datastrukturer på ett enhetligt sätt så att vi kan göra samma sak i flera olika program.

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

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

TDIU01 - Programmering i C++, grundkurs

Föreläsning 11 Datastrukturer (DAT037)

Föreläsning 13. Dynamisk programmering

Problemlösning och algoritmer

Introduktion till algoritmer - Lektion 4 Matematikgymnasiet, Läsåret Lektion 4

Programmering = modellering

Föreläsning 3-4 Innehåll

TDDC74 Programmering, abstraktion och modellering. Tentamen

Programmering I Tobias Wrigstad fredag, 2009 augusti 28

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

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

Metoder. Inledande programmering med C# (1DV402)

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 6 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Grundläggande datalogi - Övning 1

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

MicroPython Ett textbaserad programmeringsspråk för Micro:bit

Tentamen TEN1 HI

729G04 Programmering och diskret matematik. Python 3: Loopar

Programdesign. minnesutrymme storlek på indata. DA2001 (Föreläsning 15) Datalogi 1 Hösten / 20

Föreläsning 2 Programmeringsteknik och C DD1316

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

Användarhandledning Version 1.2

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

Övning 2. (Länkade) Listor, noder

Föreläsning 1: Dekomposition, giriga algoritmer och dynamisk programmering

Hur man programmerar. TDDC66 Datorsystem och programmering Föreläsning 3. Peter Dalenius Institutionen för datavetenskap

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

Grundkurs Programmering

Funktionell programmering DD1361

Föreläsning 6 pekare och pekare tillsammans med arrayer

Bakgrund och motivation. Definition av algoritmer Beskrivningssätt Algoritmanalys. Algoritmer. Lars Larsson VT Lars Larsson Algoritmer 1

Övning 6. Ali Tofigh 24 Oktober, 2006

Grundläggande datalogi - Övning 3

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

Tommy Färnqvist, IDA, Linköpings universitet

TDDC74 Programmering: Abstraktion och modellering Tentamen, onsdag 19 oktober 2016, kl 14 18

Rekursion. Rekursiv lösningsstrategi. Algoritmkonstruktion. Exempelproblem Hitta största elementet i en sekvens v i där i 1... n.

Föreläsning 4 Programmeringsteknik och Matlab DD1312. Logiska operatorer. Listor. Listor, tupler, strängar och forslingor

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.

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

Samlingar, Gränssitt och Programkonstruktion! Förelasning 11!! TDA540 Objektorienterad Programmering!

Funktioner och programstruktur. Föreläsning 5

*Pekarvärden *Pekarvariabler & *

Alla datorprogram har en sak gemensam; alla processerar indata för att producera något slags resultat, utdata.

Funktioner och programstruktur. Föreläsning 5

Uppgifter teknik HT17 (uppdaterad v. 40)

Föreläsning 5 Innehåll

Algoritmanalys. Genomsnittligen behövs n/2 jämförelser vilket är proportionellt mot n, vi säger att vi har en O(n) algoritm.

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

Sökning och sortering

TDDE44 Programmering, grundkurs

Laboration: Whitebox- och blackboxtesting

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

DD1361 Programmeringsparadigm. Carina Edlund

TDDC74 Programmering: Abstraktion och modellering Dugga 2, , kl 17-19

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

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python TDDE24 Funktionell och imperativ programmering del 2

Några saker till och lite om snabbare sortering

TDDC74 Programmering: Abstraktion och modellering Datortenta , kl 14-18

Python vecka 41-42: Individuell programmering

Föreläsning 10. Besiktningsprotokollet

MATLAB. Python. Det finns flera andra program som liknar MATLAB. Sage, Octave, Maple och...

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

Subtyping, co- och contra-variance. Objekt-orienterad programmering och design Alex Gerdes, 2016

729G04 Programmering och diskret matematik TEN kl 8-12

Objektorienterad programmering E. Back to Basics. En annan version av printtable. Ett enkelt exempel. Föreläsning 10

v. 42 Python HT17 En introduktion Oscar Bergqvist

Transkript:

Hösten 2009

Dagens lektion Problemlösningsstrategier Repetition av funktioner Mer om funktioner 2

Problemlösningsstrategier 3

PROBLEMLÖSNINGSSTRATEGIER Strategier Det finns ett flertal olika ansatser till hur man "bäst" löser problem Bottom-up Top-down Divide and Conquer Lokal optimering Trial and error Generate and test Kritiskt tänkande Brainstorming... 4

PROBLEMLÖSNINGSSTRATEGIER Vad är en lösning? Formell beskrivning av hur man går till väga för att lösa ett problem Lösningsbeskrivningen utgår från startvillkor Den använder hela tiden väldefinierade steg Beskrivningen leder fram till ett sluttillstånd (dvs en "lösning") på ett begränsat antal steg 5

PROBLEMLÖSNINGSSTRATEGIER Vad är en lösning? En lösning som uppfyller de mer formella kraven brukar kallas algoritm Ordet algoritm härstammar från den persiska matematikern Muhammad ibn Musa al-khwarizmi Han presenterade ca 820 e.kr. en bok med systematiska lösningar till linjära och kvadratiska funktioner 6

PROBLEMLÖSNINGSSTRATEGIER Exempel på algoritm baserad på bottom-up strategi Bubble sort Vi tittar bara lokalt på värden och försöker ordna bitarna 7

PROBLEMLÖSNINGSSTRATEGIER Exempel på algoritm baserad på top-down strategi Quicksort Vi delar upp listan i två delar så att alla värden mindre än ett specifikt värde hamnar i en del och övriga i en annan del Upprepa ovanstående tills varje del-lista innehåller ett element Det är nu trivialt att sätta ihop delarna till en sorterad lista 8

PROBLEMLÖSNINGSSTRATEGIER Exempel på algoritm baserad på divide and conquer strategi Merge sort Dela listan på två delar Upprepa med varje dellista När dellistorna endast innehåller ett element sätts de ihop parvis till sorterade listor Sedan sätts de sorterade listorna ihop till längre och längre listor och till slut är hela listan sorterad 9

PROBLEMLÖSNINGSSTRATEGIER Exempel på algoritm baserad på lokal optimering Att betala tillbaks rätt växel Börja med att betala tillbaks den största möjliga valör (på mynt/sedel) Subtrahera återbetalat belopp från växeln och börja om 10

PROBLEMLÖSNINGSSTRATEGIER Exempel Skriv ett program som tar ett belopp och räknar upp en växel Utgå från att det finns sedlar/mynt i följande valörer: 1000kr, 500kr, 100kr, 50kr, 20kr, 10kr, 5kr, 1kr, 50 öre 11

Repetition av funktioner 12

REPETITION AV FUNKTIONER Att dela upp program Att dela upp program i mindre delar, funktioner är ett viktigt koncept i programmering. Viktigt när identisk kod upprepas för att få struktur och överblick Alla språk har även inbyggda funktioner 13

REPETITION AV FUNKTIONER Den svarta lådan Indata Funktion Utdata 4, 3 Beräkna 4 3 64 14

REPETITION AV FUNKTIONER Parametrar, returvärde och argument Givet noll, en eller flera parametrar utför en funktion en specifik uppgift vilket resulterar i ett returvärde. Parameter En variabel som fått sitt värde vid anropet. Returvärde Ett värde som returneras till den anropande miljön när funktionen avslutas. En funktion anropas med ett antal argument. Varje argument motsvarar en av parametrarna i funktionen. 15 Argument Värden som skickas med vid anrop av en funktion, och som tilldelas funktionens paramterar.

REPETITION AV FUNKTIONER Funktionsanrop x = foo(3, hej ) Tilldelning Argument 1 Argument 2 Funktionen foo Parameter 1 Parameter 2 Returvärde 16

REPETITION AV FUNKTIONER Skriva egna funktioner Funktionen definieras innan den används Den utgörs av funktionshuvudet med efterföljande kodblock. Funktionshuvudet anger namn på funktionen, samt vilka parametrar den har Avslutas (oftast) med att funktionen returnerar ett resultat. 17

REPETITION AV FUNKTIONER Skriva egna funktioner import sys def int_pow(param1, param2): value = 1 for i in range(param2): value = param1 return value arg1 = int(sys.argv[1]) arg2 = int(sys.argv[2]) print int_pow(arg1, arg2) 18

Mer om funktioner 19

MER OM FUNKTIONER Standardvärden Man måste ange lika många argument som det finns parametrar. Man kan dock ange ett standardvärde på en parameter Anges alla argument gäller dem Utelämnas argumentet gäller standardvärdet 20

MER OM FUNKTIONER Exempel def multiprint(text, n=5): for i in range(n): print text multiprint("python", 7) # Skriver ut "Python" 7 ggr multiprint("python") # Skriver ut "Python" 5 ggr 21

MER OM FUNKTIONER Vad är en bra funktion och vad är en dålig funktion? En funktion ska ha EN uppgift Ett tydligt och beskrivande namn Inte för många parametrar Försök enbart att ha ETT returvärde I Python kan dock flera värden returneras med en lista eller tupel Enkelt sätta upp riktlinjer - svårare i praktiken 22