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

Storlek: px
Starta visningen från sidan:

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

Transkript

1 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 och throw unwind-protect - Lexical closure (kap 19) generatorer objektorienterad programmering

2 2 Det finns två olika slags omgivningar: Statiska / lexikala omgivning. Hur ser läget ut i koden då funktionerna definieras. Dynamiska omgivningen. Hur ser läget ut då vi exekverar programmet. Många konstruktioner i programspråken kan tolkas relativt en av dessa två omgivningar eller båda. Vi skall studera: Fria variabler, hur man finner värdet på dessa i båda dessa omgivningar. Icke-normala återhopp, dvs hur man kan avsluta beräkningen och återgår till andra positioner i programmet, t ex för felhantering. Funktioner / lexical closure. Funktioner definieras i en omgivning och kan sedan som dataobjekt lämna denna omgivning. Ger en förklaring varför vi använder function i stället för quote för funktionsobjekt. Detta kan utnyttjas till intressanta konstruktioner t ex generatorer, och objektorientering.

3 3 Bindning av variabler Blockstruktur - räckvidd (scope) x l e f g (lambda (e) (+ e x)) x h (defun f (x) (labels ((g (l) (cons x (mapcar # (lambda (e) (+ e x)) l))) (h (x) (+ 2 x))) (g (cons (h x) (2 3)))))

4 4 Bindning av variabler Fri variabel (defun f (x) (+ x y)) Statisk (lexikalisk) bindning: (defun g (y z) (labels ((f (x) (+ x y))) (f z))) (g 10 20) => 30 En fri variabel slås upp i närmast omslutande block (följer blockstrukturen). Entydigt bestämd från programkoden. Vanligen standard i programspråk.

5 5 Dynamisk bindning: (defun f (x) (declare (special y)) (+ x y)) 1 (defun g (y z) (declare (special y)) (f z)) Senast bundna y på stacken. Följer exekveringen av programmet. Den fria variabeln är ej entydigt bestämd. 2 (defun h (x y z) (declare (special y)) (+ x (f z))) värdet på y? värdet på y? f f x 20 x 3 h g x 1 y 10 y 2 z 20 z 3 Anrop fall 1 Anrop fall 2

6 6 Det kan bli problem med att komma åt andra funktioners lokala variabler och frågan är hur man kan lösa detta. Detta kan vara ett problem i projektarbetet. Två mer motsatta modeller. Hela programmet/funktionen bildar en enhet genom blockstruktur: Programmet består av egna enheter/funktioner:

7 7 Vi illustrerar problemet med ett litet exempel ur läroboken sid 275. Med kommandon (lagra och hämta) läggs personer till på en stack och kan tas bort. Skulle t ex kunna vara kommandon i en dialog (men är ej viktigt för att illustrera problemet) (setq några-kommandon ((lagra. anna) (lagra. karin) (hämta) (lagra. anders) (lagra. eva) (hämta) (hämta) (lagra. peter) (hämta))) (person-bearbetning några-kommandon) => (peter anders eva karin)

8 8 Exempel A Alla globala funktioner (defun person-bearbetning (kommandon) (let ((*person-stack* ()) (resultat ())) (mapc # (lambda (kommando) (case (car kommando) (lagra (lagra (cdr kommando))) (hämta (setq resultat (cons (hämta) resultat)))))) kommandon) resultat)) (defun lagra (person) (setq *person-stack* (cons person *person-stack*))) (defun hämta () (prog1 (first *person-stack*) (setq *person-stack* (rest *person-stack*)))) CL-USER(4): (person-bearbetning några-kommandon) Error: Attempt to take the value of the unbound variable *PERSON-STACK*. Funktionen lagra kan ej komma åt en lokal variabel i person-bearbetning. Båda funktionerna är definierade på samma nivå.

9 9 Exempel B Strukturera med lokala funktioner (defun person-bearbetning (kommandon) (let ((*person-stack* ()) (resultat ())) (labels ((lagra (person) (setq *person-stack* (cons person *person-stack*))) (hämta () (prog1 (first *person-stack*) (setq *person-stack* (rest *person-stack*))))) (mapc # (lambda (kommando) (case (car kommando) (lagra (lagra (cdr kommando))) (hämta (setq resultat (cons (hämta) resultat))))) kommandon) resultat))) CL-USER(5): (person-bearbetning några-kommandon) (PETER ANDERS EVA KARIN) Åtkomlig genom räckviddsregeln = närmast omslutande block.

10 10 Exempel C Globala funktioner och global variabel (defun person-bearbetning (kommandon) (let ((*person-stack* ()) (resultat ())) (mapc # (lambda (kommando) (case (car kommando) (lagra (lagra (cdr kommando))) (hämta (setq resultat (cons (hämta) resultat)))))) kommandon) resultat)) (defun lagra (person) (setq *person-stack* (cons person *person-stack*))) (defun hämta () (prog1 (first *person-stack*) (setq *person-stack* (rest *person-stack*)))) (setq *person-stack* ()) CL-USER(6): (person-bearbetning några-kommandon) (PETER ANDERS EVA KARIN) CL-USER(7): *person-stack* (ANNA) Man vill undivka globala variabler. man kan t ex bara ha en personstack. Man kanskse vill kunna ha flera.

11 11 Exempel D. Globala funktioner och lokal variabel med dynamisk bindning (defun person-bearbetning (kommandon) (let ((*person-stack* ()) (resultat ())) (declare (special *person-stack*)) (mapc # (lambda (kommando) (case (car kommando) (lagra (lagra (cdr kommando))) (hämta (setq resultat (cons (hämta) resultat)))))) kommandon) resultat)) (defun lagra (person) (declare (special *person-stack*)) (setq *person-stack* (cons person *person-stack*))) (defun hämta () (declare (special *person-stack*)) (prog1 (first *person-stack*) (setq *person-stack* (rest *person-stack*)))) CL-USER(8): (person-bearbetning några-kommandon) (PETER ANDERS EVA KARIN) Genom ordningen på anropen så kommer vi åt en tidigare införd lokala variaberl som fortfarande finns kvar på.

12 12 Icke-normala återhopp används oftast vid felhantering. Normalt går man in i en funktion, gör alla beräkningar och avslutar då allt är klart. Men vi kan avsluta funktionen/blocket i förtid Återhopp inom statisk omgivning: return / return-from Återhopp inom dynamisk omgivning: catch / throw Möjlighet att återställa sidoeffekter med: unwind-protect

13 13 Återhopp inom statisk omgivning (defun f (x) namn på block (labels ((g (y) resultatuttryck (when (< y 0) (return-from f neg)) (+ y 10))) (print (+ (g x) 1)))) Vid fel sker direkt uthopp med return-from ur först g och sedan f och ger värdet av resultatuttrycket som värde av anropet till f. (defun h (x) (let ((value (f x))) (if (eq value neg) 0 value))) (h -5) ; fel -> ingen utskrift => 0 (h 5) ; ok öka 5 med 10 och sedan 1 16 ; utskrift =>16

14 14 Återhopp inom dynamisk omgivning (catch catch-label uttryck) (throw catch-label värdeuttryck) catchlabel uttryck att beräkna (defun p (x) (let ((value (catch error (fn x)))) (if (eq value arg-error)... fel har uppstått bearbeta värde...))) (defun fn (x)... (throw error arg-error)... )) catchlabel resultatuttryck

15 15 Exempel Vi skall hitta elementen före ett givet element på en lista. (first-part x (a b x c)) = > (a b) Normalfallet är att elementet skall finnas på listan, men man vill lägga in en kontroll om man inte hittar elementet och i så fall signalera någon typ av fel. Normal definition (utan felkontroll) (defun first-part (x l) (cond ((eq x (first l)) ()) (t (cons (first l) (first-part x (rest l))))) Om ett fel uppstår så har vi gjort ett stort antal rekursiva anrop och vill inte backa och returnera på ett vanligt sätt, utan direkt kunna återgå till ett högre anrop.

16 16 Vi vill signalera något felvärde, t ex element-not-in-list (first-part y (a b x c)) = > element-not-in-list Vi strukturer problemet i två funktioner. (defun first-part (e l) (catch element-error (first-part-hlp e l))) (defun first-part-hlp (e l) (cond ((endp l) (throw element-error element-not-in-list)) ((eq e (first l)) ()) (t (cons (first l) (first-part-hlp e (rest l))))) Anropsstruktur: first-part -> first-part-hlp -> first-part-hlp -> first-part-hlp -> first-part-hlp -> first-part-hlp -> direkt återhopp till first-part

17 17 Alternativt ett statiskt hopp om first-part-hlp görs lokal. (defun first-part (e l) (labels ( (first-part-hlp (e l) (cond ((endp l) (return-from first-part element-not-in-list)) ((eq x (first l)) ()) (t (cons (first l) (first-part-hlp e(rest l)))))) (first-part-hlp e l))) Direkt uthopp, dvs lämnar alla anrop, som ej ännu har slutförts.

18 18 Dynamiskt återhopp Följer den dynamiska omgivningen, dvs följer i tur och ordning funktionsanropen (som ligger på stacken) och ser om det finns en catch-label med givet namn. (defun p (x) (labels ((q (y)... (throw error felkod)...) (r (x)... (catch error (q 20))...)) )) (catch error (r 10))... (catch error (q))

19 19 Återställning (unwind-protect uttryck återställningsuttryck) Exempel: (unwind-protect (bearbeta-data fil) (when (fil-är-öppen? fil) (stäng fil)))

20 20 Funktionsobjekt - Lexical closure Vad händer med fria variabler om en funktion returneras som värde från sin statiska omgivning? y (lambda (x) (+ x y)) returneras som värde Med function sparas den statiska omgivningen, dvs fria variabler (variabeln y ovan) behåller sitt ursprungliga värde.

21 21 Man skapar ett sk lexical closure. Sparade värden kan även ändras! Vad kan det användas till? Man kan se en sådan funktion / lexical closure som ett objekt som bibehåller ett tillstånd. När man returnerar från en vanlig funktion försvinner ju alla bindningar av parametrar och lokala variabler. y (lambda (x) (+ x y))

22 22 Generatorer - Skapa flip-flop Funktionen returnerar 0, 1, 0, 1 etc (defun skapa-flip-flop () (let ((tillstånd 0)) # (lambda () (prog1 tillstånd (if (eq tillstånd 0) (setq tillstånd 1) (setq tillstånd 0)))))) (setq f1 (skapa-flip-flop)) (setq f2 (skapa-flip-flop)) (funcall f1) => 0 (funcall f1) => 1 (funcall f1) => 0 (funcall f2) => 0 (funcall f2) => 1 (funcall f1) => 1 Vi har två generatorer (funktioner) med sina egna lokala variabeler tillstånd. Global variabel kan ju ej användas. Då kan bara en generator skapas.

23 23 Objektorienterad programmering. Idé: Fokusera dataobjektet. Objektet har en datatyp. Datatyperna ingår i en hierarki av typer. Associera värden (tillstånd) med objektet och funktioner (metoder) med objektet/typerna. Man skickar meddelanden till objekt. skriv ut dig addera 10 till dig hur gammal är du? Objektorienterad packetering: I Lisp kan vi representera dessa objekt med lexical closures. Vad vi får med den objektorienterade packeteringen är: 1) Interna tillstånden, data och metoder blir gömda. Kan endast nå via meddelanden till objektet. (information hiding) 2) Enda sättet att komma åt innehållet är vi meddelanden.

24 24 Exempel. Bankkonton Varje bankkonto har med sig associerat följande tillstånd: - kontoställningen - en funktion som beräknar räntan (på just detta konto) Ett bankkonto kan ta emot följande meddelanden: - sätt in x kr - ta ut x kr - skriv ut kontoställningen - vad är räntan (på årsbasis)

25 25 (defun skapa-bankkonto (&optional (konto 0) (ränte-fn # standard-ränte-fn)) (labels ((bankkonto (meddelande &optional argument) (cond ((eq meddelande in) (setq konto (+ konto argument)) ok) ((eq meddelande ut) (cond ((< konto argument) konto-för-litet) (t (setq konto (- konto argument)) ok))) ((eq meddelande ränta) (funcall ränte-fn konto)) ((eq meddelande konto) konto) (t (error "Fel meddelande: ~s" meddelande))))) # bankkonto)) Funktionen returnerar bankkonto i en omgivning där bankkonto, konto och ränte-fn har lokala värden. Denna funktion tar emot ett meddelande. Brukar kallas dispatch-funktion. (setq mitt-konto (skapa-bankkonto 0 # (lambda (konto) (* 0.08 konto)))) Värdet av mitt-konto är en lexical closure bankkonto konto - 0 ränte-fn

26 26 (funcall mitt-konto in 100) ; sätt in 100:- => ok (funcall mitt-konto konto) ; vad finns på kontot? => 100 (funcall mitt-konto in 200) ; sätt in 200:- => ok (funcall mitt-konto ut 50) ; ta ut 50:- => ok (funcall mitt-konto ut 300) ; försök ta ut 300:- => kontot-för-litet (funcall mitt-konto konto) ; vad finns på konto? => 250 (funcall mitt-konto ränta) ; räntan? => 20 (setq nytt-konto ; skapa ett nytt konto med (skapa-bankkonto ; 200:- och 10% ränta 200 # (lambda (konto) (* 0.10 konto)))) (funcall nytt-konto ut 125) => ok (funcall nytt-konto in 250) => ok (funcall nytt-konto konto) ; ta ut 125:- på nya kontot ; sätt in 250:- på gamla kontot ; kontoställningen på nya? Man skulle kunna definiera funktioner för respektive metod: (defun ta-ut (konto belopp) (funcall konto ut belopp)) (ta-ut nytt-konto 200) ; nytt-konto är en lexical closure

27 27 Nu kan vi förklara skillnaden med att använda quote eller function för lambda-uttryck. Med quote: (defun f (x) (quote (lambda (y) (+ x y)))) (funcall (f 1) 5) Error: Attempt to take the value of the unbound variable X. Formella parametern x är känt vid skapartillfället men ej vid exekveringstillfället. (setq x 10) (funcall (f 1) 5) => 15 Här är däremot den globala variabeln x känd. Med function: (defun g (x) (function (lambda (y) (+ x y))))) (funcall (g 1) 5) => 6 Formella parametern x är känt vid skapartillfället och sparas till exekveringstillfället.

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

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

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

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

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

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

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: 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

I dag: Blockstruktur, omgivningar, problemlösning

I dag: Blockstruktur, omgivningar, problemlösning Förra gången Förra gången: Rekursiva procedurer I dag I dag: Blockstruktur, omgivningar, problemlösning (define add-1 (define add-2 (lambda (a b) (lambda (a b) (if (= a 0) (if (= a 0) b b (+ 1 (add-1 (add-2

Läs mer

Uppgift 4A - Definition av enkla funktioner

Uppgift 4A - Definition av enkla funktioner Uppgift 4A - Definition av enkla funktioner (defun start-klockslag (tidsperiod) "tidsperiod -> klockslag" (typkontroll tidsperiod #'tidsperiod?) (first (packa-upp tidsperiod))) (defun slut-klockslag (tidsperiod)

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

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

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

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

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

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

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

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

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

Tentamen i Introduktion till programmering

Tentamen 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 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

Omgivningar. Omgivningar är viktiga eftersom de avgör vilka namn som är synliga och därmed dessas innebörd och de värden som är förknippade med dem.

Omgivningar. Omgivningar är viktiga eftersom de avgör vilka namn som är synliga och därmed dessas innebörd och de värden som är förknippade med dem. Omgivningar Omgivningar är viktiga eftersom de avgör vilka namn som är synliga och därmed dessas innebörd och de värden som är förknippade med dem. (define (sqrroot c) (define (fixpoint guess c eps) (define

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

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

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

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

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

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

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

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

Bankkonto - ö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 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

Objektorientering: Lagring, räckvidd och livstid

Objektorientering: Lagring, räckvidd och livstid TDDD78, TDDE30, 729A85 jonas.kvarnstrom@liu.se 2019 Objektorientering: Lagring, räckvidd och livstid Tre sorters variabler, två sorters metoder Räckvidd och livstid 2 Variabler (lokala och medlemsvariabler)

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

TDDD78 Objektorientering: Lagring och livstid

TDDD78 Objektorientering: Lagring och livstid jonas.kvarnstrom@liu.se 2017 TDDD78 Objektorientering: Lagring och livstid Tre sorters variabel (1): Lokal 3 Deklareras i en metod Lokal variabel Varje anrop får sin egen "kopia": Två anrop till foo()

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

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

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

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

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

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

Lösningsförslag. TDDC74 Programmering: Abstraktion och modellering. Dugga 3 (provkod TEN1), Tid: kl 14-16, Datum:

Lösningsförslag. TDDC74 Programmering: Abstraktion och modellering. Dugga 3 (provkod TEN1), Tid: kl 14-16, Datum: Dugga 3 (provkod TEN1), Tid: kl 14-16, Datum: 2013-03-12 Lösningsförslag Dugga 3 (provkod TEN1), Tid: kl 14-16, Datum: 2013-03- 12 Läs alla frågorna först och bestäm dig för den ordning som passar dig

Läs mer

Objektorientering: Lagring och livstid

Objektorientering: Lagring och livstid TDDD78, TDDE30, 729A85 jonas.kvarnstrom@liu.se 2018 Objektorientering: Lagring och livstid Tre sorters variabler Tre sorters variabel (1): Lokal 2 Lokal variabel Deklareras inuti en metod Vid varje anrop

Läs mer

Föreläsning 3-4 Innehåll

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

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2 AID-nummer: Datum: 2014-12-18 Kurskod: 725G61 Provkod: LAB1 Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2 Skrivningstid: 2014-12-18 klockan 8.00-10.00. Hjälpmedel: Inga. För varje fråga

Läs mer

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

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

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

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6 Laboration 2 Objektorienterad programmering i Java I Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6 Syfte: Att kunna använda sig av olika villkors- och kontrollflödeskonstruktioner

Läs mer

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

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

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

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList. Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Objektorienterad programvaruutveckling GU (DIT011) Föreläsning 3 Innehåll Lite om felhantering och Exceptions Mer om variabler och parametrar

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

Programmering I Tobias Wrigstad fredag, 2009 augusti 28

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

Objektorienterad Programmering (TDDC77)

Objektorienterad Programmering (TDDC77) Objektorienterad Programmering (TDDC77) Föreläsning VI: eclipse, felsökning, felhantering Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 Outline Felhantering Eclipse Felsökning Command line argumenter

Läs mer

Problemlösning och funktioner Grundkurs i programmering med Python

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

Command line argumenter. Objektorienterad Programmering (TDDC77) Vad blir resultatet? Nu då? Ahmed Rezine. Hösttermin 2016

Command line argumenter. Objektorienterad Programmering (TDDC77) Vad blir resultatet? Nu då? Ahmed Rezine. Hösttermin 2016 Command line argumenter Objektorienterad Programmering (TDDC77) Föreläsning VI: eclipse, felsökning, felhantering Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 /* Cla. java * Programmet illustrerar

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

Övningsuppgifter kapitel 8

Övningsuppgifter kapitel 8 Inst. för Systemteknik Introduktion till programmering (SMD 180), 5 p Övningsuppgifter kapitel 8 1. Listor är en viktig datatyp i Python. Hur definierar kursboken lista? Vad kallas de värden som tillsammans

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

Fö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 DD1316 Mikael Djurfeldt Föreläsning 2 Programmeringsteknik och C Python introduktion Utskrift Inläsning Variabler Datatyp Aritmetiska operatorer Omvandling

Läs mer

Programmering i C++ EDA623 Objektorienterad programutveckling. EDA623 (Föreläsning 5) HT 2013 1 / 33

Programmering i C++ EDA623 Objektorienterad programutveckling. EDA623 (Föreläsning 5) HT 2013 1 / 33 Programmering i C++ EDA623 Objektorienterad programutveckling EDA623 (Föreläsning 5) HT 2013 1 / 33 Objektorienterad programutveckling Innehåll Grundläggande begrepp Relationer mellan objekt Grafisk representation

Läs mer

Grundkurs Programmering

Grundkurs Programmering HI124 Grundkurs Programmering F7b: Funktioner på djupet! A. Cajander, STH 6 1 5 42 3.14f a float char short circuit order of subexp eval. Dagens fokus = + - * / % ++ -- + - * / % & ^ > ==!= > < >=

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

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

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

Läs mer

Funktioner. Linda Mannila

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

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

Att förstå hur man konstruerar modulära program Att kunna skapa nya funktioner Att förstå hur data skickas mellan funktioner Lektion 4, del 1, kapitel 10 Funktioner i JavaScript Inlärningsmål Att förstå hur man konstruerar modulära program Att kunna skapa nya funktioner Att förstå hur data skickas mellan funktioner Introduktion

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

Datalogi, grundkurs 1

Datalogi, grundkurs 1 Datalogi, grundkurs 1 Fiktiv Tentamen Lösningsförslag och kommentarer 1. Lösningsförslaget nedan förutsätter ingenting om filens innehåll och är alltså mer generell än nödvändigt: alfa= ABCDEFGHIJKLMNOPQRSTUVWXYZÅÄÖ

Läs mer

TDDC74 Programmering: Abstraktion och modellering Dugga 3, kl 14 16, 25 mars 2015

TDDC74 Programmering: Abstraktion och modellering Dugga 3, kl 14 16, 25 mars 2015 TDDC74 Programmering: Abstraktion och modellering Dugga 3, kl 14 16, 25 mars 2015 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

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

Datalogi, grundkurs 1. Lösningsförslag till tentamen

Datalogi, grundkurs 1. Lösningsförslag till tentamen Datalogi, grundkurs 1 Lösningsförslag till tentamen 10 december 2008 1. a. Man testar med typiska värden, gränsvärden och värden utanför specificerad indatavärdemängd. Helst med alla permutationer av

Läs mer

Outline. I Vi kan lätt göra samma sak för fyra variabler... I Hur gör vi för 400 inlästa värden? I Ofta behöver man flera likadana variabler

Outline. I Vi kan lätt göra samma sak för fyra variabler... I Hur gör vi för 400 inlästa värden? I Ofta behöver man flera likadana variabler Outline Objektorienterad Programmering (TDDC77) Föreläsning V: arrayer, metoder, räckvidd (scope), eclipse Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 Vända om inlästa värden Vända om inlästa

Läs mer

Design av en klass BankAccount som representerar ett bankkonto

Design av en klass BankAccount som representerar ett bankkonto Klasser Kommer ta upp följande begrepp: Design av en klass Implementera en klass Testa en klass med en mainmetod Instansvariabler, lokala variabler, formella parametrar, aktuella parametrar och variablers

Läs mer

Dynamiskt minne. Vad är dynamiskt minne Motivering Hur gör man i C Övningar

Dynamiskt minne. Vad är dynamiskt minne Motivering Hur gör man i C Övningar Dynamiskt minne Agenda Vad är dynamiskt minne Motivering Hur gör man i C Övningar Minne Datorns primärminne används till olika ändamål De flesta system partitionerar minnet efter användningen: Programkoden

Läs mer

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

Kopiering av objekt i Java

Kopiering av objekt i Java 1 (6) Kopiering av objekt i Java Först När du läser detta papper bör du samtidigt studera dokumentationen för klasserna Object, Cloneable (java.lang) och ArrayList (java.util). Mycket blir klarare genom

Läs mer

Funktionens deklaration

Funktionens deklaration Funktioner - 1 Teknik för stora program #include #include......... cout

Läs mer

TDDC77 Objektorienterad Programmering

TDDC77 Objektorienterad Programmering TDDC77 Objektorienterad Programmering Föreläsning 5 Sahand Sadjadee IDA, Linköpings Universitet Hösttermin 2018 Outline Arrayer Metoder Räckvidd och Livslängd Arrayer Vända om inlästa värdena Vända om

Läs mer

SCB :-0. Uno Holmer, Chalmers, höger 2 Ex. Induktiv definition av lista. // Basfall

SCB :-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 mer

Föreläsning 8 - del 2: Objektorienterad programmering - avancerat

Föreläsning 8 - del 2: Objektorienterad programmering - avancerat Föreläsning 8 - del 2: Objektorienterad programmering - avancerat Johan Falkenjack johan.falkenjack@liu.se Linköpings universitet Sweden December 4, 2013 1 Innehåll Arv och andra viktiga begrepp Abstrakta

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

Java, klasser, objekt (Skansholm: Kapitel 2)

Java, klasser, objekt (Skansholm: Kapitel 2) Java, klasser, objekt (Skansholm: Kapitel 2) Uppsala Universitet 11 mars 2005 Objectorienterad programmering Sida 1 Vad är en klass? En klass är ett sätt att beskriva en mängd objekt och deras gemensamma

Läs mer

Sätt att skriva ut binärträd

Sä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 mer

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering. EDAA20 Programmering och databaser Mål komprimerat se kursplanen för detaljer Läsperiod 1 7.5 hp anna.aelsson@cs.lth.se http://cs.lth.se/edaa20 Mer information finns på kursens webbsida samt på det utdelade

Läs mer

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

Funktioner. TDDD73 Funktionell och imperativ programmering i Python Föreläsning 8. Peter Dalenius Institutionen för datavetenskap Funktioner TDDD73 Funktionell och imperativ programmering i Python Föreläsning 8 Peter Dalenius Institutionen för datavetenskap 2014-10-01 Prova på-laborationer Förutsättningar 3 st x 4 timmar under de

Läs mer

Idag: Dataabstraktion

Idag: Dataabstraktion Idag: Dataabstraktion Hur använder vi det vi hittills kan om Scheme för att realisera (implementera) sammansatta data? DA2001 (Föreläsning 7) Datalogi 1 Hösten 2013 1 / 16 Idag: Dataabstraktion Hur använder

Läs mer

TDDC74 Programmering, abstraktion och modellering DUGGA 1

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

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

Numeriska Metoder och Grundläggande Programmering för P1, VT2014

Numeriska 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 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

Användarhandledning Version 1.2

Användarhandledning Version 1.2 Användarhandledning Version 1.2 Innehåll Bakgrund... 2 Börja programmera i Xtat... 3 Allmänna tips... 3 Grunderna... 3 Kommentarer i språket... 4 Variabler... 4 Matematik... 5 Arrayer... 5 på skärmen...

Läs mer

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal?? Programmera i C Varför programmera i C när det finns språk som Simula och Pascal?? C är ett språk på relativt låg nivå vilket gör det möjligt att konstruera effektiva kompilatorer, samt att komma nära

Läs mer

EDAA20 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. 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 mer

Grundläggande datalogi - Övning 1

Grundlä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 mer

Inledande matematik för I1. MVE011 läsperiod Matlab vecka 2 övningsuppgifter

Inledande matematik för I1. MVE011 läsperiod Matlab vecka 2 övningsuppgifter Inledande matematik för I1 MVE011 läsperiod 1 010 Matlab vecka övningsuppgifter Linjära ekvationssystem Matlab har många kraftfulla redskap för att hantera matriser och därmed också linjära ekvationssystem.

Läs mer

Datalogi, grundkurs 1. Lösningsförslag till tentamen

Datalogi, grundkurs 1. Lösningsförslag till tentamen Datalogi, grundkurs 1 Lösningsförslag till tentamen 6 maj 2000 1. För att proceduren sortera ska fungera som tänkt kan den se ut på följande sätt: const min = 1; max = 3; type tal = integer; index = min..max;

Läs mer

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

Objektorienterad programmering

Objektorienterad programmering Objektorienterad programmering Föreläsning 22 Copyright Mahmud Al Hakim mahmud@dynamicos.se www.webacademy.se Agenda Rekursion Samlingar Listor Mängder Avbildningstabeller 1 Rekursion För att förstå rekursion

Läs mer

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

Planering av ett större program, del 2 - for och listor. Linda Mannila Planering av ett större program, del 2 - for och listor Linda Mannila 9.10.2007 Vad kan vi nu? Primitiva datatyper Tal, strängar, booleska värden Utskrift Indata Felhantering Funktioner och moduler (grunder)

Läs mer

Objektorienterad Programmering (TDDC77)

Objektorienterad Programmering (TDDC77) Objektorienterad Programmering (TDDC77) Föreläsning V: arrayer, metoder, räckvidd (scope), eclipse Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 Outline Arrayer Metoder Räckvidd (Scope) Eclipse

Läs mer

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