Föreläsning 9 Exempel
|
|
- Charlotta Sandström
- för 7 år sedan
- Visningar:
Transkript
1 Föreläsning 9 Exempel Intervallhalveringsmetoden DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
2 Föreläsning 9 Exempel Intervallhalveringsmetoden Newton-Raphsons metod DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
3 Föreläsning 9 Exempel Intervallhalveringsmetoden Newton-Raphsons metod Mer om rekursion DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
4 Föreläsning 9 Exempel Intervallhalveringsmetoden Newton-Raphsons metod Mer om rekursion Tidskomplexitet DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
5 Föreläsning 9 Exempel Intervallhalveringsmetoden Newton-Raphsons metod Mer om rekursion Tidskomplexitet Procedurabstraktion DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
6 Föreläsning 9 Exempel Intervallhalveringsmetoden Newton-Raphsons metod Mer om rekursion Tidskomplexitet Procedurabstraktion Representation DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
7 Föreläsning 9 Exempel Intervallhalveringsmetoden Newton-Raphsons metod Mer om rekursion Tidskomplexitet Procedurabstraktion Representation Bra om ni läst följande avsnitt i AS: Procedures as General Methods Procedures as Returned Values Tree Recursion Orders of Growth Exponentiation Example: Representing Sets DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
8 Intervallhalveringsmetoden Finn ett nollställe till funktionen f (x). y f(x) x x 0 m x 1 DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
9 Intervallhalveringsmetoden Finn ett nollställe till funktionen f (x). y f(x) x x 0 m x 1 Välj x 0 och x 1 så att f (x 0 ) f (x1) < 0 och x 0 < x 1 DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
10 Intervallhalveringsmetoden... m = (x 0 + x 1 )/2 om f (x 0 ) f (m) < 0 så x 1 = m annars x 0 = m om x 0 x 1 > ɛ annars är m en rot DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
11 Intervallhalveringsmetoden... (define intervallhalvering (lambda (f x0 x1 eps) DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
12 Intervallhalveringsmetoden... (define intervallhalvering (lambda (f x0 x1 eps) (define close-enough? (lambda (a b) (< (abs (- a b)) eps))) DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
13 Intervallhalveringsmetoden... (define intervallhalvering (lambda (f x0 x1 eps) (define close-enough? (lambda (a b) (< (abs (- a b)) eps))) (let ((m (/ (+ x0 x1) 2))) DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
14 Intervallhalveringsmetoden... (define intervallhalvering (lambda (f x0 x1 eps) (define close-enough? (lambda (a b) (< (abs (- a b)) eps))) (let ((m (/ (+ x0 x1) 2))) (if (close-enough? x1 x0) m (if (negative? (* (f x0) (f m))) DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
15 Intervallhalveringsmetoden... (define intervallhalvering (lambda (f x0 x1 eps) (define close-enough? (lambda (a b) (< (abs (- a b)) eps))) (let ((m (/ (+ x0 x1) 2))) (if (close-enough? x1 x0) m (if (negative? (* (f x0) (f m))) (intervallhalvering f x0 m eps) DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
16 Intervallhalveringsmetoden... (define intervallhalvering (lambda (f x0 x1 eps) (define close-enough? (lambda (a b) (< (abs (- a b)) eps))) (let ((m (/ (+ x0 x1) 2))) (if (close-enough? x1 x0) m (if (negative? (* (f x0) (f m))) (intervallhalvering f x0 m eps) (intervallhalvering f m x1 eps)))))) DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
17 Intervallhalveringsmetoden... (define intervallhalvering (lambda (f x0 x1 eps) (define close-enough? (lambda (a b) (< (abs (- a b)) eps))) (let ((m (/ (+ x0 x1) 2))) (if (close-enough? x1 x0) m (if (negative? (* (f x0) (f m))) (intervallhalvering f x0 m eps) (intervallhalvering f m x1 eps)))))) > (intervallhalvering (lambda (x) (- (* x x) 2)) ) DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
18 Intervallhalveringsmetoden... (define intervallhalvering (lambda (f x0 x1 eps) (define close-enough? (lambda (a b) (< (abs (- a b)) eps))) (let ((m (/ (+ x0 x1) 2))) (if (close-enough? x1 x0) m (if (negative? (* (f x0) (f m))) (intervallhalvering f x0 m eps) (intervallhalvering f m x1 eps)))))) > (intervallhalvering (lambda (x) (- (* x x) 2)) ) DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
19 Newton-Raphsons metod Ett tal x kallas fixpunkt för en funktion f om f (x), f (f (x)), f (f (f (x))),... konvergerar mot x DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
20 Newton-Raphsons metod Ett tal x kallas fixpunkt för en funktion f om f (x), f (f (x)), f (f (f (x))),... konvergerar mot x Ex.: F (x n ) = x n+1 = x n f (x n) f (x n ) DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
21 Newton-Raphsons metod... (define newton-raphson (lambda (f guess) DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
22 Newton-Raphsons metod... (define newton-raphson (lambda (f guess) (if (good-enough? f guess) guess (newton-raphson f (improve guess f))))) DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
23 Newton-Raphsons metod... (define newton-raphson (lambda (f guess) (if (good-enough? f guess) guess (newton-raphson f (improve guess f))))) (define good-enough? (lambda (func guess) (< (abs (func guess)) ))) DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
24 Newton-Raphsons metod... (define newton-raphson (lambda (f guess) (if (good-enough? f guess) guess (newton-raphson f (improve guess f))))) (define good-enough? (lambda (func guess) (< (abs (func guess)) ))) (define improve (lambda (guess f) (- guess (/ (f guess) ((derivata f 0.001) guess))))) DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
25 Newton-Raphsons metod... (define newton-raphson (lambda (f guess) (if (good-enough? f guess) guess (newton-raphson f (improve guess f))))) (define good-enough? (lambda (func guess) (< (abs (func guess)) ))) (define improve (lambda (guess f) (- guess (/ (f guess) ((derivata f 0.001) guess))))) (define derivata (lambda (f dx) (lambda (x) (/ (- (f (+ x dx)) (f (- x dx))) (* dx 2))))) DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
26 Mer om rekursion Definition av fibonaccitalen: 0 om n = 0 fib n = 1 om n = 1 fib n 1 + fib n 2 annars DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
27 Mer om rekursion Definition av fibonaccitalen: 0 om n = 0 fib n = 1 om n = 1 fib n 1 + fib n 2 annars (define fib (lambda (n) (cond ((= n 0) 0) ((= n 1) 1) (else (+ (fib (- n 1)) (fib (- n 2))))))) DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
28 Mer om rekursion Definition av fibonaccitalen: 0 om n = 0 fib n = 1 om n = 1 fib n 1 + fib n 2 annars (define fib (lambda (n) (cond ((= n 0) 0) ((= n 1) 1) (else (+ (fib (- n 1)) (fib (- n 2))))))) Varje anrop ger upphov till högst två nya anrop. Antal anrop blir då c:a 2 n. Antalet anrop växer exponentiellt med argumentet n. DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
29 Mer om rekursion... f(3) f(4) f(2) f(2) f(1) f(1) f(0) f(1) f(0) DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
30 Mer om rekursion... f(3) f(4) f(2) f(2) f(1) f(1) f(0) f(1) f(0) Antag att ett anrop tar 1 ms. Då tar (fib 4) 9 ms, (fib 10) 177 ms, (fib 20) 20 s, (fib 40) 3.8 dagar, (fib 80) år! DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
31 Mer om rekursion... Kan det göras bättre? Här är en svansrekursiv lösning: DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
32 Mer om rekursion... Kan det göras bättre? Här är en svansrekursiv lösning: (define fib-2 (lambda (n) (fib-2-iter 1 0 1))) DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
33 Mer om rekursion... Kan det göras bättre? Här är en svansrekursiv lösning: (define fib-2 (lambda (n) (define fib-2-iter (lambda (fibm fibm-1 m) (if (<= n m) fibm (fib-2-iter (+ fibm fibm-1) fibm (+ m 1))))) (fib-2-iter 1 0 1))) DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
34 Mer om rekursion... Kan det göras bättre? Här är en svansrekursiv lösning: (define fib-2 (lambda (n) (define fib-2-iter (lambda (fibm fibm-1 m) (if (<= n m) fibm (fib-2-iter (+ fibm fibm-1) fibm (+ m 1))))) (fib-2-iter 1 0 1))) Antalet anrop av fib-2-iter växer linjärt med argumentet n. Mycket kan vinnas genom att tänka igenom programmet ordentligt. OBS! att fib-2 är svansrekursiv! DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
35 Mer om rekursion... fib-2 Om vi gör trace på fib-2-iter får vi för anropet (fib-2 7): (fib-2-iter 1 0 1) (fib-2-iter 1 1 2) (fib-2-iter 2 1 3) (fib-2-iter 3 2 4) (fib-2-iter 5 3 5) (fib-2-iter 8 5 6) (fib-2-iter ) 13 DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
36 Tidskomplexitet Låt T (n) vara den tid det tar att utföra en uppgift enligt den algoritm vi använder. DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
37 Tidskomplexitet Låt T (n) vara den tid det tar att utföra en uppgift enligt den algoritm vi använder. Vi är då endast intresserade av beroendet av n (problemets storlek) DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
38 Tidskomplexitet Låt T (n) vara den tid det tar att utföra en uppgift enligt den algoritm vi använder. Vi är då endast intresserade av beroendet av n (problemets storlek) Om T (n) är proportionell mot 2 n så säger vi att T (n) O (2 n ) DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
39 Tidskomplexitet Låt T (n) vara den tid det tar att utföra en uppgift enligt den algoritm vi använder. Vi är då endast intresserade av beroendet av n (problemets storlek) Om T (n) är proportionell mot 2 n så säger vi att T (n) O (2 n ) dvs: ( n 0, c)( n > n 0 )[T (n) c 2 n ] T (n) O (2 n ) DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
40 Tidskomplexitet Låt T (n) vara den tid det tar att utföra en uppgift enligt den algoritm vi använder. Vi är då endast intresserade av beroendet av n (problemets storlek) Om T (n) är proportionell mot 2 n så säger vi att T (n) O (2 n ) dvs: eller mer generellt: ( n 0, c)( n > n 0 )[T (n) c 2 n ] T (n) O (2 n ) ( n 0, c)( n > n 0 )[T (n) c f (n)] T (n) O (f (n)) DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
41 Tidskomplexitet Beräkning av b n DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
42 Tidskomplexitet Beräkning av b n Linjär rekursion med n steg (T (n) O (n)): { b n 1 om n = 0 = b b n 1 annars DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
43 Tidskomplexitet Beräkning av b n Linjär rekursion med n steg (T (n) O (n)): { b n 1 om n = 0 = b b n 1 annars (define expt-1 (lambda (b n) (if (= n 0) 1 (* b (expt-1 b (- n 1)))))) DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
44 Tidskomplexitet... Annan idé (T (n) O (log n)): 1 om n = 0 b n = b (b (n 1)/2 ) 2 om n = är udda (b n/2 ) 2 annars DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
45 Tidskomplexitet... Annan idé (T (n) O (log n)): 1 om n = 0 b n = b (b (n 1)/2 ) 2 om n = är udda (b n/2 ) 2 annars (define expt-2 (lambda (b n) (cond (( = n 0) 1) ((odd? n) (* b (sqr (expt-2 b (/ (- n 1) 2))))) (else (sqr (expt-2 b (/ n 2))))))) DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
46 Tidskomplexitet... Bra att veta att man kan räkna på algoritmer. DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
47 Tidskomplexitet... Bra att veta att man kan räkna på algoritmer. Vi kommer inte att göra det. DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
48 Tidskomplexitet... Bra att veta att man kan räkna på algoritmer. Vi kommer inte att göra det. Jag vill bara påpeka att det intuitiva sättet att skriva ett program kan vara förödande. DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
49 Tidskomplexitet... Bra att veta att man kan räkna på algoritmer. Vi kommer inte att göra det. Jag vill bara påpeka att det intuitiva sättet att skriva ett program kan vara förödande. Då och då kan jag komma att påpeka något om en algoritms effektivitet, men bara för att jämföra med någon annan algoritm. DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
50 Tidskomplexitet... Bra att veta att man kan räkna på algoritmer. Vi kommer inte att göra det. Jag vill bara påpeka att det intuitiva sättet att skriva ett program kan vara förödande. Då och då kan jag komma att påpeka något om en algoritms effektivitet, men bara för att jämföra med någon annan algoritm. Mer om detta kommer i komplexitetskursen. DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
51 Procedurabstraktioner Vi har (hittills) byggt abstraktioner med hjälp av procedurer DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
52 Procedurabstraktioner Vi har (hittills) byggt abstraktioner med hjälp av procedurer procedurer som använder procedurer... DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
53 Procedurabstraktioner Vi har (hittills) byggt abstraktioner med hjälp av procedurer procedurer som använder procedurer... procedurer som parametrar DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
54 Procedurabstraktioner Vi har (hittills) byggt abstraktioner med hjälp av procedurer procedurer som använder procedurer... procedurer som parametrar procedurer med inre procedurer DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
55 Procedurabstraktioner Vi har (hittills) byggt abstraktioner med hjälp av procedurer procedurer som använder procedurer... procedurer som parametrar procedurer med inre procedurer procedurer som bygger procedurer DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
56 Procedurabstraktioner Vi har (hittills) byggt abstraktioner med hjälp av procedurer procedurer som använder procedurer... procedurer som parametrar procedurer med inre procedurer procedurer som bygger procedurer Vi har också byggt abstraktioner med hjälp av data. DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
57 Representation I många fall kan vi representera samma (abstrakta) begrepp på flera olika sätt. DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
58 Representation I många fall kan vi representera samma (abstrakta) begrepp på flera olika sätt. Varje representation har sina fördelar och nackdelar. DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
59 Representation I många fall kan vi representera samma (abstrakta) begrepp på flera olika sätt. Varje representation har sina fördelar och nackdelar. Det gäller att kunna resonera kring dessa för- och nackdelar för att välja det som är bäst (??). DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
60 Representation I många fall kan vi representera samma (abstrakta) begrepp på flera olika sätt. Varje representation har sina fördelar och nackdelar. Det gäller att kunna resonera kring dessa för- och nackdelar för att välja det som är bäst (??). Man måste väga enkelhet, effektivitet, begriplighet m m mot varandra. DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
61 Representation I många fall kan vi representera samma (abstrakta) begrepp på flera olika sätt. Varje representation har sina fördelar och nackdelar. Det gäller att kunna resonera kring dessa för- och nackdelar för att välja det som är bäst (??). Man måste väga enkelhet, effektivitet, begriplighet m m mot varandra. Låt oss titta på representation av mängder. Lite enklare begreppsmässigt än de som ska hanteras i labben. DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
62 Representation I många fall kan vi representera samma (abstrakta) begrepp på flera olika sätt. Varje representation har sina fördelar och nackdelar. Det gäller att kunna resonera kring dessa för- och nackdelar för att välja det som är bäst (??). Man måste väga enkelhet, effektivitet, begriplighet m m mot varandra. Låt oss titta på representation av mängder. Lite enklare begreppsmässigt än de som ska hanteras i labben. De kan representeras bl a som oordnade listor, ordnade listor eller trädstrukturer. Vi ska titta lite på de två liststrukturerna. DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
63 Mängdoperationer Operation symboliskt exempel Union A B {1, 2, 3} {3, 4, 5} = {1, 2, 3, 4, 5} DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
64 Mängdoperationer Operation symboliskt exempel Union A B {1, 2, 3} {3, 4, 5} = {1, 2, 3, 4, 5} Snitt A B {1, 2, 3} {3, 4, 5} = {3} DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
65 Mängdoperationer Operation symboliskt exempel Union A B {1, 2, 3} {3, 4, 5} = {1, 2, 3, 4, 5} Snitt A B {1, 2, 3} {3, 4, 5} = {3} Differens A \ B {1, 2, 3}\{3, 4, 5} = {1, 2} DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
66 Mängdoperationer Operation symboliskt exempel Union A B {1, 2, 3} {3, 4, 5} = {1, 2, 3, 4, 5} Snitt A B {1, 2, 3} {3, 4, 5} = {3} Differens A \ B {1, 2, 3}\{3, 4, 5} = {1, 2} Kartesisk prod A B {1, 2} {3, 4} = {(1. 3), (1. 4), (2. 3), (2. 4)} DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
67 Mängdoperationer Operation symboliskt exempel Union A B {1, 2, 3} {3, 4, 5} = {1, 2, 3, 4, 5} Snitt A B {1, 2, 3} {3, 4, 5} = {3} Differens A \ B {1, 2, 3}\{3, 4, 5} = {1, 2} Kartesisk prod A B {1, 2} {3, 4} = {(1. 3), (1. 4), (2. 3), (2. 4)} Member e A 3 {1, 2, 3} = true DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
68 Mängdoperationer Operation symboliskt exempel Union A B {1, 2, 3} {3, 4, 5} = {1, 2, 3, 4, 5} Snitt A B {1, 2, 3} {3, 4, 5} = {3} Differens A \ B {1, 2, 3}\{3, 4, 5} = {1, 2} Kartesisk prod A B {1, 2} {3, 4} = {(1. 3), (1. 4), (2. 3), (2. 4)} Member e A 3 {1, 2, 3} = true Insert A + e {1, 2, 3} + 4 = {1, 2, 3, 4} DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
69 Mängdoperationer Operation symboliskt exempel Union A B {1, 2, 3} {3, 4, 5} = {1, 2, 3, 4, 5} Snitt A B {1, 2, 3} {3, 4, 5} = {3} Differens A \ B {1, 2, 3}\{3, 4, 5} = {1, 2} Kartesisk prod A B {1, 2} {3, 4} = {(1. 3), (1. 4), (2. 3), (2. 4)} Member e A 3 {1, 2, 3} = true Insert A + e {1, 2, 3} + 4 = {1, 2, 3, 4} Delete A e {1, 2, 3} 2 = {1, 3} DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
70 Mängdoperationer Operation symboliskt exempel Union A B {1, 2, 3} {3, 4, 5} = {1, 2, 3, 4, 5} Snitt A B {1, 2, 3} {3, 4, 5} = {3} Differens A \ B {1, 2, 3}\{3, 4, 5} = {1, 2} Kartesisk prod A B {1, 2} {3, 4} = {(1. 3), (1. 4), (2. 3), (2. 4)} Member e A 3 {1, 2, 3} = true Insert A + e {1, 2, 3} + 4 = {1, 2, 3, 4} Delete A e {1, 2, 3} 2 = {1, 3} För enkelhets skull begränsar vi diskussionen till mängder av heltal och operationerna, och +. DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
71 Representation, oordnade listor... Mängdtillhörighet ( ): (define element-of-set? (lambda (element set) DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
72 Representation, oordnade listor... Mängdtillhörighet ( ): (define element-of-set? (lambda (element set) (cond ((null? set) #f) DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
73 Representation, oordnade listor... Mängdtillhörighet ( ): (define element-of-set? (lambda (element set) (cond ((null? set) #f) ((= element (car set)) #t) DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
74 Representation, oordnade listor... Mängdtillhörighet ( ): (define element-of-set? (lambda (element set) (cond ((null? set) #f) ((= element (car set)) #t) (else (element-of-set? element (cdr set)))))) DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
75 Representation, oordnade listor... Mängdtillhörighet ( ): (define element-of-set? (lambda (element set) (cond ((null? set) #f) ((= element (car set)) #t) (else (element-of-set? element (cdr set)))))) Linjär oordnad lista ger O (n) (n är antalet element) DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
76 Representation, oordnade listor... Lägga till ett element (+): (define adjoin-set (lambda (element set) (if (element-of-set? element set) DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
77 Representation, oordnade listor... Lägga till ett element (+): (define adjoin-set (lambda (element set) (if (element-of-set? element set) set DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
78 Representation, oordnade listor... Lägga till ett element (+): (define adjoin-set (lambda (element set) (if (element-of-set? element set) set (cons element set)))) DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
79 Representation, oordnade listor... Lägga till ett element (+): (define adjoin-set (lambda (element set) (if (element-of-set? element set) set (cons element set)))) Också O (n), vi letar igenom mängden och sätter in i första position. DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
80 Representation, oordnade listor... Snittet mellan två mängder ( ): (define intersect (lambda (set-1 set-2) (cond ((or (null? set-1) (null? set-2)) ()) DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
81 Representation, oordnade listor... Snittet mellan två mängder ( ): (define intersect (lambda (set-1 set-2) (cond ((or (null? set-1) (null? set-2)) ()) ((element-of-set? (car set-1) set-2) DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
82 Representation, oordnade listor... Snittet mellan två mängder ( ): (define intersect (lambda (set-1 set-2) (cond ((or (null? set-1) (null? set-2)) ()) ((element-of-set? (car set-1) set-2) (cons (car set-1) (intersect (cdr set-1) set-2))) DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
83 Representation, oordnade listor... Snittet mellan två mängder ( ): (define intersect (lambda (set-1 set-2) (cond ((or (null? set-1) (null? set-2)) ()) ((element-of-set? (car set-1) set-2) (cons (car set-1) (intersect (cdr set-1) set-2))) (else (intersect (cdr set-1) set-2))))) DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
84 Representation, oordnade listor... Snittet mellan två mängder ( ): (define intersect (lambda (set-1 set-2) (cond ((or (null? set-1) (null? set-2)) ()) ((element-of-set? (car set-1) set-2) (cons (car set-1) (intersect (cdr set-1) set-2))) (else (intersect (cdr set-1) set-2))))) För varje element i den ena mängden gås den andra mängden igenom. Om båda har n element får vi O ( n 2). Enkla algoritmer till priset av fart. DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
85 Representation, ordnade listor... Vi byter representation till ordnade listor. DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
86 Representation, ordnade listor... Vi byter representation till ordnade listor. Mängdtillhörighet ( ): (define element-of-set? (lambda (element set) (cond ((null? set) #f) DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
87 Representation, ordnade listor... Vi byter representation till ordnade listor. Mängdtillhörighet ( ): (define element-of-set? (lambda (element set) (cond ((null? set) #f) ((< element (car set)) #f) DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
88 Representation, ordnade listor... Vi byter representation till ordnade listor. Mängdtillhörighet ( ): (define element-of-set? (lambda (element set) (cond ((null? set) #f) ((< element (car set)) #f) ((= element (car set)) #t) DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
89 Representation, ordnade listor... Vi byter representation till ordnade listor. Mängdtillhörighet ( ): (define element-of-set? (lambda (element set) (cond ((null? set) #f) ((< element (car set)) #f) ((= element (car set)) #t) (else (element-of-set? element (cdr set)))))) DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
90 Representation, ordnade listor... Vi byter representation till ordnade listor. Mängdtillhörighet ( ): (define element-of-set? (lambda (element set) (cond ((null? set) #f) ((< element (car set)) #f) ((= element (car set)) #t) (else (element-of-set? element (cdr set)))))) Fortfarande O (n). DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
91 Representation, ordnade listor... Lägga till ett element (+): (define adjoin-set (lambda (element set) (cond ((null? set) (list element)) DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
92 Representation, ordnade listor... Lägga till ett element (+): (define adjoin-set (lambda (element set) (cond ((null? set) (list element)) ((= element (car set)) set) DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
93 Representation, ordnade listor... Lägga till ett element (+): (define adjoin-set (lambda (element set) (cond ((null? set) (list element)) ((= element (car set)) set) ((< element (car set)) (cons element set)) DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
94 Representation, ordnade listor... Lägga till ett element (+): (define adjoin-set (lambda (element set) (cond ((null? set) (list element)) ((= element (car set)) set) ((< element (car set)) (cons element set)) (else (cons (car set) (adjoin-set element (cdr set))))))) DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
95 Representation, ordnade listor... Lägga till ett element (+): (define adjoin-set (lambda (element set) (cond ((null? set) (list element)) ((= element (car set)) set) ((< element (car set)) (cons element set)) (else (cons (car set) (adjoin-set element (cdr set))))))) Fortfarande O (n). DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
96 Representation, ordnade listor... Snittet mellan två mängder ( ): (define intersect (lambda (set-1 set-2) (if (or (null? set-1) (null? set-2)) DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
97 Representation, ordnade listor... Snittet mellan två mängder ( ): (define intersect (lambda (set-1 set-2) (if (or (null? set-1) (null? set-2)) () DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
98 Representation, ordnade listor... Snittet mellan två mängder ( ): (define intersect (lambda (set-1 set-2) (if (or (null? set-1) (null? set-2)) () (let ((x1 (car set-1)) (x2 (car set-2))) DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
99 Representation, ordnade listor... Snittet mellan två mängder ( ): (define intersect (lambda (set-1 set-2) (if (or (null? set-1) (null? set-2)) () (let ((x1 (car set-1)) (x2 (car set-2))) (cond ((= x1 x2) (cons x1 (intersect (cdr set-1) (cdr set-2)))) DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
100 Representation, ordnade listor... Snittet mellan två mängder ( ): (define intersect (lambda (set-1 set-2) (if (or (null? set-1) (null? set-2)) () (let ((x1 (car set-1)) (x2 (car set-2))) (cond ((= x1 x2) (cons x1 (intersect (cdr set-1) (cdr set-2)))) ((< x1 x2) (intersect (cdr set-1) set-2)) DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
101 Representation, ordnade listor... Snittet mellan två mängder ( ): (define intersect (lambda (set-1 set-2) (if (or (null? set-1) (null? set-2)) () (let ((x1 (car set-1)) (x2 (car set-2))) (cond ((= x1 x2) (cons x1 (intersect (cdr set-1) (cdr set-2)))) ((< x1 x2) (intersect (cdr set-1) set-2)) (else (intersect set-1 (cdr set-2)))))))) DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
102 Representation, ordnade listor... Snittet mellan två mängder ( ): (define intersect (lambda (set-1 set-2) (if (or (null? set-1) (null? set-2)) () (let ((x1 (car set-1)) (x2 (car set-2))) (cond ((= x1 x2) (cons x1 (intersect (cdr set-1) (cdr set-2)))) ((< x1 x2) (intersect (cdr set-1) set-2)) (else (intersect set-1 (cdr set-2)))))))) Högst m + n om set-1 har m element och set-2 har n. O (n) alltså! En väsentlig förbättring! DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
103 Slut på Scheme, vi börjar med Python Ni har redan kommit långt i programmeringsteknik DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
104 Slut på Scheme, vi börjar med Python Ni har redan kommit långt i programmeringsteknik Med lite eftertanke kan ni redan lösa ganska komplicerade uppgifter DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
105 Slut på Scheme, vi börjar med Python Ni har redan kommit långt i programmeringsteknik Med lite eftertanke kan ni redan lösa ganska komplicerade uppgifter Men kursen handlar egentligen om verktyg för att hantera datorer DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
106 Slut på Scheme, vi börjar med Python Ni har redan kommit långt i programmeringsteknik Med lite eftertanke kan ni redan lösa ganska komplicerade uppgifter Men kursen handlar egentligen om verktyg för att hantera datorer Vi måste bort från det abstrakta och se en del på detaljer DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
107 Slut på Scheme, vi börjar med Python Ni har redan kommit långt i programmeringsteknik Med lite eftertanke kan ni redan lösa ganska komplicerade uppgifter Men kursen handlar egentligen om verktyg för att hantera datorer Vi måste bort från det abstrakta och se en del på detaljer och på andra sätt att tänka DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
108 Slut på Scheme, vi börjar med Python Ni har redan kommit långt i programmeringsteknik Med lite eftertanke kan ni redan lösa ganska komplicerade uppgifter Men kursen handlar egentligen om verktyg för att hantera datorer Vi måste bort från det abstrakta och se en del på detaljer och på andra sätt att tänka Python passar perfekt men övergången kan bli tuff DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
109 Slut på Scheme, vi börjar med Python Ni har redan kommit långt i programmeringsteknik Med lite eftertanke kan ni redan lösa ganska komplicerade uppgifter Men kursen handlar egentligen om verktyg för att hantera datorer Vi måste bort från det abstrakta och se en del på detaljer och på andra sätt att tänka Python passar perfekt men övergången kan bli tuff Vi pratar Python men övar och labbar fortfarande i Scheme DA2001 (Föreläsning 9) Datalogi 1 Hösten / 24
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
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
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ä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
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
FÖRELÄSNING 2, TDDC74, VT2018 BEGREPP PROBLEMLÖSNING MED HJÄLP AV FALLANALYS PROBLEMLÖSNING MED HJÄLP AV REKURSION
FÖRELÄSNING 2, TDDC74, VT2018 Begrepp och definitioner (delvis från föreläsning 1) Fallanalys som problemlösningsmetod Rekursivt fallanalys Rekursiva beskrivningar och processer de kan skapa Rekursiva
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))
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
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
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,
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
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
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)
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.
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
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.
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
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
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
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
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
1 3H 0 2gre ordningens procedurer
1 3H 0 2gre ordningens procedurer 6 1 Anonyma procedurer DA2001 (F 0 2rel 0 1sning 8) Datalogi 1 H 0 2sten 2013 1 / 18 1 3H 0 2gre ordningens procedurer 6 1 Anonyma procedurer 6 1 Objekt DA2001 (F 0 2rel
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
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
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
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
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
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.
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ÅÄÖ
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ö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
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
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.
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.
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
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å
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.
Våra enkla funktioner eller procedurer
Föreläsning 3 Våra enkla funktioner eller procedurer Programmönster 1. Repetition 2. Högre-ordningens procedurer/programmönster - Procedurer som argument - Procedurer som returnerade värden 3. Scope och
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
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
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å
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
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
public static void mystery(int n) { if (n > 0){ mystery(n-1); System.out.print(n * 4); mystery(n-1); } }
Rekursion 25 7 Rekursion Tema: Rekursiva algoritmer. Litteratur: Avsnitt 5.1 5.5 (7.1 7.5 i gamla upplagan) samt i bilderna från föreläsning 6. U 59. Man kan definiera potensfunktionen x n (n heltal 0)
Ä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!
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
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
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
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
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
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
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:
MMA132: Laboration 2 Matriser i MATLAB
MMA132: Laboration 2 Matriser i MATLAB Introduktion I den här labben skall vi lära oss hur man använder matriser och vektorer i MATLAB. Det är rekommerad att du ser till att ha laborationshandledningen
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.
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
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
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
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
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
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
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
Omtentamen (del 1, 6 högskolepoäng) i Programkonstruktion och datastrukturer (1DL201)
Omtentamen (del 1, 6 högskolepoäng) i Programkonstruktion och datastrukturer (1DL201) Lars-Henrik Eriksson Fredag 5 april 2013, kl 14:00 17:00, i Polacksbackens skrivsal Hjälpmedel: Inga. Inte heller elektronisk
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
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
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 ->
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
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
FÖRELÄSNING 1 PERSONAL TDDC74 PROGRAMMERING: ABSTRAKTION OCH MODELLERING VT 2017 SYFTE EXAMINATION ORGANISATION
TDDC74 PROGRAMMERING: ABSTRAKTION OCH MODELLERING VT 2017 Jalal Maleki Institutionen för datavetenskap Linköpings universitet jalal.maleki@liu.se FÖRELÄSNING 1 Introduktion till kursen Schemespråkets grunder
Algoritmanalys. Inledning. Informationsteknologi Malin Källén, Tom Smedsaas 1 september 2016
Informationsteknologi Malin Källén, Tom Smedsaas 1 september 2016 Algoritmanalys Inledning Exempel 1: x n När vi talade om rekursion presenterade vi två olika sätt att beräkna x n, ett iterativt: x n =
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
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
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
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
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
Tentamen Datastrukturer (DAT036)
Tentamen Datastrukturer (DAT036) Datum och tid för tentamen: 2014-04-25, 14:00 18:00. Författare: Nils Anders Danielsson. Ansvarig: Nils Anders Danielsson. Nås på 0700 620 602 eller anknytning 1680. Besöker
Upplägg. Binära träd. Träd. Binära träd. Binära träd. Antal löv på ett träd. Binära träd (9) Binära sökträd (10.1)
Binära träd Algoritmer och Datastrukturer Markus Saers markus.saers@lingfil.uu.se Upplägg Binära träd (9) Binära sökträd (0.) Träd Många botaniska termer Träd, rot, löv, gren, Trädets rot kan ha ett antal
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
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
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;
TDDC74 Programmering: Abstraktion och modellering Dugga 3, kl 8 10, 7 april 2016
TDDC74 Programmering: Abstraktion och modellering Dugga 3, kl 8 10, 7 april 2016 Läs alla frågorna först och bestäm dig för i vilken ordning du vill lösa uppgifterna. Uppgifterna är inte ordnade i någon
Ickelinjära ekvationer
Löpsedel: Icke-linjära ekvationer Ickelinjära ekvationer Beräkningsvetenskap I Varför är det svårt att lösa icke-linjära ekvationer? Iterativa metoder Bisektion/intervallhalvering Newton-Raphsons metod
TDDC74 Programmering: Abstraktion och modellering Dugga 2, kl 8 10, 3 mars 2016
TDDC74 Programmering: Abstraktion och modellering Dugga 2, kl 8 10, 3 mars 2016 Läs alla frågorna först och bestäm dig för i vilken ordning du vill lösa uppgifterna. Uppgifterna är inte ornade i någon
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
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
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.
Grundläggande datalogi - Övning 4
Grundläggande datalogi - Övning 4 Björn Terelius November 21, 2008 Definitioner Olika mått på komplexitet Definition En funktion f sägs vara O(g) om det existerar konstanter c, N så att f (n) < cg(n) för
Dugga Datastrukturer (DAT036)
Dugga Datastrukturer (DAT036) Duggans datum: 2012-11-21. Författare: Nils Anders Danielsson. För att en uppgift ska räknas som löst så måste en i princip helt korrekt lösning lämnas in. Enstaka mindre
Block 5: Ickelineära. ekvationer? Läroboken. Löpsedel: Icke-lineära. ekvationer. Vad visade laborationen? Vad visade laborationen?
Block 5: Ickelineära ekvationer Löpsedel: Icke-lineära ekvationer Varför är det svårt att lösa ickelineära ekvationer? Iterativa metoder Bisektion/intervallhalvering Newton-Raphsons metod Noggrannhet/stoppvillkor
Självbalanserande träd AVL-träd. Koffman & Wolfgang kapitel 9, avsnitt 1 2
Självbalanserande träd AVL-träd Koffman & Wolfgang kapitel 9, avsnitt 1 2 1 Balanserade träd Nodbalanserat träd: skillnaden i antalet noder mellan vänster och höger delträd är högst 1 Höjdbalanserat träd:
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
TDDC74 Programmering, abstraktion och modellering DUGGA 1
AID-nummer: Datum: 2011-02-04 1 Tekniska högskolan vid Linköpings universitet Institutionen för datavetenskap Anders Haraldsson TDDC74 Programmering, abstraktion och modellering DUGGA 1 Fredag 4 feb 14-16
SCB :-0. Uno Holmer, Chalmers, höger 2 Ex. Induktiv definition av lista. // Basfall
Rekursiva funktioner Föreläsning 10 (Weiss kap. 7) Induktion och rekursion Rekursiva funktioner och processer Weiss 7.1-3 (7.4, 7.5.3 utgår) Fibonaccital (7.3.4) Exempel: Balansering av mobil (kod se lab
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:
Datastrukturer, algoritmer och programkonstruktion (DVA104, VT 2015) Föreläsning 6
Datastrukturer, algoritmer och programkonstruktion (DVA104, VT 2015) Föreläsning 6? DAGENS AGENDA Komplexitet Ordobegreppet Komplexitetsklasser Loopar Datastrukturer Några nyttiga regler OBS! Idag jobbar
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
Översikt. Stegvis förfining. Stegvis förfining. Dekomposition. Algoritmer. Metod för att skapa ett program från ett analyserat problem
Översikt Stegvis förfining Pseudokod Flödesdiagram Dekomposition KISS-regeln Procedurell dekomposition DRY-regeln Algoritmer Sortering och sökning Stegvis förfining Metod för att skapa ett program från
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
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
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