Idag: Dataabstraktion

Relevanta dokument
Idag: Dataabstraktion

DOP-matematik Copyright Tord Persson. Bråktal Läs av vilka tal på tallinjen, som pilarna pekar på. Uppgift nr

Lathund, procent med bråk, åk 8

Snabbslumpade uppgifter från flera moment.

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

Modul 6: Integraler och tillämpningar

ANVÄND NAVIGATIONEN I CAPITEX SÄLJSTÖD

Översikt. Rapport från skolverket. Förändring av matematikprestationerna Grundtankar bakom Pixel

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

Kapitel 6. f(x) = sin x. Figur 6.1: Funktionen sin x. 1 Oinas-Kukkonen m.fl. Kurs 6 kapitel 1

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

Övningshäfte i matematik för. Kemistuderande BL 05

Mål Blå kurs Röd kurs

Hur skapar man formula r

Sannolikhet och Odds

Handledning för digitala verktyg Talsyntes och rättstavningsprogram. Vital, StavaRex och SpellRight

Arbetsbeskrivning, att förbereda för studenternas registrering kommande termin. 1. Studenter antagna på fristående kurs 2

konstanterna a och b så att ekvationssystemet x 2y = 1 2x + ay = b 2 a b

NATIONELLA MATEMATIKTÄVLING

Vi skall skriva uppsats

MultiBoot. Användarhandbok

Har vi lösningen för en bättre hemtjänst? Självklart.

1 3H 0 2gre ordningens procedurer

Föreläsning 5: Rekursion

4-3 Vinklar Namn: Inledning. Vad är en vinkel?

Tentamen i Programmering grundkurs och Programmering C

Manual Individuell genomförandeplan Social dokumentation Omsorgspersonal

TIMREDOVISNINGSSYSTEM

Kapitel 10 Rumsdefinition... 3

729G04 - Hemuppgift, Diskret matematik

ELEV- HANDLEDNING (Ansökan via webben)

Handbok Ämnesprov 2016 Lärarinmatning I Dexter Åk 3. Uppdaterad: /HL Version: IST AB

PROGRAMMERING A VB6 UTVECKLINGSVERKTYGET VISUAL BASIC

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

Från min. klass INGER BJÖRNELOO

Frågor och svar för föreningar om nya ansökningsregler för aktivitetsbidrag från och med 1 januari 2017

Index vid lastbilstransporter

Modem och LAN (lokalt nätverk) Användarhandbok

Läraren som moderator vid problemlösning i matematik

Elektronen och laddning

Föreningen Nordens lokala hemsidor

ANVÄNDARHANDLEDNING FÖR

Procent - procentenheter

Uppdrag: Huset. Fundera på: Vilka delar i ditt hus samverkar för att elen ska fungera?

Laganmälan & Laghantering

a n = A2 n + B4 n. { 2 = A + B 6 = 2A + 4B, S(5, 2) = S(4, 1) + 2S(4, 2) = 1 + 2(S(3, 1) + 2S(3, 2)) = 3 + 4(S(2, 1) + 2S(2, 2)) = = 15.

Klasser och objekt i C#

Enkätresultat för elever i åk 9 i Borås Kristna Skola i Borås hösten Antal elever: 20 Antal svarande: 19 Svarsfrekvens: 95% Klasser: Klass 9

Föreläsning 9 Exempel

Skriva B gammalt nationellt prov

912 Läsförståelse och matematik behöver man lära sig läsa matematik?

David Wessman, Lund, 30 oktober 2014 Statistisk Termodynamik - Kapitel 5. Sammanfattning av Gunnar Ohléns bok Statistisk Termodynamik.

Syftet med en personlig handlingsplan

Du ska nu skapa ett litet program som skriver ut Hello World.

Mätningar på op-förstärkare. Del 3, växelspänningsförstärkning med balanserad ingång.

Foto för Windows 10. för seniorer

OM KOMPLEXA TAL. 1 Om a är ett positivt reellt tal så betecknar a det positiva reella tal vars kvadrat är a men det är

Uppdragsbeskrivning. Digital Skyltning. Version 1.0 Mats Persson. Distributionslista. Namn Åtgärd Info.

Utbildningsmodulen i IdrottOnline-appen

TENTAMEN: Design och konstruktion av grafiska gränssnitt DAT215

Tillträde MANUAL. Mäklarsamfundet system i Sverige AB

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

DET HÄR ÄR RIKSFÖRENINGEN AUTISM

ATT KUNNA TILL. MA1050 Matte Grund Vuxenutbildningen Dennis Jonsson

Bortom fagert tal om bristande tillgänglighet som diskriminering

För dig som är valutaväxlare. Så här följer du reglerna om penningtvätt i din dagliga verksamhet INFORMATION FRÅN FINANSINSPEKTIONEN

Träning i bevisföring

Avsikt På ett lekfullt sätt färdighetsträna, utveckla elevers känsla för hur vårt talsystem är uppbyggt samt hitta mönster som uppkommer.

Lokal pedagogisk planering i matematik för årskurs 8

Fullför installation av ELIQ

Idag. Hur vet vi att vår databas är tillräckligt bra?

Manual för BPSD registret. Version 6 /

Svenska Du kan med flyt läsa texter som handlar om saker du känner till. Du använder metoder som fungerar. Du kan förstå vad du läser.

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

BLUSTAR WEB DATOR Röstbrevlåda och aktiviteter på anknytningar för anställda på KI med KI ID, från en dator.

Användarmanual - Digitalt utbildningsprotokoll (DUP)

Vad är det att vara en bra brandman? Vad kan man då?

Hur utvecklar man användbara system? Utvärdering. Användbarhet handlar om kvalitet. Utvärdering. Empiriska mätningar. Metoder

Administration Excelimport

Manual. Rapportera väntetider i systemet Utbudstjänst SLL

Hjälp för digital röst. Mikro Værkstedet A/S

Efter att du har installerat ExyPlus Office med tillhörande kartpaket börjar du med att göra följande inställningar:

Enkätresultat för vårdnadshavare till elever i Centralskolan Söder 4-9 i Grästorp hösten Antal svar: 50

Väga paket och jämföra priser

Design by. Manual Jossan.exe. Manual. till programmet. Jossan.exe. E-post:

Idag har jag kommunicerat på följande sätt (ge exempel under rubrikerna och kommentera dem med egna reflektioner):

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

Datorövning 2 Diskret fördelning och betingning

Facit åk 6 Prima Formula

Vad är WordPress? Medlemmar

Administrera utskick på utbildningstillfälle

MultiBoot Användarhandbok

Instruktion när NE-bilagan har lämnats via e-tjänsten Filöverföring

myabilia En introduktion

Här kan du läsa om vilka funktioner som finns tillgängliga i Switch King samt vilka möjligheter som finns för att sätta upp systemet (skalbarhet).

Boken om Teknik. Boken om Teknik är en grundbok i Teknik för åk 4 6.

Utveckla arbetsmiljö och verksamhet genom samverkan

Användarmanual VX-webben

Omvandla Vinklar. 1 Mattematiskt Tankesätt

1. Hur många timmar per vecka har du i genomsnitt lagt ner på kursen (inklusive schemalagd tid)?

Transkript:

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

Exempel rationella tal Scheme 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 2011 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: (define +rat (list (+ (* (car x) (cadr y)) (* (car y) (cadr x))) (* (cadr x) (cadr y))))) (define *rat (list (* (car x) (car y)) (* (cadr x) (cadr y))))) DA2001 (Föreläsning 7) Datalogi 1 Hösten 2011 3 / 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 2011 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)) > (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 2011 5 / 16

Exempel: rationella tal... (define +rat (cons (+ (* (car x) (cdr y)) (* (car y) (cdr x))) (* (cdr x) (cdr y))))) osv (define *rat... Det krävs många ändringar i stora program när man vill ändra datastrukturen. DA2001 (Föreläsning 7) Datalogi 1 Hösten 2011 6 / 16

Dataabstraktion Scheme 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 2011 7 / 16

Dataabstraktion... Scheme 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 2011 8 / 16

Dataabstraktion... Scheme Med hjälp av konstruktorn och selektorerna kan de aritmetiska operationerna skrivas så: (define +rat (make-rat (+ (* (numer x) (denom y)) (* (numer y) (denom x))) (* (denom x) (denom y))))) (define *rat (make-rat (* (numer x) (numer y)) (* (denom x) (denom y))))) DA2001 (Föreläsning 7) Datalogi 1 Hösten 2011 9 / 16

Dataabstraktion... Scheme 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 2011 10 / 16

Dataabstraktion... Scheme 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 2011 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 2011 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 2011 13 / 16

Dataabstraktion... Resterande aritmetiska operationer för rationella tal: (define -rat (make-rat (- (* (numer x) (denom y)) (* (numer y) (denom x))) (* (denom x) (denom y))))) (define /rat (make-rat (* (numer x) (denom y)) (* (numer y) (denom x))))) DA2001 (Föreläsning 7) Datalogi 1 Hösten 2011 14 / 16

Dataabstraktion... (define =rat (= (* (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 2011 15 / 16

Nästa gång: Scheme 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 i = i=a 0 om a > b b a + i annars i=a+1 eller i = a i b, a odd 0 om a > b a + i annars 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 2011 16 / 16