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

Storlek: px
Starta visningen från sidan:

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

Transkript

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

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

3 Idag: Par och listor Hur hanterar man icke-numeriska problem? Hur hanterar man en samling av data? DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

4 Idag: Par och listor Hur hanterar man icke-numeriska problem? Hur hanterar man en samling av data? Hur konstruerar man sammansatta datastrukturer? DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

5 Idag: Par och listor 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 i avsnittet: Example: Arithmetic Operations for Rational Numbers Inledningen i avsnittet: Hierarchical Data and the Closure Property Representing Sequences. DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

6 Symboler Symboler används för att uttrycka icke-numeriska data såsom namn, adress, bilregisternummer, boktitel, osv. > (define namn1 Kalle) > DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

7 Symboler Symboler används för att uttrycka icke-numeriska data såsom namn, adress, bilregisternummer, boktitel, osv. > (define namn1 Kalle) > namn1 Kalle > DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

8 Symboler Symboler används för att uttrycka icke-numeriska data såsom namn, adress, bilregisternummer, boktitel, osv. > (define namn1 Kalle) > namn1 Kalle > (define adress1 Lindstedtsvagen3) > DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

9 Symboler Symboler används för att uttrycka icke-numeriska data såsom namn, adress, bilregisternummer, boktitel, osv. > (define namn1 Kalle) > namn1 Kalle > (define adress1 Lindstedtsvagen3) > adress1 Lindstedtsvagen3 DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

10 Symboler... skiljer på gemener och versaler i symboler. > (eq? Kalle kalle) #f > DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

11 Symboler... skiljer på gemener och versaler i symboler. > (eq? Kalle kalle) #f > (eq? kalle kalle) #t DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

12 Symboler... skiljer på gemener och versaler i symboler. > (eq? Kalle kalle) #f > (eq? kalle kalle) #t Predikatet eq? testar om två symboler är lika. DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

13 Symboler... skiljer på gemener och versaler i symboler. > (eq? Kalle kalle) #f > (eq? kalle kalle) #t Predikatet eq? testar om två symboler är lika. Använd inte predikatet =, det duger bara till numerisk jämförelse. DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

14 Symboler... skiljer på gemener och versaler i symboler. > (eq? Kalle kalle) #f > (eq? kalle kalle) #t Predikatet eq? testar om två symboler är lika. Använd inte predikatet =, det duger bara till numerisk jämförelse. Använd inte heller mellanslag eller någon av symbolerna ( ) [ ] { } ;, # \ i symbolnamnen. DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

15 Symboler... Alternativt kan man använda textsträngar (define address Lindstedtsvägen 3 ) Stränghantering är långsammare än symbolhantering, men man kan använda alla tecken i strängarna. DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

16 Listor I många situationer har man behov av listor, t.ex. shoppinglistor, namnlistor, adresslistor, tidtabeller,... > (define namelist (kalle pelle lasse)) > DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

17 Listor I många situationer har man behov av listor, t.ex. shoppinglistor, namnlistor, adresslistor, tidtabeller,... > (define namelist (kalle pelle lasse)) > namelist (kalle pelle lasse) > DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

18 Listor I många situationer har man behov av listor, t.ex. shoppinglistor, namnlistor, adresslistor, tidtabeller,... > (define namelist (kalle pelle lasse)) > namelist (kalle pelle lasse) > (define numberlist ( )) > DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

19 Listor I många situationer har man behov av listor, t.ex. shoppinglistor, namnlistor, adresslistor, tidtabeller,... > (define namelist (kalle pelle lasse)) > namelist (kalle pelle lasse) > (define numberlist ( )) > numberlist ( ) DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

20 Listor... I kallar man tal, symboler, och listor för objekt. Tal och symboler kallas för atomära objekt medan listor kallas för sammansatta objekt. En lista kan konstrueras med hjälp av proceduren list: >(list kalle pelle lasse) (kalle pelle lasse) DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

21 Listor... I kallar man tal, symboler, och listor för objekt. Tal och symboler kallas för atomära objekt medan listor kallas för sammansatta objekt. En lista kan konstrueras med hjälp av proceduren list: >(list kalle pelle lasse) (kalle pelle lasse) eller med proceduren cons: >(cons kalle (pelle lasse)) (kalle pelle lasse) DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

22 Listor... Lägg märke till att proceduren list tar ett godtyckligt antal listelement som argument medan proceduren cons tar ett listelement och en lista som argument. Proceduren car används för att hämta det första elementet i en lista: > (define namelist (kalle pelle lasse)) > DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

23 Listor... Lägg märke till att proceduren list tar ett godtyckligt antal listelement som argument medan proceduren cons tar ett listelement och en lista som argument. Proceduren car används för att hämta det första elementet i en lista: > (define namelist (kalle pelle lasse)) > (car namelist) kalle > DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

24 Listor... Lägg märke till att proceduren list tar ett godtyckligt antal listelement som argument medan proceduren cons tar ett listelement och en lista som argument. Proceduren car används för att hämta det första elementet i en lista: > (define namelist (kalle pelle lasse)) > (car namelist) kalle > namelist (kalle pelle lasse) namelist är oförändrad efter anropet av car! DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

25 Listor... Proceduren cdr används för att hämta ut resten av listan (d.v.s. listan utan det första elementet): > (cdr namelist) (pelle lasse) car och cdr används ofta tillsammans för att hantera listor. Om vi t.ex. vill hämta ut det n:te elementet i en lista: (define nth-element (lambda (n a-list) (if (= n 1) (car a-list) (nth-element (- n 1) (cdr a-list))))) DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

26 Listor... Testa även att argumentet är en lista och att listan har minst n element: (define nth-element (lambda (n a-list) (cond ((not (list? a-list)) ()) DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

27 Listor... Testa även att argumentet är en lista och att listan har minst n element: (define nth-element (lambda (n a-list) (cond ((not (list? a-list)) ()) ((null? a-list) ()) DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

28 Listor... Testa även att argumentet är en lista och att listan har minst n element: (define nth-element (lambda (n a-list) (cond ((not (list? a-list)) ()) ((null? a-list) ()) ((<= n 0) ()) DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

29 Listor... Testa även att argumentet är en lista och att listan har minst n element: (define nth-element (lambda (n a-list) (cond ((not (list? a-list)) ()) ((null? a-list) ()) ((<= n 0) ()) ((= n 1) (car a-list)) DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

30 Listor... Testa även att argumentet är en lista och att listan har minst n element: (define nth-element (lambda (n a-list) (cond ((not (list? a-list)) ()) ((null? a-list) ()) ((<= n 0) ()) ((= n 1) (car a-list)) (else (nth-element (- n 1) (cdr a-list)))))) DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

31 Listor... Men det är onödigt att testa varje anrop: (define nth-element (lambda (n a-list) (cond ((not (list? a-list)) ()) ((null? a-list) ()) ((<= n 0) ()) (else (inner n a-list))))) DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

32 Listor... Men det är onödigt att testa varje anrop: (define nth-element (lambda (n a-list) (define inner (lambda (n a-list) (if (= n 1) (car a-list) (inner (- n 1) (cdr a-list))))) (cond ((not (list? a-list)) ()) ((null? a-list) ()) ((<= n 0) ()) (else (inner n a-list))))) DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

33 Mer om par och listor Axiom: x = (car (cons x y)) y = (cdr (cons x y)) (cons 1 2) bildar ett par (1. 2) som med pilar och boxar ser ut så här: 2 1 DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

34 Mer om par och listor... cons? car? cdr? Man realiserade språket LISP först på en dator av modellen IBM704. Fantasin tröt lite och man använde datorminnets namn på datorord-delar. Ett dator- ord i IBM704 var 36 bitar långt och bestod av fyra delar (längden i bitar inom parentes): Address Register (15), Decrement Register (15), Prefix Register (3), Tag Register (3) DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

35 Mer om par och listor... cons? car? cdr? Man realiserade språket LISP först på en dator av modellen IBM704. Fantasin tröt lite och man använde datorminnets namn på datorord-delar. Ett dator- ord i IBM704 var 36 bitar långt och bestod av fyra delar (längden i bitar inom parentes): Address Register (15), Decrement Register (15), Prefix Register (3), Tag Register (3) car = Contents of address register DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

36 Mer om par och listor... cons? car? cdr? Man realiserade språket LISP först på en dator av modellen IBM704. Fantasin tröt lite och man använde datorminnets namn på datorord-delar. Ett dator- ord i IBM704 var 36 bitar långt och bestod av fyra delar (längden i bitar inom parentes): Address Register (15), Decrement Register (15), Prefix Register (3), Tag Register (3) car = Contents of address register cdr = Contents of decrement register DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

37 Mer om par och listor... cons? car? cdr? Man realiserade språket LISP först på en dator av modellen IBM704. Fantasin tröt lite och man använde datorminnets namn på datorord-delar. Ett dator- ord i IBM704 var 36 bitar långt och bestod av fyra delar (längden i bitar inom parentes): Address Register (15), Decrement Register (15), Prefix Register (3), Tag Register (3) car = Contents of address register cdr = Contents of decrement register cons = Construct (lägg in data i ett register) DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

38 Mer om par och listor... I en lista är sista referensen alltid () (inget objekt) (cons 1 ()) (1) ger en lista med 1 element. DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

39 Mer om par och listor... (cons 1 (cons 2 (cons 3 ()))) DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

40 Mer om par och listor... (cons 1 (cons 2 (cons 3 ()))) (1 2 3) DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

41 Mer om par och listor... (cons 1 (cons 2 (cons 3 ()))) (1 2 3) ger en lista med 3 element DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

42 Mer om par och listor... (cons 1 (cons 2 (cons 3 ()))) (1 2 3) ger en lista med 3 element (car (cons 1 (cons 2 (cons 3 ())))) DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

43 Mer om par och listor... (cons 1 (cons 2 (cons 3 ()))) (1 2 3) ger en lista med 3 element (car (cons 1 (cons 2 (cons 3 ())))) 1 DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

44 Mer om par och listor... (cons 1 (cons 2 (cons 3 ()))) (1 2 3) ger en lista med 3 element (car (cons 1 (cons 2 (cons 3 ())))) 1 Så ser ingen skillnad mellan en lista och en sekvens av par med sista referensen (= ()) DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

45 Mer om par och listor... > (cdr (1 2 3)) (2 3) DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

46 Mer om par och listor... > (cdr (1 2 3)) (2 3) > (car (cdr (1 2 3))) 2 DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

47 Mer om par och listor... > (cdr (1 2 3)) (2 3) > (car (cdr (1 2 3))) 2 > (cadr (1 2 3)) 2 DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

48 Mer om par och listor... > (cdr (1 2 3)) (2 3) > (car (cdr (1 2 3))) 2 > (cadr (1 2 3)) 2 > (cddr (1 2 3)) (3) DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

49 Mer om par och listor... > (cdr (1 2 3)) (2 3) > (car (cdr (1 2 3))) 2 > (cadr (1 2 3)) 2 > (cddr (1 2 3)) (3) > (caddr (1 2 3)) 3 DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

50 Mer om par och listor... > (cdr (1 2 3)) (2 3) > (car (cdr (1 2 3))) 2 > (cadr (1 2 3)) 2 > (cddr (1 2 3)) (3) > (caddr (1 2 3)) 3 > (cdddr (1 2 3)) () DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

51 Mer om par och listor... I stället för (cons 1 (cons 2 (cons 3 ()))) DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

52 Mer om par och listor... I stället för (cons 1 (cons 2 (cons 3 ()))) kan man skriva (list 1 2 3) DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

53 Mer om par och listor... Betrakta följande (cons (cons 1 2) (cons 3 4)) DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

54 Mer om par och listor... Betrakta följande (cons (cons 1 2) (cons 3 4)) skrivs av schemesystemet som ((1. 2). (3. 4)) DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

55 Mer om par och listor... Betrakta följande (cons (cons 1 2) (cons 3 4)) skrivs av schemesystemet som ((1. 2). (3. 4)) och representeras av pil-box-diagrammet DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

56 Mer om par och listor... (cons (cons 1 (cons 2 3)) 4) DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

57 Mer om par och listor... (cons (cons 1 (cons 2 3)) 4) skrivs av schemesystemet som ((1 2. 3). 4) DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

58 Mer om par och listor... (cons (cons 1 (cons 2 3)) 4) skrivs av schemesystemet som ((1 2. 3). 4) och representeras av pil-box-diagrammet DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

59 Mer om par och listor... En lista av elementen 1, 2, 3 och 4 kan göras på följande sätt: (list ) DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

60 Mer om par och listor... En lista av elementen 1, 2, 3 och 4 kan göras på följande sätt: (list ) eller ( ) DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

61 Mer om par och listor... En lista av elementen 1, 2, 3 och 4 kan göras på följande sätt: (list ) eller ( ) där förhindrar evaluering. DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

62 Mer om par och listor... En lista av elementen 1, 2, 3 och 4 kan göras på följande sätt: (list ) eller ( ) där förhindrar evaluering. Man kan sätta ihop dem på alla möjliga sätt också > (cons (list 1 2) (list 3 4)) DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

63 Mer om par och listor... En lista av elementen 1, 2, 3 och 4 kan göras på följande sätt: (list ) eller ( ) där förhindrar evaluering. Man kan sätta ihop dem på alla möjliga sätt också > (cons (list 1 2) (list 3 4)) ((1 2). (3 4)) DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

64 Mer om par och listor... En lista av elementen 1, 2, 3 och 4 kan göras på följande sätt: (list ) eller ( ) där förhindrar evaluering. Man kan sätta ihop dem på alla möjliga sätt också > (cons (list 1 2) (list 3 4)) ((1 2). (3 4)) > (list (list 1 2) (list 3 4)) DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

65 Mer om par och listor... En lista av elementen 1, 2, 3 och 4 kan göras på följande sätt: (list ) eller ( ) där förhindrar evaluering. Man kan sätta ihop dem på alla möjliga sätt också > (cons (list 1 2) (list 3 4)) ((1 2). (3 4)) > (list (list 1 2) (list 3 4)) ((1 2) (3 4)) DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

66 Mer om par och listor... > (define x (1 2 3)) DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

67 Mer om par och listor... > (define x (1 2 3)) > (cons 0 x) DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

68 Mer om par och listor... > (define x (1 2 3)) > (cons 0 x) > (cons x 0) DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

69 Mer om par och listor... > (define x (1 2 3)) > (cons 0 x) > (cons x 0) > (cons 1 (cons 2 ())) DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

70 Mer om par och listor... > (define x (1 2 3)) > (cons 0 x) > (cons x 0) > (cons 1 (cons 2 ())) > (cons 1 (list 2)) DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

71 Mer om par och listor... > (define x (1 2 3)) > (cons 0 x) > (cons x 0) > (cons 1 (cons 2 ())) > (cons 1 (list 2)) > (list 1 2) DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

72 Procedurer som opererar på listor Längden på en lista (define length (lambda (a-list) (if (null? a-list) DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

73 Procedurer som opererar på listor Längden på en lista (define length (lambda (a-list) (if (null? a-list) 0 DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

74 Procedurer som opererar på listor Längden på en lista (define length (lambda (a-list) (if (null? a-list) 0 (+ 1 (length (cdr a-list)))))) DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

75 Procedurer som opererar på listor Sätt in ett nytt element sist i en lista (define append-element (lambda (x a-list) (if (null? a-list) DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

76 Procedurer som opererar på listor Sätt in ett nytt element sist i en lista (define append-element (lambda (x a-list) (if (null? a-list) (cons x ()) DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

77 Procedurer som opererar på listor Sätt in ett nytt element sist i en lista (define append-element (lambda (x a-list) (if (null? a-list) (cons x ()) (cons (car a-list) DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

78 Procedurer som opererar på listor Sätt in ett nytt element sist i en lista (define append-element (lambda (x a-list) (if (null? a-list) (cons x ()) (cons (car a-list) (append-element x (cdr a-list)))))) DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

79 Slå ihop två listor Procedurer som opererar på listor (define append (lambda (x y) (if (null? x) DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

80 Slå ihop två listor Procedurer som opererar på listor (define append (lambda (x y) (if (null? x) y DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

81 Slå ihop två listor Procedurer som opererar på listor (define append (lambda (x y) (if (null? x) y (cons (car x) (append (cdr x) y))))) DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

82 Procedurer som opererar på listor Addera alla tal i en lista (med bara tal i) (define add-items (lambda (a-list) (if (null? a-list) DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

83 Procedurer som opererar på listor Addera alla tal i en lista (med bara tal i) (define add-items (lambda (a-list) (if (null? a-list) 0 DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

84 Procedurer som opererar på listor Addera alla tal i en lista (med bara tal i) (define add-items (lambda (a-list) (if (null? a-list) 0 (+ (car a-list) (add-items (cdr a-list)))))) DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

85 Procedurer som opererar på listor Gör en lista med n kopior av elementet element (define repeat (lambda (n element) (if (= n 0) DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

86 Procedurer som opererar på listor Gör en lista med n kopior av elementet element (define repeat (lambda (n element) (if (= n 0) () DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

87 Procedurer som opererar på listor Gör en lista med n kopior av elementet element (define repeat (lambda (n element) (if (= n 0) () (cons element (repeat (- n 1) element))))) DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

88 Procedurer som opererar på listor Dubblera värdet av alla element i en lista (define double-all (lambda (a-list) (if (null? a-list) DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

89 Procedurer som opererar på listor Dubblera värdet av alla element i en lista (define double-all (lambda (a-list) (if (null? a-list) () DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

90 Procedurer som opererar på listor Dubblera värdet av alla element i en lista (define double-all (lambda (a-list) (if (null? a-list) () (cons (* 2 (car a-list)) (double-all (cdr a-list)))))) DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

91 Procedurer som opererar på listor Ta bort alla förekomster av ett element i en lista (define delete (lambda (element a-list) (cond ((null? a-list) ()) DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

92 Procedurer som opererar på listor Ta bort alla förekomster av ett element i en lista (define delete (lambda (element a-list) (cond ((null? a-list) ()) ((= element (car a-list)) (delete element (cdr a-list))) DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

93 Procedurer som opererar på listor Ta bort alla förekomster av ett element i en lista (define delete (lambda (element a-list) (cond ((null? a-list) ()) ((= element (car a-list)) (delete element (cdr a-list))) (else (cons (car a-list) (delete element (cdr a-list))))))) DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

94 Filtrera en lista Procedurer som opererar på listor >(filter even? ( )) (2 4 6) (define filter (lambda (p? a-list) (cond ((null? a-list) ()) DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

95 Filtrera en lista Procedurer som opererar på listor >(filter even? ( )) (2 4 6) (define filter (lambda (p? a-list) (cond ((null? a-list) ()) ((p? (car a-list)) (cons (car a-list) (filter p? (cdr a-list)))) DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

96 Filtrera en lista Procedurer som opererar på listor >(filter even? ( )) (2 4 6) (define filter (lambda (p? a-list) (cond ((null? a-list) ()) ((p? (car a-list)) (cons (car a-list) (filter p? (cdr a-list)))) (else (filter p? (cdr a-list)))))) DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

97 Procedurer som opererar på listor Nästa gång: Datarepresentation Om vi hittar på en representation för t.ex. rationella tal, kanske lagrar dem som talpar, och programmerar upp en mängd operationer för att manipulera dem vad händer om vi ändrar representationen? DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

98 Procedurer som opererar på listor Nästa gång: Datarepresentation Om vi hittar på en representation för t.ex. rationella tal, kanske lagrar dem som talpar, och programmerar upp en mängd operationer för att manipulera dem vad händer om vi ändrar representationen? Kan vi vara smarta? DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

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

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

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

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

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

Symbolisk data. quote. (define a 1) (define b 2) (jacek johan david) (list a b)

Symbolisk data. quote. (define a 1) (define b 2) (jacek johan david) (list a b) Symbolisk data (1 2 3 4) (a b c d) (jacek johan david) ((jacek "jacek@cs.lth.se") (johan "johang@cs.lth.se") (david "dat99dpe@ludat.lth.se")) ((anna 13) (per 11) (klas 9) (eva 4)) (+ (* 23 4) (/ y x))

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

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

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

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

TDDC74 Lab 02 Listor, sammansatta strukturer

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

Läs mer

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

Datalogi, grundkurs 1 Övningsuppgifter i Scheme. Serafim Dahl, Carina Edlund, m.fl.

Datalogi, grundkurs 1 Övningsuppgifter i Scheme. Serafim Dahl, Carina Edlund, m.fl. Datalogi, grundkurs 1 Övningsuppgifter i Scheme Serafim Dahl, Carina Edlund, m.fl. Hösten 2004 Datalogi, grundkurs 1, hösten 2002 1 1. Vad blir det för resultat vid beräkningen av följande Scheme-uttryck.

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

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

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

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

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

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

Idag: Dataabstraktion

Idag: Dataabstraktion Idag: Dataabstraktion Hur använder vi det vi hittills kan om Scheme för att realisera (implementera) sammansatta data? Hur separerar man datastrukturen från resten av ett program så att ändringar i datastrukturen

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

Ändringsbar (mutable compound) data. TDDC74 Programmering: abstraktion och modellering. Sätta - samman listor kopiering. Hitta sista cons-cellen

Ändringsbar (mutable compound) data. TDDC74 Programmering: abstraktion och modellering. Sätta - samman listor kopiering. Hitta sista cons-cellen TDDC74 Programmering: abstraktion och modellering Ändringsbar (mutable comound) data Att göra strukturförändringar i listor Ändra car- och cdr-ekare SICP 3 (del ) Föreläsning 8 Anders Haraldsson (set-car!

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

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

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

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 Dugga 2, kl 8 10, 5 mars 2015

TDDC74 Programmering: Abstraktion och modellering Dugga 2, kl 8 10, 5 mars 2015 TDDC74 Programmering: Abstraktion och modellering Dugga 2, kl 8 10, 5 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

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

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

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

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

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

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

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

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

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

Börja med att kopiera källkoden till din scheme-katalog (som du skapade i Laboration 1).

Börja med att kopiera källkoden till din scheme-katalog (som du skapade i Laboration 1). Laboration 3 Grafiska figurer I den här laborationen skall du konstruera ett schemeprogram som kan rita rektanglar, punkter, cirklar, linjer och bilder som består utav en eller flera av nyss nämnda figurer.

Läs mer

TDDC74 Programmering, abstraktion och modellering. Tentamen

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

Läs mer

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

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

Läs mer

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

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

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

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

Läs mer

TDDC74 Lab 04 Muterbara strukturer, omgivningar

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

Läs mer

TDDC74 Programmering, abstraktion och modellering. 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 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

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 Generellt om avbrott Generera avbrott Snabb sortering principer Snabb sortering i Scheme och Python QuickSort (dela städat slå ihop) Mergesort (dela slå

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

Lära dig analysera större och mer komplicerade problem och formulera lösningar innan du implementerar.

Lära dig analysera större och mer komplicerade problem och formulera lösningar innan du implementerar. Laboration 5 Mängder Syfte Lära dig analysera större och mer komplicerade problem och formulera lösningar innan du implementerar. Lära dig kombinera på ett lämpligt sätt de begrepp och metoder som du har

Läs mer

TDDC74 Programmering: Abstraktion och modellering. Provkod TEN1, Tid: kl 14-18, , Kåra

TDDC74 Programmering: Abstraktion och modellering. Provkod TEN1, Tid: kl 14-18, , Kåra Tentamen Provkod TEN1, Tid: kl 14-18, 2013-06- 07, Kåra Läs alla frågorna först och bestäm dig för den ordning som passar dig bäst. Även om det i uppgi;en står a< du skall skriva en procedur/funk?on, så

Läs mer

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

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

Läs mer

TDDC74 Programmering, abstraktion och modellering. Tentamen

TDDC74 Programmering, abstraktion och modellering. Tentamen AID-nummer: Datum: 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

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

Procedurer och villkor. Rekursiva procedurer. Exempel: n-fakultet Procedurer och villkor Rekursiva procedurer (define lessorequal (lambda (x y) (or (< x y) (= x y)))) (define between (lambda (x y z) (and (lessorequal x y) (lessorequal y z)))) > (between 3 4 5) #t > (between

Läs mer

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

Procedurer och villkor

Procedurer och villkor Procedurer och villkor (define lessorequal (lambda (x y) (or (< x y) (= x y)))) (define between (lambda (x y z) (and (lessorequal x y) (lessorequal y z)))) > (between 3 4 5) #t > (between 3 2 5) #f DA2001

Läs mer

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

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

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

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

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

Datalogi, grundkurs 1. Lösningsförslag till tentamen Datalogi, grundkurs 1 Lösningsförslag till tentamen 19:e maj 2000 1. a. (4p) I koden finns två fel. i. I den inre funktionen ser vi att argumentet in referensanropas. Det får till följd att listan förstörs,

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

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

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

Programmering II (ID1019) :00-11:00

Programmering II (ID1019) :00-11:00 ID1019 Johan Montelius Programmering II (ID1019) 2015-06-11 08:00-11:00 Instruktioner Du får inte ha något materiel med dig förutom skrivmateriel. Mobiler etc, skall lämnas till tentamensvakten. Svaren

Läs mer

Datalogi, grundkurs 1

Datalogi, grundkurs 1 Datalogi, grundkurs 1 Tentamen 9 dec 2014 Tillåtna hjälpmedel: Revised 6 Report on the Algorithmic Language Scheme och Tre olika s.k. Cheat Sheets för Scheme Sex olika s.k. Cheat Sheets för Python Tänk

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

I ett program hantera man ofta samlingar av objekt av samma typ.

I ett program hantera man ofta samlingar av objekt av samma typ. Fält I ett program hantera man ofta samlingar av objekt av samma typ. Sådana samlingar vill man vanligtvis kunna gruppera ihop till en sammanhängande struktur. För detta ändamål tillhandahåller Java språkkonstruktioner

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

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

Tentamen *:58/ID100V Programmering i C Exempel 3

Tentamen *:58/ID100V Programmering i C Exempel 3 DSV Tentamen *:58/ID100V Sid 1(5) Tentamen *:58/ID100V Programmering i C Exempel 3 Denna tentamen består av fyra uppgifter som tillsammans kan de ge maximalt 22 poäng. För godkänt resultat krävs minst

Läs mer

Sista delen av kursen

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

Läs mer

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

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

Läs mer

Institutionen för datavetenskap, DAT060, Laboration 2 2 För denna enkla simulerings skull kommer handen att representeras som ett par tal μ värdet på

Institutionen för datavetenskap, DAT060, Laboration 2 2 För denna enkla simulerings skull kommer handen att representeras som ett par tal μ värdet på DAT 060 Laboration 2 I Malmös kasino Institutionen för datavetenskap 17 juni 2002 Per tänkte dryga ut sitt magra studielån genom att jobba som labbassistent på sommarkursen. Tyvärr fanns det redan tillräckligt

Läs mer

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

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

Läs mer

Förra gången: Primitiva data

Förra gången: Primitiva data Förra gången: Primitiva data > 30 30 > 45.56 45.56 Variabler: > (define telnr 6000) > telnr 6000 DA2001 (Föreläsning 3) Datalogi 1 Hösten 2013 1 / 24 Förra gången: Procedurapplikation: > (+ 7900000 telnr)

Läs mer

Introduktion till programmering SMD180. Föreläsning 8: Listor

Introduktion till programmering SMD180. Föreläsning 8: Listor Introduktion till programmering Föreläsning 8: Listor 1 1 Listor = generaliserade strängar Strängar = sekvenser av tecken Listor = sekvenser av vad som helst Exempel: [10, 20, 30, 40] # en lista av heltal

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

Mål. Datorteknik. Innehåll. Innehåll (forts) Hur ser ett program ut? Hur skapas maskinkoden?

Mål. Datorteknik. Innehåll. Innehåll (forts) Hur ser ett program ut? Hur skapas maskinkoden? Mål Datorteknik Föreläsning 3 Att veta hur maskinkoden för ett program byggs upp Att börja programmera i på riktigt Att kunna skriva och anropa subrutiner i Att förstå hur stacken fungerar Att veta vad

Läs mer

Övningsuppgifter #11, Programkonstruktion och datastrukturer

Övningsuppgifter #11, Programkonstruktion och datastrukturer Övningsuppgifter #11, Programkonstruktion och datastrukturer Lösningsförslag Elias Castegren elias.castegren@it.uu.se Övningar 1. 1 2. 2 3. Ett binomialträd med rang n har 2 n noder. En binomial heap innehåller

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

Datalogi för E Övning 3

Datalogi för E Övning 3 Datalogi för E Övning 3 Mikael Huss hussm@nada.kth.se AlbaNova, Roslagstullsbacken 35 08-790 62 26 Kurshemsida: http://www.csc.kth.se/utbildning/kth/kurser/2d1343/datae06 Dagens program Att skapa egna

Läs mer

Tentamen i Grundläggande Programvaruutveckling, TDA548

Tentamen i Grundläggande Programvaruutveckling, TDA548 Tentamen i Grundläggande Programvaruutveckling, Joachim von Hacht/Magnus Myreen Datum: 2017-08-14 Tid: 14.00-18.00 Hjälpmedel: Lexikon Engelskt-Valfritt språk. Betygsgränser: U: -23 3: 24-37 4: 38-47 5

Läs mer

Institutionen för elektro- och informationsteknologi, LTH

Institutionen för elektro- och informationsteknologi, LTH Datorteknik Föreläsning 3 Assembler, stack och subrutiner, programmeringskonventionen Mål Att veta hur maskinkoden för ett program byggs upp Att börja programmera i assembler på riktigt Att kunna skriva

Läs mer

Datorteknik. Föreläsning 3. Assembler, stack och subrutiner, programmeringskonventionen. Institutionen för elektro- och informationsteknologi, LTH

Datorteknik. Föreläsning 3. Assembler, stack och subrutiner, programmeringskonventionen. Institutionen för elektro- och informationsteknologi, LTH Datorteknik Föreläsning 3 Assembler, stack och subrutiner, programmeringskonventionen Mål Att veta hur maskinkoden för ett program byggs upp Att börja programmera i assembler på riktigt Att kunna skriva

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

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

Hur man programmerar. TDDC66 Datorsystem och programmering Föreläsning 3. Peter Dalenius Institutionen för datavetenskap Hur man programmerar TDDC66 Datorsystem och programmering Föreläsning 3 Peter Dalenius Institutionen för datavetenskap 2014-09-05 Översikt Problemlösning: Hur ska man tänka? Datatyper Listor (forsätter

Läs mer

Programkonstruktion och Datastrukturer

Programkonstruktion och Datastrukturer Programkonstruktion och Datastrukturer VT 2012 Tidskomplexitet Elias Castegren elias.castegren.7381@student.uu.se Problem och algoritmer Ett problem är en uppgift som ska lösas. Beräkna n! givet n>0 Räkna

Läs mer

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

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

Läs mer

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

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

TDDC74 PROGRAMMERING: ABSTRAKTION OCH MODELLERING VT 2017

TDDC74 PROGRAMMERING: ABSTRAKTION OCH MODELLERING VT 2017 FÖRELÄSNING 1 TDDC74 PROGRAMMERING: ABSTRAKTION OCH MODELLERING VT 2017 Introduktion till kursen Schemespråkets grunder Enkla exempel Jalal Maleki Institutionen för datavetenskap Linköpings universitet

Läs mer

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

Modularitet och tillstånd. Stora system kräver en uppdelning. En lösning: modularitet. Basera programmets struktur på den fysiska systemets struktur:

Modularitet och tillstånd. Stora system kräver en uppdelning. En lösning: modularitet. Basera programmets struktur på den fysiska systemets struktur: Modularitet och tillstånd Stora system kräver en uppdelning. En lösning: modularitet Basera programmets struktur på den fysiska systemets struktur: En fysisk objekt en beräkningsobjekt Ett agerande en

Läs mer

Pascal. Vi har ofta behov av att behandla klumpar av data som i sig är inhomogena men sett över ett helt register har klumparna lika struktur.

Pascal. Vi har ofta behov av att behandla klumpar av data som i sig är inhomogena men sett över ett helt register har klumparna lika struktur. Poster Vi har ofta behov av att behandla klumpar av data som i sig är inhomogena men sett över ett helt register har klumparna lika struktur. TYPE car = RECORD model : 1900..2000; ndoors : 2..5; weight

Läs mer

Poster... Poster. Poster... Poster...

Poster... Poster. Poster... Poster... Poster Vi har ofta behov av att behandla klumpar av data som i sig är inhomogena men sett över ett helt register har klumparna lika struktur. TYPE car = RECORD model : 1900..2000; ndoors : 2..5; weight

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