Idag: Dataabstraktion
|
|
- Mikael Jakobsson
- för 6 år sedan
- Visningar:
Transkript
1 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 / 16
2 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 inte påverkar resten av programmet? DA2001 (Föreläsning 7) Datalogi 1 Hösten / 16
3 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 inte påverkar resten av programmet? Bra om du läst följande avsnitt i AS: Inledningen i avsnittet: Building Abstractions with Data Introduction to Data Abstraction DA2001 (Föreläsning 7) Datalogi 1 Hösten / 16
4 Exempel rationella tal De flesta Scheme-varianterna har någon form av stöd för rationella tal men Scheme väljer ganska fritt hur presentationen skall ske och växlar mellan olika former av presentationsformat DA2001 (Föreläsning 7) Datalogi 1 Hösten / 16
5 Exempel rationella tal De flesta Scheme-varianterna har någon form av stöd för rationella tal men Scheme väljer ganska fritt hur presentationen skall ske och växlar mellan olika former av presentationsformat Om man vill representera rationella tal exakt så duger alltså inte talrepresentationen i Scheme. DA2001 (Föreläsning 7) Datalogi 1 Hösten / 16
6 Exempel rationella tal De flesta Scheme-varianterna har någon form av stöd för rationella tal men Scheme väljer ganska fritt hur presentationen skall ske och växlar mellan olika former av presentationsformat Om man vill representera rationella tal exakt så duger alltså inte talrepresentationen i Scheme. Ett rationellt tal kan skrivas som ett bråk: 2 3, , DA2001 (Föreläsning 7) Datalogi 1 Hösten / 16
7 Exempel rationella tal De flesta Scheme-varianterna har någon form av stöd för rationella tal men Scheme väljer ganska fritt hur presentationen skall ske och växlar mellan olika former av presentationsformat Om man vill representera rationella tal exakt så duger alltså inte talrepresentationen i Scheme. Ett rationellt tal kan skrivas som ett bråk: 2 3, , Vi kan använda en lista med två element för att lagra (representera) ett rationellt tal: > (list 2 3) (2 3) DA2001 (Föreläsning 7) Datalogi 1 Hösten / 16
8 Exempel rationella tal De flesta Scheme-varianterna har någon form av stöd för rationella tal men Scheme väljer ganska fritt hur presentationen skall ske och växlar mellan olika former av presentationsformat Om man vill representera rationella tal exakt så duger alltså inte talrepresentationen i Scheme. Ett rationellt tal kan skrivas som ett bråk: 2 3, , Vi kan använda en lista med två element för att lagra (representera) ett rationellt tal: > (list 2 3) (2 3) > (list ) ( ) DA2001 (Föreläsning 7) Datalogi 1 Hösten / 16
9 Exempel: rationella tal... Använder vi listor för att lagra täljare och nämnare kan de aritmetiska operationer för rationella tal implementeras på följande sätt, här endast addition och multiplikation: DA2001 (Föreläsning 7) Datalogi 1 Hösten / 16
10 Exempel: rationella tal... Använder vi listor för att lagra täljare och nämnare kan de aritmetiska operationer för rationella tal implementeras på följande sätt, här endast addition och multiplikation: (define +rat (lambda (x y) (list (+ (* (car x) (cadr y)) (* (car y) (cadr x))) (* (cadr x) (cadr y))))) DA2001 (Föreläsning 7) Datalogi 1 Hösten / 16
11 Exempel: rationella tal... Använder vi listor för att lagra täljare och nämnare kan de aritmetiska operationer för rationella tal implementeras på följande sätt, här endast addition och multiplikation: (define +rat (lambda (x y) (list (+ (* (car x) (cadr y)) (* (car y) (cadr x))) (* (cadr x) (cadr y))))) (define *rat (lambda (x y) (list (* (car x) (car y)) (* (cadr x) (cadr y))))) DA2001 (Föreläsning 7) Datalogi 1 Hösten / 16
12 Exempel: rationella tal... > (define x (list 2 3)) > DA2001 (Föreläsning 7) Datalogi 1 Hösten / 16
13 Exempel: rationella tal... > (define x (list 2 3)) > (define y (list 3 4)) > DA2001 (Föreläsning 7) Datalogi 1 Hösten / 16
14 Exempel: rationella tal... > (define x (list 2 3)) > (define y (list 3 4)) > (+rat x y) (17 12) > DA2001 (Föreläsning 7) Datalogi 1 Hösten / 16
15 Exempel: rationella tal... > (define x (list 2 3)) > (define y (list 3 4)) > (+rat x y) (17 12) > (*rat x y) (6 12) DA2001 (Föreläsning 7) Datalogi 1 Hösten / 16
16 Exempel: rationella tal... I och för sig fungerar den lösningen. Men den kan förbättras. T.ex. kan man minska minnesbehovet genom att använda par istället för listor för att lagra rationella tal. > (define x (cons 2 3)) > DA2001 (Föreläsning 7) Datalogi 1 Hösten / 16
17 Exempel: rationella tal... I och för sig fungerar den lösningen. Men den kan förbättras. T.ex. kan man minska minnesbehovet genom att använda par istället för listor för att lagra rationella tal. > (define x (cons 2 3)) > (define y (cons 3 4)) > DA2001 (Föreläsning 7) Datalogi 1 Hösten / 16
18 Exempel: rationella tal... I och för sig fungerar den lösningen. Men den kan förbättras. T.ex. kan man minska minnesbehovet genom att använda par istället för listor för att lagra rationella tal. > (define x (cons 2 3)) > (define y (cons 3 4)) > (+rat x y) När det sista uttrycket beräknas, kommer Scheme att klaga på att proceduren cadr har ett par som argument. Man måste byta alla cadr mot cdr. DA2001 (Föreläsning 7) Datalogi 1 Hösten / 16
19 Exempel: rationella tal... (define +rat (lambda (x y) (cons (+ (* (car x) (cdr y)) DA2001 (Föreläsning 7) Datalogi 1 Hösten / 16
20 Exempel: rationella tal... (define +rat (lambda (x y) (cons (+ (* (car x) (cdr y)) (* (car y) (cdr x))) DA2001 (Föreläsning 7) Datalogi 1 Hösten / 16
21 Exempel: rationella tal... (define +rat (lambda (x y) (cons (+ (* (car x) (cdr y)) (* (car y) (cdr x))) (* (cdr x) (cdr y))))) DA2001 (Föreläsning 7) Datalogi 1 Hösten / 16
22 Exempel: rationella tal... (define +rat (lambda (x y) (cons (+ (* (car x) (cdr y)) (* (car y) (cdr x))) (* (cdr x) (cdr y))))) osv (define *rat (lambda (x y)... DA2001 (Föreläsning 7) Datalogi 1 Hösten / 16
23 Exempel: rationella tal... (define +rat (lambda (x y) (cons (+ (* (car x) (cdr y)) (* (car y) (cdr x))) (* (cdr x) (cdr y))))) osv (define *rat (lambda (x y)... Det krävs många ändringar i stora program när man vill ändra datastrukturen. DA2001 (Föreläsning 7) Datalogi 1 Hösten / 16
24 Dataabstraktion Vad man kan göra istället är att skriva en uppsättning konstruktorer och selektorer som hanterar datastrukturen. Procedurer som +rat och *rat anropar då inte car och cdr direkt, utan anropar istället konstruktorerna och selektorerna. DA2001 (Föreläsning 7) Datalogi 1 Hösten / 16
25 Dataabstraktion Vad man kan göra istället är att skriva en uppsättning konstruktorer och selektorer som hanterar datastrukturen. Procedurer som +rat och *rat anropar då inte car och cdr direkt, utan anropar istället konstruktorerna och selektorerna. En konstruktor är en procedur som skapar en (tillämpningsspecifik) typ av dataobjekt. DA2001 (Föreläsning 7) Datalogi 1 Hösten / 16
26 Dataabstraktion Vad man kan göra istället är att skriva en uppsättning konstruktorer och selektorer som hanterar datastrukturen. Procedurer som +rat och *rat anropar då inte car och cdr direkt, utan anropar istället konstruktorerna och selektorerna. En konstruktor är en procedur som skapar en (tillämpningsspecifik) typ av dataobjekt. (define make-rat (lambda (numer denom) (list numer denom))) DA2001 (Föreläsning 7) Datalogi 1 Hösten / 16
27 Dataabstraktion... En selektor är en procedur som returnerar en del av ett (tillämpningsspecifikt) dataobjekt. (define numer (lambda (rat) (car rat))) DA2001 (Föreläsning 7) Datalogi 1 Hösten / 16
28 Dataabstraktion... En selektor är en procedur som returnerar en del av ett (tillämpningsspecifikt) dataobjekt. (define numer (lambda (rat) (car rat))) (define denom (lambda (rat) (cadr rat))) DA2001 (Föreläsning 7) Datalogi 1 Hösten / 16
29 Dataabstraktion... Med hjälp av konstruktorn och selektorerna kan de aritmetiska operationerna skrivas så: (define +rat (lambda (x y) (make-rat (+ (* (numer x) (denom y)) (* (numer y) (denom x))) (* (denom x) (denom y))))) DA2001 (Föreläsning 7) Datalogi 1 Hösten / 16
30 Dataabstraktion... Med hjälp av konstruktorn och selektorerna kan de aritmetiska operationerna skrivas så: (define +rat (lambda (x y) (make-rat (+ (* (numer x) (denom y)) (* (numer y) (denom x))) (* (denom x) (denom y))))) (define *rat (lambda (x y) (make-rat (* (numer x) (numer y)) (* (denom x) (denom y))))) DA2001 (Föreläsning 7) Datalogi 1 Hösten / 16
31 Dataabstraktion... Vi har lagt till ett isolerande skikt mellan de aritmetiska operationerna och datastrukturen: +rat, *rat,... DA2001 (Föreläsning 7) Datalogi 1 Hösten / 16
32 Dataabstraktion... Vi har lagt till ett isolerande skikt mellan de aritmetiska operationerna och datastrukturen: +rat, *rat,... aritmetiska regler (operationer) DA2001 (Föreläsning 7) Datalogi 1 Hösten / 16
33 Dataabstraktion... Vi har lagt till ett isolerande skikt mellan de aritmetiska operationerna och datastrukturen: +rat, *rat,... aritmetiska regler (operationer) DA2001 (Föreläsning 7) Datalogi 1 Hösten / 16
34 Dataabstraktion... Vi har lagt till ett isolerande skikt mellan de aritmetiska operationerna och datastrukturen: +rat, *rat,... aritmetiska regler (operationer) make-rat, numer, denom DA2001 (Föreläsning 7) Datalogi 1 Hösten / 16
35 Dataabstraktion... Vi har lagt till ett isolerande skikt mellan de aritmetiska operationerna och datastrukturen: +rat, *rat,... aritmetiska regler (operationer) make-rat, numer, denom dataabstraktion DA2001 (Föreläsning 7) Datalogi 1 Hösten / 16
36 Dataabstraktion... Vi har lagt till ett isolerande skikt mellan de aritmetiska operationerna och datastrukturen: +rat, *rat,... aritmetiska regler (operationer) make-rat, numer, denom dataabstraktion DA2001 (Föreläsning 7) Datalogi 1 Hösten / 16
37 Dataabstraktion... Vi har lagt till ett isolerande skikt mellan de aritmetiska operationerna och datastrukturen: +rat, *rat,... aritmetiska regler (operationer) make-rat, numer, denom dataabstraktion list, cons, car, cadr, cdr,... DA2001 (Föreläsning 7) Datalogi 1 Hösten / 16
38 Dataabstraktion... Vi har lagt till ett isolerande skikt mellan de aritmetiska operationerna och datastrukturen: +rat, *rat,... aritmetiska regler (operationer) make-rat, numer, denom dataabstraktion list, cons, car, cadr, cdr,... datastrukturer och språkprimitiver DA2001 (Föreläsning 7) Datalogi 1 Hösten / 16
39 Dataabstraktion... Om man nu vill använda par istället för listor, behöver man bara ändra make-rat och denom: (define make-rat (lambda (numer denom) (cons numer denom))) (define denom (lambda (rat) (cdr rat))) DA2001 (Föreläsning 7) Datalogi 1 Hösten / 16
40 Dataabstraktion... Vill man också ta bort gemensamma faktorer i täljaren och nämnaren i ett rationellt tal kan detta göras på två sätt: (define numer (lambda (rat) (let ((g (gcd (car rat) (cdr rat)))) (/ (car rat) g)))) (define denom (lambda (rat) (let ((g (gcd (car rat) (cdr rat)))) (/ (cdr rat) g)))) eller DA2001 (Föreläsning 7) Datalogi 1 Hösten / 16
41 Dataabstraktion... (define make-rat (lambda (numer denom) (let ((g (gcd numer denom))) (cons (/ numer g) (/ denom g))))) där det senare verkar mest naturligt man normaliserar vid konstruktion av ett rationellt tal. DA2001 (Föreläsning 7) Datalogi 1 Hösten / 16
42 Dataabstraktion... Resterande aritmetiska operationer för rationella tal: (define -rat (lambda (x y) (make-rat (- (* (numer x) (denom y)) (* (numer y) (denom x))) (* (denom x) (denom y))))) DA2001 (Föreläsning 7) Datalogi 1 Hösten / 16
43 Dataabstraktion... Resterande aritmetiska operationer för rationella tal: (define -rat (lambda (x y) (make-rat (- (* (numer x) (denom y)) (* (numer y) (denom x))) (* (denom x) (denom y))))) (define /rat (lambda (x y) (make-rat (* (numer x) (denom y)) (* (numer y) (denom x))))) DA2001 (Föreläsning 7) Datalogi 1 Hösten / 16
44 Dataabstraktion... (define =rat (lambda (x y) (= (* (numer x) (denom y)) (* (denom x) (numer y))))) DA2001 (Föreläsning 7) Datalogi 1 Hösten / 16
45 Dataabstraktion... (define =rat (lambda (x y) (= (* (numer x) (denom y)) (* (denom x) (numer y))))) (define print-rat (lambda (x) (newline) (display (numer x)) (display "/") (display (denom x)))) DA2001 (Föreläsning 7) Datalogi 1 Hösten / 16
46 Nästa gång: Hur gör man så generella procedurer att de klarar en hel klass av problem, DA2001 (Föreläsning 7) Datalogi 1 Hösten / 16
47 Nästa gång: Hur gör man så generella procedurer att de klarar en hel klass av problem, t.ex. alla sorters summeringar, som exempelvis nedanstående? DA2001 (Föreläsning 7) Datalogi 1 Hösten / 16
48 Nästa gång: Hur gör man så generella procedurer att de klarar en hel klass av problem, t.ex. alla sorters summeringar, som exempelvis nedanstående? b 0 om a > b i = b a + i annars i=a i=a+1 DA2001 (Föreläsning 7) Datalogi 1 Hösten / 16
49 Nästa gång: Hur gör man så generella procedurer att de klarar en hel klass av problem, t.ex. alla sorters summeringar, som exempelvis nedanstående? b 0 om a > b i = b a + i annars i=a i=a+1 eller 0 om a > b i = a + i annars a i b, a odd a+2 i b, a odd DA2001 (Föreläsning 7) Datalogi 1 Hösten / 16
50 Nästa gång: Hur gör man så generella procedurer att de klarar en hel klass av problem, t.ex. alla sorters summeringar, som exempelvis nedanstående? b 0 om a > b i = b a + i annars i=a i=a+1 eller 0 om a > b i = a + i annars a i b, a odd a+2 i b, a odd Läs gärna följande avsnitt i AS: Formulating Abstractions with Higher-Order Procedures men INTE: Procedures as General Methods Procedures as Returned Values DA2001 (Föreläsning 7) Datalogi 1 Hösten / 16
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
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ä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
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
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
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
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
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.
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
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
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
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
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
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
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
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
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
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.
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
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 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.
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
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å
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
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 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ö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: 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
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
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
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
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
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 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
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
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 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:
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ÅÄÖ
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
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 - 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 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 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
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
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
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.)
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
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
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
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.
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
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
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
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
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)
Ä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!
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
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.
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
Dataabstraktion. TDDD73 Funktionell och imperativ programmering i Python Föreläsning 12. Peter Dalenius Institutionen för datavetenskap
Dataabstraktion TDDD73 Funktionell och imperativ programmering i Python Föreläsning 12 Peter Dalenius Institutionen för datavetenskap 2014-11-19 Översikt Vad är abstraktion? Vad är en abstrakt datatyp?
LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p
UMEÅ UNIVERSITET Datavetenskap 010530 LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p Betygsgränser 3 21,5-27 4 27,5-33,5 5 34-43 Uppgift 1. (4p) Hitta de fel som finns i nedanstående klass (det
Dataabstraktion. TDDD73 Funktionell och impterativ programmering i Python Föreläsning 12. Peter Dalenius Institutionen för datavetenskap
Dataabstraktion TDDD73 Funktionell och impterativ programmering i Python Föreläsning 12 Peter Dalenius Institutionen för datavetenskap 2013-11-12 Översikt Vad är abstraktion? Vad är en abstrakt datatyp?
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
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
Tabeller. Programkonstruktion. Moment 8 Om abstrakta datatyper och binära sökträd. Specifikationer för tabellfunktionerna. Operationer på tabellen
Programkonstruktion Moment 8 Om abstrakta datatyper och binära sökträd Tabeller En viktig tillämpning är tabeller att ifrån en nyckel kunna ta fram ett tabellvärde. Ett typiskt exempel är en telefonkatalog:
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
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
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.
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
Abstrakta datatyper. Dagens föreläsning. Abstract data types (ADT)
1 2 Dagens föreläsning TDDC67 Funktionell programmering och Lisp Fö 8 och 9 Dataabstraktion - Abstrakta datatyper - datatypbeskrivning - datatyplikhet - sammansättningar av datatyper med sekvens, tupel,
Dagens föreläsning. TDDC67 Funktionell programmering och Lisp Fö 8 och 9
1 Dagens föreläsning TDDC67 Funktionell programmering och Lisp Fö 8 och 9 Dataabstraktion - Abstrakta datatyper - datatypbeskrivning - datatyplikhet - sammansättningar av datatyper med sekvens, tupel,
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
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
"Är en"-relation. "Har en"-relation. Arv. Seminarium 2 Relevanta uppgifter. I exemplet Boll från förra föreläsningen gällde
Föreläsning 7 "Har en"-relation Arv "Har en" "Är en" Superklassen Object Överskuggning Fordonsexempel Seminarium 2 Relevanta uppgifter Uppgift 31 I exemplet Boll från förra föreläsningen gällde följande
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å
Programdesign. Dokumentera. Dokumentera
Programdesign Dokumentera Välj datastruktur så programmet blir så enkelt som möjligt. Välj algoritm så programmet blir lättläst, robust och effektivt. Analysera programmet för att få en bra metod. Överväganden
Abstrakta datatyper Laboration 2 GruDat, DD1344
Abstrakta datatyper Laboration 2 GruDat, DD1344 Örjan Ekeberg (fritt från en idé av Henrik Eriksson) 27 oktober 2008 Målsättning Målet med denna laboration är att ge en inblick i hur man kan använda abstrakta
Tabeller. Programkonstruktion. Moment 8 Om abstrakta datatyper och binära sökträd. Implementering av tabellen. Operationer på tabellen
Programkonstruktion Moment 8 Om abstrakta datatyper och binära sökträd Tabeller En viktig tillämpning är tabellen att ifrån en nyckel kunna ta fram ett tabellvärde. Ett typiskt exempel är en telefonkatalog:
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
Programdesign. minnesutrymme storlek på indata. DA2001 (Föreläsning 15) Datalogi 1 Hösten / 20
Programdesign Välj datastruktur så programmet blir så enkelt som möjligt. Välj algoritm så programmet blir lättläst, robust och effektivt. Analysera programmet för att få en bra metod. Överväganden vid
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äsanvisning till Discrete matematics av Norman Biggs - 5B1118 Diskret matematik
Läsanvisning till Discrete matematics av Norman Biggs - 5B1118 Diskret matematik Mats Boij 28 oktober 2001 1 Heltalen Det första kapitlet handlar om heltalen och deras aritmetik, dvs deras egenskaper som
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 ->
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
Programmeringsmetodik DV1 Programkonstruktion 1. Moment 8 Om abstrakta datatyper och binära sökträd
Programmeringsmetodik DV1 Programkonstruktion 1 Moment 8 Om abstrakta datatyper och binära sökträd PK1&PM1 HT-06 moment 8 Sida 1 Uppdaterad 2005-09-22 Tabeller En viktig tillämpning är tabellen att ifrån
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
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))
Programmeringsteknik I
Programmeringsteknik I Föreläsning 2: Grundläggande Java Johan Öfverstedt Java Grundläggande begrepp Datatyper Selektion if Räckvidd (scope) Iteration while Klasser Objekt Metoder Metodhuvudet Kodstandarden
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
Objektorienterad programmering D2
Objektorienterad programmering D2 Laboration nr 2. Syfte Att få förståelse för de grundläggande objektorienterade begreppen. Redovisning Källkoden för uppgifterna skall skickas in via Fire. För senaste
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
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
Lektion 1. Förenklingar. Valentina Chapovalova. vårterminen IT-Gymnasiet. Valentina Chapovalova Lektion 1
Lektion 1 Förenklingar Valentina Chapovalova IT-Gymnasiet vårterminen 2011 Valentina Har magisterexamen i matematik Undervisar på mattekollo varje sommar Tycker om brädspel Matematiken förenklar Matematikens
Lambdas. (och fler design patterns) Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2017
Lambdas (och fler design patterns) Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2017 Funktioner En funktion (i programmeringstermer) är en operation som tar ett eller flera argument,
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
Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper
Tentamen Programmeringsteknik I 2016-06-11 Skrivtid: 0900 1400 Tänk på följande Skriv läsligt. Använd inte rödpenna. Skriv bara på framsidan av varje papper. Lägg uppgifterna i ordning. Skriv uppgiftsnummer
Bättre COBOL. monitors. Peter Sterwe. training people
training people monitors Bättre COBOL Peter Sterwe Bättra på dina kunskaper i COBOL på ett översiktligt och pedagogiskt sätt från företaget som har mer än trettio års erfarenhet av utbildning inom IBM