Idag: Dataabstraktion

Relevanta dokument
Idag: Dataabstraktion

Idag: Par och listor. Symboler. Symboler används för att uttrycka icke-numeriska data såsom namn, adress, bilregisternummer, boktitel, osv.

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

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

Signalflödesmodellen. Två (gamla) exempel: Kvadratera alla jämna löv.

Föreläsning 9 Exempel

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

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

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

1 3H 0 2gre ordningens procedurer

TDDC74 Programmering, abstraktion och modellering. Tentamen

TDDC74 Programmering, abstraktion och modellering. Tentamen

Datalogi, grundkurs 1

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

I dag: Blockstruktur, omgivningar, problemlösning

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

Procedurer och villkor

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)

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

TDDC74 Lab 04 Muterbara strukturer, omgivningar

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

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

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?

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

TDDC74 Programmering: Abstraktion och modellering Dugga 3, kl 8 10, 7 april 2016

TDDC74 Programmering: Abstraktion och modellering Tenta, kl 14 18, 11 juni 2014

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

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

TDDC74 Programmering, abstraktion och modellering. Tentamen

TDDC74 Programmering: Abstraktion och modellering Dugga 2, kl 8 10, 5 mars 2015

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å

Datalogi, grundkurs 1

TDDC74 Programmering, abstraktion och modellering. Tentamen

TDDC74 Programmering: Abstraktion och modellering Datortenta

TDDC74 Lab 02 Listor, sammansatta strukturer

Typsystem. Typsystem... Typsystem... Typsystem... 2 *

Typsystem. DA2001 (Föreläsning 23) Datalogi 1 Hösten / 19

TDDC74 Programmering, abstraktion och modellering DUGGA 3

Datalogi, grundkurs 1

BEGREPP HITTILLS FÖRELÄSNING 2 SAMMANSATTA UTTRYCK - SCHEME DATORSPRÅK

TDDC74 Programmering, abstraktion och modellering DUGGA 2

TDDC74 - Lektionsmaterial C

TDDC74 Programmering: Abstraktion och modellering Datordugga 2 - exempel

TDDC74 Programmering: Abstraktion och modellering Datortenta , kl 08-12

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

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

TDDC74 Programmering: Abstraktion och modellering Dugga 2, kl 8 10, 3 mars 2016

Imperativ programmering. Imperativ programmering konstruktioner i Lisp. Datastrukturer (kap ) arraystruktur poststruktur

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

Dagens föreläsning Programmering i Lisp Fö 5

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

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

Sökning och sortering

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

Tentamen i. TDDA 69 Data och programstrukturer

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

Förra gången: Primitiva data

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

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

TDDC74 Programmering: Abstraktion och modellering Dugga 2, , kl 14-16

TDDC74 PROGRAMMERING: ABSTRAKTION OCH MODELLERING VT 2017

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

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

Dataabstraktion. TDDD73 Funktionell och impterativ programmering i Python Föreläsning 12. Peter Dalenius Institutionen för datavetenskap

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

TDDC74 Programmering: Abstraktion och modellering Dugga 2, , kl 17-19

Tabeller. Programkonstruktion. Moment 8 Om abstrakta datatyper och binära sökträd. Specifikationer för tabellfunktionerna. Operationer på tabellen

Tentamen i. TDDC67 Funktionell programmering och Lisp

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

TDDC74 Programmering: Abstraktion och modellering Tentamen, lördag 29 augusti 2015, kl 8 12

Dagens föreläsning. Diverse Common Lisp. Konstanter, parametrar, globala variabler

Abstrakta datatyper. Dagens föreläsning. Abstract data types (ADT)

Dagens föreläsning. TDDC67 Funktionell programmering och Lisp Fö 8 och 9

Våra enkla funktioner eller procedurer

Programmering II (ID1019) :00-11:00

"Är en"-relation. "Har en"-relation. Arv. Seminarium 2 Relevanta uppgifter. I exemplet Boll från förra föreläsningen gällde

Några saker till och lite om snabbare sortering

Programdesign. Dokumentera. Dokumentera

Abstrakta datatyper Laboration 2 GruDat, DD1344

Tabeller. Programkonstruktion. Moment 8 Om abstrakta datatyper och binära sökträd. Implementering av tabellen. Operationer på tabellen

Deklarationer/definitioner/specifikationer

Programdesign. minnesutrymme storlek på indata. DA2001 (Föreläsning 15) Datalogi 1 Hösten / 20

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

Läsanvisning till Discrete matematics av Norman Biggs - 5B1118 Diskret matematik

Funktionell programmering DD1361

FÖRELÄSNING 2, TDDC74, VT2018 BEGREPP PROBLEMLÖSNING MED HJÄLP AV FALLANALYS PROBLEMLÖSNING MED HJÄLP AV REKURSION

Programmeringsmetodik DV1 Programkonstruktion 1. Moment 8 Om abstrakta datatyper och binära sökträd

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

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

Programmeringsteknik I

Repetition i Python 3. Exemplen fac. Exemplen fac motivering. Exemplen fac i Python

Objektorienterad programmering D2

Introduktion till formella metoder Programmeringsmetodik 1. Inledning

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

Lektion 1. Förenklingar. Valentina Chapovalova. vårterminen IT-Gymnasiet. Valentina Chapovalova Lektion 1

Lambdas. (och fler design patterns) Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2017

Rekursiva algoritmer sortering sökning mönstermatchning

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

Bättre COBOL. monitors. Peter Sterwe. training people

Transkript:

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 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 2013 1 / 16

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 2013 1 / 16

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 2013 2 / 16

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 2013 2 / 16

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, 1219 150, 10 15 DA2001 (Föreläsning 7) Datalogi 1 Hösten 2013 2 / 16

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, 1219 150, 10 15 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 2013 2 / 16

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, 1219 150, 10 15 Vi kan använda en lista med två element för att lagra (representera) ett rationellt tal: > (list 2 3) (2 3) > (list 1219 150) (1219 150) DA2001 (Föreläsning 7) Datalogi 1 Hösten 2013 2 / 16

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 2013 3 / 16

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 2013 3 / 16

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 2013 3 / 16

Exempel: rationella tal... > (define x (list 2 3)) > DA2001 (Föreläsning 7) Datalogi 1 Hösten 2013 4 / 16

Exempel: rationella tal... > (define x (list 2 3)) > (define y (list 3 4)) > DA2001 (Föreläsning 7) Datalogi 1 Hösten 2013 4 / 16

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 2013 4 / 16

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 2013 4 / 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 2013 5 / 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)) > (define y (cons 3 4)) > DA2001 (Föreläsning 7) Datalogi 1 Hösten 2013 5 / 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)) > (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 2013 5 / 16

Exempel: rationella tal... (define +rat (lambda (x y) (cons (+ (* (car x) (cdr y)) DA2001 (Föreläsning 7) Datalogi 1 Hösten 2013 6 / 16

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 2013 6 / 16

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 2013 6 / 16

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 2013 6 / 16

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 2013 6 / 16

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 2013 7 / 16

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 2013 7 / 16

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 2013 7 / 16

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 2013 8 / 16

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 2013 8 / 16

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 2013 9 / 16

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 2013 9 / 16

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 2013 10 / 16

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 2013 10 / 16

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 2013 10 / 16

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 2013 10 / 16

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 2013 10 / 16

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 2013 10 / 16

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 2013 10 / 16

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 2013 10 / 16

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 2013 11 / 16

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 2013 12 / 16

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 2013 13 / 16

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 2013 14 / 16

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 2013 14 / 16

Dataabstraktion... (define =rat (lambda (x y) (= (* (numer x) (denom y)) (* (denom x) (numer y))))) DA2001 (Föreläsning 7) Datalogi 1 Hösten 2013 15 / 16

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 2013 15 / 16

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 2013 16 / 16

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 2013 16 / 16

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 2013 16 / 16

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 2013 16 / 16

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 2013 16 / 16