1 3H 0 2gre ordningens procedurer

Relevanta dokument
Förra gången: Primitiva data

I dag: Blockstruktur, omgivningar, problemlösning

Idag: Dataabstraktion

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

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

Procedurer och villkor

Föreläsning 9 Exempel

Idag: Dataabstraktion

Våra enkla funktioner eller procedurer

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

TDDC74 PROGRAMMERING: ABSTRAKTION OCH MODELLERING VT 2017

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

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

FÖRELÄSNING 1 PERSONAL TDDC74 PROGRAMMERING: ABSTRAKTION OCH MODELLERING VT 2017 SYFTE EXAMINATION ORGANISATION

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

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)

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

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

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.

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

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

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

TDDC74 Programmering, abstraktion och modellering DUGGA 1

TDDC74 Lab 04 Muterbara strukturer, omgivningar

Datalogi, grundkurs 1

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

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

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

TDDC74 Programmering, abstraktion och modellering. Tentamen

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

Checklista som kan anva ndas för att komma igång med DigiExam och allma nna rekommendationer fo r att lyckas med provtillfa llet.

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

Deklarationer/definitioner/specifikationer

MANUAL- PROJEKTVERTYG

TDDC74 - Lektionsmaterial C

TDDC74 Programmering, abstraktion och modellering. Tentamen

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

Datalogi, grundkurs 1


ETE115 Ellära och elektronik, vt 2016 Laboration 1

Tillväxtverkets interna regler (2017:6) om bevarande av elektroniska handlingar

Figur 2: Bild till uppgift 1 a) b) Figur 3: Bilder till uppgift 7 5

Årsredovisning Att skriva i årsredovisningen... 3 Riktlinjer för språket... 4 Ordning och reda... 4 Tidsplan... 5

Nr 1 Våren Foto: Håkan Nilsson

sl l tt med fingret p plattan i st llet f r att trycka ned knappar dra ikoner, f nster och andra objekt utan att anv nda knappar

Skapa rapport till regeringen, skicka för godkännande, godkänna, diarieföra och skicka rapport

Skapa remissvar till regeringen, skicka för godkännande, godkänna, diarieföra och skicka svar

Hantera remissvar i Public 360

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

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

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

Denna text ga ller fo r dig som a r skribent fo r a rsredovisningen 2017.

Datalogi, grundkurs 1

tid

TDDC74 Programmering, abstraktion och modellering. Tentamen

9 Bj rkfeltçbjon Oftast anv nder man beteckningen f r determinanten detèaè. Exempel 6.4. Matrisen a a 2 a n a 2 a 22 a 2n,,,, a n a n2 a nn A =ç a a 2

Laboration med MINITAB, Del 2 Om Fyris ns global uppv rmning

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

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

En mobil strategi fö r PLM-anvä ndare


Minsta kvadratfelet som funktion av packningst theten Packning (ggr)

VERKSAMHETSPLANERING FÖR AGILITYUTSKOTTET 2013

Kapitel 4 Inst llning av regulatorer I detta avsnitt skall vi i korthet betrakta problemet att st lla in regulatorer s att den slutna kretsen f r nska

TDDC74 Programmering, abstraktion och modellering. Tentamen

S0005M, Föreläsning 2

INSTRUKTIONSTEXT FO R PLEXTALK Linio Pocket - Mottagare fo r poddradio -

x - Px U = R(A) = R(P)

Villa vassen har en butik som tillhandahåller ett begränsat sortiment av det allra nödvändigaste.

Svensk Manual. Zap SR-25

Skalle Histogram

Innovationsupphandling

tala är silver dela är guld

Förvaltningsberättelse för Ålands gymnasium 2017

Fly me to the moon. Laboration om relationer, TDDC75 Diskreta strukturer. Mikael Asplund. 5 september 2017

ETT STARKT VARUMÄRKE BYGGS INIFRÅN...

TDDC74 Programmering, abstraktion och modellering DUGGA 2

Kvalitetssa kring av MS-va rden i Sverige

Nr 1 Va ren Almö. Foto: Håkan Nilsson

2 Bj rkfeltbjon d r k èk =;:::;pè betecknar A:s olika egenv rden och n k r den algebraiska multipliciteten hos egenv rdet k. Om multipliciteten hos et

TDDC74 Programmering: Abstraktion och modellering Datordugga 2 - exempel

Silvelyn Zwanzig/Niklas Gunnarsson 14:e juni 2005

Åtgärder för att motverka ett value gap. En ny syn på mellanhänders rättsliga ställning? Daniel Westman

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?

Datum Kursens bena mning: Fortsa ttningskurs i ledarskap under pa frestande fo rha llanden

Metoder (funktioner) Murach s: kap Winstrand Development

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

Quadrocopter Bygguide. Carl Westman December 29, 2015

Alla kopplingar inkl. kringutrustning skall redovisas. Rapporten skall vara skriven med ordbehandlare. Kopplingsschemor kan dock vara handritade. Ni m

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

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

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

Stà mmer adressuppgifterna pã vã r hemsida? ( Nej

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

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

WAXHOLMS SK RG RDSCUPER 2018 PM MAJ

Guiden har sammansta llts inom utvecklingsprojektet Fo retagsam i Fo rening 2014 (uppdaterad 2016) FÖRENINGSBESKATTNING MOMSREGISTRERING

TDDC74 Lab 02 Listor, sammansatta strukturer

Trivselregler Brf Ronnebyga rden

Transkript:

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 0 1sning 8) Datalogi 1 H 0 2sten 2013 1 / 18

1 3H 0 2gre ordningens procedurer 6 1 Anonyma procedurer 6 1 Objekt 6 1 Hur generaliseras 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 6 1 Hur generaliseras procedurer? 6 1 Hur anv 0 1nds procedurer som argument? DA2001 (F 0 2rel 0 1sning 8) Datalogi 1 H 0 2sten 2013 1 / 18

1 3 6 1 H 0 2gre ordningens procedurer 6 1 Anonyma procedurer 6 1 Objekt 6 1 Hur generaliseras procedurer? 6 1 Hur anv 0 1nds procedurer som argument? 6 1 Bra om ni l 0 1st f 0 2ljande avsnitt i AS: Formulating Abstractions with Higher-Order Procedures men INTE: Procedures as General Methods Procedures as Returned Values DA2001 (F 0 2rel 0 1sning 8) Datalogi 1 H 0 2sten 2013 1 / 18

1 3 6 1 Anonyma procedurer En procedur som definieras p 0 2 f 0 2ljande s 0 1tt (define square (lambda (x) (* x x))) kallas f 0 2r en namngiven procedur. Sj 0 1lva lambda-uttrycket (lambda (x) (* x x)) kallas f 0 2r en anonym procedur. DA2001 (F 0 2rel 0 1sning 8) Datalogi 1 H 0 2sten 2013 2 / 18

1 3 6 1 Anonyma procedurer... En anonym procedur kan direkt anv 0 1ndas i en procedurapplikation: >((lambda (x) (* x x)) 3) 9 lika bra som namnet den bundits till. >(square 3) 9 DA2001 (F 0 2rel 0 1sning 8) Datalogi 1 H 0 2sten 2013 3 / 18

1 3Objekt 6 1 I Scheme kallas b 0 2de data och procedurer f 0 2r objekt. DA2001 (F 0 2rel 0 1sning 8) Datalogi 1 H 0 2sten 2013 4 / 18

1 3Objekt 6 1 I Scheme kallas b 0 2de data och procedurer f 0 2r objekt. 6 1 Alla typer av objekt kan namnges. DA2001 (F 0 2rel 0 1sning 8) Datalogi 1 H 0 2sten 2013 4 / 18

1 3 6 1 Objekt 6 1 I Scheme kallas b 0 2de data och procedurer f 0 2r objekt. 6 1 Alla typer av objekt kan namnges. 6 1 De kan 0 1ven anv 0 1ndas som argument till procedurer eller returneras som resultat av proceduranrop. DA2001 (F 0 2rel 0 1sning 8) Datalogi 1 H 0 2sten 2013 4 / 18

1 3Hur generalisera procedurdefinitioner? Procedurer kan vara argument till procedurer. DA2001 (F 0 2rel 0 1sning 8) Datalogi 1 H 0 2sten 2013 5 / 18

1 3Hur generalisera procedurdefinitioner? Procedurer kan vara argument till procedurer. F 0 2rst tittar vi p 0 2 n 0 2gra exempel med procedurer d 0 1r vi kan hitta m 0 2nster DA2001 (F 0 2rel 0 1sning 8) Datalogi 1 H 0 2sten 2013 5 / 18

1 3Hur generalisera procedurdefinitioner? Procedurer kan vara argument till procedurer. F 0 2rst tittar vi p 0 2 n 0 2gra exempel med procedurer d 0 1r vi kan hitta m 0 2nster Ex: 6Ь1 6Ь4 6Ь2 0 om a > b i = 6Ь4 6Ь3 a + i annars i=a i=a+1 DA2001 (F 0 2rel 0 1sning 8) Datalogi 1 H 0 2sten 2013 5 / 18

1 3Hur generalisera procedurdefinitioner? Procedurer kan vara argument till procedurer. F 0 2rst tittar vi p 0 2 n 0 2gra exempel med procedurer d 0 1r vi kan hitta m 0 2nster Ex: 6Ь1 6Ь4 6Ь2 0 om a > b i = 6Ь4 6Ь3 a + i annars i=a i=a+1 (define sum-int (lambda (a b) (if (> a b) DA2001 (F 0 2rel 0 1sning 8) Datalogi 1 H 0 2sten 2013 5 / 18

1 3Hur generalisera procedurdefinitioner? Procedurer kan vara argument till procedurer. F 0 2rst tittar vi p 0 2 n 0 2gra exempel med procedurer d 0 1r vi kan hitta m 0 2nster Ex: 6Ь1 6Ь4 6Ь2 0 om a > b i = 6Ь4 6Ь3 a + i annars i=a i=a+1 (define sum-int (lambda (a b) (if (> a b) 0 DA2001 (F 0 2rel 0 1sning 8) Datalogi 1 H 0 2sten 2013 5 / 18

1 3 6 1 Hur generalisera procedurdefinitioner? Procedurer kan vara argument till procedurer. F 0 2rst tittar vi p 0 2 n 0 2gra exempel med procedurer d 0 1r vi kan hitta m 0 2nster Ex: 6Ь1 6Ь4 6Ь2 0 om a > b i = 6Ь4 6Ь3 a + i annars i=a i=a+1 (define sum-int (lambda (a b) (if (> a b) 0 (+ a (sum-int (+ a 1) b))))) DA2001 (F 0 2rel 0 1sning 8) Datalogi 1 H 0 2sten 2013 5 / 18

1 3Hur generalisera procedurdefinitioner?... 6Ь1 6Ь4 6Ь2 0 om a > b i 2 = 6Ь4 6Ь3 a 2 + i 2 annars i=a i=a+1 DA2001 (F 0 2rel 0 1sning 8) Datalogi 1 H 0 2sten 2013 6 / 18

1 3Hur generalisera procedurdefinitioner?... 6Ь1 6Ь4 6Ь2 0 om a > b i 2 = 6Ь4 6Ь3 a 2 + i 2 annars i=a i=a+1 (define sum-square (lambda (a b) (if (> a b) DA2001 (F 0 2rel 0 1sning 8) Datalogi 1 H 0 2sten 2013 6 / 18

1 3Hur generalisera procedurdefinitioner?... 6Ь1 6Ь4 6Ь2 0 om a > b i 2 = 6Ь4 6Ь3 a 2 + i 2 annars i=a i=a+1 (define sum-square (lambda (a b) (if (> a b) 0 DA2001 (F 0 2rel 0 1sning 8) Datalogi 1 H 0 2sten 2013 6 / 18

1 3 6 1 Hur generalisera procedurdefinitioner?... 6Ь1 6Ь4 6Ь2 0 om a > b i 2 = 6Ь4 6Ь3 a 2 + i 2 annars i=a i=a+1 (define sum-square (lambda (a b) (if (> a b) 0 (+ (square a) (sum-square (+ a 1) b))))) DA2001 (F 0 2rel 0 1sning 8) Datalogi 1 H 0 2sten 2013 6 / 18

1 3Hur generalisera procedurdefinitioner?... i=a 1 i 6Ь1 6Ь4 6Ь2 0 om a > b = 1 6Ь4 6Ь3 a + 1 i annars i=a+1 DA2001 (F 0 2rel 0 1sning 8) Datalogi 1 H 0 2sten 2013 7 / 18

1 3Hur generalisera procedurdefinitioner?... i=a 1 i 6Ь1 6Ь4 6Ь2 0 om a > b = 1 6Ь4 6Ь3 a + 1 i annars i=a+1 (define sum-harm (lambda (a b) (if (> a b) DA2001 (F 0 2rel 0 1sning 8) Datalogi 1 H 0 2sten 2013 7 / 18

1 3Hur generalisera procedurdefinitioner?... i=a 1 i 6Ь1 6Ь4 6Ь2 0 om a > b = 1 6Ь4 6Ь3 a + 1 i annars i=a+1 (define sum-harm (lambda (a b) (if (> a b) 0 DA2001 (F 0 2rel 0 1sning 8) Datalogi 1 H 0 2sten 2013 7 / 18

1 3 6 1 Hur generalisera procedurdefinitioner?... i=a 1 i 6Ь1 6Ь4 6Ь2 0 om a > b = 1 6Ь4 6Ь3 a + 1 i annars i=a+1 (define sum-harm (lambda (a b) (if (> a b) 0 (+ (/ 1 a) (sum-harm (+ a 1) b))))) DA2001 (F 0 2rel 0 1sning 8) Datalogi 1 H 0 2sten 2013 7 / 18

1 3Hur generalisera procedurdefinitioner?... Alla procedurerna har det gemensamma m 0 2nstret: 6Ь1 6Ь4 6Ь2 0 om a > b f (i) = 6Ь4 6Ь3 f (a) + f (i) annars i=a i=a+1 DA2001 (F 0 2rel 0 1sning 8) Datalogi 1 H 0 2sten 2013 8 / 18

1 3Hur generalisera procedurdefinitioner?... Alla procedurerna har det gemensamma m 0 2nstret: 6Ь1 6Ь4 6Ь2 0 om a > b f (i) = 6Ь4 6Ь3 f (a) + f (i) annars i=a i=a+1 (define sum (lambda (a b f) (if (> a b) DA2001 (F 0 2rel 0 1sning 8) Datalogi 1 H 0 2sten 2013 8 / 18

1 3Hur generalisera procedurdefinitioner?... Alla procedurerna har det gemensamma m 0 2nstret: 6Ь1 6Ь4 6Ь2 0 om a > b f (i) = 6Ь4 6Ь3 f (a) + f (i) annars i=a i=a+1 (define sum (lambda (a b f) (if (> a b) 0 DA2001 (F 0 2rel 0 1sning 8) Datalogi 1 H 0 2sten 2013 8 / 18

1 3 6 1 Hur generalisera procedurdefinitioner?... Alla procedurerna har det gemensamma m 0 2nstret: 6Ь1 6Ь4 6Ь2 0 om a > b f (i) = 6Ь4 6Ь3 f (a) + f (i) annars i=a i=a+1 (define sum (lambda (a b f) (if (> a b) 0 (+ (f a) (sum (+ a 1) b f))))) DA2001 (F 0 2rel 0 1sning 8) Datalogi 1 H 0 2sten 2013 8 / 18

1 3Hur generalisera procedurdefinitioner?... sum kan anv 0 1ndas f 0 2r att definiera sum-int, sum-square, sum-harm: DA2001 (F 0 2rel 0 1sning 8) Datalogi 1 H 0 2sten 2013 9 / 18

1 3Hur generalisera procedurdefinitioner?... sum kan anv 0 1ndas f 0 2r att definiera sum-int, sum-square, sum-harm: (define sum-int (lambda (a b) (sum a b (lambda (x) x)))) DA2001 (F 0 2rel 0 1sning 8) Datalogi 1 H 0 2sten 2013 9 / 18

1 3 6 1 Hur generalisera procedurdefinitioner?... sum kan anv 0 1ndas f 0 2r att definiera sum-int, sum-square, sum-harm: (define sum-int (lambda (a b) (sum a b (lambda (x) x)))) (define sum-square (lambda (a b) (sum a b (lambda (x) (* x x))))) DA2001 (F 0 2rel 0 1sning 8) Datalogi 1 H 0 2sten 2013 9 / 18

1 3Hur generalisera procedurdefinitioner?... Om vi dessutom vill summera t. ex. 6Ь1 0 om a > b ф 6Ь4 6Ь2 i = a + ф i annars 6Ь4 6Ь3 a эi эb, a odd a+2 эi эb, a odd d 0 1r a m 0 2ste vara udda i f 0 2rsta anropet, annars fungerar inte formeln. DA2001 (F 0 2rel 0 1sning 8) Datalogi 1 H 0 2sten 2013 10 / 18

1 3Hur generalisera procedurdefinitioner?... Om vi dessutom vill summera t. ex. 6Ь1 0 om a > b ф 6Ь4 6Ь2 i = a + ф i annars 6Ь4 6Ь3 a эi эb, a odd a+2 эi эb, a odd d 0 1r a m 0 2ste vara udda i f 0 2rsta anropet, annars fungerar inte formeln. (define sum-odd (lambda (a b) (if (> a b) DA2001 (F 0 2rel 0 1sning 8) Datalogi 1 H 0 2sten 2013 10 / 18

1 3Hur generalisera procedurdefinitioner?... Om vi dessutom vill summera t. ex. 6Ь1 0 om a > b ф 6Ь4 6Ь2 i = a + ф i annars 6Ь4 6Ь3 a эi эb, a odd a+2 эi эb, a odd d 0 1r a m 0 2ste vara udda i f 0 2rsta anropet, annars fungerar inte formeln. (define sum-odd (lambda (a b) (if (> a b) 0 DA2001 (F 0 2rel 0 1sning 8) Datalogi 1 H 0 2sten 2013 10 / 18

1 3 6 1 Hur generalisera procedurdefinitioner?... Om vi dessutom vill summera t. ex. 6Ь1 0 om a > b ф 6Ь4 6Ь2 i = a + ф i annars 6Ь4 6Ь3 a эi эb, a odd a+2 эi эb, a odd d 0 1r a m 0 2ste vara udda i f 0 2rsta anropet, annars fungerar inte formeln. (define sum-odd (lambda (a b) (if (> a b) 0 (+ a (sum-odd (+ a 2) b))))) DA2001 (F 0 2rel 0 1sning 8) Datalogi 1 H 0 2sten 2013 10 / 18

1 3Hur generalisera procedurdefinitioner?... har vi m 0 2nstret: (define sum (lambda (a b) (if (> a b) DA2001 (F 0 2rel 0 1sning 8) Datalogi 1 H 0 2sten 2013 11 / 18

1 3Hur generalisera procedurdefinitioner?... har vi m 0 2nstret: (define sum (lambda (a b) (if (> a b) 0 DA2001 (F 0 2rel 0 1sning 8) Datalogi 1 H 0 2sten 2013 11 / 18

1 3Hur generalisera procedurdefinitioner?... har vi m 0 2nstret: (define sum (lambda (a b) (if (> a b) 0 (+ (term a) (sum (next a) b))))) d 0 1r term beskriver hur en term erh 0 2lls ur a DA2001 (F 0 2rel 0 1sning 8) Datalogi 1 H 0 2sten 2013 11 / 18

1 3 6 1 Hur generalisera procedurdefinitioner?... har vi m 0 2nstret: (define sum (lambda (a b) (if (> a b) 0 (+ (term a) (sum (next a) b))))) d 0 1r term beskriver hur en term erh 0 2lls ur a och next beskriver hur a skall 0 1ndras. DA2001 (F 0 2rel 0 1sning 8) Datalogi 1 H 0 2sten 2013 11 / 18

1 3Hur generalisera procedurdefinitioner?... Om vi definierar (define sum (lambda (a b term next) (if (> a b) DA2001 (F 0 2rel 0 1sning 8) Datalogi 1 H 0 2sten 2013 12 / 18

1 3Hur generalisera procedurdefinitioner?... Om vi definierar (define sum (lambda (a b term next) (if (> a b) 0 DA2001 (F 0 2rel 0 1sning 8) Datalogi 1 H 0 2sten 2013 12 / 18

1 3 6 1 Hur generalisera procedurdefinitioner?... Om vi definierar (define sum (lambda (a b term next) (if (> a b) 0 (+ (term a) (sum (next a) b term next))))) DA2001 (F 0 2rel 0 1sning 8) Datalogi 1 H 0 2sten 2013 12 / 18

1 3Hur generalisera procedurdefinitioner?... D 0 2 kan sum-int skrivas (define sum-int (lambda (a b) (sum a b (lambda (x) x) DA2001 (F 0 2rel 0 1sning 8) Datalogi 1 H 0 2sten 2013 13 / 18

1 3Hur generalisera procedurdefinitioner?... D 0 2 kan sum-int skrivas (define sum-int (lambda (a b) (sum a b (lambda (x) x) (lambda (a) (+ a 1))))) DA2001 (F 0 2rel 0 1sning 8) Datalogi 1 H 0 2sten 2013 13 / 18

1 3 6 1 Hur generalisera procedurdefinitioner?... D 0 2 kan sum-int skrivas (define sum-int (lambda (a b) (sum a b (lambda (x) x) (lambda (a) (+ a 1))))) sum-square kan skrivas (define sum-square (lambda (a b) (sum a b (lambda (x) (* x x)) (lambda (a) (+ a 1))))) DA2001 (F 0 2rel 0 1sning 8) Datalogi 1 H 0 2sten 2013 13 / 18

1 3Hur generalisera procedurdefinitioner?... sum-harm kan skrivas (define sum-harm (lambda (a b) (sum a b (lambda (x) (/ 1 x)) (lambda (a) (+ a 1))))) DA2001 (F 0 2rel 0 1sning 8) Datalogi 1 H 0 2sten 2013 14 / 18

1 3Hur generalisera procedurdefinitioner?... sum-harm kan skrivas (define sum-harm (lambda (a b) (sum a b (lambda (x) (/ 1 x)) (lambda (a) (+ a 1))))) sum-odd kan skrivas (define sum-odd (lambda (a b) (sum a b (lambda (x) x) DA2001 (F 0 2rel 0 1sning 8) Datalogi 1 H 0 2sten 2013 14 / 18

1 3 6 1 Hur generalisera procedurdefinitioner?... sum-harm kan skrivas (define sum-harm (lambda (a b) (sum a b (lambda (x) (/ 1 x)) (lambda (a) (+ a 1))))) sum-odd kan skrivas (define sum-odd (lambda (a b) (sum a b (lambda (x) x) (lambda (a) (+ a 2))))) DA2001 (F 0 2rel 0 1sning 8) Datalogi 1 H 0 2sten 2013 14 / 18

1 3 6 1 Hur generalisera procedurdefinitioner?... Nu kan vi g 0 2ra mycket komplexa summationsber 0 1kningar, t.ex. п = 8 ф i щ0 1 (4i + 1)(4i + 3) DA2001 (F 0 2rel 0 1sning 8) Datalogi 1 H 0 2sten 2013 15 / 18

1 3Hur generalisera procedurdefinitioner?... Med (define term (lambda (a) (/ 1 (* (+ (* 4 a) 1) (+ (* 4 a) 3))))) DA2001 (F 0 2rel 0 1sning 8) Datalogi 1 H 0 2sten 2013 16 / 18

1 3Hur generalisera procedurdefinitioner?... Med (define term (lambda (a) (/ 1 (* (+ (* 4 a) 1) (+ (* 4 a) 3))))) (define next (lambda (a) (+ a 1))) DA2001 (F 0 2rel 0 1sning 8) Datalogi 1 H 0 2sten 2013 16 / 18

1 3 6 1 Hur generalisera procedurdefinitioner?... Med (define term (lambda (a) (/ 1 (* (+ (* 4 a) 1) (+ (* 4 a) 3))))) (define next (lambda (a) (+ a 1))) (define pi (lambda (n) (* 8 (sum 0 n term next)))) DA2001 (F 0 2rel 0 1sning 8) Datalogi 1 H 0 2sten 2013 16 / 18

1 3Hur generalisera procedurdefinitioner?... f 0 2r vi > (pi 3) 3.017071817071817 > DA2001 (F 0 2rel 0 1sning 8) Datalogi 1 H 0 2sten 2013 17 / 18

1 3Hur generalisera procedurdefinitioner?... f 0 2r vi > (pi 3) 3.017071817071817 > (pi 100) 3.1366421888703013 > DA2001 (F 0 2rel 0 1sning 8) Datalogi 1 H 0 2sten 2013 17 / 18

1 3Hur generalisera procedurdefinitioner?... f 0 2r vi > (pi 3) 3.017071817071817 > (pi 100) 3.1366421888703013 > (pi 1000) 3.141093153121449 > DA2001 (F 0 2rel 0 1sning 8) Datalogi 1 H 0 2sten 2013 17 / 18

1 3 6 1 Hur generalisera procedurdefinitioner?... f 0 2r vi > (pi 3) 3.017071817071817 > (pi 100) 3.1366421888703013 > (pi 1000) 3.141093153121449 > (pi 10000) 3.1415426585893242 DA2001 (F 0 2rel 0 1sning 8) Datalogi 1 H 0 2sten 2013 17 / 18

1 3N 0 1sta g 0 2ng: Kan vi med v 0 2ra kunskaper i Scheme: 6 1 ber 0 1kna ett nollst 0 1lle till en funktion? DA2001 (F 0 2rel 0 1sning 8) Datalogi 1 H 0 2sten 2013 18 / 18

1 3N 0 1sta g 0 2ng: Kan vi med v 0 2ra kunskaper i Scheme: 6 1 ber 0 1kna ett nollst 0 1lle till en funktion? 6 1 hantera m 0 1ngder? DA2001 (F 0 2rel 0 1sning 8) Datalogi 1 H 0 2sten 2013 18 / 18

1 3N 0 1sta g 0 2ng: Kan vi med v 0 2ra kunskaper i Scheme: 6 1 ber 0 1kna ett nollst 0 1lle till en funktion? 6 1 hantera m 0 1ngder? Dessutom: DA2001 (F 0 2rel 0 1sning 8) Datalogi 1 H 0 2sten 2013 18 / 18

1 3N 0 1sta g 0 2ng: Kan vi med v 0 2ra kunskaper i Scheme: 6 1 ber 0 1kna ett nollst 0 1lle till en funktion? 6 1 hantera m 0 1ngder? Dessutom: 6 1 0 2r rekursiva ber 0 1kningar alltid av godo? DA2001 (F 0 2rel 0 1sning 8) Datalogi 1 H 0 2sten 2013 18 / 18

1 3N 0 1sta g 0 2ng: Kan vi med v 0 2ra kunskaper i Scheme: 6 1 ber 0 1kna ett nollst 0 1lle till en funktion? 6 1 hantera m 0 1ngder? Dessutom: 6 1 0 2r rekursiva ber 0 1kningar alltid av godo? 6 1 L 0 1s g 0 1rna f 0 2ljande avsnitt i AS: Procedures as General Methods Procedures as Returned Values Tree Recursion Orders of Growth Exponentiation Example: Representing Sets 7 1 DA2001 (F 0 2rel 0 1sning 8) Datalogi 1 H 0 2sten 2013 18 / 18