Sista delen av kursen

Storlek: px
Starta visningen från sidan:

Download "Sista delen av kursen"

Transkript

1 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 Paradigm (syn- och tankesätt och dess konsekvenser) Namn, variabler, värden, typer Bindningar och omgivningar Funktion- och procedurabstraktion Inkapsling Typsystem - monomorfism, något om polymorfism, subtypning, typkonvertering Villkorlig bearbetning - något om hopp och undantagshantering DA2001 (Föreläsning 22) Datalogi 1 Hösten / 29

2 Programspråkslingvistik Skiljer sig från lingvistik för naturliga(?) språk genom Enklare grammatik (kontextfri) Begränsat antal språkelement Entydig tolkning av satser Mindre redundans Mindre uttrycksfulla Båda har syntax (vilka satser är möjliga) och semantik (vad betyder en sats). Syntaxen beskrivs med syntaxdiagram eller BNF (EBNF). Semantiken kan beskrivas matematiskt, men beskrivs oftast ungefärligt med hjälp av exempel. DA2001 (Föreläsning 22) Datalogi 1 Hösten / 29

3 Ett programspråk Ett programspråk är en notation för abstrakt beskrivning av algoritmer i en viss paradigm. En paradigm är ett sätt att tänka och varje programspråk understödjer i allmänhet en paradigm (imperativ programmering, funktionell programmering, logikprogrammering, objektorienterad programmering). Varje programspråk är uppbyggt kring ett antal begrepp som dataabstraktion programabstraktion omgivning typning tillstånd rekursion iteration DA2001 (Föreläsning 22) Datalogi 1 Hösten / 29

4 De begrepp som ingår varierar från språk till språk, mest beroende på paradigm, men ett begrepp kan ingå i flera olika språk baserade på olika paradigm. Terminologin är hämtad från ett stort antal andra discipliner och begreppskollisioner uppstår mellan olika paradigm. DA2001 (Föreläsning 22) Datalogi 1 Hösten / 29

5 För att ett programspråk skall vara användbart måste det uppfylla några grundläggande krav. DA2001 (Föreläsning 22) Datalogi 1 Hösten / 29

6 För att ett programspråk skall vara användbart måste det uppfylla några grundläggande krav. Det skall vara universellt alla problem som kan lösas med hjälp av dator skall kunna lösas med språket DA2001 (Föreläsning 22) Datalogi 1 Hösten / 29

7 För att ett programspråk skall vara användbart måste det uppfylla några grundläggande krav. Det skall vara universellt alla problem som kan lösas med hjälp av dator skall kunna lösas med språket naturligt det skall vara rimligt begripligt DA2001 (Föreläsning 22) Datalogi 1 Hösten / 29

8 För att ett programspråk skall vara användbart måste det uppfylla några grundläggande krav. Det skall vara universellt alla problem som kan lösas med hjälp av dator skall kunna lösas med språket naturligt det skall vara rimligt begripligt implementerbart det skall gå att realisera språket på en dator så att enligt språket korrekta program kan exekveras DA2001 (Föreläsning 22) Datalogi 1 Hösten / 29

9 För att ett programspråk skall vara användbart måste det uppfylla några grundläggande krav. Det skall vara universellt alla problem som kan lösas med hjälp av dator skall kunna lösas med språket naturligt det skall vara rimligt begripligt implementerbart det skall gå att realisera språket på en dator så att enligt språket korrekta program kan exekveras effektivt det skall vara rimligt effektivt i förhållande till andra språk (??) DA2001 (Föreläsning 22) Datalogi 1 Hösten / 29

10 För att ett programspråk skall vara användbart måste det uppfylla några grundläggande krav. Det skall vara universellt alla problem som kan lösas med hjälp av dator skall kunna lösas med språket naturligt det skall vara rimligt begripligt implementerbart det skall gå att realisera språket på en dator så att enligt språket korrekta program kan exekveras effektivt det skall vara rimligt effektivt i förhållande till andra språk (??) konsekvent det skall inte understödja flera paradgim (en huvudparadigm, helst en enda) DA2001 (Föreläsning 22) Datalogi 1 Hösten / 29

11 Universalitet och implementerbarhet är inte svåra att uppnå. Naturlighet och konsekvens är sällan väl genomfört. Effektivitetsaspekten är tillfredsställd i olika avseenden (för olika typer av tillämpningar) i olika språk. DA2001 (Föreläsning 22) Datalogi 1 Hösten / 29

12 Assembler: start: move 1, reg1 move n, reg0 loop: jmpz exit mul reg0, reg1, reg1 decr reg0 jmp loop exit: stop DA2001 (Föreläsning 22) Datalogi 1 Hösten / 29

13 Assembler: start: move 1, reg1 move n, reg0 loop: jmpz exit mul reg0, reg1, reg1 decr reg0 jmp loop exit: stop Scheme: (define (fac n) (if (= n 0) 1 (* n (fac (- n 1))))) DA2001 (Föreläsning 22) Datalogi 1 Hösten / 29

14 ML: fun fac n = if n = 0 then 1 else n * fac (n - 1) DA2001 (Föreläsning 22) Datalogi 1 Hösten / 29

15 ML: fun fac n = if n = 0 then 1 else n * fac (n - 1) Pascal: FUNCTION fac(n: integer): integer; VAR i, res: integer; BEGIN res := 1; FOR i := 2 TO n DO res := res * i; fac := res; END; DA2001 (Föreläsning 22) Datalogi 1 Hösten / 29

16 Prolog: fac(0, 1). fac(n, N * X) :- N > 0, fac(n - 1, X). DA2001 (Föreläsning 22) Datalogi 1 Hösten / 29

17 Prolog: fac(0, 1). fac(n, N * X) :- N > 0, fac(n - 1, X). Syntax kommer inte vara föremål för diskussion, utan snarare utgångspunkt för diskussion om semantik. DA2001 (Föreläsning 22) Datalogi 1 Hösten / 29

18 Lite historia Fortran Algol60 Cobol Lisp Simula Algol68 PL/I Smalltalk Pascal C Prolog ML C++ Ada Scheme Miranda clpr Java Haskell DA2001 (Föreläsning 22) Datalogi 1 Hösten / 29

19 Värden och typer Datorprogram hanterar data och är i sig själva data. Värden och program representeras av data. Data är endast bitmönster och måste tolkas i enlighet med någon datatyp. DA2001 (Föreläsning 22) Datalogi 1 Hösten / 29

20 Värden och typer Datorprogram hanterar data och är i sig själva data. Värden och program representeras av data. Data är endast bitmönster och måste tolkas i enlighet med någon datatyp. Värden som är vanligt förekommande i program är primitiva (sanningsvärden, tecken, heltal, reella tal, strängar) sammansatta (poster, mängder, filer, par, listor) pekare (adress till... ) referenser (namn på... ) procedurer och funktioner (program) DA2001 (Föreläsning 22) Datalogi 1 Hösten / 29

21 Värden och typer... En datatyp är en mängd värden på vilka man opererar på ett uniformt sätt (en mängd värden och en mängd operatorer). Värden hanteras olika i olika språk. Scheme hanterar alla värden på samma sätt medan de flesta andra språk har olika grad av begränsningar i hanteringen. En typ (datatyp) är en mängd värden och en operationsmängd. DA2001 (Föreläsning 22) Datalogi 1 Hösten / 29

22 Värden och typer... En datatyp är en mängd värden på vilka man opererar på ett uniformt sätt (en mängd värden och en mängd operatorer). Värden hanteras olika i olika språk. Scheme hanterar alla värden på samma sätt medan de flesta andra språk har olika grad av begränsningar i hanteringen. En typ (datatyp) är en mängd värden och en operationsmängd. Ex (Pascal): typen Integer = {0, ±1,..., ±MaxInt}, med operationsmängden {+,,, DIV, MOD,ˆ}. typen Boolean = {TRUE, FALSE}, med operationsmängden {NOT, AND, OR, ANDALSO, ORELSE, =} Att a är av typen Integer skrivs a Integer. DA2001 (Föreläsning 22) Datalogi 1 Hösten / 29

23 Värden och typer... Alla programspråk har både primitiva och sammansatta typer. DA2001 (Föreläsning 22) Datalogi 1 Hösten / 29

24 Värden och typer... Alla programspråk har både primitiva och sammansatta typer. En typs värdemängd kallas typens domän. DA2001 (Föreläsning 22) Datalogi 1 Hösten / 29

25 Värden och typer... Alla programspråk har både primitiva och sammansatta typer. En typs värdemängd kallas typens domän. Ett värde är, i programspråkssammanhang, atomiskt om man inte behöver någon speciell struktur för att representera värdet. DA2001 (Föreläsning 22) Datalogi 1 Hösten / 29

26 Värden och typer... Alla programspråk har både primitiva och sammansatta typer. En typs värdemängd kallas typens domän. Ett värde är, i programspråkssammanhang, atomiskt om man inte behöver någon speciell struktur för att representera värdet. Atomiska typer kallas ofta primitiva. DA2001 (Föreläsning 22) Datalogi 1 Hösten / 29

27 Värden och typer... Alla programspråk har både primitiva och sammansatta typer. En typs värdemängd kallas typens domän. Ett värde är, i programspråkssammanhang, atomiskt om man inte behöver någon speciell struktur för att representera värdet. Atomiska typer kallas ofta primitiva. En typ kallas atomisk om alla värden i domänen är atomiska, t.ex: heltal, booleska värden,... DA2001 (Föreläsning 22) Datalogi 1 Hösten / 29

28 Värden och typer... Alla programspråk har både primitiva och sammansatta typer. En typs värdemängd kallas typens domän. Ett värde är, i programspråkssammanhang, atomiskt om man inte behöver någon speciell struktur för att representera värdet. Atomiska typer kallas ofta primitiva. En typ kallas atomisk om alla värden i domänen är atomiska, t.ex: heltal, booleska värden,... En typ som är primitiv i ett språk kan vara nödvändigt att representera som sammansatt i ett annat. DA2001 (Föreläsning 22) Datalogi 1 Hösten / 29

29 Värden och typer... Alla programspråk har både primitiva och sammansatta typer. En typs värdemängd kallas typens domän. Ett värde är, i programspråkssammanhang, atomiskt om man inte behöver någon speciell struktur för att representera värdet. Atomiska typer kallas ofta primitiva. En typ kallas atomisk om alla värden i domänen är atomiska, t.ex: heltal, booleska värden,... En typ som är primitiv i ett språk kan vara nödvändigt att representera som sammansatt i ett annat.därför måste en uppräkning vara språkberoende. DA2001 (Föreläsning 22) Datalogi 1 Hösten / 29

30 Värden och typer... En typ uppträder ofta under olika namn i olika språk. Typ Scheme Pascal ML Heltal integer Integer int Reella tal real Real real Teckensträng string string Sanningvärde boolean Boolean bool Delintervall a..b DA2001 (Föreläsning 22) Datalogi 1 Hösten / 29

31 Värden och typer... En typ uppträder ofta under olika namn i olika språk. Typ Scheme Pascal ML Heltal integer Integer int Reella tal real Real real Teckensträng string string Sanningvärde boolean Boolean bool Delintervall a..b Operationsmängderna är alltid fördefinierade. Man delar ofta in de primitiva typerna i kontinuerliga och diskreta (men de kontinuerliga måste representeras med en diskretisering). De primitiva typerna i Pascal är bl.a. Integer, Real, Char och Boolean. DA2001 (Föreläsning 22) Datalogi 1 Hösten / 29

32 Värden och typer... Sammansatta typer: DA2001 (Föreläsning 22) Datalogi 1 Hösten / 29

33 Värden och typer... Sammansatta typer: Kartesiska produkter. par, tripler,... av värden ur redan definierade typer (tupler). Ex: 3, abc Integer String DA2001 (Föreläsning 22) Datalogi 1 Hösten / 29

34 Värden och typer... Sammansatta typer: Kartesiska produkter. par, tripler,... av värden ur redan definierade typer (tupler). Ex: 3, abc Integer String Disjunkta unioner. Värden ur alternativa domäner. Ex: x Boolean String DA2001 (Föreläsning 22) Datalogi 1 Hösten / 29

35 Värden och typer... Sammansatta typer: Kartesiska produkter. par, tripler,... av värden ur redan definierade typer (tupler). Ex: 3, abc Integer String Disjunkta unioner. Värden ur alternativa domäner. Ex: x Boolean String Avbildningar. Ex: om namn = Kalle namn[5] = e så 5 e Integer Char DA2001 (Föreläsning 22) Datalogi 1 Hösten / 29

36 Värden och typer... Potensmängder. Ex: om a = {1, 2, 3} så blir potensmängden av a alla delmängder av a = {{}, {1}, {2}, {3}, {1, 2}, {1, 3}, {2, 3}, {1, 2, 3}}. DA2001 (Föreläsning 22) Datalogi 1 Hösten / 29

37 Värden och typer... Potensmängder. Ex: om a = {1, 2, 3} så blir potensmängden av a alla delmängder av a = {{}, {1}, {2}, {3}, {1, 2}, {1, 3}, {2, 3}, {1, 2, 3}}. Rekursiva typer. Ex: listor av heltal DA2001 (Föreläsning 22) Datalogi 1 Hösten / 29

38 Värden och typer... Potensmängder. Ex: om a = {1, 2, 3} så blir potensmängden av a alla delmängder av a = {{}, {1}, {2}, {3}, {1, 2}, {1, 3}, {2, 3}, {1, 2, 3}}. Rekursiva typer. Ex: listor av heltal Subtyper Ex: a.. z DA2001 (Föreläsning 22) Datalogi 1 Hösten / 29

39 Kartesiska produkter Kartesiska produkter är en mängd av ordnade värden och S T betyder alla ordnade par s, t där s S och t T. Obs! att s och t kan vara sammansatta. Ex: S = {TRUE, FALSE}, T = {gul, cyan, purpur}. S T = { TRUE, gul, TRUE, cyan, TRUE, purpur, FALSE, gul, FALSE, cyan, FALSE, purpur } DA2001 (Föreläsning 22) Datalogi 1 Hösten / 29

40 Kartesiska produkter... Scheme kan återsända godtyckliga strukturer (define newsxt (lambda (news newt) (cons news newt))) (define spart (lambda (SxT) (car SxT))) (define tpart (lambda (SxT) (cdr SxT))) DA2001 (Föreläsning 22) Datalogi 1 Hösten / 29

41 Disjunkt union I disjunkta unioner måste värdena märkas för att det skall gå att veta vilken domän aktuellt värde tillhör. Ex: S = {TRUE, FALSE}, T = {gul, cyan, purpur}. Den disjunkta unionen S + T innehåller värdena {TRUE, FALSE, gul, cyan, purpur}, men för att kunna skilja mellan olika typer av värden i den disjunkta unionen måste vi deklarera namn som fungerar som etiketter. DA2001 (Föreläsning 22) Datalogi 1 Hösten / 29

42 Avbildningar är funktioner från en datamängd D till en annan datamängd R. Skrivs D R och kan realiseras med hjälp av antingen funktioner eller listor. I de flesta system finns funktioner och kontinuerliga listor (array) fördefinierade. Ex: D = {jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec} R = {winter, spring, summer, autumn} D R = {(jan winter), (feb winter), (mar winter), (apr spring), (may spring), (jun summer), (jul summer), (aug summer), (sep autumn), (oct autumn), (nov autumn), (dec winter)} DA2001 (Föreläsning 22) Datalogi 1 Hösten / 29

43 Avbildningar... I Scheme kan man göra en associationslista av par av månadsnummer, årstid (define season-list ((jan. winter) (feb. winter) (mar. winter) (apr. spring) (may. spring) (jun. summer) (jul. summer) (aug. summer) (sep. autumn) (oct. autumn) (nov. autumn) (dec. winter))) DA2001 (Föreläsning 22) Datalogi 1 Hösten / 29

44 Avbildningar... I Scheme kan man göra en associationslista av par av månadsnummer, årstid (define season-list ((jan. winter) (feb. winter) (mar. winter) (apr. spring) (may. spring) (jun. summer) (jul. summer) (aug. summer) (sep. autumn) (oct. autumn) (nov. autumn) (dec. winter))) (define (month->season month season-list) (cond ((null? season-list) undefined) ((eq? month (caar season-list)) (cdar season-list)) (else (month->season month (cdr season-list))))) month->season har typen (month seasonassociationlist) season DA2001 (Föreläsning 22) Datalogi 1 Hösten / 29

45 Avbildningar... (define (month->season month) ;; med array (let ((month-list #(jan feb mar apr may jun jul aug sep oct nov dec)) (season-list #(winter winter winter spring spring summer summer summer autumn autumn autumn winter))) (define (loop n) (cond ((> n 11) undefined) ((eq? month (vector-ref month-list n)) (vector-ref season-list n)) (else (loop (+ n 1))))) (loop 0))) DA2001 (Föreläsning 22) Datalogi 1 Hösten / 29

46 Avbildningar... (define (month->season month) ;; med array (let ((month-list #(jan feb mar apr may jun jul aug sep oct nov dec)) (season-list #(winter winter winter spring spring summer summer summer autumn autumn autumn winter))) (define (loop n) (cond ((> n 11) undefined) ((eq? month (vector-ref month-list n)) (vector-ref season-list n)) (else (loop (+ n 1))))) (loop 0))) (define (month->season month) ;; med case-uttryck (case month ((dec jan feb mar) winter) ((apr may) spring) ((jun jul aug) summer) ((sep oct nov) autumn) (else undefined))) DA2001 (Föreläsning 22) Datalogi 1 Hösten / 29

47 Potensmängd En potensmängd representerar mängden av alla värden som en mängd kan anta. De flesta språk har ingen inbyggd mekanism för att hantera mängder. Pascal är ett av få undantag. Ex.: Potensmängden 2 season ={{}, {winter}, {spring},..., {winter, spring}, {winter, summer},..., {winter, spring, summer},..., {winter, spring, summer, autumn}} 2 S ={a a S} DA2001 (Föreläsning 22) Datalogi 1 Hösten / 29

48 Potensmängd... I Pascal: TYPE season = (winter, spring, summer, autumn); period = SET OF season; DA2001 (Föreläsning 22) Datalogi 1 Hösten / 29

49 Potensmängd... I Pascal: TYPE season = (winter, spring, summer, autumn); period = SET OF season; I Scheme: (define set (1 2 3)) DA2001 (Föreläsning 22) Datalogi 1 Hösten / 29

50 Potensmängd... I Pascal: TYPE season = (winter, spring, summer, autumn); period = SET OF season; I Scheme: (define set (1 2 3)) (define (ps set) (if (null? set) (()) (let ((r (ps (cdr set)))) (append (map (lambda (s) (cons (car set) s)) r) r)))) DA2001 (Föreläsning 22) Datalogi 1 Hösten / 29

51 Rekursiva typer Rekursivt definierade typer är sådana typer som kan definieras i termer av sig själva. Ex: En lista med heltal kan definieras som: En lista med heltal = antingen tom eller ett heltal följt av en lista med heltal. nil står för den tomma listan. DA2001 (Föreläsning 22) Datalogi 1 Hösten / 29

52 Rekursiva typer Rekursivt definierade typer är sådana typer som kan definieras i termer av sig själva. Ex: En lista med heltal kan definieras som: En lista med heltal = antingen tom eller ett heltal följt av en lista med heltal. nil står för den tomma listan. heltalslista = nil (heltal heltalslista) Eller: L = nil + (S L) DA2001 (Föreläsning 22) Datalogi 1 Hösten / 29

53 Rekursiva typer... I Scheme () (cons 3 ()) (cons 2 (list 3)) (list 2 3) DA2001 (Föreläsning 22) Datalogi 1 Hösten / 29

54 Rekursiva typer... I Pascal krävs pekarstrukturer för att realisera sådana typer, men i ML finns möjlighet till rekursiv definition av typer och dessutom finns fördefinierat ett brett spektrum av listtyp-konstruktorer. DA2001 (Föreläsning 22) Datalogi 1 Hösten / 29

55 Rekursiva typer... I Pascal krävs pekarstrukturer för att realisera sådana typer, men i ML finns möjlighet till rekursiv definition av typer och dessutom finns fördefinierat ett brett spektrum av listtyp-konstruktorer. Ex: heltalslistor type integerlist = int list; datatype integerlist = nil of unit cons of int * integerlist; (* får skrivas som: *) datatype integerlist = nil cons of int * integerlist; DA2001 (Föreläsning 22) Datalogi 1 Hösten / 29

56 Rekursiva typer... I Pascal krävs pekarstrukturer för att realisera sådana typer, men i ML finns möjlighet till rekursiv definition av typer och dessutom finns fördefinierat ett brett spektrum av listtyp-konstruktorer. Ex: heltalslistor type integerlist = int list; datatype integerlist = nil of unit cons of int * integerlist; (* får skrivas som: *) datatype integerlist = nil cons of int * integerlist; med typkonstruktorn list har man tillgång till alla tänkbara listor i ML, ex: type realnumberlist = real list; DA2001 (Föreläsning 22) Datalogi 1 Hösten / 29

57 Subtyper Subtyper är restriktioner på en redan definierad typ (delmängd). Ex: A B, där B är t ex mängden av alla heltal I Pascal kan subtyper definieras av varje diskret typ, men bara som delintervall. Ex: TYPE smallint = ; smallletter = a.. z ; fineseason = spring..autumn; Förutom i Pascal finns dessa i Modula (2, 3, 4) och ADA DA2001 (Föreläsning 22) Datalogi 1 Hösten / 29

58 Nästa gång: När upptäcks typfel? Vad är ett uttryck? DA2001 (Föreläsning 22) Datalogi 1 Hösten / 29

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

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

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

Välkomna till NADA. Paradigm i datalogin. Vad är ett paradigm

Välkomna till NADA. Paradigm i datalogin. Vad är ett paradigm Välkomna till NADA (Numerisk Analys och DAtalogi) och kursen Paradigm i datalogin, orienteringskurs GN, 7,5 hp (PID) Välkomna... Jag: Serafim Dahl Osquars Backe 2, plan 5 Rum 1531 Postfack: Lindstedtsvägen

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

Abstraktion. procedurabstraktion. DA2001 (Föreläsning 26) Datalogi 1 Hösten / 27

Abstraktion. procedurabstraktion. DA2001 (Föreläsning 26) Datalogi 1 Hösten / 27 Abstraktion Inom programmeringstekniken används två former av abstraktion dataabstraktion och programabstraktion. Dataabstraktion handlar om aggregat för att gruppera samhörande data. Programabstraktion

Läs mer

Abstraktion. Abstraktion... Abstraktion... Abstraktion...

Abstraktion. Abstraktion... Abstraktion... Abstraktion... Abstraktion Inom programmeringstekniken används två former av abstraktion dataabstraktion och programabstraktion. Dataabstraktion handlar om aggregat för att gruppera samhörande data. Programabstraktion

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

Pascal. reserverade ord fördefinierade funktioner och procedurer egendefinierade funktioner, procedurer och objekt

Pascal. reserverade ord fördefinierade funktioner och procedurer egendefinierade funktioner, procedurer och objekt Programspråk uppkallat efter Blaise. Skapat av Nicolaus Wirt. Avsett för undervisning för att lära ut typbegreppet och styrstrukturer. Har fått stor spridning p.g.a. enkelhet och att kompilatorn varken

Läs mer

Pascal... Pascal. Pascal... Pascal...

Pascal... Pascal. Pascal... Pascal... ... Programspråk uppkallat efter Blaise. Skapat av Nicolaus Wirt. Avsett för undervisning för att lära ut typbegreppet och styrstrukturer. Har fått stor spridning p.g.a. enkelhet och att kompilatorn varken

Läs mer

Polymorfi (många skepnader) är egentligen en mängd olika abstraktionsmekanismer och en indelning skulle kunna se ut så här: polymorfi

Polymorfi (många skepnader) är egentligen en mängd olika abstraktionsmekanismer och en indelning skulle kunna se ut så här: polymorfi Polymorfi Polymorfi (många skepnader) är egentligen en mängd olika abstraktionsmekanismer och en indelning skulle kunna se ut så här: polymorfi universell ad hoc parametrisk inclusion coersion overloading

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

Introduktion till formella metoder Programmeringsmetodik 1. Inledning

Introduktion till formella metoder Programmeringsmetodik 1. Inledning Introduktion till formella metoder Programmeringsmetodik 1. Inledning Fokus på imperativa program (ex. C, Java) program betyder härefter ett imperativt program Program bestäms i en abstrakt mening av hur

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

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

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

Sökning och sortering

Sökning och sortering Sökning och sortering Att söka efter data man lagrat undan för senare användning är vanligt Egentligen har man ingen annan anledning för att lagra undan data Har man mycket data och många sökningar måste

Läs mer

Repetition i Pascal. Exemplen fac. Exemplen fac i Pascal. Exemplen fac motivering. Orginalet

Repetition i Pascal. Exemplen fac. Exemplen fac i Pascal. Exemplen fac motivering. Orginalet Repetition Introduktion Repetition i 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

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

KOMPLETTERANDE HEMTENTAMEN TDDB53

KOMPLETTERANDE HEMTENTAMEN TDDB53 Linköpings universitet Institutionen för datavetenskap, IDA Olle Willén mars 2003 Tentamen TDDB53 KOMPLETTERANDE HEMTENTAMEN TDDB53 Programmering i Ada för MI (MI-ADA) i mars 2003 Tentan lämnas ut 24/3

Läs mer

Sökning och sortering. Sökning och sortering - definitioner. Sökning i oordnad lista. Sökning med vaktpost i oordnad lista

Sökning och sortering. Sökning och sortering - definitioner. Sökning i oordnad lista. Sökning med vaktpost i oordnad lista Sökning och sortering Sökning och sortering - definitioner Att söka efter data man lagrat undan för senare användning är vanligt Egentligen har man ingen annan anledning för att lagra undan data Har man

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. Föreläsning 2

Imperativ programmering. Föreläsning 2 Imperativ programmering 1DL126 3p Föreläsning 2 Imperativ programmering Kännetecken för imperativa språk: Programmet består av en serie instruktioner. Olika språk har olika uppsättningar av instruktioner.

Läs mer

Föreläsning 3: Booleans, if, switch

Föreläsning 3: Booleans, if, switch TDA 545: Objektorienterad programmering Föreläsning 3: Booleans, if, switch Magnus Myréen Chalmers, läsperiod 1, 2015-2016 Påminnelse om klasser och objekt Boll boll1 = new Boll(5,12); skapar ett nytt

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

TENTAMEN TDDB53. Programmering i Ada för MI (provkod TEN2) den 7 april 2010 kl Institutionen för datavetenskap, IDA Olle Willén mars 2010

TENTAMEN TDDB53. Programmering i Ada för MI (provkod TEN2) den 7 april 2010 kl Institutionen för datavetenskap, IDA Olle Willén mars 2010 Linköpings universitet Institutionen för datavetenskap, IDA Olle Willén mars 2010 Tentamen TDDB53 TENTAMEN TDDB53 (provkod TEN2) den 7 april 2010 kl 8 12 Jour: Emil Nielsen, tel 070 499 89 88 Hjälpmedel:

Läs mer

Föreläsning 9 Exempel

Föreläsning 9 Exempel Föreläsning 9 Exempel Intervallhalveringsmetoden DA2001 (Föreläsning 9) Datalogi 1 Hösten 2013 1 / 24 Föreläsning 9 Exempel Intervallhalveringsmetoden Newton-Raphsons metod DA2001 (Föreläsning 9) Datalogi

Läs mer

Föreläsning 9 Exempel. Intervallhalveringsmetoden. Intervallhalveringsmetoden... Intervallhalveringsmetoden...

Föreläsning 9 Exempel. Intervallhalveringsmetoden. Intervallhalveringsmetoden... Intervallhalveringsmetoden... Föreläsning 9 Intervallhalveringsmetoden Intervallhalveringsmetoden Newton-Raphsons metod Mer om rekursion Tidskomplexitet Procedurabstraktion Representation Bra om ni läst följande avsnitt i AS: Procedures

Läs mer

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek De åtta primitiva typerna Java, datatyper, kontrollstrukturer Skansholm: Kapitel 2) Uppsala Universitet 11 mars 2005 Typ Innehåll Defaultvärde Storlek boolean true, false false 1 bit char Tecken \u000

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

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

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

TDP002 - Imperativ programmering

TDP002 - Imperativ programmering . TDP002 - Imperativ programmering Introduktion till kursen och Python Eric Elfving Institutionen för datavetenskap 14 augusti 2015 Översikt 2/29 Programmering - en översikt Python - Köra och skriva program

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

Digitalitet. Kontinuerlig. Direkt proportionerlig mot källan. Ex. sprittermometer. Elektrisk signal som representerar ljud.

Digitalitet. Kontinuerlig. Direkt proportionerlig mot källan. Ex. sprittermometer. Elektrisk signal som representerar ljud. Analog Digitalitet Kontinuerlig Direkt proportionerlig mot källan Ex. sprittermometer Elektrisk signal som representerar ljud Diskret Digital Representation som siffror/symboler Ex. CD-skiva Varje siffra

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

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

TDP002 Imperativ programmering

TDP002 Imperativ programmering TDP002 Imperativ programmering Introduktion till kursen och python Eric Elfving Institutionen för datavetenskap (IDA) Översikt Programmering En introduktion Python Köra och skriva program Python grunderna

Läs mer

TDP002 - Imperativ programmering

TDP002 - Imperativ programmering TDP002 - Imperativ programmering Introduktion till kursen och Python Eric Elfving Institutionen för datavetenskap 1 Programmering - en översikt 2 Python Inbyggda typer Satser och uttryck 1 Programmering

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

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

Några saker till och lite om snabbare sortering

Några saker till och lite om snabbare sortering Några saker till och lite om snabbare sortering GOTO hemskt eller ett måste? CASE enkla val över diskreta värdemängder Snabb sortering principer Snabb sortering i Scheme och Pascal QuickSort (dela städat

Läs mer

TDDC30. Kursledning Kursledare: Jonas Lindgren. Labassistent: Jonas Lindgren Labassistent: Niklas Holma Labassistent: Erik Nilsson

TDDC30. Kursledning Kursledare: Jonas Lindgren. Labassistent: Jonas Lindgren Labassistent: Niklas Holma Labassistent: Erik Nilsson TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 1 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Kursinformation Imperativa delen av

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

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

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python. är, som Scheme, ett interpreterat språk men det finns kompilatorer för. När man interpreterar ett språk tillhandahåller man en interpretator som läser sats för sats och försöker tolka den. När man kompilerar

Läs mer

Tentamen Grundläggande programmering

Tentamen Grundläggande programmering Akademin för Innovation Design och Teknik Tentamen Grundläggande programmering Kurskod: DVA103 Datum 2012-06-11 Tid 14.10 16.30 Examinator: Lars Asplund Maxpoäng: 48 Betygsgränser: Betyg 3: 20 Betyg 4:

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

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

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python. är, som Scheme, ett interpreterat språk men det finns kompilatorer för. När man interpreterar ett språk tillhandahåller man en interpretator som läser sats för sats och försöker tolka den. När man kompilerar

Läs 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

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

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

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

Grundläggande Datalogi

Grundläggande Datalogi s delar Grundläggande Datalogi s delar s delar s delar Dataabstraktion Rekursion Algoritmanalys s delar Sortering Trädstrukturer Grafalgoritmer Optimering Stavning Strängmatchning Datakompression Versionshantering

Läs mer

GOTO och lägen. Några saker till och lite om snabbare sortering. GOTO och lägen (3) GOTO och lägen (2)

GOTO och lägen. Några saker till och lite om snabbare sortering. GOTO och lägen (3) GOTO och lägen (2) Några saker till och lite om snabbare sortering GOTO och lägen GOTO hemskt eller ett måste? CASE enkla val över diskreta värdemängder Snabb sortering principer Snabb sortering i Scheme och Pascal QuickSort

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

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

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering Föreläsning 1 Objektorienterad programmering DD1332 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer Kompilering och exekvering Ett program måste översättas till datorns språk

Läs mer

Imperativ programmering. Föreläsning 3

Imperativ programmering. Föreläsning 3 Imperativ programmering 1DL126 3p Föreläsning 3 Imperativa paradigmer Ostrukturerad programmering Strukturerad programmering Procedurell programmering Objektorienterad programmering Klassbaserad programmering

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

BER AKNINGSBARHET F OR DATALOGER. Kent Petersson. Institutionen for Datavetenskap Goteborgs Universitet / Chalmers Goteborg, Sweden

BER AKNINGSBARHET F OR DATALOGER. Kent Petersson. Institutionen for Datavetenskap Goteborgs Universitet / Chalmers Goteborg, Sweden BER AKNINGSBARHET F OR DATALOGER Fran till P Kent Petersson Institutionen for Datavetenskap Goteborgs Universitet / Chalmers 412 96 Goteborg, Sweden ii Kent Petersson Department of Computer Science Goteborgs

Läs mer

Imperativ programmering. Föreläsning 4

Imperativ programmering. Föreläsning 4 Imperativ programmering 1DL126 3p Föreläsning 4 Imperativa paradigmer Ostrukturerad programmering Strukturerad programmering Procedurell programmering Objektorienterad programmering Klassbaserad programmering

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

Exempel på ett litet Ada-program

Exempel på ett litet Ada-program Exempel på ett litet Ada-program -- En kommentar som beskriver något. with Ada.Text_IO; procedure Mini is -- Deklarationer. K : constant Integer := 5; X, Y : Integer; -- Körbar kod. Ada.Text_IO.Put( Utskrift

Läs mer

GRUNDER I VHDL. Innehåll. Komponentmodell Kodmodell Entity Architecture Identifierare och objekt Operationer för jämförelse

GRUNDER I VHDL. Innehåll. Komponentmodell Kodmodell Entity Architecture Identifierare och objekt Operationer för jämförelse GRUNDER I VHDL Innehåll Komponentmodell Kodmodell Entity Architecture Identifierare och objekt Operationer för jämförelse KOMPONENTMODELL Modell för att beskriva komponenter Externt interface Intern funktion

Läs mer

Preliminär elmarknadsstatistik per månad för Sverige 2014

Preliminär elmarknadsstatistik per månad för Sverige 2014 jan feb mar apr maj jun GWh GWh GWh GWh GWh GWh 6 859,6 6 342,1 6 814,5 5 965,4 5 706,5 5 382,4 1 213,7 872,3 1 200,3 902,0 681,7 611,8 6 374,9 5 876,2 6 247,9 4 875,8 3 487,7 3 395,2 529,2 496,2 557,8

Läs mer

Del : Funktionell programmering. I alla deluppgifterna, använd Haskell och skriv typen för de identifierare du definierar.

Del : Funktionell programmering. I alla deluppgifterna, använd Haskell och skriv typen för de identifierare du definierar. Nada Tentamensdag 2004 aug 23 Tentamen Programmeringsparadigm Skrivtid 5 h Antalet uppgifter : 1 (allmänt)+ 4 (Haskell) + 4 (Prolog) = 10p +(5p + 20p +5p+ 20p) + (10p +12p + 8p +10p) = 10p + 50p + 40 p

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

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

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

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

Pythons standardbibliotek

Pythons standardbibliotek Pythons standardbibliotek Python 3 skall, enligt standarddokumenten http://docs.python.org/py3k/library/index.html ha stöd för vissa funktioner, typer och datastrukturer Så länge man håller sig till detta

Läs mer

String [] argv. Dagens Agenda. Mer om arrayer. Mer om arrayer forts. String [] argv. argv är variabelnamnet. Arrayer och Strängar fortsättning

String [] argv. Dagens Agenda. Mer om arrayer. Mer om arrayer forts. String [] argv. argv är variabelnamnet. Arrayer och Strängar fortsättning Dagens Agenda String [] argv String [] argv Arrayer och Strängar fortsättning Booleska operatorer if, for, while satser Introduktion till algoritmer public static void main(string [] argv) argv är variabelnamnet

Läs mer

TDDC74 Programmering: Abstraktion och modellering Dugga 2, Tid: kl 08-10, Datum:

TDDC74 Programmering: Abstraktion och modellering Dugga 2, Tid: kl 08-10, Datum: TDDC74 Programmering: Abstraktion och modellering Dugga 2, Tid: kl 08-10, Skriv tydligt så att inte dina lösningar missförstås. Använd väl valda namn på parametrar och indentera din kod. Även om det i

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

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

Klassdeklaration. Metoddeklaration. Parameteröverföring

Klassdeklaration. Metoddeklaration. Parameteröverföring Syntax: Class Declaration Modifier Class Body Basic Class Member Klassdeklaration class Class Member Field Declaration Constructor Declaration Method Declaration Identifier Class Associations Motsvarar

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

Programmering A. Johan Eliasson johane@cs.umu.se

Programmering A. Johan Eliasson johane@cs.umu.se Programmering A Johan Eliasson johane@cs.umu.se 1 Jag Undervisar mest grundläggande programmering på Institutionen för datavetensakap Applikationsutveckling för iphone Applikationsutveckling i Java Datastrukturer

Läs mer

Övning2. Variabler. Data typer

Övning2. Variabler. Data typer Vahid 28 okt 2002 prgk02 Övning2 -Repetition -Variabler -Primitiva typer (+ boolean) -Operatörer +, ++, --, -Typ konvertering -Wrapper klasser -Jämförelse operatörer,(==, =, ,!=,!) -String hur man

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

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

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 1 Jonas Lindgren, Institutionen för Datavetenskap, LiU TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 1 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Kursinformation Imperativa delen av

Läs mer

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

Föreläsning 10 Datalogi 1 DA2001. Utskrift på skärmen. Syntax. print( Hej ) Hur är det? Hej. print( Hej,end= ) print( Hur är det? ) HejHur är det? Föreläsning 10 Datalogi 1 DA2001 python introduktion Variabler Datatyp Aritmetiska operatorer av typer Reserverade ord logiska operatorer If-sats kommentarer på skärmen print( Hej ) print( Hur är det?

Läs 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

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

Språket Scheme. DAT 060: Introduktion till (funktions)programmering. DrScheme. uttryck. Jacek Malec m. fl. evaluering av uttryck.

Språket Scheme. DAT 060: Introduktion till (funktions)programmering. DrScheme. uttryck. Jacek Malec m. fl. evaluering av uttryck. DAT 060: Introduktion till (funktions)programmering. Jacek Malec m. fl. www.cs.lth.se/home/jacek Malec/dat060 Idag: 1. Kursens innehåll 2. Kursens organisation 3. Programmeringsspråket Scheme 4. Introduktion

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

Föreläsning 2 Programmeringsteknik och C DD1316. Programmering. Programspråk

Föreläsning 2 Programmeringsteknik och C DD1316. Programmering. Programspråk Föreläsning 2 steknik och C DD1316 python introduktion Variabler Datatyp Aritmetiska operatorer av typer Reserverade ord logiska operatorer If-sats kommentarer betyder att instruera en dator Ett program

Läs mer

Parsing med Recursive Descent, Avbildningsklasser. Syntaxdiagram. Syntaxdiagram och kodning expression. Betrakta följande uttryck

Parsing med Recursive Descent, Avbildningsklasser. Syntaxdiagram. Syntaxdiagram och kodning expression. Betrakta följande uttryck Betrakta följande uttryck a +(b + c) d + e (f + g h) Parsing med Recursive Descent, Avbildningsklasser Tobias Wrigstad (baserat på bilder från Tom Smedsaas) 22 november 2010 Beräkning med regler: multiplikation

Läs mer

Sökning i ordnad lista. Sökning och sortering. Sökning med vaktpost i oordnad lista

Sökning i ordnad lista. Sökning och sortering. Sökning med vaktpost i oordnad lista Sökning och sortering Sökning i oordnad lista Att söka efter data man lagrat undan för senare användning är vanligt Egentligen har man ingen annan anledning för att lagra undan data Har man mycket data

Läs mer

Översikt Introduktion DST 1. Nicholas Wickström. IDE, Högskolan i Halmstad. N. Wickström

Översikt Introduktion DST 1. Nicholas Wickström. IDE, Högskolan i Halmstad. N. Wickström DST 1 Nicholas Wickström IDE, Högskolan i Halmstad 2009 1 Outline 1 Vad är Hårdvara? (Datorsystemmodell; processor m. periferi, IO, Minne) Typiskt för hårdvarunära programmering (datablad, register, datastrukturer,...)

Läs mer

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java (Man brukar säga att) Java är... Denna föreläsning Allmänt om Java Javas datatyper, arrayer, referenssemantik Klasser Strängar enkelt baserat på C/C++ objekt-orienterat från början dynamiskt utbyggbart

Läs mer

Datalogi, grundkurs 1

Datalogi, grundkurs 1 Datalogi, grundkurs 1 Tentamen 10 december 2008 konverterad till Python Hjälpmedel: Kommer att finnas i skrivsalarna, bl.a. Revised 6 Report on the Algorithmic Language Scheme och två olika s.k. Cheat

Läs mer

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten? Introduktion till objektorientering Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten? jonas.kvarnstrom@liu.se 2015 2014 jonas.kvarnstrom@liu.se

Läs mer

Datastrukturer. Erik Forslin. Rum 1445, plan 4 på Nada

Datastrukturer. Erik Forslin. Rum 1445, plan 4 på Nada Datastrukturer Vad är en datastruktur? Vad är en datatyp? Primitiva datatyper i Java Icke-primitiva datatyper i Java Minnesexempel med datastrukturer Vektorer i Java Erik Forslin efo@nada.kth.se Rum 1445,

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

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

10. Mängder och språk

10. Mängder och språk Objektorienterad modellering och diskreta strukturer 10. Mängder och språk Sven Gestegård Robertz Institutionen för datavetenskap, LTH 2013 Rekaputilation Vi har talat om satslogik, predikatlogik och härledning

Läs mer

Objektorienterad Programmering (TDDC77)

Objektorienterad Programmering (TDDC77) Objektorienterad Programmering (TDDC77) Föreläsning II: utmatning, variabler, typer Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 Kompilera och köra programmet under terminal 2: I Skapa Hej.java

Läs mer