Dagens föreläsning. - Vad skall vi kunna inför den skriftliga examinationen? - Vad skall vi ta med oss till andra kurser.

Storlek: px
Starta visningen från sidan:

Download "Dagens föreläsning. - Vad skall vi kunna inför den skriftliga examinationen? - Vad skall vi ta med oss till andra kurser."

Transkript

1 1 Dagens föreläsning - Vad handlade kurserna (TDDC66 och TDDC67) egentligen om? - Vad skall vi kunna inför den skriftliga examinationen? - Vad skall vi ta med oss till andra kurser. - Vad kan vi förvänta oss mer i de fortsatta programmeringskurserna Imperativ programmering och Ada (vt1 C1/D1) Objektorienterad programmering och Java (ht1 C2/D2) Datastrukturer och algoritmer (ht1 C2/D2) Data- och programstrukturer (vt2 C2, Dh) - Vad finner vi i andra språk för konstruktioner vi lärt oss från Lisp-kursen.

2 2 Kurserna kan (vad gäller Lisp-momentet) delas upp i 6 huvusakliga områden: - Att skriva funktionella program - centrala begrepp var rekursion, funktion som dataobjekt, högre ordningens funktioner. Samt se likhet med induktion och andra rekursiva strukturer. - Att göra databstraktion - det centrala begreppet var abstrakta datatyper och kunna beskriva hur data är sammansatta,. genom att använda diskretmatematiska begrepp, mängder, kartesisk produkt, tupler, träd etc. - Att lösa problem - Att bryta ned problem till hanterbara programkomponenter. Top-down-modell. En funktion gör vanligen en sak. Ge bra namn på funktioner. - Att lära sig Lisp, hantera listor, arrayer, poster, grafiskt rita listor med boxar (consceller) och pilar (pekare), makrofunktioner. Att kunna använda repetitionsstrukturer i Lisp för att skriva imperativa program. - Att förstå programspråk - Mer kunskap och känsla vad programspråk är, grammatik, interpretator och kompilator. Dessutom fanns breddföreläsningen om datorspråk och prova-pålaborationer. - Att öva hanterverket att programmera. Laborationer och självständigt projekt. Design, kodning, testning, felsökning. Snygg programkod.

3 3 Du skall kunna skriva funktioner med olika beräkningsmodeller och kunna förklara vad som händer: - Rekursiv funktion med rekursiv processlösning med fördröjd beräkning och värdet beräknas på hemvägen - Rekursiv funktion med iterativ processlösning (svansrekursiv, tail recursion) med beräkning efter hand, ofta via en resultatparameter - Iterativ funktion med användning av explicit repetitionsstruktur och tilldelning Obs. Bland inte ihop rekursiv funktion med iterativ processlösning med iterativ funktion. Däremot. Se likheterna mellan dessa. I stort mekaniskt att överföra en rekursiv funktion med iterativ processlösning till en iterativ funktion. Lisp kan t ex vid kompilering transformera sådana funktioner program till iterativa program.

4 4 Du skall kunna använda rekursiva mallar för att göra: - Sekvens-traversering av lista (sekvens) på toppnivå - Skevens- traversering av en lista (sekvens) där elementen i sin tur är listor (sekvenser) - Binär träd-traversering av t ex punkterade par-strukturer, formelstrukter mm De två senare modellerna kallar vi dubbelrekursiva.

5 5 Du skall kunna identifiera olika typer av algoritmmönster: sökning efter givet element (finns-bokstav? i Övn 118, forwardfind i Uppg 2B) mappning, transformera varje elements värde till ett nytt och skapa en struktur av samma slag. (positiva i Uppg 1A, högre ordningens funktion mapcar) filtrering, skapa en ny struktur med alla elementen som uppfyller ett villkor (ta-bort-vokaler i Uppg 119, filtrera i Uppg 1A, filter Övn 213) reduktion (ackumulering), t ex summera alla talen i en sekvens (räkna i Uppg 1A, högre ordningens funktion reduce) back-tracking, sök först, bestäm sedan (eftersista i Uppg 205, backfind i Uppg 2C) generering, från ett värde skapa nästa (generate-list i Uppg 2E)

6 6 Träna mycket genom att lösa många uppgifter i de olika modellerna. Fundera på lösningarna, gör trace för att förstå bättre. Typisk tentauppgift: 1a. Skriv en rekursiv funktion som gör en rekursiv processlösning, max-element, som returnerar det största elementet ur en lista av tal. Vi kan antaga att listan har minst ett element. (max-element ( )) => 6 Vad skiljer en rekursiv processlösning från en iterativ processlösning? 1b. Som uppgift 1a. Skriv en iterativ funktion. 1c. Skriv en funktion med sekvenslösning, max-sekv, som returnerar största värdet i en godtycklig lista med tal. Vi får antaga att alla talen är positiva. Inga punkterade par finns, däremot kan en tom lista förekomma. (max-sekv ((2 3) 5 ((7) () 2))) => 7 1d. Skriv en funktion med binär trädlösning, max-bt, dvs listan representerar ett binärt träd, i vilken vi önskar det största lövet. Punkterade par ingår sålunda i listan. (max-bt ((2. -4). (7. (2. 3)))) => 7

7 7 Du skall kunna förstå listor i parentesformat och den grafiska representationen. Förstå när delade strukturer uppstår. Förstå skillnaden mellan eq (pekar/objekt-likhet) och equal (värde/innehållslikhet). Kunna ändra pekare med setf. Typisk tentauppgift: Rita upp grafiskt (med consceller och pilar) hur den liststruktur ser ut och vilket värde (i parentesformat) som skapas av (cons (list a b) (c)) (let ((p (list a b))) (cons p p)) (let ((p (cons (a) (b)))) (setf (rest (rest p)) (first p)) (setf (first p) nil) p) Skriv Lisp-uttryck som skapar a b

8 8 Du skall kunna förstå lambda-uttryck och skriva högre ordningens funktioner. Typiska tentauppgifter: Vad får vi för värde på följande uttryck: (mapcar # (lambda (e) (list e e)) (a b c d)) (mapcar # (lambda (a b) (list b a)) ( ) (a b c d)) Skriv en funktion remover som tar en godtycklig lista (ej innehållande punkterade par) och en predikatfunktion fn som skapar en ny lista där de element e, som uppfyller fn(e) är borttagna. (remover ((a 3) 4 (b c (5))) # numberp) => ((a) (b c ()) Skriv en funktion tabort-intervall, som tar en godtycklig lista (ej innehållande punkterade par) med tal och en under och övre gräns, med hjälp av funktionen remover. Element lika med gränserna skall även tas bort. (tabort-intervall ((1 16) 5 20 ((3 10) 25)) 10 20) => ((1) 5 ((3) 25)), dvs tar bort all elementen mellan 10 och 20.

9 9 Imperativa strukturer. Du skall kunna hantera poster (structures) och arraystrukturer. Skapa, ta ut delar och ändra element med tilldelning. Du skall kunna några repetitionsstrukturer. Typisk tentauppgifter. Du har en arraystruktur, där elementen är poster av typen person. En sådan post skall innehålla namn och ålder. Deklarera posttypen person. Skriv en funktion öka-ålder som i en sådan arraystruktur ökar åldern för varje person med ett givet antal år. Skriv en funktion sortera som sorterar posterna i åldersordning.

10 10 Makrofunktioner Du skall kunna skriva makrofunktioner, definiera sådana och förstå när de måste användas. Tänk igenom backquote-syntaxen. Makrofunktioner används bl a för: Egen skapad syntax. Då alla arguemten ej skall beräknas. Vissa argument skall beräknas upprepade gånger. Parametrar i anropet skall påverkas - utparametrar. Skapa egna styrstrukturer. Typisk tentauppgifter. I Scheme (en Lisp-dialekt) definierar man funktioner med annan syntax jämfört med Common Lisp enligt följande (define (fn-namn param1 param2... paramk) body1 body2... bodyn) Man vill kunna använda denna syntax i Common Lisp. Hur gör man? Varför måste define definieras som en makro?

11 11 Du skall förstå interpretatorfunktionerna eval, apply och funcall. Typisk tentauppgift: Vad blir värdet av (eval (list list (list quote list))) (funcall # (lambda (f g) (funcall g f f)) list # list) Övrigt: Du skall förstå vad lexical closure är och hur icke-normala återhopp med catch och throw fungerar. Du skall förstå skillnaden mellan statisk och dynamisk bindning. Du skall kunna lösa svårare strukturella problem med t ex back-tracking-modellen och med induktionsmodellen. Av typen: Skriv en funktion som hittar en väg i ett binärt träd. Skriv en funktion som tar fram alla permutationer av en lista...

12 12 Kunna förstå programkod. Abstraktion. Du skall kunna läsa och förstå program, kunna avgöra abstrakta nivån contra representationsnivån. Ofta finns det en uppgift där en del kod är givna i en bilaga. Uppgifter kan vara att komplettera funktioner i denna kod, ändra i denna, kod, byta representation etc.

13 13 På kursens hemsida finns en länk till Tentaarkiv där de senaste tentorna med lösningar finns. Inga hjälpmedel. Om ni inte riktigt kommer ihåg en funktion (namn och parameterordning) så är de ok att ange hur man skall tolka funktionen. Graderade betyg. Möjligheten fanns att via laborationerna och projekt att höja detta betyg. Skriftlig tentamen torsdag 15 dec Vi hinner rätta innan jul och förhoppningsvis hinna få det registrerat i LADOK.

14 14 Checklista på begrepp att kunna inför tentamen Hänvisning till uppgifter ni redovisat från laborationerna. Dessutom finns många fler relvanta övningar från laborationshäftet och exempelsamlingen. - grundläggande Lisp funktioner - skilj på cons, append och list (första duggan!) - funktionsbegreppet definition lambda-uttryck (uppg 2D - traverse, uppg 2E - Pascal s triangel) function - funcall parameterlistor (&rest, &optional, &key) special form makrofunktioner (uppg 6C - setlistq) - lösa repetitiva problem rekursion rekursiv processlösning (uppg 1A, uppg 2B och 2C Sökning i lista, Uppg 3A- potensmängd) iterativ processlösning (div övningar i lab 1) backtracking (uppg 2C - backfind, uppg 3B- Mönstermatchning) iteration (loop, dotimes, dolist...) (uppg 6A - frekvenstabell, uppg 6B - ändra representation) iteratorer (uppg 2D - traverse, almanackan) högre ordningens funktioner (uuppg 2D - traverse, uppg 2E - Pascal s triangel) map-funktioner

15 15 - algoritmer över datastrukturer sekvenslösningar (uppg 1B - personnummer, uppg 3C - gemensamma tider)) binära träd-lösningar (uppg 2A- logikvärde, uppg 2D - traverse, uppg 5A och 5B - kalkylatorn) - liststrukturen cons - punkterade par grafisk representation delade strukturer - eq strukturändrande funktioner - setf (uppg 6D - elektroniska minnet) kopierande och destruktiva algoritmer append - nconc datastrukturer (uppf 6D - elektroniska minnet) kö, cirkulär struktur - post och arraystruktur (uppg 6A - frekvenstabell, uppg 6B - ändra representation) generaliserade tilldelningen - setf - in- och utmatning - abstraktion (uppg 4 - Almanackan, uppg 5 - Kalkyl) abstrakta datatyper primitiva funktioner recognizer, constructor, selector, iterator sammansättningar - tupel, sekvens, ändlig avbildning representationsobereoende (uppg 6B - ändra representation)

16 16 - programstrukturer funktioner lokala funktioner - block - labels lokala variabler statiskt återhopp - return/return-from dynamiskt återhopp - catch - throw unwind-protect - beräkningsmodell / LISP-interpretator eval och apply minilisp interpretering - kompilering (lab 5- kalkyl) - omgivningar statisk och dynamisk lexical closure - makrodefinitioner (uppg 6C - setllistq) backquote

17 17 Vad kan vi förvänta oss framöver i programmeringskurser: Imperativ programmering och Ada (vt1 C1/D1) Mer en klassisk genomgång av programmering med ett kompilerat programmeringsspråk. Innehåller även en grund i C/C++. Begrepp: Stark typning, deklarationer. Hur typer kan skapas och problematik runt detta. Typkontroll av kompilatorn. Proceduren med in- och ut-parametrar. Call-by-reference. Explicit pekarhantering. Undantagshantering. Paket för att dölja representation, för att skapa abstrakt datatyper. Generiska underprogram och paket, för att skapa generellare datatyper. Strukturen av in- och utmatning. Lite om processhantering. Verktyg: Kompilator, länkare och testverktyg Projektuppgift. Examination vid dator.

18 18 Objektorienterad programmering och Java (ht1 C2/D2) Objektorienterad programmering och metodik. Programbibliotek. Gränssnittprogrammering Orientering om andra objektorienterade språk, speciellt C++. Begrepp: Primitiva typer, objekt Klass, klasshierarki, metoder, arv Abstrakta klasser, interface Typkonverteringar Iteratorer Klassbibliotek, API Större projekt. Parallellt med kursen använder ni Java i Datastrukturer och algoritmer.

19 19 Datastrukturer och algoritmer (ht1 C2/D2) Systematisk genomgång av olika datastrukturer och algoritmer. Många har ni redan träffat på i denna kurs. Abstrakta datatyper och datastrukturer. Lista, stack, kö, sökträd (finns många olika typer), hashtabell, graf och olika sätt att representera dessa. Algoritmer Sökning och sortering. Hantering av olika typer av träd. Sökning i grafer. Analys av minne och tid. Komplexitet. Paradigmer för design av algoritmer. Laborationer i Java.

20 20 Data- och programstrukturer (vt2 C2, Dh) Kan ses som en fortsättning på denna första kurs. Baseras på Scheme och följer Abelson-Sussman Structure and interpretation of computer programs. Innehåller: Olika paradigmer och beräkningsmodeller Utöver de som ni hitills gått igenom funktionell, imperativ och objektorienterad programmering tar man upp flera andra: - Strömmar, ickedeterministisk programmering, logikprogrammering - Lat evaluering,olika parameteröverföringsmodeller (call-by-value, call-by-need, call-by-name) - Implementering av språk, Scheme eval-modellen. Scheme i Scheme explicit registermaskin. Scheme i maskinspråk. förklarar hur rekursion, svansrekursion, parameterhantering går till. kompilering av Scheme till registermaskinen/ maskinspråk

21 21 Sedan finns fler programmeringsorienterade kurser: Processprogrammering och operativsystem WWW-programmeringskurser Avancerad programmering i C++ Programmering i C# och.net Framework Logikprogrammering Designmönster Komponentbaserad programmering Programvarutestning AI programmering Design och programmering av datorspel Programmering av paralelldatorer m fl Dessutom mer programutvecklingsmetodiska kurser: Programutvecklingsmetodik PUM-projektet Avancerad programutvecklingsmetodik Programvaruutveckling med internationella parter

22 22 Vad är Lisp mest likt idag av nya språk. Troligen Python. (Guido van Rossum) Interpreterat Interaktiv toploop Inbyggda listor Tupler och sekvenser Mängder Dictionaries (tabell med nyckel-värde-par) Lambda-funktioner - lexical closure Högre ordningens funktioner (filter, map, reduce) Iteratorer, generatorer Radindentering ersätter paraneteser, måsvingar Är däremot äkta objektorienterat.

23 23 Vad är Lisp mest likt idag av nya språk. Även Ruby. (Yukihiro Matsumoto) Interpreterat Dynamiskt typad Interaktiv toploop Inbyggda listor Symboler Tupler och sekvenser Reguljära uttryck Block - kod som kan ges till call (för beräkning) Lambda-funktioner - lexical closure Högre ordningens funktioner (filter, map, reduce) Iteratorer, generatorer Är däremot äkta objektorienterat. Utvidga klasser. Fånga ej definierade metoder.

24 24 Man arbetar med en ny version av C++ Man planerar att införa under 2011? en ny standard av C++, ny under namnet C++0x. C++ kommer då att innehålla lambda-uttryck [](int x, int y) { return x + y } någon typ av lexical closure Se te x wikipedia under C++0x

25 25 Microsofts nya språk F# F# är ett multiparadigmspråk för funktionell programmering samt imperativ och objekt-orienterad programmering. Anpassad för Microsofts.Net Framework Har syntaktiska likheter med Haskell. Starkt typat språk, som gör typhärledning, dvs härleder typsignaturen för en funktion. Funktioner är första ordningen dataobjekt, högre ordningens funktioner, lambda-uttryck och closures. Sequence expressions seq { for b in do if b < 15 then yield b*b } ger värden 0, 1, 4, 25, Syntaxutvidning för att skapa domänspecifika språk.

26 26 Microsofts nya språk F# Några exempel: (* factorial function *) let rec factorial n = match n with 0 -> 1 _ -> n * factorial (n - 1) Argumenten hanteras vanligen med mönster (pattern matching), som i Haskell, Erlang mfl språk (defun factorial (n) (cond ((eq n 0) 1) (t (* n (factorial (- n 1))))))

27 27 Microsofts nya språk F# (* Print even fibs *) [1.. 10] > List.map fib > List.filter (fun n -> (n % 2) = 0) > printlist Sekvensering av delarna i ett uttryck. Värder förs över till nästa, som i Unix (ls > out.txt) (printlist (filter (lambda (n) (= (% n 2) 0) (map fib (create-list 1 10)))) (* Same thing, using sequence expressions *) [ for i in do let r = fib i if r % 2 = 0 then yield r ] > printlist

28 28 Vad är fortfarande mest unikt för Lisp? Jag tycker: Programkod är representerat i en datstruktur som språket själv kan hantera. Ingen skillnad på program och data. Möjliggör att kod kan förändras under exekveringen, t ex makro-funktioner. Jfr maskinkod, allt är bitmönster. Ingen skillnad på program och data. S-notationen (= parentesnotationen), dvs den enheltliga sättet att beskriva hierarkiska strukturer. Enkelt att i textuellt format kommunicera program och data. Jfr XML.

29 29 I XML kan man beskriva data enligt följande: Vad innebär dessa <!DOCTYPE cdcollection [ deklarationer? <!ELEMENT cdcollection (cd*)> <!ELEMENT cd (artist, title, track*)> <!ELEMENT artist (#PCDATA)> <!ELEMENT name (#PCDATA)> <!ELEMENT track (number, title, length)> <!ELEMENT number (#PCDATA)> <!ELEMENT title (#PCDATA)> <!ELEMENT length (#PCDATA) ]> <cdcollection> <cd> <artist>lisa</artist> <title>julsånger</title> <track> <number>2</number> <title>god jul</title> <length>3:30</length> </track> <track> <number>5</number> <title>luciasången/title> <length>3:50</length> </track> </cd> </cdcollection>

30 30 Vad är det egentligen för skillnad på Lisps parentesuttryck (S-uttrycken). (cdcollection (cd (artist Lisa) (title Julsånger) (track (number 2) (title God jul) (length 3:30) ) (trac (number 5) (title Luciasången) (length 3:50) ) ) ) dvs en textuell notation för att beskriva hierarkiska strukturer. Vi använder helt enkelt första elementet som en tagg.

31 31 Nu kan vi även representera programkod i XML och skriva en XML-programinterpretator / XML abstract machine. Kan kanske se ut så här?? <define> fak <param> n </param> <body> <expression>if <arguments> <predicate>... n = 0... </predicate> <expression> <constant> 0 </constant> </expression> <expression>... n * fak (n - 1) </expression> </arguments> </expression> </body> </define> <calculate> <expression> <function> fak </function> <arguments> <constant> 0 </constant> </arguments> </expression> </calculate>

32 32 Tentamen: Torsdag 15/12 kl Glöm ej att anmäla dig. Inför tentan: Jag ger handledning inför tentamen tisdag 13 dec kl i John von Neuman, Hus B, 1 tr Ni frågar, jag förklarar. Ge gärna förslag på frågor i förväg via epost till mig. Slutför laborationsserien. Projektet med dokumentation. Extra labbhandeldning: Se schema och kursens www-sidor.

Dagens föreläsning Programmering i Lisp Fö 5

Dagens föreläsning Programmering i Lisp Fö 5 Anders Haraldsson 1 Dagens föreläsning Programmering i Lisp Fö 5 - Funktioner - lambda-uttryck (avs 7.1) - funcall och function (avs 7.2) - Högre ordningens funktioner (avs 7.3) - Iteratorer - Egenskaper

Läs mer

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

Universitetet i Linköping Institutionen för datavetenskap Anders Haraldsson 2 Anders Haraldsson 1 Anders Haraldsson 2 Dagens föreläsning Programmering i Lisp Fö 5 - Funktioner - lambda-uttryck (avs 7.1) - funcall och function (avs 7.2) - Högre ordningens funktioner (avs 7.) - Iteratorer

Läs mer

Tentamen i. TDDC67 Funktionell programmering och Lisp

Tentamen i. TDDC67 Funktionell programmering och Lisp 1 Linköpings tekniska högskola Institutionen för datavetenskap Anders Haraldsson Tentamen i TDDC67 Funktionell programmering och Lisp och äldre kurser TDDC57 Programmering, Lisp och funktionell programmering

Läs mer

Dagens föreläsning Programmering i Lisp Fö 7. Sammanfattning funktionell programmering Exempel på funktionella programspråk

Dagens föreläsning Programmering i Lisp Fö 7. Sammanfattning funktionell programmering Exempel på funktionella programspråk 1 Dagens föreläsning Programmering i Lisp Fö 7 Kopplingen funktionella programmering och diskret matematik. Jämför vad ni hittills gjort i denna kurs och i den diskreta matematiken, med referenser in i

Läs mer

Imperativ programmering. Imperativ programmering konstruktioner i Lisp. Datastrukturer (kap ) arraystruktur poststruktur

Imperativ programmering. Imperativ programmering konstruktioner i Lisp. Datastrukturer (kap ) arraystruktur poststruktur Imperativ programmering konstruktioner i Lisp Imperativ programmering I den imperativa programmeringen skriver vi program satsvist. Datastrukturer (kap.-.) aystruktur poststruktur Iterativa uttryck (avs.)

Läs mer

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

Dagens föreläsning Programmering i Lisp. - Bindning av variabler (avs 14.6) fria variabler statisk/lexikalisk och dynamisk bindning 1 Dagens föreläsning Programmering i Lisp - Block, räckvidd - Bindning av variabler (avs 14.6) fria variabler statisk/lexikalisk och dynamisk bindning - Felhantering (kap 17) icke-normala återhopp catch

Läs mer

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

Universitetet i Linköping Institutionen för datavetenskap Anders Haraldsson 1 2 - Block, räckvidd Dagens föreläsning Programmering i Lisp - Bindning av variabler (avs 14.6) fria variabler statisk/lexikalisk och dynamisk bindning - Felhantering (kap 17) icke-normala återhopp catch

Läs mer

TDDC74 Programmering, abstraktion och modellering. Tentamen

TDDC74 Programmering, abstraktion och modellering. Tentamen AID-nummer: Datum: 2011-01-11 1 Tekniska högskolan vid Linköpings universitet Institutionen för datavetenskap Anders Haraldsson TDDC74 Programmering, abstraktion och modellering Tentamen Tisdag 11 januari

Läs mer

Dagens föreläsning. Diverse Common Lisp. Konstanter, parametrar, globala variabler

Dagens föreläsning. Diverse Common Lisp. Konstanter, parametrar, globala variabler 21-1-2 1 Dagens föreläsning Hur fungerar ett Lisp system intern struktur av symbolen, tal, listan pekare - delade strukturer - eq minneshantering fri lista - sophämtning/garbage collection stack Diverse

Läs mer

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

Universitetet i Linköping Institutionen för datavetenskap Anders Haraldsson 1 2 TDDC66 Datorsystem och programmering TDDC67 Funktionell programmering Programmering i Lisp, examinator TDDC67 föreläsare i Lisp Peter Dalenius examinator TDDC66 kursassistent i Lisp + ett stort antal

Läs mer

Tentamen i. TDDA 69 Data och programstrukturer

Tentamen i. TDDA 69 Data och programstrukturer 1 Linköpings tekniska högskola Institutionen för datavetenskap Anders Haraldsson Tentamen i TDDA 69 Data och programstrukturer Torsdag den 14 januari 2009, kl 14-18 Hjälpmedel: Inga. Poänggränser: Maximalt

Läs mer

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

Universitetet i Linköping Institutionen för datavetenskap Anders Haraldsson 1 2 Dagens föreläsning En konstruktion i Common Lisp som möjliggör att man kan skapa ny Lisp-kod, som i sin tur beräknas. - makrobegreppet - makrofunktioner - special form - makrodefintion - backquote

Läs mer

Två fall: q Tom sekvens: () q Sekvens av element: (a b c) ; (sum-rec '(2 4 6)) = 12. q Första elementet uppfyller vissa villkor: (2 a b c)

Två fall: q Tom sekvens: () q Sekvens av element: (a b c) ; (sum-rec '(2 4 6)) = 12. q Första elementet uppfyller vissa villkor: (2 a b c) Programmönster: # Listan som sekvens, Rekursiv process Enkel genomgång av sekvens (element på toppnivån i en lista)) TDDC60 Programmering: abstraktion och modellering Föreläsning 5 Rekursiva och iterativa

Läs mer

Rekursiva algoritmer sortering sökning mönstermatchning

Rekursiva algoritmer sortering sökning mönstermatchning Anders Haraldsson 1 Anders Haraldsson 2 Dagens föreläsning Programmering i Lisp Fö 6-7 Rekursiva strukturer rekursiva definitioner rekursiva funktioner rekursiva bevis: induktion - rekursion strukturell

Läs mer

TDDC74 Programmering, abstraktion och modellering. Tentamen

TDDC74 Programmering, abstraktion och modellering. Tentamen AID-nummer: Datum: 2012-01-10 1 Tekniska högskolan vid Linköpings universitet Institutionen för datavetenskap Anders Haraldsson TDDC74 Programmering, abstraktion och modellering Tentamen Tisdag 10 januari

Läs mer

TDDC74 Programmering, abstraktion och modellering. Tentamen

TDDC74 Programmering, abstraktion och modellering. Tentamen AID-nummer: Datum: 2011-06-10 1 Tekniska högskolan vid Linköpings universitet Institutionen för datavetenskap Anders Haraldsson TDDC74 Programmering, abstraktion och modellering Tentamen Fredag 10 juni

Läs mer

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

Universitetet i Linköping Institutionen för datavetenskap Anders Haraldsson 1 2 Dagens föreläsning Modeller för programmeringsspråk Interpretator - att interpretera ett program - att beräkna ett program - Olika modeller programspråk Interpretator - kompilator program i S interpretator

Läs mer

Dagens föreläsning. Modeller för programmeringsspråk. - Olika modeller programspråk Interpretator - kompilator. - Syntax - semantik.

Dagens föreläsning. Modeller för programmeringsspråk. - Olika modeller programspråk Interpretator - kompilator. - Syntax - semantik. 1 Dagens föreläsning Modeller för programmeringsspråk - Olika modeller programspråk Interpretator - kompilator - Olika typer av språk Statiska och dynamiska programspråk - Syntax - semantik. Grammatik

Läs mer

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

TDDC74 Programmering: Abstraktion och modellering Datortenta , kl 14-18 TDDC74 Programmering: Abstraktion och modellering Datortenta - 2018-06-07, kl 14-18 Läs alla frågorna först och bestäm dig för i vilken ordning du vill lösa uppgifterna. Uppgifterna är inte nödvändigtvis

Läs mer

TDDC74 Programmering, abstraktion och modellering. Tentamen

TDDC74 Programmering, abstraktion och modellering. Tentamen AID-nummer: Datum: 2011-08-17 1 Tekniska högskolan vid Linköpings universitet Institutionen för datavetenskap Anders Haraldsson TDDC74 Programmering, abstraktion och modellering Tentamen Onsdag 17 augusti

Läs mer

TDDC74 Programmering, abstraktion och modellering DUGGA 2

TDDC74 Programmering, abstraktion och modellering DUGGA 2 AID-nummer: Datum: 2011-02-18 1 Tekniska högskolan vid Linköpings universitet Institutionen för datavetenskap Anders Haraldsson TDDC74 Programmering, abstraktion och modellering DUGGA 2 Fredag 18 feb 2011

Läs mer

LABORATION 1. Inledande Lisp - rekursion

LABORATION 1. Inledande Lisp - rekursion AI - Lisp / Laboration 1 - Inledande Lisp - rekursion 1 LABORATION 1 Inledande Lisp - rekursion 1.0 LABFÖRORD Detta labbmaterial ger dig introduktion till Lisp för att kunna använda programmeringsspråket

Läs mer

TDDC74 Lab 04 Muterbara strukturer, omgivningar

TDDC74 Lab 04 Muterbara strukturer, omgivningar TDDC74 Lab 04 Muterbara strukturer, omgivningar 1 Översikt I den här laborationen kommer ni att lära er mer om: Tillstånd, och skillnader mellan ren funktionell programmering och imperativ. Skillnaden

Läs mer

TDDC74 Programmering, abstraktion och modellering DUGGA 2

TDDC74 Programmering, abstraktion och modellering DUGGA 2 1 Tekniska högskolan vid Linköpings universitet Institutionen för datavetenskap Anders Haraldsson TDDC74 Programmering, abstraktion och modellering DUGGA 2 Torsdag 19 feb 2009 8-10 Namn: Personnummer:

Läs mer

Introduktionsmöte Innehåll

Introduktionsmöte Innehåll Introduktionsmöte Innehåll Introduktion till kursen Kursens mål och innehåll Undervisning Datavetenskap (LTH) Introduktionsmöte ST 2019 1 / 14 EDAA01 Programmeringsteknik - fördjupningskurs Ingen sommarkurs

Läs mer

TENTAMEN I PROGRAMSPRÅK -- DVG C kl. 08:15-13:15

TENTAMEN I PROGRAMSPRÅK -- DVG C kl. 08:15-13:15 TENTAMEN I PROGRAMSPRÅK -- DVG C01 140605 kl. 08:15-13:15 Ansvarig Lärare: Donald F. Ross Hjälpmedel: Bilaga A: BNF-definition Betygsgräns: Kurs: Max 60p, Med beröm godkänd 50p, Icke utan beröm godkänd

Läs mer

Sista delen av kursen

Sista delen av kursen Sista delen av kursen handlar om hur program, delprogram och datatyper deklareras och vad det man åstadkommit egentligen betyder. Innehåll Syntaktisk (hur ser det ut) och semantisk (vad betyder det) beskrivning

Läs mer

Programspråkslingvistik. Sista delen av kursen. Ett programspråk

Programspråkslingvistik. Sista delen av kursen. Ett programspråk Sista delen av kursen Programspråkslingvistik handlar om hur program, delprogram och datatyper deklareras och vad det man åstadkommit egentligen betyder. Innehåll Syntaktisk (hur ser det ut) och semantisk

Läs mer

EDAA01 Programmeringsteknik - fördjupningskurs

EDAA01 Programmeringsteknik - fördjupningskurs EDAA01 Programmeringsteknik - fördjupningskurs Läsperiod lp 1+2 (Ges även lp 3) 7.5 hp anna.axelsson@cs.lth.se sandra.nilsson@cs.lth.se http://cs.lth.se/edaa01ht Förkunskapskrav: Godkänd på obligatoriska

Läs mer

TDDC74 Lab 02 Listor, sammansatta strukturer

TDDC74 Lab 02 Listor, sammansatta strukturer TDDC74 Lab 02 Listor, sammansatta strukturer 1 Översikt I denna laboration kommer ni att lära er mer om: Mer komplexa rekursiva mönster, procedurer och processer. Hur man kan hantera listor och andra enklare

Läs mer

Programmeringsteknik II

Programmeringsteknik II Programmeringteknik II Kursintroduktion http://www.it.uu.se/edu/course/homepage/prog2/vt18/ 2018-03-19 Programmeringsteknik II 2018-03-19 1 / 9 Lärare Carl Nettelblad (kursansvarig) Anna Eckerdal Biträdande

Läs mer

Instruktioner - Datortentamen TDDE24 och TDDD73 Funktionell och imperativ programmering (i Python)

Instruktioner - Datortentamen TDDE24 och TDDD73 Funktionell och imperativ programmering (i Python) Instruktioner - Datortentamen TDDE24 och TDDD73 Funktionell och imperativ programmering (i Python) Hjälpmedel Följande hjälpmedel är tillåtna: Exakt en valfri bok, t.ex. den rekommenderade kursboken. Boken

Läs mer

TDDC74 Programmering: Abstraktion och modellering Tentamen, onsdag 9 juni 2016, kl 14 18

TDDC74 Programmering: Abstraktion och modellering Tentamen, onsdag 9 juni 2016, kl 14 18 TDDC74 Programmering: Abstraktion och modellering Tentamen, onsdag 9 juni 2016, kl 14 18 Läs alla frågorna först, och bestäm dig för i vilken ordning du vill lösa uppgifterna. Skriv tydligt och läsligt.

Läs mer

Sista delen av kursen

Sista delen av kursen Sista delen av kursen handlar om hur program, delprogram och datatyper deklareras och vad det man åstadkommit egentligen betyder. Innehåll Syntaktisk (hur ser det ut) och semantisk (vad betyder det) beskrivning

Läs mer

TDDC74 Programmering: Abstraktion och modellering Tenta, kl 14 18, 11 juni 2014

TDDC74 Programmering: Abstraktion och modellering Tenta, kl 14 18, 11 juni 2014 TDDC74 Programmering: Abstraktion och modellering Tenta, kl 14 18, 11 juni 2014 Läs alla frågorna först, och bestäm dig för i vilken ordning du vill lösa uppgifterna. Skriv tydligt och läsligt. Använd

Läs mer

Exempel på typer av datorspråk EXCEL

Exempel på typer av datorspråk EXCEL 1 2 TDDB82 Perspektiv på Datateknik Breddgivande föreläsning Datorspråk Programmeringsparadigmer Programmeringsspråk Konstruktioner i programmeringsspråk Litteratur: Brookshear, Computer Science - an overview,

Läs mer

DD1361 Programmeringsparadigm. Carina Edlund

DD1361 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 mer

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

TDDC74 Programmering: Abstraktion och modellering Datortenta , kl 14-18 TDDC74 Programmering: Abstraktion och modellering Datortenta - 017-10-7, kl 14-18 Läs alla frågorna först och bestäm dig för i vilken ordning du vill lösa uppgifterna. Uppgifterna är inte nödvändigtvis

Läs mer

Abstrakta datatyper. Dagens föreläsning. Abstract data types (ADT)

Abstrakta datatyper. Dagens föreläsning. Abstract data types (ADT) 1 2 Dagens föreläsning TDDC67 Funktionell programmering och Lisp Fö 8 och 9 Dataabstraktion - Abstrakta datatyper - datatypbeskrivning - datatyplikhet - sammansättningar av datatyper med sekvens, tupel,

Läs mer

Dagens föreläsning. TDDC67 Funktionell programmering och Lisp Fö 8 och 9

Dagens föreläsning. TDDC67 Funktionell programmering och Lisp Fö 8 och 9 1 Dagens föreläsning TDDC67 Funktionell programmering och Lisp Fö 8 och 9 Dataabstraktion - Abstrakta datatyper - datatypbeskrivning - datatyplikhet - sammansättningar av datatyper med sekvens, tupel,

Läs mer

Program & programmering

Program & programmering Program & programmering Vad är program? Satser och instruktioner, toggla igenom exempel Program på olika nivåer, för olika maskiner, för olika saker Tolka program; kompilator, intepretator, binärbytekod,

Läs mer

Exempel på typer av datorspråk EXCEL

Exempel på typer av datorspråk EXCEL 1 2 TDDC10 Perspektiv på datateknik/datavetenskap TDDC79 Perspektiv på informationsteknologi TDP001 Handhavande av datormiljö (D, IT, C, IP) Breddgivande föreläsning Historik Datorspråk Programmeringsparadigmer

Läs mer

Introduktion till Datalogi DD1339. Föreläsning 1 8 sept 2014

Introduktion till Datalogi DD1339. Föreläsning 1 8 sept 2014 Introduktion till Datalogi DD1339 Föreläsning 1 8 sept 2014 Kontaktuppgifter & Info: Kurskod: DD1339, 19hp Kursomgång: inda14 Kursansvarig: Christian Smith, ccs@kth.se Michael Minock, minock@kth.se Dilian

Läs mer

TDDC74 Programmering: Abstraktion och modellering Dugga 2, , kl 14-16

TDDC74 Programmering: Abstraktion och modellering Dugga 2, , kl 14-16 TDDC74 Programmering: Abstraktion och modellering Dugga 2, 207-04-06, kl 4-6 Läs alla frågorna först och bestäm dig för i vilken ordning du vill lösa uppgifterna. Uppgifterna är inte nödvändigtvis i svårighetsordning.

Läs mer

Objektorienterad Programmering DAT043. Föreläsning 9 12/2-18 Moa Johansson (delvis baserat på Fredrik Lindblads material)

Objektorienterad Programmering DAT043. Föreläsning 9 12/2-18 Moa Johansson (delvis baserat på Fredrik Lindblads material) Objektorienterad Programmering DAT043 Föreläsning 9 12/2-18 Moa Johansson (delvis baserat på Fredrik Lindblads material) 1 Metoden clone() Skapa kopior av existerande objekt. Interface Cloneable Deep vs.

Läs mer

n Detta för att kunna koncentrera oss på n Tal: number? n Symboler: symbol? n Strängar: string? n Tecken: char? n Boolskt: boolean?

n Detta för att kunna koncentrera oss på n Tal: number? n Symboler: symbol? n Strängar: string? n Tecken: char? n Boolskt: boolean? Tidigare TDDC74 Programming: Abstraktion och modellering Föreläsning 4 Symboler, Par, Listor Representation av par, Grafisk notation för par Representation av listor mha par Typiska listhanteringsprocedurer

Läs mer

Idag: Par och listor. Symboler. Symboler används för att uttrycka icke-numeriska data såsom namn, adress, bilregisternummer, boktitel, osv.

Idag: Par och listor. Symboler. Symboler används för att uttrycka icke-numeriska data såsom namn, adress, bilregisternummer, boktitel, osv. Idag: Par och listor Symboler Hur hanterar man icke-numeriska problem? Hur hanterar man en samling av data? Hur konstruerar man sammansatta datastrukturer? Bra om du har läst följande avsnitt i AS: Pair

Läs mer

TDDC74 Programmering: Abstraktion och modellering Tentamen, lördag 27 augusti 2016, kl 8 12

TDDC74 Programmering: Abstraktion och modellering Tentamen, lördag 27 augusti 2016, kl 8 12 TDDC74 Programmering: Abstraktion och modellering Tentamen, lördag 27 augusti 2016, kl 8 12 Läs alla frågorna först, och bestäm dig för i vilken ordning du vill lösa uppgifterna. Skriv tydligt och läsligt.

Läs mer

Föreläsning 14 Innehåll

Föreläsning 14 Innehåll Föreläsning 14 Innehåll Abstrakta datatyper, datastrukturer Att jämföra objekt övriga moment i kursen Om tentamen Skriftlig tentamen både programmeringsuppgifter och teoriuppgifter Hitta fel i fingerade

Läs mer

Kursplanering Objektorienterad programmering

Kursplanering Objektorienterad programmering Kursplanering Objektorienterad programmering Fakta Ämne Programmering Poäng 40 Yh-poäng Kurskod YSYS-OOP Klass Systemutvecklare.NET 2 Syfte och koppling till yrkesrollen Syftet är att få en stabil grund

Läs mer

Lambdas. (och fler design patterns) Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2017

Lambdas. (och fler design patterns) Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2017 Lambdas (och fler design patterns) Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2017 Funktioner En funktion (i programmeringstermer) är en operation som tar ett eller flera argument,

Läs mer

Imperativ programmering

Imperativ programmering Imperativ programmering 1DL126 3p Imperativ programmering Jesper Wilhelmsson ICQ: 20328079 Yahoo: amigajoppe MSN / epost: jesperw@it.uu.se Rum: 1335 Tel: 471 1046 Imperativ programmering Vilka programmeringsspråk

Läs mer

Hitta k största bland n element. Föreläsning 13 Innehåll. Histogramproblemet

Hitta k största bland n element. Föreläsning 13 Innehåll. Histogramproblemet Föreläsning 13 Innehåll Algoritm 1: Sortera Exempel på problem där materialet i kursen används Histogramproblemet Schemaläggning Abstrakta datatyper Datastrukturer Att jämföra objekt Om tentamen Skriftlig

Läs mer

Funktionell programmering DD1361

Funktionell programmering DD1361 Funktionell programmering DD1361 Tupler Två eller fler (men ändligt) antal element. Elementen kan vara av olika typer. Ex: (1,2) :: (Integer, Integer) (( 2, hejsan ), True) ::? Tupel med två element ->

Läs mer

Uppgift 6A - Frekvenstabell

Uppgift 6A - Frekvenstabell Uppgift 6A - Frekvenstabell (defstruct par element antal) (defun unika-element (lista) (reduce #'(lambda (x y) (if (listp x) (if (find y x) x (cons y x)) (if (eq x y) x (list x y)))) lista)) (defun sortera-tabell

Läs mer

Idag: Par och listor. Scheme. DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

Idag: Par och listor. Scheme. DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29 Idag: Par och listor DA2001 (Föreläsning 6) Datalogi 1 Hösten 2010 1 / 29 Idag: Par och listor Hur hanterar man icke-numeriska problem? DA2001 (Föreläsning 6) Datalogi 1 Hösten 2010 1 / 29 Idag: Par och

Läs mer

Signalflödesmodellen. Två (gamla) exempel: Kvadratera alla jämna löv.

Signalflödesmodellen. Två (gamla) exempel: Kvadratera alla jämna löv. Strömmar (streams) De sista dagarna objekt med tillstånd modellerades som beräkningsobjekt med tillstånd. Isådana modeller är tiden modelerad (implicit) som en sekvens av tillstånd. För att kunna modellera

Läs mer

Procedurer och villkor

Procedurer 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 mer

Procedurer och villkor. Rekursiva procedurer. Exempel: n-fakultet

Procedurer 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 mer

Programmering II (ID1019)

Programmering II (ID1019) ID1019 Johan Montelius Instruktioner Betyg Programmering II (ID1019) 2019-03-08 Svaren skall lämnas på dessa sidor, använd det utrymme som nns under varje uppgift för att skriva ner ditt svar (inte på

Läs mer

TDDC74 Programmering, abstraktion och modellering DUGGA 3

TDDC74 Programmering, abstraktion och modellering DUGGA 3 1 Tekniska högskolan vid Linköpings universitet Institutionen för datavetenskap Anders Haraldsson TDDC74 Programmering, abstraktion och modellering DUGGA 3 Torsdag 4 mars 2010 kl 8-10 Namn: Personnummer:

Läs mer

Dataabstraktion. TDDD73 Funktionell och impterativ programmering i Python Föreläsning 12. Peter Dalenius Institutionen för datavetenskap

Dataabstraktion. TDDD73 Funktionell och impterativ programmering i Python Föreläsning 12. Peter Dalenius Institutionen för datavetenskap Dataabstraktion TDDD73 Funktionell och impterativ programmering i Python Föreläsning 12 Peter Dalenius Institutionen för datavetenskap 2013-11-12 Översikt Vad är abstraktion? Vad är en abstrakt datatyp?

Läs mer

OMTENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 08:15-13:15

OMTENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 08:15-13:15 OMTENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B03 170331 kl. 08:15-13:15 Ansvarig Lärare: Donald F. Ross Hjälpmedel: Inga. Algoritmerna finns i de respektive uppgifterna eller i bilagarna. *** OBS ***

Läs mer

TDDC74 Programmering: Abstraktion och modellering Datortenta , kl 08-12

TDDC74 Programmering: Abstraktion och modellering Datortenta , kl 08-12 TDDC74 Programmering: Abstraktion och modellering Datortenta - 2019-05-27, kl 08-12 Läs alla frågorna först och bestäm dig för i vilken ordning du vill lösa uppgifterna. Uppgifterna är inte nödvändigtvis

Läs mer

OMTENTAMEN I PROGRAMSPRÅK -- DVG C kl. 08:15-13: 15

OMTENTAMEN I PROGRAMSPRÅK -- DVG C kl. 08:15-13: 15 OMTENTAMEN I PROGRAMSPRÅK -- DVG C01 130823 kl. 08:15-13: 15 Ansvarig Lärare: Donald F. Ross Hjälpmedel: Bilaga A: BNF-definition Betygsgräns: Kurs: Max 60p, Med beröm godkänd 50p, Icke utan beröm godkänd

Läs mer

Objektorienterad programmering

Objektorienterad programmering Objektorienterad programmering Aletta Nylén http://user.it.uu.se/~aletta Epost: aletta.nylen@it.uu.se Rum: 1216 Kursinfo Lärare: Aletta Nylén Jesper Wilhelmsson Litteratur: Object-Oriented Software Development

Läs mer

Introduktion till programmering. Programspråk och paradigmer

Introduktion till programmering. Programspråk och paradigmer Introduktion till programmering Programspråk och paradigmer Vad är ett programspråk? Aprogramming languageis a formal constructedlanguagedesigned to communicate instructions to a machine, particularly

Läs mer

TDDE44 Programmering, grundkurs

TDDE44 Programmering, grundkurs TDDE44 Programmering, grundkurs Föreläsning 1 Jody Foo, jody.foo@liu.se Föreläsningsöversikt Vad ingår i "Programmering, grundkurs"? Kursöversikt Datorer, program, programmeringsspråk Kort om nästa föreläsning

Läs mer

Typsystem. Typsystem... Typsystem... Typsystem... 2 *

Typsystem. Typsystem... Typsystem... Typsystem... 2 * Typsystem Typsystem finns i alla programmeringsspråk. Avsikten med typsystem är att kontrollera att uttryck är säkra i den bemärkelsen att innebörden i operanderna är klar och inte är motsägelsefull och

Läs mer

TDDC74 - Lektionsmaterial C

TDDC74 - Lektionsmaterial C TDDC74 - Lektionsmaterial C Lektioner innehåller uppgifter av varierande slag. En del är mer diskussionsartade, andra mer experimentella. Ni behöver inte lämna in eller visa upp lösningarna på dessa för

Läs mer

TDDC74 Programmering: Abstraktion och modellering Datordugga 2 - exempel

TDDC74 Programmering: Abstraktion och modellering Datordugga 2 - exempel TDDC74 Programmering: Abstraktion och modellering Datordugga 2 - exempel Läs alla frågorna först och bestäm dig för i vilken ordning du vill lösa uppgifterna. Uppgifterna är inte nödvändigtvis i svårighetsordning.

Läs mer

Typsystem. DA2001 (Föreläsning 23) Datalogi 1 Hösten / 19

Typsystem. DA2001 (Föreläsning 23) Datalogi 1 Hösten / 19 Typsystem Typsystem finns i alla programmeringsspråk. Avsikten med typsystem är att kontrollera att uttryck är säkra i den bemärkelsen att innebörden i operanderna är klar och inte är motsägelsefull och

Läs mer

Deklarationer/definitioner/specifikationer

Deklarationer/definitioner/specifikationer Deklarationer/definitioner/specifikationer Konstantdefinitioner innebär att ett namn binds och sätts att referera till ett värde som beräknas vid kompileringen/interpreteringen och som under programmets

Läs mer

SMD 134 Objektorienterad programmering

SMD 134 Objektorienterad programmering SMD 134 Objektorienterad programmering Lärare: pl@cdt.luth.se A 3113 Tomas Klockar klockar@sm.luth.se A 3019 Mats Folke folke@sm.luth.se A 3019 Labhandledare: Natasja Saburova Fredrik Jonsson Lars Persson

Läs mer

TDP002 - Imperativ programmering

TDP002 - Imperativ programmering TDP002 - Imperativ programmering Algoritmer Pontus Haglund Institutionen för datavetenskap Anpassatt från material ursprungligen av: Eric Elfving 1 Datatyper Tal UTF-8 2 Procedurell abstraktion Repetition

Läs mer

Länkade strukturer, parametriserade typer och undantag

Länkade strukturer, parametriserade typer och undantag Länkade strukturer, parametriserade typer och undantag Programmering för språkteknologer 2 Sara Stymne 2013-09-18 Idag Parametriserade typer Listor och länkade strukturer Komplexitet i länkade strukturer

Läs mer

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet ITK:P1 Föreläsning 1 Att programmera i språket Java DSV Peter Mozelius Programmering Olika typer av programmering som t ex: o Imperativ programmering (C, Pascal m fl) o Funktionell programmering (Lisp,

Läs mer

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

Repetition 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 mer

allt.cl Page 1 of 17 Date: torsdag 7 december 2006

allt.cl Page 1 of 17 Date: torsdag 7 december 2006 allt.cl Page 1 of 17 Slumpspelaren Väljer slumpvis en flytt ur möjliga flyttar. (defun skapa-slump-spelare (namn bricktyp) "lisp-sträng x bricka -> spelare" (skapa-spelare #'slump-gör-flytt namn bricktyp))

Läs mer

Översikt. Programmering tillämpningar och datastrukturer. Vad kursen täcker. Lärare. Rekommenderad litteratur. Kursmål 729G58 (HKGBB7)

Översikt. Programmering tillämpningar och datastrukturer. Vad kursen täcker. Lärare. Rekommenderad litteratur. Kursmål 729G58 (HKGBB7) Översikt Programmering tillämpningar och datastrukturer 729G58 (HKGBB7) Kursinformation Objektorienterad programmering: Klasser och objekt Arv Polymorfism Metoder Programexempel Programmering tillämpningar

Läs mer

TDDC74 PROGRAMMERING: ABSTRAKTION OCH MODELLERING VT 2017

TDDC74 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 mer

Objekt-orienterad Programmering och Design. TDA551 Alex Gerdes, HT-2016

Objekt-orienterad Programmering och Design. TDA551 Alex Gerdes, HT-2016 Objekt-orienterad Programmering och Design TDA551 Alex Gerdes, HT-2016 Kursteamet Dr. Alex Gerdes kursansvarig, föreläsare Dr. Niklas Broberg examinator, (föreläsare) Fredrik Sjöholm handledare Johan Andersson

Läs mer

TDDC74 Programmering: Abstraktion och modellering Dugga 1, kl 14-16

TDDC74 Programmering: Abstraktion och modellering Dugga 1, kl 14-16 TDDC74 Programmering: Abstraktion och modellering Dugga 1, 2017-02-22 kl 14-16 Läs alla frågorna först och bestäm dig för i vilken ordning du vill lösa uppgifterna. Uppgifterna är inte nödvändigtvis i

Läs mer

Objekt-orienterad programmering och design. DIT953 Niklas Broberg, 2018

Objekt-orienterad programmering och design. DIT953 Niklas Broberg, 2018 Objekt-orienterad programmering och design DIT953 Niklas Broberg, 2018 Kursteamet Niklas Broberg kursansvarig, föreläsare, examinator Johannes Åman Pohjola föreläsare Assistenter: Karin Wibergh Sarosh

Läs mer

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34 Tentamen Datalogi I, grundkurs med Java 10p, 2D4112, 2002-2003 Lördagen den 30 november 2002 kl 9.00 14.00, salar E33, E34 Inga hjälpmedel 30 poäng ger säkert godkänt, 40 poäng ger betyg 4 50 poäng ger

Läs mer

Föreläsning 2 Datastrukturer (DAT037)

Föreläsning 2 Datastrukturer (DAT037) Föreläsning 2 Datastrukturer (DAT037) Fredrik Lindblad 1 2016-11-02 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt. Se http://www.cse.chalmers.se/edu/year/2015/course/dat037 Tidskomplexitet

Läs mer

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

PROGRAMMERING. Ämnets syfte. Kurser i ämnet PROGRAMMERING Ämnet programmering behandlar programmeringens roll i informationstekniska sammanhang som datorsimulering, animerad grafik, praktisk datoriserad problemlösning och användaranpassad konfiguration

Läs mer

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

TDDC74 Programmering: Abstraktion och modellering Dugga 2, , kl 17-19 TDDC74 Programmering: Abstraktion och modellering Dugga 2, 2017-04-06, kl 17-19 Läs alla frågorna först och bestäm dig för i vilken ordning du vill lösa uppgifterna. Uppgifterna är inte nödvändigtvis i

Läs mer

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

Imperativ 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 mer

TDDC74 Programmering: Abstraktion och modellering Tentamen, lördag 29 augusti 2015, kl 8 12

TDDC74 Programmering: Abstraktion och modellering Tentamen, lördag 29 augusti 2015, kl 8 12 TDDC74 Programmering: Abstraktion och modellering Tentamen, lördag 29 augusti 215, kl 8 12 Läs alla frågorna först, och bestäm dig för i vilken ordning du vill lösa uppgifterna. Skriv tydligt och läsligt.

Läs mer

TDDC74 Programmering: Abstraktion och modellering Datortenta

TDDC74 Programmering: Abstraktion och modellering Datortenta TDDC74 Programmering: Abstraktion och modellering Datortenta - 2017-08-26 Läs alla frågorna först och bestäm dig för i vilken ordning du vill lösa uppgifterna. Uppgifterna är inte nödvändigtvis i svårighetsordning.

Läs mer

Våra enkla funktioner eller procedurer

Vå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 mer

Sökning och sortering

Sökning och sortering Sökning och sortering Programmering för språkteknologer 2 Sara Stymne 2013-09-16 Idag Sökning Analys av algoritmer komplexitet Sortering Vad är sökning? Sökning innebär att hitta ett värde i en samling

Läs mer

Föreläsning 15: Repetition DVGA02

Föreläsning 15: Repetition DVGA02 Föreläsning 15: Repetition DVGA02 Vad handlar kursen om? Kursen kan i grova drag delas upp i tre delar: 1. Objekt-orienterad programmering 2. Grafiska användargränssnitt 3. Datastrukturer Dessutom genomsyras

Läs mer

Objekt-orienterad Programmering och Design. TDA552 Alex Gerdes, HT-2018

Objekt-orienterad Programmering och Design. TDA552 Alex Gerdes, HT-2018 Objekt-orienterad Programmering och Design TDA552 Alex Gerdes, HT-2018 Kursteamet Dr. Alex Gerdes examinator och föreläsare (Dr. Niklas Broberg föreläsare) Handledare: Sólrún Halla Einarsdóttir Yazan Ghafir

Läs mer

Inledning. Vad är ett datorprogram, egentligen? Olika språk. Problemlösning och algoritmer. 1DV433 Strukturerad programmering med C Mats Loock

Inledning. Vad är ett datorprogram, egentligen? Olika språk. Problemlösning och algoritmer. 1DV433 Strukturerad programmering med C Mats Loock Inledning Vad är ett datorprogram, egentligen? Olika språk Problemlösning och algoritmer 1 (14) Varför använda en dator? Genom att variera de program som styr datorn kan den användas för olika uppgifter.

Läs mer

Föreläsning 6: Introduktion av listor

Fö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 mer

BEGREPP HITTILLS FÖRELÄSNING 2 SAMMANSATTA UTTRYCK - SCHEME DATORSPRÅK

BEGREPP 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 mer

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

Föreläsningsanteckningar, Introduktion till datavetenskap HT S4 Datastrukturer. Tobias Wrigstad 1 Datatyper Tobias Wrigstad Det finns flera olika typer av (slags) data Olika datatyper har olika egenskaper. T.ex. är ett personnummer inte ett tal. (Den sista siffran skall stämma enligt den s.k. Luhnalgoritmen

Läs mer

6. Ge korta beskrivningar av följande begrepp a) texteditor b) kompilator c) länkare d) interpretator e) korskompilator f) formatterare ( pretty-print

6. Ge korta beskrivningar av följande begrepp a) texteditor b) kompilator c) länkare d) interpretator e) korskompilator f) formatterare ( pretty-print Datalogi I, grundkurs med Java 10p, 2D4112, 2002-2003 Exempel på tentafrågor på boken Lunell: Datalogi-begreppen och tekniken Obs! Andra frågor än dessa kan komma på tentan! 1. Konvertera talet 186 till

Läs mer