TDDC74 PROGRAMMERING: ABSTRAKTION OCH MODELLERING VT 2017

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

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

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

Förra gången: Primitiva data

TDDC74 Programmering, abstraktion och modellering DUGGA 2

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

Programmering - abstraktion och modellering

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

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

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

Våra enkla funktioner eller procedurer

TDDC74 Programmering, abstraktion och modellering. Tentamen

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

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

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

Tentamen i. TDDC67 Funktionell programmering och Lisp

DD1361 Programmeringsparadigm. Carina Edlund

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

TDDC74 Programmering: Abstraktion och modellering Datordugga 2 - exempel

TDDC74 Programmering: Abstraktion och modellering Datortenta

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)

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

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

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

TDDC74 Programmering, abstraktion och modellering. Tentamen

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

Procedurer och villkor

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

Programmering, grundkurs

TDDC74 Programmering, abstraktion och modellering. Tentamen

Introduktion till programmering SMD180. Föreläsning 2: Variabler, uttryck och satser

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

TDDC74 Programmering: Abstraktion och modellering Dugga 1, exempeldugga

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

TDDC74 Lab 04 Muterbara strukturer, omgivningar

TDDC74 Lab 02 Listor, sammansatta strukturer

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

Tentamen i. TDDA 69 Data och programstrukturer

TDDC74 Programmering, abstraktion och modellering. Tentamen

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

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

TDDC74 - Lektionsmaterial C

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

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

TDDC74 Programmering: Abstraktion och modellering Dugga 3, kl 14 16, 25 mars 2015

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

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt

TDDC74 Programmering, abstraktion och modellering DUGGA 3

Programmeringsteknik med C och Matlab

Språket Python - Del 1 Grundkurs i programmering med Python

Introduktion till programmering D0009E. Föreläsning 5: Fruktbara funktioner

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

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

Introduktion till programmering SMD180. Föreläsning 5: Fruktbara funktioner

TDDE44 Programmering, grundkurs

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

729G75: Programmering och algoritmiskt tänkande. Tema 1. Föreläsning 1 Jody Foo

Instruktioner - Datortentamen TDDE24 och TDDD73 Funktionell och imperativ programmering (i Python)

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

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

Klassdeklaration. Metoddeklaration. Parameteröverföring

Användarhandledning Version 1.2

Programmering A. Johan Eliasson

Föreläsning 9 Exempel

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

Föreläsning 3: Booleans, if, switch

Grundläggande programmering med matematikdidaktisk inriktning för lärare som undervisar i gy eller komvux gy nivå, 7,5 hp

Föreläsning 2 Programmeringsteknik och C DD1316

Idag: Dataabstraktion

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.

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

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å

Deklarationer/definitioner/specifikationer

Introduktion till programmering SMD180. Föreläsning 3: Funktioner

Introduktionsmöte Innehåll

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

EDAA01 Programmeringsteknik - fördjupningskurs

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

729G75: Programmering och algoritmiskt tänkande. Tema 1, föreläsning 1 Jody Foo

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

TDDC74 Programmering, abstraktion och modellering DUGGA 2

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

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

IT OCH PROGRAMMERING I SKOLAN. Jan Erik Moström Peter Vinnervik

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

Objektorienterad Programmering (TDDC77)

729G04 Programmering och diskret matematik. Python 2: Villkorssatser, sanningsvärden och logiska operatorer

Föreläsning 1 & 2 INTRODUKTION

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

Objektorienterad Programmering (TDDC77)

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

Parameteröverföring. Exempel. Exempel. Metodkropp

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

Programmeringsteknik I

Dagens föreläsning Programmering i Lisp Fö 7. Sammanfattning funktionell programmering Exempel på funktionella programspråk

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

TDP002 - Imperativ programmering

Transkript:

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 jalal.maleki@liu.se 2 SYFTE ORGANISATION AV UNDERVISNINGEN Kursens syfte är att studenterna ska utveckla förmåga att representera och lösa problem med hjälp av konstruktioner i ett datorspråk. Efter avslutad kurs ska studenterna kunna: redogöra för grundläggande datavetenskapliga begrepp relaterade till programmering och programspråk, särskilt funktionella språk metodiskt lösa programmeringsrelaterade problem i en interaktiv programutvecklingsmiljö representera problem och lösningar till dessa i form av rekursiva och iterativa algoritmer och kunna uppskatta tid- och rymdkomplexiteten för enklare fall konstruera abstraktioner som möjliggör design av program som är lättförståliga, återanvändbara och kan underhållas lättare genomföra ett mindre programmeringsprojekt 3 Föreläsningar Lektioner Laborationer Projekt Datorduggor Datortenta 4

ARBETSSÄTT I KURSEN Laborationsarbete i grupp av två Individuell utveckling Diskutera med andra för att lära dig men gör egen lösning Individuell examination, någon annan grupps lösning kan inte skickas in som labbgruppens lösning Lämna in endast eget arbete för redovisning. Om läraren misstänker annat måste saken rapporteras till universitetets disciplinnämnd - inte kul EXAMINATION DAT1 Datortentamen / duggor (U,3,4,5) 2 hp LAB1 Laborationer (U, G) 3 hp PRA1 Projekt (U,3,4,5) 3 hp Slutbetyget på kursen baseras i första hand på betyget på DAT1. Betyg 3 eller 4 i DAT1 kan höjas - se kurshemsidan 5 6 KURSHEMSIDAN KURSBOKEN SICP http://www.ida.liu.se/~tddc74 - aktuell info om kursen nyheter, personal, laboration/lektion/föreläsningsmaterial, svar på administrativa frågor, gamla duggor och tentor, Tre första kapitlen ingår i denna kurs Finns på nätet: mitpress.mit.edu/sicp/ 7 8

KURSBOKENS INNEHÅLL SICP1 Abstraktioner baserad på procedurer SICP2 Abstraktioner baserat på data SICP3 Abstraktioner baserat på objekt DR.RACKET Systemet vi skall använda för programmering heter DrRacket DrRacket innehåller ett Schemebaserad programspråk Racket www.racket-lang.org eller www.drracket.org DrRacket är en så kallad programmeringsmiljö som tillgängliggör olika verktyg för programmeraren Läs kursboken! 9 10 PROGRAMMERING Formulera beräkningsprocesser som bearbetar data som får datorn att välja mellan alternativa beräkningar som får datorn att snurra som löser ett angivet problem PROGRAMMERING OCH MATLAGNING Program liknar matrecept, t ex recept för pannkakor Programmering liknar kockens arbete i receptproduktion Recept utförs av folk Program utförs av dator eller robot Fel kan uppstå i båda fallen i ett programspråk Representera/modellera/avbilda 11 12

DATASPRÅK primitiva uttryck (primitive expressions) sammansättningsregler (means of combination) - Procedursammansättning - Sammansättning av primitivdata för att få sammansatt data abstraktioner (means of abstraction) - Svartlåda-tänkande (möjlighet att ignorera detaljer) - Dataabstraktion - Högre-ordningens procedurer - Procedurer som data UTTRYCK I SCHEME Primitiva uttryck (konstanter och namn) 1, 3.14, pi, + Sammansatta uttryck (bl a proceduranrop) (* pi 2) Nästlingsmöjlighet: (+ (* 2 3) (- 4 5)) prefixnotation (operator operand operand) (+ 10 21 33) jfr med infixnotation operand operator operand 10+21+33 13 14 KONSTANTER I SCHEME truth-value: #t, #f integer: 28, +1729, -2 rational: 3/4, -22/7 floating: 3.1415, -10e10, 2e-3 complex: 3.1+4i, 2-3i (sanningsvärde) (heltal) (bråk) (flyttal) (komplext tal) NAMN I SCHEME Ett namn är en ändlig följd av tecken som inte skapar en konstant i Scheme Namn får ej innehålla bryttecken som parenteser eller blanktecken Namn används för att benämna ett värde eller en procedur + square seriously? @fstops i-am-a-name-in-scheme http://www.google.com/ -1+ 2+2 15 16

SAMMANSATTA UTTRYCK Applikation av inbyggda procedurer (inbyggd-fn argument-1 argument-2 argument-n) Applikation av användardefinierade procedurer (användar-fn argument-1 argument-2... argument-n) Undantagsformer (if villkor då-uttrycket annars-uttrycket) (and uttryck-1 uttryck-2 uttryck-n) (or uttryck-1 uttryck-2... uttryck-n) Abstractionsmöjligheter (define namn värde) (lambda parametrar kropp) FUNKTION INOM MATEMATIK D = {..., -2, -1, 0, 1, 2,...} R = {..., -2, -1, 0, 1, 2,...} Funktion f(x) = x 2 f={..., < -2, 4 >, < -1, 1 >, < 0, 0 >, < 1, 1 >,...} D= {, -2, -1, 0, 1, } R= {, 4, 1, 0, 1, } D R 17 18 FUNKTION I SCHEME En procedur som utför mappning från mängden D till mängden R Precis beskrivning (algoritm) för hur en beräkning skall gå till (lambda (n) (* n n)) (lambda (r) (* 2 (* pi r))) (lambda (f) (* (/ 5 9) (- f 32))) LAMBDAABSTRAKTION (lambda (n) (* n n)) definierar en anonym funktion som kan beräkna kvadraten av sin parameter Det som skapas av detta uttryck brukar vi också kalla för procedurobjekt för att markera att det är en sak parametrar: (n) kropp: (* n n) 19 20

PROCEDURAPPLIKATION ((lambda (n) (* n n)) 7) Proceduren med parametern n appliceras till argumentet 7 Vi brukar också säga att proceduren anropas Parameter: n Kropp: (* n n) Argument: 7 Returvärde: 49 PARENTESER Parenteser är till för att definiera strukturen för sammansatta uttryck eller beskrivningar Parenteser möjliggör korrekt tolkning av programmen i Scheme ((lambda (n) (* n n)) 7) 21 22 TOLKNING (EVALUERING): READ-EVAL-PRINT Read --- läs ett uttryck Evaluate --- tolka uttrycket Print --- skriv ut resultatet >(+ 2 (* 3 4)) 14 >(define x 3) >(+ 2 x) 5 >(define dubbla (lambda (n) (* n 2))) >(dubbla 9) 18 23 EVALUERING AV FUNKTIONSANROP För att evaluera ett anrop som (fn arg1 arg2 argn) Evaluera fn för att hämta dess definition Evaluera argumenten arg1 arg2 argn för att få värdena Ersätt förekomster av parametrar i procedurens kropp med motsvarande argumentvärden och evaluera sedan kroppen Detta sätt kallas för det applikativevaluering för beräkning. Vårt Schemesystem Racket evakuerar på detta sätt. 24

EVALUERING AV FUNKTIONSANROP - NORMALEVALUERING För att evaluera ett anrop som (fn arg1 arg2 argn) Evaluera fn för att hämta dess definition Ersätt förekomster av parametrar i procedurens kropp med motsvarande (oevaluerade) argument och evaluera sedan kroppen Detta sätt kallas för det normala evaluering. EVALUERING GENOM SUBSTITUTION Både evalueringssätten som presenterades ersätter parametrar i kroppen på en procedur med motsvarande argument varför de ibland kallas substitutionsmodellen på beräkning. 25 PROGRAMEXEMPEL: AVSTÅNDET MELLAN TVÅ PUNKTER (define distance (lambda (x1 y1 x2 y2) ( s q r t ( + ( s q u a r e ( - x 2 x 1 ) ) (square (- y2 y1)))))) SUBSTITUTIONSMODELLEN (APPLIKATIVEVALUERING) (distance 0 0 3 4) (sqrt (+ (square (- 3 0)) (square (- 4 0)))) (sqrt (+ (square 3) (square 4))))) (sqrt (+ (* 3 3) (* 4 4))) (sqrt (+ 9 16)) (sqrt 25) 5 (define square (lambda (n) (* n n))) 27 28

UNDANTAGFORMER I SCHEME IF Konstruktioner som är undantagna från det generella sättet som funktioner tolkas i Scheme. Villkorliga beräkningar if cond Logiska operationer som sätter samman flera villkor and or 29 (if villkor då-uttryck annars-uttryck) (if (< amount 10000) 0.5 1.5)) Om beloppet är mindre än 10000 då skall beräkningen ge resultatet 0.5 annars 1.5 Obs att if skrivs i samma position där man brukar ha ett procedurnamn. Kom ihåg dock att if är ingen procedur/ funktion. 30 COND (cond (villkor-1 då-uttryck-1) (villkor-2 då-uttryck-2)... (villkor-n då-uttryck-n)) (lambda (amount) (cond ((< amount 0) 0) ((< amount 10000) 0.5) ((< amount 50000) 1.5) ((>= amount 50000) 2.5))) ELSE (lambda (amount) (cond ((< amount 0) 0) ((< amount 10000) 0.5) ((< amount 50000) 1.5) ((>= amount 50000) 2.5))) (lambda (amount) (cond ((< amount 0) 0) ((< amount 10000) 0.5) ((< amount 50000) 1.5) (else 2.5))) 31 32

EXEMPEL PÅ LOGISKA OPERATORER (and e 1,, e n ) (or e 1,, e n ) (not e 1 ) ABSTRAKTIONSOPERATORER define lambda Gruppering av procedurer (and (> x 2) (< x -2)) (or (> x 2) (< x -2)) (not (< x 3)) 33 34 DEFINE Används för att tilldela namn till konstanter eller procedurobjekt define har tillgång till tabeller där namnen lagras KOMBINATION AV LOGISKA OPERTORATORER (or (and (> x 2) (< x 6)) (and (> x -6) (< x -2))) (not (or (> x 1) (< x -1))) 35 36

LAMBDAUTTRYCK (lambda parametrar kropp) Skapar ett objekt som givet ett antal argument (lika många som de angivna parametrarna) kan beräkna ett värde som motsvarar evaluering av kroppen ABSTRAKTION I SCHEME: ATT NAMNGE SAKER (define ten 10) (define square (lambda (n) (* n n))) (define circle-area (lambda (r) (* pi (square r)))) 37 38 NAMNGIVNING AV FUNKTIONER Följande två sätt att definiera funktionen area är ekvivalenta: (define area (lambda (r) (* pi (square r)))) (define (area r) (* pi (square r))) Så länge man är medveten om denna likhet spelar det ingen roll vilket alternativ man väljer. UNDANTAGSFORMEN IF Medan alla funktionsanrop evalueras enligt en och samma regel som beskrevs nyss, evalueras undantagsformer (special forms) på annat sätt t ex (if villkor då-uttryck annars-uttrycket) Evaluera villkor, om sant evaluera sedan då-uttrycket annars evaluera annars-uttrycket Resultatet blir antingen värdet på då-uttrycket eller annarsuttrycket 39 40

SPECIALFORMEN COND (cond (villkor-1 då-uttryck-1) (villkor-2 då-uttryck-2)... (villkor-n då-uttryck-n)) Evaluera villkor-1, om sant, evaluera sedan då-uttryck-1, annars gå till nästa i ordningen Någon av villkoren måste vara sant annars blir det fel Genom att låta villkor-n vara nyckelordet ELSE garanterar vi att då-uttryck-n evalueras i fall de tidigare villkoren varit falska. Så här: (cond (villkor-1 då-uttryck-1) (villkor-2 då-uttryck-2)... (ELSE då-uttryck-n)) 41 SPECIALFORMEN (AND ARG-1 ARG-2...) Evaluera argumenten från vänster till höger tills 1) något argument evelueras till ett falskt värde #f,eller 2) argumentlistan tar slut I fall 1 returneras värdet #f, och i fall 2 returneras #t. 42 SPECIALFORMEN (AND ARG-1 ARG-2...) Evaluera argumenten från vänster till höger tills 1) något argument evelueras till ett sant värdet #t,eller 2) argumentlistan tar slut I fall 1 returneras värdet #t, och i fall 2 returneras #f. FÖLJANDE ÄR EKVIVALENTA (cond ((> x 0) x) ((= x 0) 0) ((< x 0) (- x))) (cond ((> x 0) x) ((= x 0) 0) (else (- x))) (if (> x 0) x (if (= x 0) 0 (- x) 43 44