Introduktion till programmering SMD180. Föreläsning 5: Fruktbara funktioner
|
|
- Filip Bengtsson
- för 7 år sedan
- Visningar:
Transkript
1 Introduktion till programmering Föreläsning 5: Fruktbara funktioner 1
2 Retur-värden Funktioner kan både orsaka en effekt och returnera ett resultat. Hittills har vi ej definierat några egna funktioner med resultat, däremot har vi ogenerat använt sådana funktioner: result = math.log( x ) print math.sin( radians ) Egna funktioner med resultat ("fruktbara funktioner") definieras med hjälp av en variant av return-satsen: def area( radius ): temp = math.pi * radius**2 return temp 2
3 return-satsen return-satsen finns alltså i två varianter: med eller utan retur-värde return return uttryck Båda varianterna avbryter aktuellt funktionsanrop. Kod som därmed aldrig kan exekvera kallas död kod: return -x print "This can never get printed" Det förra exemplet kan skrivas mer kortfattat som def area( radius ): return math.pi * radius**2 3
4 return-satsen En funktion kan innehålla flera return-satser: def absolutevalue(x): if x < 0: return -x else return x Notera att denna funktion inte innehåller någon död kod! 4
5 return-satsen En funktion som når slutet av sin kropp returnerar automatiskt None. Betrakta följande funktion: def absolutevalue(x): if x < 0: return -x elif x > 0: return x Definitionen är helt korrekt enligt Python, men antagligen inte det som programmeraren tänkt sig! >>> absolutevalue(0) None 5
6 Inkrementell programutveckling Hur bygger man större funktioner än våra enkla exempel? Genom att bara "se" lösningen framför sig? Inkrementell programutveckling är en teknik som främjar stegvist byggande och testande av program, en liten detalj i taget Som exempel ska vi försöka implementera följande matematiska formel i Python:! distance = (x2 x1 )2 + (y2 y1 )2 6
7 Steg 1 Hitta rätt syn på programmet som helhet. Ska programmet utföra en beräkning som vi vill kunna upprepa med olika indata? I så fall pratar vi om att bygga en funktion I vårt fall ska vi beräkna avståndet mellan två punkter. Låt oss kalla funktionen för distance Vad är programmets indata? Dessa blir funktionens parametrar. I vårt fall vill vi kunna köra beräkningen med olika värden på x1, y1, x2 och y2. Funktionens huvud måste alltså bli def distance( x1, y1, x2, y2 ): 7
8 Steg 1 Eftersom programmets resultat ska vara ett decimaltal kan vi bygga en grov approximation till vår funktion genom att helt enkelt returnera värdet 0.0: def distance( x1, y1, x2, y2 ): return 0.0 Denna funktion är naturligtvis inte en korrekt lösning, men vi kan redan nu testa den för att elliminera eventuella syntaxfel i funktionshuvudet Om Python accepterar koden ska vi kunna köra >>> distance( 1, 2, 4, 6 ) 0.0 8
9 Steg 2 Här gäller det att identifiera några intressanta delresultat som är enkla att beräkna. I vårt fall är differenserna x2 x1 och y2 y1 lämpliga kandidater Vi fångar dessa delresultat som lokala variabler som vi som en del av testningen skriver ut: def distance( x1, y1, x2, y2 ): dx = x2 - x1 dy = y2 - y1 print "dx is", dx print "dy is", dy return 0.0 9
10 Steg 2 Vi kan nu testköra igen: >>> distance( 1, 2, 4, 6 ) dx is 3 dy is Viktig fråga: är denna output den förväntade? Att veta vad programmet borde göra är A och O vid testning Här har vi möjlighet att elliminera typiska slarvfel som att t ex skriva x1 där vi menar x2 10
11 Steg 3 Vi identifierar ytterligare ett delresultat: summan av de tidigare delresultaten i kvadrat def distance( x1, y1, x2, y2 ): dx = x2 - x1 dy = y2 - y1 dsquared = dx*dx + dy*dy print "dsquared is", dsquared return 0.0 Observera att de tidigare testutskrifterna är borta nu då de inte längre behövs I stället verifierar vi att samma körning som tidigare visar att dsquared får det förväntade värdet (dvs 25) 11
12 Steg 4 Vi är nu mycket nära en komplett lösning, endast en ny operation behöver utföras på det senaste delresultatet: def distance( x1, y1, x2, y2 ): dx = x2 - x1 dy = y2 - y1 dsquared = dx*dx + dy*dy result = mat.sqrt( dsquared ) return result Här behövs ingen extra testutskrift, i och med att vi testar det slutliga beräkningsresultatet: >>> distance( 1, 4, 2, 6 )
13 Tekniken i ett nötskal Skapa ett körbart program redan från början, även om allt väsentligt arbete återstår att göra Använd lokala variabler för delresultat, då blir de enklare att skriva ut vid testning Definiera en uppsättning testexempel där du redan vet vad det förväntade resultatet ska bli Testa varje steg i utvecklingen innan du går vidare När allt fungerar kan koden gärna komprimeras genom att spårutskrifter och tas bort och deluttryck sätts samman till större enheter 13
14 Sammansatta uttryck Vi har: en funktion som beräknar en cirkels area givet radien en funktion som beräknar avståndet mellan 2 punkter Om vi känner till centrum (xc, yc) av en cirkel och en punkt på kanten (xp, yp) kan vi skriva: radius = distance( xc, yc, xp, yp ) result = area( radius ) Som ett sammansatt uttryck: result = area( distance(xc,yc,xp,yp) ) Hur kan vi göra denna kod lite mer generell? 14
15 Funktionsinkapsling I stället för att bara anta att indata finns i några variabler, och bara lämna resultatet i en annan variabel, kan vi kapsla in vår beräkning som en funktion: def area2( xc, yc, xp, yp ): result = area( distance(xc,yc,xp,yp) ) return result Observera att namnen xc, yc, xp, yp och result nu är helt lokala de behöver inte kännas till (och kan inte kommas åt) av någon annan del av vårt program Dataflödet in och ut ur funktionen sker i stället helt via argument och returvärde: kalle = area2(i,j,i+1,b+1) 15
16 Boolska funktioner Funktioner som returnerar sanningsvärden, oftast resultat av tester (ja/nej-frågor): def isdivisible(x, y): if x%y == 0: return True else: return False Kan skrivas mer koncist: def isdivisible(x, y): return x%y == 0 16
17 Boolska funktioner Typisk användning är i if-satser: if isdivisible(x, y): print "x is divisible by y" else: print "x is not divisible by y" Korrekt, men onödigt krånglig variant: if isdivisible(x, y) == True: print "x is divisible by y" else: print "x is not divisible by y" 17
18 Djärvt påstående Det vi sett hittills av Python räcker för att uttrycka alla beräkningar som kan utföras av en dator! (variant av Turings tes, 1936) Om detta är sant, vad hände i så fall med byggstenen repetition (kap. 1)? Svar: vi har redan smugit in den byggstenen i och med att funktioner kan anropa varandra rekursivt! En annan fråga är hur bekvämt det är att utrycka saker och ting med endast nuvarande Python-delmängd... här är vårt motiv att fortsätta kursen (trots Alan Turings tes!) Men låt oss titta lite närmare på rekursion igen... 18
19 Om rekursiva definitioner Rent circulär definition (dvs nonsens): äger (av äga) [v] modeord beskrivande företeelse eller person som äger Meningsfull rekursiv definition: fakultetsfunktionen! 0! = 1 n! = n*(n-1)! Exempel: 3! = 3*2! = 3*2*1! = 3*2*1*0! = 3*2*1*1 = 6 Så varför är detta inte nonsens? Svar: för att det finns ett basfall som inte är cirkulärt! 19
20 Fakultetsfunktionen i Python I stället för n! srkiver vi i Python factorial(n) def factorial(n): if n==0: return 1 else: recurse = factorial(n-1) result = n * recurse return result Nyhet: en rekursiv funktion som returnerar ett resultat Basfallet identifieras genom att vi testar argumentet n 20
21 Programflödet för factorial(3) Eftersom n (dvs 3) inte är 0 tar vi else-grenen och beräknar factorial(n-1), dvs factorial(2) Eftersom n (dvs 2) inte är 0 tar vi else-grenen och beräknar factorial(n-1), dvs factorial(1) Eftersom n (dvs 1) inte är 0 tar vi else-grenen och beräknar factorial(n-1), dvs factorial(0) Eftersom n (dvs 0) är 0 tar vi basfallet och returnerar 1 omedelbart Variabeln recurse (som fått värdet 1) multipliceras med n (dvs 1) och resultatet 1 returneras Variabeln recurse (som fått värdet 1) multipliceras med n (dvs 2) och resultatet 2 returneras Variabeln recurse (som fått värdet 2) multipliceras med n (dvs 3) och resultatet 6 returneras 21
22 factorial(3) som stackdiagram -toplevel6 factorial n 3 recurse 2 result 6 2 factorial n 2 recurse 1 result 2 1 factorial n 1 recurse 1 result 1 1 factorial n 0
23 I mer kompakt form def factorial(n): if n==0: return 1 else: return n * factorial(n-1) Denna variant är enklare i betydelsen mer koncis, men gör å andra sidan programflödet något svårare att följa Utmaningen är att kunna släppa fokus på programflödet, och börja se funktionsanrop och deras resultat som helt enkelt samma sak att "våga språnget" 23
24 Den s k Fibonacci-funktionen def fibonacci(n): if n==0 or n==1: return 1 else: return fibonacci(n-1) + fibonacci(n-2) Försök följa programflödet för t ex fibonacci(10), och huvudet börjar snurra... Men om vi i stället vågar språnget kan vi se ett mönster: n: fibonacci(n): Varje Fibonacci-tal är summan av de två föregående...! 24
Introduktion till programmering D0009E. Föreläsning 5: Fruktbara funktioner
Introduktion till programmering D0009E Föreläsning 5: Fruktbara funktioner 1 Retur-värden Funktioner kan både orsaka en effekt och returnera ett resultat. Hittills har vi ej definierat några egna funktioner
Läs merIntroduktion till programmering SMD180. Föreläsning 4: Villkor och rekursion
Introduktion till programmering Föreläsning 4: Villkor och rekursion 1 1 Några inbyggda funktioner (med resultat!) Konverterar mellan de grundläggande typerna: >>> int("32") 32 >>> int(3.999) 3 >>> float(32)
Läs merNågra inbyggda funktioner (med resultat!) Introduktion till programmering D0009E. Föreläsning 4: Villkor och rekursion. Modulus-operatorn.
Några inbyggda funktioner (med resultat!) Introduktion till programmering D0009E Föreläsning 4: Villkor och rekursion Konverterar mellan de grundläggande typerna: >>> int("") >>> int(.999) >>> float().0
Läs merMultipel tilldelning. Introduktion till programmering D0009E. Föreläsning 6: Iteration. while-satsen. Kom ihåg. Snurror kontra rekursion
Introduktion till programmering D0009E Föreläsning 6: Iteration Multipel tilldelning Helt ok att tilldela en variabel flera gånger: bruce = bruce, bruce = 7 bruce Output: 7 Som tillståndsdiagram: bruce
Läs merBEGREPP HITTILLS FÖRELÄSNING 2 SAMMANSATTA UTTRYCK - SCHEME DATORSPRÅK
FÖRELÄSNING 2 Viss repetition av Fö1 Rekursivt fallanalys Rekursiva beskrivningar BEGREPP HITTILLS Konstant, Namn, Procedur/Funktion, LAMBDA, Parameter, Argument, Kropp, Villkor/Rekursion, Funktionsanrop,
Läs merFöreläsning 2 Programmeringsteknik och C DD1316
Föreläsning 2 Programmeringsteknik och C DD1316 Föreläsning 2 Programmeringsteknik och C Datatyp Aritmetiska operatorer Omvandling av typer Reserverade ord Mikael Djurfeldt Logiska operatorer
Läs merFÖRELÄSNING 2, TDDC74, VT2018 BEGREPP PROBLEMLÖSNING MED HJÄLP AV FALLANALYS PROBLEMLÖSNING MED HJÄLP AV REKURSION
FÖRELÄSNING 2, TDDC74, VT2018 Begrepp och definitioner (delvis från föreläsning 1) Fallanalys som problemlösningsmetod Rekursivt fallanalys Rekursiva beskrivningar och processer de kan skapa Rekursiva
Läs merFöreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt
Föreläsning 2 Programmeringsteknik och C DD1316 Mikael Djurfeldt Föreläsning 2 Programmeringsteknik och C Python introduktion Utskrift Inläsning Variabler Datatyp Aritmetiska operatorer Omvandling
Läs merIntroduktion till programmering SMD180. Föreläsning 9: Tupler
Introduktion till programmering Föreläsning 9: Tupler 1 1 Sammansatta datatyper Strängar Sekvenser av tecken Icke muterbara Syntax: "abcde" Listor Sekvenser av vad som helst Muterbara Syntax: [1, 2, 3]
Läs merImperativ och Funktionell Programmering i Python #TDDD73. Fredrik Heintz,
Imperativ och Funktionell Programmering i Python #TDDD73 Fredrik Heintz, IDA fredrik.heintz@liu.se @FredrikHeintz Översikt Repetition: Satser och uttryck Variabler, datatyper, synlighet och skuggning Upprepning,
Läs merDD1361 Programmeringsparadigm. Carina Edlund
DD1361 Programmeringsparadigm Carina Edlund carina@nada.kth.se Funktionell programmering Grundidéen med funktionell programmering är att härma matematiken och dess funktionsbegrepp. Matematiskt funktionsbegrepp
Läs merSpråket Python - Del 1 Grundkurs i programmering med Python
Hösten 2009 Dagens lektion Ett programmeringsspråks byggstenar Några inbyggda datatyper Styra instruktionsflödet Modulen sys 2 Ett programmeringsspråks byggstenar 3 ETT PROGRAMMERINGSSPRÅKS BYGGSTENAR
Läs merTentamen i Introduktion till programmering
Tentamen i Introduktion till programmering Kurskod: Skrivtid: D0009E 09:00-13:00 (4 timmar) Totalt antal uppgifter: 7 Totalt antal poäng: 38 Tentamensdatum: 2014-05-17 Jourhavande lärare: Tillåtna hjälpmedel:
Läs merGrundläggande datalogi - Övning 1
Grundläggande datalogi - Övning 1 Björn Terelius October 30, 2008 Python är ett tolkat språk som kan köras interaktivt. tcs-ray:~/grudat08>python >>> 11+3*4 23 >>> a = 15 >>> b=a >>> print "a =", a, "b
Läs merIntroduktion till programmering D0009E. Föreläsning 9: Tupler och dictionaries
D 0 0 0 9 E Introduktion till programmering D0009E Föreläsning 9: Tupler och dictionaries 1 D 0 0 0 9 E Sammansatta datatyper Strängar Sekvenser av tecken Icke muterbara Syntax: "abcde" Listor Sekvenser
Läs merFöreläsning 7 Innehåll. Rekursion. Rekursiv problemlösning. Rekursiv problemlösning Mönster för rekursiv algoritm. Rekursion. Rekursivt tänkande:
Föreläsning 7 Innehåll Rekursion Rekursivt tänkande: Hur många år fyller du? Ett år mer än förra året! Rekursion Rekursiv problemlösning Binärsökning Generiska metoder Rekursiv problemlösning: Dela upp
Läs merKurslitteraturen. C-nivå Villkorssatser [kap 8] if & elif & else and & or Loopar [kap 9] for
Inför provet Provet skrivs för hand och är uppdelad i två delar. Den första delen är på E-nivå och den andra delen är på C- och A-nivå. För att det ska bli enklare för er att träna inför provet så har
Läs merIntroduktion till programmering SMD180. Föreläsning 3: Funktioner
Introduktion till programmering Föreläsning 3: Funktioner 1 1 Mer matematik Vi har sett matematiska uttryck med variabler, värden och operatorer, ex: 17+n pi/2 hours*60+minutes Kan man även skriva uttryck
Läs merLaboration: Whitebox- och blackboxtesting
Tilda11 höstterminen 2011 Laboration: Whitebox- och blackboxtesting Mål med laborationen Du ska lära dig begreppen white-box testing och black-box testing Du ska öva dig på att konstruera testfall Du ska
Läs merIntroduktion till programmering SMD180. Föreläsning 12: Klasser och objekt
Introduktion till programmering Föreläsning 12: Klasser och objekt 1 1 Vad är en punkt? Matematikerns definition: en position i ett (tvådimensionellt) plan, karaktäriserad av en x-koordinat och en y-koordinat.
Läs merProcedurer och villkor. Rekursiva procedurer. Exempel: n-fakultet
Procedurer och villkor Rekursiva procedurer (define lessorequal (lambda (x y) (or (< x y) (= x y)))) (define between (lambda (x y z) (and (lessorequal x y) (lessorequal y z)))) > (between 3 4 5) #t > (between
Läs merProcedurer och villkor
Procedurer och villkor (define lessorequal (lambda (x y) (or (< x y) (= x y)))) (define between (lambda (x y z) (and (lessorequal x y) (lessorequal y z)))) > (between 3 4 5) #t > (between 3 2 5) #f DA2001
Läs mer729G04 Programmering och diskret matematik. Python 2: Villkorssatser, sanningsvärden och logiska operatorer
729G04 Programmering och diskret matematik Python 2: Villkorssatser, sanningsvärden och logiska operatorer Föreläsningsöversikt Vad händer när vi kör vår pythonkod? Programmerare Villkorssatser Jämförelser
Läs merProgrammering I Tobias Wrigstad fredag, 2009 augusti 28
Programmering I Tobias Wrigstad tobias@dsv.su.se Vad är programmering? Lågnivåspråk och högnivåspråk Kompilering och interpretering Variabler Notation för flödesschema (flow chart) Kontrollstrukturer (conditionals,
Läs merIntroduktion till programmering SMD180. Föreläsning 8: Listor
Introduktion till programmering Föreläsning 8: Listor 1 1 Listor = generaliserade strängar Strängar = sekvenser av tecken Listor = sekvenser av vad som helst Exempel: [10, 20, 30, 40] # en lista av heltal
Läs merFöreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk
Föreläsning 2 steknik DD1310 Python introduktion Variabler Datatyper Aritmetiska operatorer av typer Reserverade ord logiska operatorer If-sats kommentarer betyder att instruera en dator Ett program är
Läs merInom datalogin brukar man använda träd för att beskriva vissa typer av problem. Om man begränsar sig till träd där varje nod förgrenar sig högst två
Binära träd Inom datalogin brukar man använda träd för att beskriva vissa typer av problem. Om man begränsar sig till träd där varje nod förgrenar sig högst två gånger, talar man om binära träd. Sådana
Läs merAlgoritmer och datastrukturer H I HÅKAN S T R Ö M B E R G N I C K L A S B R A N D E F E L T
Algoritmer och datastrukturer H I 1 0 2 9 HÅKAN S T R Ö M B E R G N I C K L A S B R A N D E F E L T Föreläsning 1 Inledande om algoritmer Rekursion Stacken vid rekursion Rekursion iteration Möjliga vägar
Läs merFö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?
Föreläsning 10 Datalogi 1 DA2001 python introduktion Variabler Datatyp Aritmetiska operatorer av typer Reserverade ord logiska operatorer If-sats kommentarer på skärmen print( Hej ) print( Hur är det?
Läs merUppgifter teknik HT17 (uppdaterad v. 40)
Uppgifter teknik HT17 (uppdaterad v. 40) Uppgifterna bedöms inte, de är bara till för att öva. Samarbeta gärna med andra! Du behöver inte skriva ner svaren, men se till att du förstår lösningarna! 1. Det
Läs merIntroduktion till algoritmer - Lektion 4 Matematikgymnasiet, Läsåret 2014-2015. Lektion 4
Introduktion till algoritmer - Lektion 4 Matematikgymnasiet, Läsåret 014-015 Denna lektion ska vi studera rekursion. Lektion 4 Principen om induktion Principen om induktion är ett vanligt sätt att bevisa
Läs merAlla datorprogram har en sak gemensam; alla processerar indata för att producera något slags resultat, utdata.
Att förstå variabler Alla datorprogram har en sak gemensam; alla processerar indata för att producera något slags resultat, utdata. Vad är en variabel? En variabel är en plats att lagra information. Precis
Läs merSätt att skriva ut binärträd
Tilpro Övning 3 På programmet idag: Genomgång av Hemtalet samt rättning Begreppet Stabil sortering Hur man kodar olika sorteringsvilkor Inkapsling av data Länkade listor Användning av stackar och köer
Läs merProblemlösning och funktioner Grundkurs i programmering med Python
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
Läs merRekursion. Att tänka rekursivt Att programmera rekursivt i Java Exempel. Programmeringsmetodik -Java 254
Rekursion Rekursion är en grundläggande programmeringsteknik M h a rekursion kan vissa problem lösas på ett mycket elegant sätt Avsnitt 11 i kursboken: Att tänka rekursivt Att programmera rekursivt i Java
Läs merSpråket Python - Del 2 Grundkurs i programmering med Python
Hösten 2009 Dagens lektion Funktioner Filhantering Felhantering 2 Funktioner 3 FUNKTIONER Att dela upp program Att dela upp program i mindre delar, funktioner är ett viktigt koncept i programmering. Viktigt
Läs merFÖRELÄSNING 1 PERSONAL TDDC74 PROGRAMMERING: ABSTRAKTION OCH MODELLERING VT 2017 SYFTE EXAMINATION ORGANISATION
TDDC74 PROGRAMMERING: ABSTRAKTION OCH MODELLERING VT 2017 Jalal Maleki Institutionen för datavetenskap Linköpings universitet jalal.maleki@liu.se FÖRELÄSNING 1 Introduktion till kursen Schemespråkets grunder
Läs merMetodanrop - primitiva typer. Föreläsning 4. Metodanrop - referenstyper. Metodanrop - primitiva typer
Föreläsning 4 Metodanrop switch-slingor Rekursiva metoder Repetition av de första föreläsningarna Inför seminariet Nästa föreläsning Metodanrop - primitiva typer Vid metodanrop kopieras värdet av en variabel
Läs merFöreläsning 4 Programmeringsteknik DD1310. Felhantering. Syntax. try och except är reserverade ord som används för hantering av exekverings fel.
Föreläsning 4 meringsteknik DD1310 Definiering av egna funktioner Parametrar Lokala och globala variabler Retursats None try och except är reserverade ord som används för hantering av exekverings fel.
Läs merFöreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser
Föreläsning 5-6 Innehåll Exempel på program med objekt Skapa och använda objekt Skriva egna klasser public class DrawSquare { public static void main(string[] args) { SimpleWindow w = new SimpleWindow(600,
Läs merFöreläsning 2 Programmeringsteknik och C DD1316. Programmering. Programspråk
Föreläsning 2 steknik och C DD1316 python introduktion Variabler Datatyp Aritmetiska operatorer av typer Reserverade ord logiska operatorer If-sats kommentarer betyder att instruera en dator Ett program
Läs merBakgrund. Bakgrund. Bakgrund. Håkan Jonsson Institutionen för systemteknik Luleå tekniska universitet Luleå, Sverige
Är varje påstående som kan formuleras matematiskt*) alltid antingen sant eller falskt? *) Inom Institutionen för systemteknik Luleå tekniska universitet Luleå, Sverige Exempel: 12 = 13 nej, falskt n! >
Läs merFöreläsning 3 Programmeringsteknik och Matlab DD1315. Importering av moduler. randrange
Föreläsning 3 Programmeringsteknik och Matlab DD1315 moduler, Styrstrukturer (if, if-elif,if-else) Slingor () Importering av moduler Det finns en hel del funktioner man kan använda genom att era dem från
Läs merFöreläsning 5-6 Innehåll
Föreläsning 5-6 Innehåll Skapa och använda objekt Skriva egna klasser Datavetenskap (LTH) Föreläsning 5-6 HT 2017 1 / 32 Exempel på program med objekt public class DrawSquare { public static void main(string[]
Läs merInstruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python TDDE24 Funktionell och imperativ programmering del 2
Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python TDDE24 Funktionell och imperativ programmering del 2 Hjälpmedel Följande hjälpmedel är tillåtna: Exakt en valfri bok,
Läs merIntroduktion till programmering SMD180. Föreläsning 2: Variabler, uttryck och satser
Introduktion till programmering Föreläsning 2: Variabler, uttryck och satser 1 1 Värden De grundläggande saker som en dator manipulerar resultaten av beräkningar kallas värden Värden vi stött på: 2 och
Läs merHur man programmerar. TDDC66 Datorsystem och programmering Föreläsning 3. Peter Dalenius Institutionen för datavetenskap
Hur man programmerar TDDC66 Datorsystem och programmering Föreläsning 3 Peter Dalenius Institutionen för datavetenskap 2014-09-05 Översikt Problemlösning: Hur ska man tänka? Datatyper Listor (forsätter
Läs merSCB :-0. Uno Holmer, Chalmers, höger 2 Ex. Induktiv definition av lista. // Basfall
Rekursiva funktioner Föreläsning 10 (Weiss kap. 7) Induktion och rekursion Rekursiva funktioner och processer Weiss 7.1-3 (7.4, 7.5.3 utgår) Fibonaccital (7.3.4) Exempel: Balansering av mobil (kod se lab
Läs merJavaScript del 3 If, Operatorer och Confirm
JavaScript del 3 If, Operatorer och Confirm Under förra uppgiften så kollade vi på hur användaren kan ge oss information via promt(), vi använde den informationen både för att skriva ut den och för att
Läs merFöreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk
Föreläsning 2 steknik DD1310 python introduktion Variabler Datatyp Aritmetiska operatorer av typer Reserverade ord logiska operatorer If-sats kommentarer funktioner betyder att instruera en dator Ett program
Läs merFöreläsning 5 Mer om funktioner, villkor
Föreläsning 5 Mer om funktioner, villkor Grundkurs i programmering Jan Lönnberg Institutionen för datateknik -universitetets högskola för teknikvetenskaper 15.9.2011 Varför? Det finns sammanhang där ett
Läs merFöreläsning 9 Innehåll. Söndra och härska. Fibonaccitalen. Söndra och härska. Divide and conquer teknik för att konstruera rekursiva algoritmer.
Föreläsning 9 Innehåll Mer om rekursion söndra-och-härska-algoritmer dynamisk programmering backtracking Orientering om versionshantering med git Söndra och härska Divide and conquer teknik för att konstruera
Läs merFöreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod
Föreläsning 3-4 Innehåll Diskutera Vad gör programmet programmet? Föreslå vilka satser vi kan bryta ut till en egen metod. Skriva egna metoder Logiska uttryck Algoritm för att beräkna min och max Vektorer
Läs merTekniska Högskolan i Linköping Institutionen för Datavetenskap (IDA) Torbjörn Jonsson Plot och rekursion
Tekniska Högskolan i Linköping Institutionen för Datavetenskap (IDA) Torbjörn Jonsson 2010-11-19 Plot och rekursion I denna laboration skall du lära dig lite om hur plot i MatLab fungerar samt använda
Läs merTDDC74 PROGRAMMERING: ABSTRAKTION OCH MODELLERING VT 2017
FÖRELÄSNING 1 TDDC74 PROGRAMMERING: ABSTRAKTION OCH MODELLERING VT 2017 Introduktion till kursen Schemespråkets grunder Enkla exempel Jalal Maleki Institutionen för datavetenskap Linköpings universitet
Läs merVariabler och konstanter
Variabler och konstanter Deklareras automatisk när man stoppar in data i dem. X = 7 Y = A Z = Kalle Definieras av att de har: ett namn (X) en datatyp (Integer) ett värde (t.ex. 7) Lagras i datorns minne!
Läs merRekursion och induktion för algoritmkonstruktion
Informationsteknologi Tom Smedsaas, Malin Källén 20 mars 2016 Rekursion och induktion för algoritmkonstruktion Att lösa ett problem rekursivt innebär att man uttrycker lösningen i termer av samma typ av
Läs mer729G74 IT och programmering, grundkurs. Tema 2, Föreläsning 2 Jody Foo,
729G74 IT och programmering, grundkurs Tema 2, Föreläsning 2 Jody Foo, jody.foo@liu.se Föreläsningsöversikt Kursinfo: återkoppling Muddy Cards och kompletteringar Diskret matematik Python: Programmering
Läs merFöreläsning 3-4 Innehåll
Föreläsning 3-4 Innehåll Skriva egna metoder Logiska uttryck Algoritm för att beräkna min och max Vektorer Datavetenskap (LTH) Föreläsning 3-4 HT 2017 1 / 36 Diskutera Vad gör programmet programmet? Föreslå
Läs merVåra enkla funktioner eller procedurer
Föreläsning 3 Våra enkla funktioner eller procedurer Programmönster 1. Repetition 2. Högre-ordningens procedurer/programmönster - Procedurer som argument - Procedurer som returnerade värden 3. Scope och
Läs merLaboration 3 HI1024, Programmering, grundkurs, 8.0 hp
Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp Dataingenjörsprogrammet, elektroingenjörsprogrammet och medicinsk teknik KTH Skolan för Teknik och Hälsa Redovisning: Se Kurs-PM om hur redovisningen
Läs merPython. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.
är, som Scheme, ett interpreterat språk men det finns kompilatorer för. När man interpreterar ett språk tillhandahåller man en interpretator som läser sats för sats och försöker tolka den. När man kompilerar
Läs merIntroduktion till programmering D0009E. Föreläsning 1: Programmets väg
Introduktion till programmering D0009E Föreläsning 1: Programmets väg 1 Vad är en dator? En maskin vars beteende styrs av de innehållet (bitmönster) som finns lagrade i datorns minne (inte helt olikt förra
Läs merFöreläsning 9 Innehåll. Söndra och härska. Fibonaccitalen. Söndra och härska. Divide and conquer teknik för att konstruera rekursiva algoritmer.
Föreläsning 9 Innehåll Mer om rekursion söndra-och-härska-algoritmer dynamisk programmering backtracking Orientering om versionshantering med git Söndra och härska Divide and conquer teknik för att konstruera
Läs merPython. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.
är, som Scheme, ett interpreterat språk men det finns kompilatorer för. När man interpreterar ett språk tillhandahåller man en interpretator som läser sats för sats och försöker tolka den. När man kompilerar
Läs merNumeriska Metoder och Grundläggande Programmering för P1, VT2014
Numeriska Metoder och Grundläggande Programmering för P1, VT2014 Föreläsning 2: Styrstrukturer & Programmeringsstrategi (Kap. 3 4 i MATLAB Programming for Engineers, S. Chapman) January 21, 2014 Innehåll:
Läs merFöreläsning 13. Dynamisk programmering
Föreläsning 13 Dynamisk programmering Föreläsning 13 Dynamisk programmering Fibonacci Myntväxling Floyd-Warshall Kappsäck Handelsresandeproblemet Uppgifter Dynamisk programmering Dynamisk programmering
Läs merRepetition i Python 3. Exemplen fac. Exemplen fac motivering. Exemplen fac i Python
Repetition i Python 3 Exemplen fac Orginalet I Scheme använde vi rekursion för all slags repetition. Efterom Scheme är ett funktionellt språk återsänder alla språkkonstruktioner ett värde men i Python
Läs merFöreläsning 13. Rekursion
Föreläsning 13 Rekursion Rekursion En rekursiv metod är en metod som anropar sig själv. Rekursion används som alternativ till iteration. Det finns programspråk som stödjer - enbart iteration (FORTRAN)
Läs merBankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.
Bankkonto - övning Övningar att göra efter lärardemostration. Filen bankkonto.zip innehåller ett projekt med klassen Bankkonto. Zippa upp denna fil och öppna projektet i BlueJ och skriv vidare på klassen
Läs merHej Då, Karel! Programmering. Vårt första Javaprogram. hh.se/db2004. Java. Grundtyper, variabler och arrayer
Programmering hh.se/db2004 Föreläsning 3: Java. Grundtyper, variabler och arrayer Hej Då, Karel! Verónica Gaspes www2.hh.se/staff/vero www2.hh.se/staff/vero/programmering Center for Research on Embedded
Läs merExtramaterial till Matematik Y
LIBER PROGRAMMERING OCH DIGITAL KOMPETENS Extramaterial till Matematik Y NIVÅ TVÅ Taluppfattning och tals användning ELEV Det finns många olika programmeringsspråk. I den här uppgiften ska du få bekanta
Läs merPythons standardbibliotek
Pythons standardbibliotek Python 3 skall, enligt standarddokumenten http://docs.python.org/py3k/library/index.html ha stöd för vissa funktioner, typer och datastrukturer Så länge man håller sig till detta
Läs merFunktioner. Linda Mannila
Funktioner Linda Mannila 13.11.2007 Vad kan vi nu? Primitiva datatyper Tal, strängar, booleska värden Samlingsdatatyp Listan Utskrift Indata Felhantering Intro till funktioner och moduler Villkorssatsen
Läs merÖvningshäfte 2: Induktion och rekursion
GÖTEBORGS UNIVERSITET MATEMATIK 1, MMG200, HT2017 INLEDANDE ALGEBRA Övningshäfte 2: Induktion och rekursion Övning D Syftet är att öva förmågan att utgående från enkla samband, aritmetiska och geometriska,
Läs merKort om klasser och objekt En introduktion till GUI-programmering i Java
Kort om klasser och objekt En introduktion till GUI-programmering i Java Klasser En klass är en mall för hur man ska beskriva på något. Antag att vi har en klass, Bil. Den klassen innehåller en lista på
Läs merFöreläsning 10. Pekare (Pointers)
Föreläsning 10 Pekare (Pointers) Dagens kluringar int a=5; int f(int b) a--; b++; return b; int main() int a=3; printf("%d,",f(a)); printf("%d",a); return 0; int f(int a) if(a==1) return a; else return
Läs merProgrammeringsteknik med C och Matlab
Programmeringsteknik med C och Matlab Kapitel 2: C-programmeringens grunder Henrik Björklund Umeå universitet Björklund (UmU) Programmeringsteknik 1 / 32 Mer organisatoriskt Imorgon: Datorintro i lab Logga
Läs merKort om programmering i Python
CTH/GU mmgl50-2018 Matematiska vetenskaper Kort om programmering i Python 1 Inledning Redan i första laborationen gjorde ni ett litet program. Ni skrev en script eller skriptfil som beräknade summan 5
Läs merProgrammering i C, 7,5 hp
Programmering i C, 7,5 hp Föreläsning 4 VÄLKOMNA! 31 switch-satsen Antag att vi har en heltalsvariabel a som skall styra programflödet Antag vidare att a kan anta tex 5 olika värden 1,2,3,4,5 printf( Mata
Läs merFöreläsning 6: Introduktion av listor
Föreläsning 6: Introduktion av listor Med hjälp av pekare kan man bygga upp datastrukturer på olika sätt. Bland annat kan man bygga upp listor bestående av någon typ av data. Begreppet lista bör förklaras.
Läs merTDIU01 - Programmering i C++, grundkurs
TDIU01 - Programmering i C++, grundkurs Grundläggande satser och uttryck Eric Elfving Institutionen för datavetenskap 5 augusti 2014 Översikt Uttryck Litteraler Operatorer Satser Villkor Upprepning Teckenhantering
Läs merv. 42 Python HT17 En introduktion Oscar Bergqvist
v. 42 HT17 Python En introduktion Oscar Bergqvist oscar.bergqvist@stockholm.se 1 Innehåll 2 IDLE... 3 2.1 Det interaktiva läget... 3 2.2 Standardläget... 3 2.3 Färger i IDLE... 3 3 Variabler... 3 3.1 Namn...
Läs merFunktioner forts. F3: Funktioner (kap. 5) Parametrar. findgear.m forts
F3: Funktioner (kap. 5) Funktionsfil, funktionsanrop in- och utparametrar, anropsin- och anropsutparametrar lokala, globala och persistenta variabler lokala funktioner return variabelt antal parameterar,
Läs merEDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Om att lära sig programmera. Föreläsning 1-2 Innehåll.
EDAA20 Programmering och databaser Mål komprimerat se kursplanen för detaljer Läsperiod 1 7.5 hp anna.axelsson@cs.lth.se http://cs.lth.se/edaa20 Mer information finns på kursens webbsida samt på det utdelade
Läs merPlatser för att skriva och testa kod online. Workshop om programmering i matematikkurser, version 0.7 senast sparat
Cheat sheets Nedan finns referensblad för fyra olika programmeringsspråk, som kan bli aktuella att använda i matematikundervisning. MATLAB är en välkänd programvara för att göra matematiska beräkningar,
Läs merKodexempel från Programmering 2 Tobias Wrigstad, Ph.D.
Kodexempel från Programmering 2 Tobias Wrigstad, Ph.D. tobias@dsv.su.se Notera att exemplen är i Python 2.5 För att översätta till Python 3.0, gör följande ändringar print(x,y) istället för print x,y input("ett
Läs merC++ Funktioner 1. int summa( int a, int b) //funktionshuvud { return a+b; //funktionskropp } Värmdö Gymnasium Programmering B ++ Datainstitutionen
C++ Funktioner 1 Teori När programmen blir större och mer komplicerade är det bra att kunna dela upp programmet i olika delar som gör specifika saker, vilket kan göra programmet mer lättläst. Ett sätt
Läs merOrdlistor, filhantering och ut på webben. Linda Mannila 20.11.2007
Ordlistor, filhantering och ut på webben Linda Mannila 20.11.2007 Vad kan vi nu? Primitiva datatyper Tal, strängar, booleska värden Samlingsdatatyp Listan Utskrift Indata Felhantering Funktioner och moduler
Läs merFunktionens deklaration
Funktioner - 1 Teknik för stora program #include #include......... cout
Läs merGrundläggande datalogi - Övning 3
Grundläggande datalogi - Övning 3 Björn Terelius November 14, 2008 Utskrift av stackar Tornen i Hanoi Principerna för rekursion: Hitta ett enkelt basfall (som har en känd lösning). Reducera varje annat
Läs merProgrammering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p
Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p Skriven av Michael Andersson Introduktion Programmering I högnivåspråk fokuserar på själv problemet (algoritmen) istället
Läs merFöreläsning 6 Innehåll. Rekursion. Rekursiv problemlösning Mönster för rekursiv algoritm. Rekursiv problemlösning. Rekursion. Rekursivt tänkande:
Föreläsning 6 Innehåll Rekursion Begreppet rekursion Rekursiv problemlösning Samband mellan rekursion och induktion Söndra-och-härska-algoritmer Dynamisk programmering Undervisningsmoment: föreläsning
Läs merTDP002 - Imperativ programmering
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
Läs merTATM79: Föreläsning 1 Notation, ekvationer, polynom och summor
TATM79: Föreläsning 1 Notation, ekvationer, polynom och summor Johan Thim 22 augusti 2018 1 Vanliga symboler Lite logik Implikation: P Q. Detta betyder att om P är sant så är Q sant. Utläses P medför Q
Läs merÖversikt. Varför lära sig detta? Motivering Syntax och semantik Imperativa språkets byggstenar och Python. PL-boken Kap 1 (repetition):
Översikt Motivering Syntax och semantik Imperativa språkets byggstenar och Python Datatyper Tilldelning och uttryck Kontrollstrukturer (på satsnivå) Subprogram Relaterade avsnitt: PL 3.1-3.2, 5.1-5.3,
Läs merAlgoritmanalys. Genomsnittligen behövs n/2 jämförelser vilket är proportionellt mot n, vi säger att vi har en O(n) algoritm.
Algoritmanalys Analys av algoritmer används för att uppskatta effektivitet. Om vi t. ex. har n stycken tal lagrat i en array och vi vill linjärsöka i denna. Det betyder att vi måste leta i arrayen tills
Läs merFörra gången: Primitiva data
Förra gången: Primitiva data > 30 30 > 45.56 45.56 Variabler: > (define telnr 6000) > telnr 6000 DA2001 (Föreläsning 3) Datalogi 1 Hösten 2013 1 / 24 Förra gången: Procedurapplikation: > (+ 7900000 telnr)
Läs mer1/15/2013. DD1310/DD1314/DA3009 Programmeringsteknik. Lärandemål... Vilka läser kursen? ...fler lärandemål VARFÖR? Föreläsning 1
Skolan för Datavetenskap och kommunikation DD1310/DD1314/DA3009 Programmeringsteknik Föreläsning 1 Kursinfo Diagnostiskt prov Python-intro: print variabler reserverade ord input kommentarer beräkningar
Läs merFöreläsning 2 Programmeringsteknik och Matlab DD1312. Programspråk. Utskrift på skärmen
Föreläsning 2 Programmeringsteknik och Matlab DD1312 Introduktion till python Variabler,datatyper, omvandling av typer sfunktioner Två olika typer av program omvandlar högnivå till lågnivå program: Interpreterande
Läs mer