3 Algebraisk Specifikation af Abstrakte Datatyper.

Størrelse: px
Starte visningen fra side:

Download "3 Algebraisk Specifikation af Abstrakte Datatyper."

Transkript

1 3 Algebraisk Specifikation af Abstrakte Datatyper. Specifikation kontra program. Bestanddele af en algebraisk specifikation. Klassificering af funktioner i en ADT. Systematisk definition af ligninger. Fejlhåndtering. 35

2 Specifikation i forhold til program. En specifikation af en abstrakt datatype udtrykker, hvad operationerne gør, snarere end hvordan. En specifikation af en abstrakt datatype tjener som et forlæg og en rettesnor for en mængde mulige implementationer af typen. Specifikationsteknikker: Algebraiske specifikationer. Specifikation af logiske udtryk. I den foregående forelæsning har vi introduceret ideen om abstrakte datatyper. På basis af disse ideer kan der gives konkrete bud på, hvordan vi beskriver abstrakte datatyper i forskellige programmeringssprog. Det er her, det programmeringssproglige begreb klasser kommer ind i billedet. Det vil vi bruge meget tid på lidt senere i kurset. Man kan også gå "i den modsatte retning". Givet ideen om abstrakte datatyper, kan vi bevæge os i den matematiske retning, og på et mere formelt grundlag beskrive egenskaber ved abstrakte datatyper. I denne forelæsning vil vi se på én sådan formalisme til specifikation af abstrakte datatyper; den såkaldte algebraiske specifikationsformalisme. Senere i kurset vil vi studere en anden specifikationsmetode, hvor logiske udsagn i begyndelsen og i slutningen af operationer angiver, hvad disse skal gøre. 36

3 Bestanddele af en algebraisk specifikation. Type Navn Functions Funktions-signaturer Axioms Ligninger Semantisk definition af funktioner: Ligninger, som udtrykker gensidige afhængigheder mellem funktionerne, typisk gennem brug af rekursion. Syntaktisk definition af funktioner: f: T1 x T2 x... Tn -> S funktionsnavn typer i definitions-mængden typen af værdi-mængden. I en algebraisk specifikation er operationerne alle funktioner. Dette udelukker altså operationer, som påvirker et objekt ved at ændre objektets tilstand. I den idealiserede verden, hvori specifikationer fungerer, er dette imidlertid ikke nogen begrænsning. Enhver ændring i tilstanden af et objekt (af en eller anden type) kan beskrives ved en funktion, der returnerer en modificeret kopi af objektet som resultat. Eksempel: Hvis vi specificerer en mængde (af heltal) vil man typisk i en implementation have en operation, der inkluderer et tal i mængden. Dette ændrer mængde-objektets tilstand. I en algebraisk specifikation tænker vi på denne operation som en funktion, der givet en mængde og et element returnerer en ny mængde som resultat. Vi vil i denne forelæsning vende tilbage til dette eksempel. 37

4 Eksempel: specifikation af naturlige tal. type Nat0 functions null: -> Nat0 succ: Nat0 -> Nat0 plus: Nat0 x Nat0 -> Nat0 leq: Nat0 x Nat0 -> Boolean axioms for all i, j in Nat0 plus (null(), j) = j plus(succ(i),j) = succ(plus(i, j)) leq(null(), j) = true leq(succ(i), null()) = false leq(succ(i), succ(j)) = leq(i, j) Værdier af den abstrakte datatype, i dette eksempel, naturlige tal, udtrykkes i termer af konstruktorerne. Et vilkårligt naturligt tal kan udtrykkes som succ(succ (... null ()...)); altså som det antal gange vi skal addere tallet 1 til 0 for at opnå det pågældende tal. Man kan sige, at et objekt repræsenteres ved dets operationshistorie. Reduktion af udtryk. Givet et vilkårligt udtryk U kan man omskrive U ved brug af en eller flere af ligningerne. En særlig interessant omskrivning består i at reducere udtrykket til et udtryk, som kun består af konstruktorer (se næste slide). Eksempel: plus(succ(succ(null())), succ(null()) ). Dette udtryk kan ved to anvendelser af ligning 2 og én anvendelse af ligning 1 reduceres til succ(succ(succ(null()))). Vi har i alt beskedenhed udledt, at 2+1 er lig med 3. Det ses, at en værdi i en abstrakt datatype repræsenteres som et udtryk i konstruktorerne. Dette udtryk afspejler direkte eller indirekte historien af operationer udført på instansen af typen. Princippet i opskrivningen af ligningerne kaldes generator induktion (konstruktor induktion), idet der ligesom ved induktion er basistilfælde samt induktionstrin, der gradvis nærmer sig basis-situationen. Grundlaget for specifikationen af Nat0 er Peano's klassiske definition af de naturlige tal. Opgave: Udvid specifikationen med en subtraktionsfunktion inden for de naturlige tal. 38

5 Klassificering af funktioner i en ADT: Specifikation af en abstrakt datatype T: Konstruktorer f:... -> T De funktioner, der er nødvendige og tilstrækkelige til at generere værdier af den abstrakte datatype. Transformatorer f:... -> T Andre funktioner, der har værdier af T som resultat-type. Accessorer f:... T... -> S (S en anden type end T). Funktioner, der afbilder T over i andre typer (giver oplysninger om T). I litteraturen benyttes ofte en anderledes terminologi: Konstruktorer kaldes for generatorer. Transformatorer kaldes for extensorer. Accessorer kaldes for observatorer. Konstruktorer og transformatorer er har det tilfælles, at de er producenter af værdier af den abstrakte datatype T, som vi er igang med a specificere. Det er et spørgsmål om smag og behag, og måske også om perspektiv, der afgør om man bruger det ene eller det andet sæt af terminologi. Konstruktorer, transformatorer og accessorer passer godt til det objekt-orienterede perspektiv. Med et mere funktionelt perspektiv er det ofte mere naturligt at bruge de alternative ord. 39

6 Eksempel: specifikation af mængder. type Set[X] functions empty: -> Set[X] insert: Set[X] x X -> Set[X] delete: Set[X] x X -> Set[X] member: Set[X] x X -> boolean intersection: Set[X] x Set[X] -> Set[X] axioms for all s, t in set[x], e, f in X: delete (empty (), e) = empty() delete (insert (s, e), f) = if e=f then delete(s,f) else insert (delete(s, f), e) member(empty(), e) = false member(insert(s, e), f) = if e = f then true else member(s,f) intersection(empty(), s) = empty() intersection(insert(s, e), t ) = if member(t, e) then insert(intersection (s, t), e) else intersection (s, t) Kontruktorerne er empty og insert. Empty() betegner den tomme mængde, og insert indsætter et element af typen X i mængden. Den resulterende mængde returneres som resultat af funktionen insert. Delete og intersection er transformatorer. Delete(s, e) betegner mængden S \ {e}; intersection(s,t) betegner fællesmængden mellem s og t. Member er en accessor, som oplyser hvorvidt et element tilhører en mængde. En karakteristisk egenskab ved mængder er jo, at et element kun forekommer én gang i en mængde. Det er vigtigt at konstatere, hvordan vi håndterer dette i ovenstående specifikation. Vi kan ikke i en algebraisk specifikation forhindre, at et bestemt element indsættes to eller flere gange via insert. Men vi skal udaf til efterlade det indtryk, at elementet kun forekommer een gang. Hvis vi f.eks. indsætter et element e to gange i mængden s, og derefter sletter det (én gang) med delete, så skal member(s,e) returnere falsk. Det er værd at bemærke, at vi i denne specifikation har et eksempel på, at én af de specificerede accessorer kan udnyttes internt i specifikationen af en anden funktion. Det drejer sig om funktionen member, som benyttes i transformatoren intersection. Opgave: Udvid specifikationen med operationerne union (foreningsmængde) og cardinalitet (antallet af elementer i mængden). 40

7 Tommelfingerregler for definition af ligninger. Systematisk generator-induktion: Vi er igang med at specificere T: f: A1 x A2 x... An -> A er en ligning i specifikationen. f er enten en transformator eller en accessor. Alle kombinationer af konstruktorerne på de pladser, hvor Ai = T giver anledning til en ligning i specifikationen. Det er ofte muligt at slå to eller flere ligninger sammen til én. Fuldstændighed af specifikationen: Er der ligninger nok? Et vilkårligt udtryk kan reduceres til et udtryk i konstruktorerne eller til en værdi i en anden type. Konsistens af specifikationen: Er der ligninger, der giver modstrid? Et udtryk kan ikke reduceres til mere end ét resultat. Princippet om systematisk generator-induktion (konstruktor induktion) giver en meget praktisk og håndfast måde at opskrive ligner på. Hvis man følger princippet er det helt trivielt at afgøre hvormange ligninger der er nødvendige og tilstrækkelige, således at man opnår fuldstændighed og konsistens. Det ønskelige i at "slå nogle ligninger sammen" er af sekundær betydning. Dog kan det bidrage til et bedre overblik over, og en form for "indre skønhed" i specifikationen, når antallet af ligninger er slået passende sammen. 41

8 Fejlhåndtering. Det er nødvendigt at kunne håndtere fejl i specifikationen. Introducere fejlværdier. En funktion anvendt på en fejlværdi giver en ny fejlværdi. Introducere pre-betingelser. En funktion kan kun anvendes, hvis dets pre-betingelse er opfyldt. Af de to alternative måder at håndtere fejl på vælger vi som regel fejlværdier. Eksempel: Hvis pred: Nat0 -> Nat0 betegner forgænger operationen på naturlige tal (incl. 0) vil vi have en ligning: pred(null()) = error idet forgængeren af 0 plejer at være -1, og -1 er ikke et element i Nat0. I OOSC er det vist, hvordan man kan bruge prebetingelser for at fange forskellige fejlsituationer. Prebetingelsen for pred skal udtrykke, at parameteren til pred skal være mindst tallet en. 42

Algoritmeskabeloner: Sweep- og søgealgoritmer C#-version

Algoritmeskabeloner: Sweep- og søgealgoritmer C#-version Note til Programmeringsteknologi Akademiuddannelsen i Informationsteknologi Algoritmeskabeloner: Sweep- og søgealgoritmer C#-version Finn Nordbjerg 1/9 Indledning I det følgende introduceres et par abstrakte

Læs mere

4 Basal Objekt-orienteret Programmering I.

4 Basal Objekt-orienteret Programmering I. 4 Basal Objekt-orienteret Programmering I. Klasser i forhold til abstrakte datatyper og record-typer. Variable og operationer. Klasse-interfaces. Klasser og typer. Klasse-instantiering og initialisering.

Læs mere

Induktive og rekursive definitioner

Induktive og rekursive definitioner Induktive og rekursive definitioner Denne note omhandler matematiske objekter, som formelt er opbygget fra et antal basale byggesten, kaldet basistilfælde eller blot basis, ved gentagen brug af et antal

Læs mere

15 Arrays og Lister samt Stakke og Køer.

15 Arrays og Lister samt Stakke og Køer. 15 Arrays og Lister samt Stakke og Køer. Introduktion til arrays. Algebraisk specifikation af arrays. Arrays i Eiffel. Introduktion til lister og kædede lister. Fælles egenskaber ved stakke og køer. Algebraisk

Læs mere

16 Træer. Noter. Definition af et træ. Definitioner i tilknytning til træer. Repræsentation af træer. Binære træer. Den abstrakte datatype.

16 Træer. Noter. Definition af et træ. Definitioner i tilknytning til træer. Repræsentation af træer. Binære træer. Den abstrakte datatype. 16 Træer. Definition af et træ. Definitioner i tilknytning til træer. Repræsentation af træer. Binære træer. Den abstrakte datatype. Gennemløb af binære træer. Træer i Eiffel. 229 Definition af et træ.

Læs mere

26 Programbeviser I. Noter. PS1 -- Programbeviser I. Bevis kontra 'check af assertions' i Eiffel. Betingelser og bevisregler.

26 Programbeviser I. Noter. PS1 -- Programbeviser I. Bevis kontra 'check af assertions' i Eiffel. Betingelser og bevisregler. 26 Programbeviser I. Bevis kontra 'check af assertions' i Eiffel. Betingelser og bevisregler. Hvad er programverifikation? Bevisregel for 'tom kommando'. Bevisregel for assignment. Bevisregler for selektive

Læs mere

Skriftlig eksamen i Datalogi

Skriftlig eksamen i Datalogi Roskilde Universitetscenter side 1 af 9 sider Skriftlig eksamen i Datalogi Modul 1 Vinter 1999/2000 Opgavesættet består af 6 opgaver, der ved bedømmelsen tillægges følgende vægte: Opgave 1 5% Opgave 2

Læs mere

Abstrakte datatyper C#-version

Abstrakte datatyper C#-version Note til Programmeringsteknologi Akademiuddannelsen i Informationsteknologi Abstrakte datatyper C#-version Finn Nordbjerg 1/9 Abstrakte Datatyper Denne note introducerer kort begrebet abstrakt datatype

Læs mere

t a l e n t c a m p d k Matematiske Metoder Anders Friis Anne Ryelund 25. oktober 2014 Slide 1/42

t a l e n t c a m p d k Matematiske Metoder Anders Friis Anne Ryelund 25. oktober 2014 Slide 1/42 Slide 1/42 Hvad er matematik? 1) Den matematiske metode 2) Hvad vil det sige at bevise noget? 3) Hvor begynder det hele? 4) Hvordan vælger man et sæt aksiomer? Slide 2/42 Indhold 1 2 3 4 Slide 3/42 Mængder

Læs mere

8 Specifikation med Logiske Udtryk.

8 Specifikation med Logiske Udtryk. 8 Specifikation med Logiske Udtryk. Specifikation kontra program. Specifikation af funktioner. Specifikation af funktions-orienterede ADT-er. Integreret specifikation og program i Eiffel. Korrekthed af

Læs mere

Bevisteknikker. Bevisteknikker (relevant både ved design og verifikation) Matematisk induktion. Matematisk induktion uformel beskrivelse

Bevisteknikker. Bevisteknikker (relevant både ved design og verifikation) Matematisk induktion. Matematisk induktion uformel beskrivelse Bevisteknikker Bevisteknikker (relevant både ved design og verifikation) Bevisførelse ved modstrid (indirekte bevis) Antag, at det givne teorem er falsk Konkluder, at dette vil føre til en modstrid Teorem:

Læs mere

Baggrundsnote om logiske operatorer

Baggrundsnote om logiske operatorer Baggrundsnote om logiske operatorer Man kan regne på udsagn ligesom man kan regne på tal. Regneoperationerne kaldes da logiske operatorer. De tre vigtigste logiske operatorer er NOT, AND og. Den første

Læs mere

28 Algoritmedesign. Noter. PS1 -- Algoritmedesign

28 Algoritmedesign. Noter. PS1 -- Algoritmedesign 28 Algoritmedesign. Algoritmeskabelon for Del og Hersk. Eksempler på Del og Hersk algoritmer. Binær søgning i et ordnet array. Sortering ved fletning og Quicksort. Maksimal delsums problem. Tætteste par

Læs mere

01017 Diskret Matematik E12 Alle bokse fra logikdelens slides

01017 Diskret Matematik E12 Alle bokse fra logikdelens slides 01017 Diskret Matematik E12 Alle bokse fra logikdelens slides Thomas Bolander 1 Udsagnslogik 1.1 Formler og sandhedstildelinger symbol står for ikke eller og ( A And) hvis... så... hvis og kun hvis...

Læs mere

18 Multivejstræer og B-træer.

18 Multivejstræer og B-træer. 18 Multivejstræer og B-træer. Multivejs søgetræer. Søgning i multivejssøgetræer. Pragmatisk lagring af data i multivejstræer. B-træer. Indsættelse i B-træer. Eksempel på indsættelse i B-træ. Facts om B-træer.

Læs mere

Bevisteknikker (relevant både ved design og verifikation)

Bevisteknikker (relevant både ved design og verifikation) Bevisteknikker 1 Bevisteknikker (relevant både ved design og verifikation) Bevisførelse ved modstrid (indirekte bevis) Antag, at det givne teorem er falsk Konkluder, at dette vil føre til en modstrid Teorem:

Læs mere

BRP Tal. Om computer-repræsentation og -manipulation. Logaritmer

BRP Tal. Om computer-repræsentation og -manipulation. Logaritmer BRP 13.9.2006 Tal. Om computer-repræsentation og -manipulation. Logaritmer 1. Opgaverne til i dag dækker det meste af stoffet 2. Resten af stoffet logaritmer binære træer 3. Øvelse ny programmeringsopgave

Læs mere

Affine rum. a 1 u 1 + a 2 u 2 + a 3 u 3 = a 1 u 1 + (1 a 1 )( u 2 + a 3. + a 3. u 3 ) 1 a 1. Da a 2

Affine rum. a 1 u 1 + a 2 u 2 + a 3 u 3 = a 1 u 1 + (1 a 1 )( u 2 + a 3. + a 3. u 3 ) 1 a 1. Da a 2 Affine rum I denne note behandles kun rum over R. Alt kan imidlertid gennemføres på samme måde over C eller ethvert andet legeme. Et underrum U R n er karakteriseret ved at det er en delmængde som er lukket

Læs mere

Design by Contract Bertrand Meyer Design and Programming by Contract. Oversigt. Prædikater

Design by Contract Bertrand Meyer Design and Programming by Contract. Oversigt. Prædikater Design by Contract Bertrand Meyer 1986 Design and Programming by Contract Michael R. Hansen & Anne Haxthausen mrh@imm.dtu.dk Informatics and Mathematical Modelling Technical University of Denmark Design

Læs mere

Skriftlig eksamen i Datalogi

Skriftlig eksamen i Datalogi Roskilde Universitetscenter Skriftlig eksamen i Datalogi Modul 1 Sommer 1999 Opgavesættet består af 5 opgaver, der ved bedømmelsen tillægges følgende vægte: Opgave 1 15% Opgave 2 15% Opgave 3 8% Opgave

Læs mere

29 Opsamling af Objekt-orienteret Programmering.

29 Opsamling af Objekt-orienteret Programmering. 29 Opsamling af Objekt-orienteret Programmering. Bottom-up kontra top-down design. "The shopping list approach". Hvordan finder man på objekterne. Klasser og dataabstraktion. Klasse interface og interface-teknikker.

Læs mere

Udvidelse og specialisering. Klassehierarkier. Nedarvningsterminologi. Interfaces. Statiske og dynamiske typer. Polymorfi. Abstrakte klasser.

Udvidelse og specialisering. Klassehierarkier. Nedarvningsterminologi. Interfaces. Statiske og dynamiske typer. Polymorfi. Abstrakte klasser. 10 Nedarvning I. Udvidelse og specialisering. Klassehierarkier. Nedarvningsterminologi. Interfaces. Statiske og dynamiske typer. Polymorfi. Dynamisk binding og virtuelle operationer. Decentraliseret/centraliseret

Læs mere

Grundlæggende Matematik

Grundlæggende Matematik Grundlæggende Matematik Hayati Balo, AAMS August 2012 1. Matematiske symboler For at udtrykke de verbale udsagn matematisk korrekt, så det bliver lettere og hurtigere at skrive, indføres en række matematiske

Læs mere

Implikationer og Negationer

Implikationer og Negationer Implikationer og Negationer Frank Villa 5. april 2014 Dette dokument er en del af MatBog.dk 2008-2012. IT Teaching Tools. ISBN-13: 978-87-92775-00-9. Se yderligere betingelser for brug her. Indhold 1 Introduktion

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2012 Projekt, del II Institut for matematik og datalogi Syddansk Universitet 15. marts, 2012 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

Basale forudsætninger. Sortering ved fletning med tre bånd, i to faser.

Basale forudsætninger. Sortering ved fletning med tre bånd, i to faser. 25 Sortering III. Basale forudsætninger. Sortering ved fletning med tre bånd, i to faser. Sortering ved fletning, med fire bånd, i én fase (balanceret fletning). Polyfase fletning med tre bånd. Generaliseret

Læs mere

Grundlæggende Matematik

Grundlæggende Matematik Grundlæggende Matematik Hayati Balo, AAMS Juli 2013 1. Matematiske symboler For at udtrykke de verbale udsagn matematisk korrekt, så det bliver lettere og hurtigere at skrive, indføres en række matematiske

Læs mere

BOSK F2012, 1. del: Prædikatslogik

BOSK F2012, 1. del: Prædikatslogik ε > 0. δ > 0. x. x a < δ f (x) L < ε February 8, 2012 Prædikater Vi skal lære om prædikatslogik lad os starte med prædikater. Et prædikat er et orakel der svarer ja eller nej. Eller mere præcist: Prædikater

Læs mere

Skriftlig eksamen i Datalogi

Skriftlig eksamen i Datalogi Roskilde Universitetscenter Skriftlig eksamen i Datalogi Modul 1 Vinter 1998/99 Opgavesættet består af 5 opgaver, der ved bedømmelsen tillægges følgende vægte: Opgave 1 16% Opgave 2 12% Opgave 3 10% Opgave

Læs mere

Åben uddannelse, Efterår 1996, Oversættere og køretidsomgivelser

Åben uddannelse, Efterår 1996, Oversættere og køretidsomgivelser 3/10/96 Seminaret den 26/10 vil omhandle den sidste fase af analysen og de første skridt i kodegenereringen. Det drejer sig om at finde betydningen af programmet, nu hvor leksikalsk og syntaktisk analyse

Læs mere

En karakteristik af de regulære sprog. Ugens emner. FA minimering [5.1-5.2] MyHill-Nerode-sætningen en algoritme til minimering af FA er

En karakteristik af de regulære sprog. Ugens emner. FA minimering [5.1-5.2] MyHill-Nerode-sætningen en algoritme til minimering af FA er Ugens emner FA minimering [.-.] MyHill-Nerode-sætningen en algoritme til minimering af FA er En karakteristik af de regulære sprog Et sprog L er regulært hvis og kun hvis L beskrives af et regulært udtryk

Læs mere

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi DATALOGISK INSTITUT, AARHUS UNIVERSITET Det Naturvidenskabelige Fakultet EKSAMEN Grundkurser i Datalogi Antal sider i opgavesættet (incl. forsiden): 1 (tretten) Eksamensdag: Tirsdag den 8. april 2008,

Læs mere

Opfølgning på Dygtig Skildpadde (Michael) To algoritmeskabeloner

Opfølgning på Dygtig Skildpadde (Michael) To algoritmeskabeloner Forelæsning 4.1 Opfølgning på Dygtig Skildpadde (Michael) To algoritmeskabeloner finden findalle Primitive typer (forfremmelse og begrænsning) Identitet versus lighed (for objekter, herunder strenge) Afleveringsopgave

Læs mere

BOSK F2011, 1. del: Udsagnslogik

BOSK F2011, 1. del: Udsagnslogik ( p q) p q February 1, 2011 Sandhedsværdier og udsagnsvariable I dag handler det om logiske udsagn. Mere præcist om de logiske udsagn vi kan bygge ud fra sandhedsværdier, udsagnsvariable og logiske konnektiver.

Læs mere

Rekursion C#-version

Rekursion C#-version Note til Programmeringsteknologi Akademiuddannn i Informationsteknologi Rekursion C#-version Finn Nordbjerg 1 Rekursion Rekursionsbegrebet bygger på, at man beskriver noget ved "sig selv". Fx. kan tallet

Læs mere

DATALOGI 1E. Skriftlig eksamen torsdag den 3. juni 2004

DATALOGI 1E. Skriftlig eksamen torsdag den 3. juni 2004 Københavns Universitet Naturvidenskabelig Embedseksamen DATALOGI 1E Skriftlig eksamen torsdag den 3. juni 2004 Opgaverne vægtes i forhold til tidsangivelsen herunder, og hver opgaves besvarelse bedømmes

Læs mere

Teoretiske Øvelsesopgaver:

Teoretiske Øvelsesopgaver: Teoretiske Øvelsesopgaver: TØ-Opgave 1 Subtraktion division i legemer: Er subtraktion division med elementer 0 i legemer veldefinerede, eller kan et element b have mere end ét modsat element -b eller mere

Læs mere

Øvelse 9. Klasser, objekter og sql-tabeller insert code here

Øvelse 9. Klasser, objekter og sql-tabeller insert code here Øvelse 9. Klasser, objekter og sql-tabeller Denne opgave handler om hvordan man opbevarer data fra databasekald på en struktureret måde. Den skal samtidig give jer erfaringer med objekter, der kommer til

Læs mere

Introduktion til programmering. Uge 38.1 Python 2 Learning Python, kap 8-12.

Introduktion til programmering. Uge 38.1 Python 2 Learning Python, kap 8-12. Introduktion til programmering Uge 38.1 Python 2 Learning Python, kap 8-12. Opsummering Store dele af Python kan forstås gennem følgende simple model: En repræsentation/udtryk står for et objekt/en værdi

Læs mere

Noter til Perspektiver i Matematikken

Noter til Perspektiver i Matematikken Noter til Perspektiver i Matematikken Henrik Stetkær 25. august 2003 1 Indledning I dette kursus (Perspektiver i Matematikken) skal vi studere de hele tal og deres egenskaber. Vi lader Z betegne mængden

Læs mere

Skriftlig eksamen - med besvarelse Topologi I (MM508)

Skriftlig eksamen - med besvarelse Topologi I (MM508) INSTITUT FOR MATEMATIK OG DATALOGI SYDDANSK UNIVERSITET, ODENSE Skriftlig eksamen - med besvarelse Topologi I (MM508) Mandag d. 14. januar 2007 2 timer med alle sædvanlige hjælpemidler tilladt. Opgavesættet

Læs mere

Matematik. 1 Matematiske symboler. Hayati Balo,AAMS. August, 2014

Matematik. 1 Matematiske symboler. Hayati Balo,AAMS. August, 2014 Matematik Hayati Balo,AAMS August, 2014 1 Matematiske symboler For at udtrykke de verbale udsagn matematisk korrekt, så det bliver lettere og hurtigere at skrive, indføres en række matematiske symboler.

Læs mere

2 Abstrakte datatyper.

2 Abstrakte datatyper. 2 Abstrakte datatyper. Motivere eksempel: top-down udvikling af program 'mini-bank' Strukturering af et program: efter data eller funktion? Definition af en abstrakt datatype og tilknyttede begreber. Fænomener,

Læs mere

De rigtige reelle tal

De rigtige reelle tal De rigtige reelle tal Frank Villa 17. januar 2014 Dette dokument er en del af MatBog.dk 2008-2012. IT Teaching Tools. ISBN-13: 978-87-92775-00-9. Se yderligere betingelser for brug her. Indhold 1 Introduktion

Læs mere

Databasesystemer, forår 2005 IT Universitetet i København. Forelæsning 3: E-R modellering. 17. februar 2005. Forelæser: Rasmus Pagh

Databasesystemer, forår 2005 IT Universitetet i København. Forelæsning 3: E-R modellering. 17. februar 2005. Forelæser: Rasmus Pagh Databasesystemer, forår 2005 IT Universitetet i København Forelæsning 3: E-R modellering 17. februar 2005 Forelæser: Rasmus Pagh Forelæsningen i dag Datamodellering hvad, hvornår, hvorfor og hvordan? Business

Læs mere

Eksempel på den aksiomatisk deduktive metode

Eksempel på den aksiomatisk deduktive metode Eksempel på den aksiomatisk deduktive metode Et rigtig godt eksempel på et aksiomatisk deduktivt system er Euklids Elementer. Euklid var græker og skrev Elemeterne omkring 300 f.kr. Værket består af 13

Læs mere

Spil Master Mind. Indledning.

Spil Master Mind. Indledning. side 1 af 16 Indledning. Spillet som denne rapport beskriver, indgår i et større program, der er lavet som projekt i valgfaget programmering C på HTX i perioden 9/11-98 til 12/1-99. Spillet skal give de

Læs mere

Sandsynlighedsregning og statistik

Sandsynlighedsregning og statistik og statistik Jakob G. Rasmussen, Institut for Matematiske Fag jgr@math.aau.dk Litteratur: Walpole, Myers, Myers & Ye: Probability and Statistics for Engineers and Scientists, Prentice Hall, 8th ed. Slides

Læs mere

Videregående Programmering for Diplom-E Noter

Videregående Programmering for Diplom-E Noter Videregående Programmering for Diplom-E Noter 1. Uddelegering Ét af de væsentlige principper i objektorienteret programmering er, at enhver klasse selv skal kunne "klare ærterne". Enhver klasse skal altså

Læs mere

1 Opsumering fra tidligere. 2 Dagsorden 3 BIMS. 4 Programtilstande. Statements/kommandoer (Stm) i bims. 3.1 Abstrakt syntaks for bims

1 Opsumering fra tidligere. 2 Dagsorden 3 BIMS. 4 Programtilstande. Statements/kommandoer (Stm) i bims. 3.1 Abstrakt syntaks for bims 1 Opsumering fra tidligere Hvis A er kontekstfrit, S er der et p > 0 s Alle s A hvor s p kan splittes op som s = uvxyz så argument 1-3 holder A er ikke kontekstfrit, hvis for ethvert bud på p kan findes

Læs mere

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: 23n log n. 4 n (log n) log n

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: 23n log n. 4 n (log n) log n Eksamen. kvarter 00 Algoritmer og Datastrukturer (00-ordning) Side af sider Opgave (%) Ja Nej n er O(n )? n er O(n )? n er O(n + 0 n)? n + n er O(n )? n log n er Ω(n )? Opgave (%) Opskriv følgende funktioner

Læs mere

UML til kravspecificering

UML til kravspecificering UML til kravspecificering UML mini-kompendium - til brug i forbindelse med modellering af kravspecifikationer. Copyright 2006 Teknologisk Institut, IT-Udvikling Aktivitetsdiagram 2/9 Aktion Aktionsnavn

Læs mere

Spilstrategier. 1 Vindermængde og tabermængde

Spilstrategier. 1 Vindermængde og tabermængde Spilstrategier De spiltyper vi skal se på her, er primært spil af følgende type: Spil der spilles af to spillere A og B som skiftes til at trække, A starter, og hvis man ikke kan trække har man tabt. Der

Læs mere

Løsning af møntproblemet

Løsning af møntproblemet Løsning af møntproblemet Keld Helsgaun RUC, oktober 1999 Antag at tilstandene i problemet (stillingerne) er repræsenteret ved objekter af klassen State. Vi kan da finde en kortest mulig løsning af problemet

Læs mere

DM02 opgaver ugeseddel 2

DM02 opgaver ugeseddel 2 DM0 opgaver ugeseddel af Fiona Nielsen 16. september 003 Øvelsesopgaver 9/9, 10/9 og 11/9 1. Vis, at 1 3 + 3 3 + 5 3 +... + (n 1) 3 = n 4 n. Omskriver til summationsformel: (i 1) 3 = n 4 n Bevis ved induktion

Læs mere

vil jeg blive mindet om det af VBA allerede mens jeg skriver koden, da der er tale om en såkaldt kompileringsfejl:

vil jeg blive mindet om det af VBA allerede mens jeg skriver koden, da der er tale om en såkaldt kompileringsfejl: Fejlhåndtering Selv de bedste programmører laver af og til fejl! Dette kommer sikkert som en overraskelse for de fleste, bortset fra de, der har arbejdet med et hvilket som helst større program. Fejl kan

Læs mere

Henrik Bulskov Styltsvig

Henrik Bulskov Styltsvig Matematisk logik Henrik Bulskov Styltsvig Datalogiafdelingen, hus 42.1 Roskilde Universitetscenter Universitetsvej 1 Postboks 260 4000 Roskilde Telefon: 4674 2000 Fax: 4674 3072 www.dat.ruc.dk Disposition

Læs mere

Omskrivningsregler. Frank Nasser. 10. december 2011

Omskrivningsregler. Frank Nasser. 10. december 2011 Omskrivningsregler Frank Nasser 10. december 2011 2008-2011. Dette dokument må kun anvendes til undervisning i klasser som abonnerer på MatBog.dk. Se yderligere betingelser for brug her. Indhold 1 Introduktion

Læs mere

Multiparadigme Programmering

Multiparadigme Programmering Multi Programmering Repetition: De grundliggende r Systematisk karateristik. Paradigmesupplering. Symmetrisk multi programmering Leda eksempler på logikprogrammering kombineret med imperativ og funktionsorienteret

Læs mere

Design by Contract. Design and Programming by Contract. Oversigt. Prædikater

Design by Contract. Design and Programming by Contract. Oversigt. Prædikater Design by Contract Design and Programming by Contract Anne Haxthausen ah@imm.dtu.dk Informatics and Mathematical Modelling Technical University of Denmark Design by Contract er en teknik til at specificere

Læs mere

Punktmængdetopologi. Mikkel Stouby Petersen. 1. marts 2013

Punktmængdetopologi. Mikkel Stouby Petersen. 1. marts 2013 Punktmængdetopologi Mikkel Stouby Petersen 1. marts 2013 I kurset Matematisk Analyse 1 er et metrisk rum et af de mest grundlæggende begreber. Et metrisk rum (X, d) er en mængde X sammen med en metrik

Læs mere

Om matematisk logik. Henning Christiansen, Troels Andreasen

Om matematisk logik. Henning Christiansen, Troels Andreasen Om matematisk logik Henning Christiansen, Troels Andreasen Contents 1 Indledning 3 2 Propositionel logik 5 2.1 Propositionelle logiksprog..................... 5 2.1.1 Syntaks...........................

Læs mere

Epistemisk logik og kunstig intelligens

Epistemisk logik og kunstig intelligens Epistemisk logik og kunstig intelligens Thomas Bolander, DTU Informatik Gæsteforelæsning i Kognitionsforskning II, CST, KU, efteråret 2009 Thomas Bolander, Kognitionsforskning II 09 s. 1/22 Logik Logik

Læs mere

Programmeringscamp. Implementer funktionerne én for én og test hele tiden.

Programmeringscamp. Implementer funktionerne én for én og test hele tiden. Programmeringscamp De to opgaver træner begge i at lave moduler som tilbyder services der kan bruges af andre, samt i at implementere services efter en abstrakt forskrift. Opgave 1 beder jer om at implementere

Læs mere

Matematiske metoder - Opgaver

Matematiske metoder - Opgaver Matematiske metoder - Opgaver Anders Friis, Anne Ryelund 25. oktober 2014 Logik Opgave 1 Find selv på tre udtalelser (gerne sproglige). To af dem skal være udsagn, mens det tredje ikke må være et udsagn.

Læs mere

Forelæsning Uge 1 Torsdag

Forelæsning Uge 1 Torsdag Forelæsning Uge 1 Torsdag Objekters tilstand og opførsel Java og BlueJ Skabelse af objekter (via new-operatoren) Iteration (gentagelser) og parametrisering Java's for løkke Parametre i metoder Forskellige

Læs mere

19 Hashtabeller. Noter. PS1 -- Hashtabeller. Hashing problemet. Hashfunktioner. Kollision. Søgning og indsættelse.

19 Hashtabeller. Noter. PS1 -- Hashtabeller. Hashing problemet. Hashfunktioner. Kollision. Søgning og indsættelse. 19 Hashtabeller. Hashing problemet. Hashfunktioner. Kollision. Søgning og indsættelse. Sammenligning af hashtabeller og søgetræer. 281 Hashing-problemet (1). Vi ønsker at afbilde n objekter på en tabel

Læs mere

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: (logn) 5. 5n 2 5 logn. 2 logn

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: (logn) 5. 5n 2 5 logn. 2 logn Eksamen august 0 Algoritmer og Datastrukturer (00-ordning) Side af sider Opgave (%) n +n er O(n )? Ja Nej n er O(n )? n+n er O(n. )? n+n er O(8n)? n logn er O(n )? Opgave (%) Opskriv følgende funktioner

Læs mere

HTML, PHP, SQL, webserver, hvad er hvad??

HTML, PHP, SQL, webserver, hvad er hvad?? Dagens menu HTML og PHP: Baglæs fra output til input PHP: Variable, strenge og arrays Funktioner, oprettelse og kald (og variable på tværs af funktioner) echo vs return? if-else konstruktioner MySQL: Hvad

Læs mere

TALTEORI Ligninger og det der ligner.

TALTEORI Ligninger og det der ligner. Ligninger og det der ligner, december 006, Kirsten Rosenkilde 1 TALTEORI Ligninger og det der ligner. Disse noter forudsætter et grundlæggende kendskab til talteori som man kan få i Marianne Terps og Peter

Læs mere

Appendiks 6: Universet som en matematisk struktur

Appendiks 6: Universet som en matematisk struktur Appendiks 6: Universet som en matematisk struktur En matematisk struktur er et meget abstrakt dyr, der kan defineres på følgende måde: En mængde, S, af elementer {s 1, s 2,,s n }, mellem hvilke der findes

Læs mere

Rolf Fagerberg. Forår 2012

Rolf Fagerberg. Forår 2012 Forår 2012 Mål for i dag Dagens program: 1 2 3 4 5 6 Forudsætninger: DM502 og DM503 Timer: 50% forelæsninger, 50% øvelser Forudsætninger: DM502 og DM503 Eksamenform: Skriftlig eksamen: Timer: 50% forelæsninger,

Læs mere

Introduktion. Philip Bille

Introduktion. Philip Bille Introduktion Philip Bille Plan Algoritmer og datastrukturer Toppunkter Algoritme 1 Algoritme 2 Algoritme 3 Algoritmer og datastrukturer Hvad er det? Algoritmisk problem: præcist defineret relation mellem

Læs mere

Hvad er formel logik?

Hvad er formel logik? Kapitel 1 Hvad er formel logik? Hvad er logik? I daglig tale betyder logisk tænkning den rationelt overbevisende tænkning. Og logik kan tilsvarende defineres som den rationelle tænknings videnskab. Betragt

Læs mere

Noter til C# Programmering Iteration

Noter til C# Programmering Iteration Noter til C# Programmering Iteration Programflow Programmer udfører det meste af deres arbejde vha. forgrening og løkker. Løkker Mange programmeringsproblemer kan løses ved at gentage en handling på de

Læs mere

Forelæsning Uge 4 Mandag

Forelæsning Uge 4 Mandag Forelæsning Uge 4 Mandag Algoritmeskabeloner Kan (ved simple tilretningerne) bruges til at implementere metoder, der gennemsøger en arrayliste (eller anden objektsamling) og finder objekter, der opfylder

Læs mere

Fagets IT Introduktion til MATLAB

Fagets IT Introduktion til MATLAB Fagets IT Introduktion til MATLAB Mads G. Christensen mgc@kom.auc.dk Afdeling for Kommunikationsteknologi, Aalborg Universitet. MATLAB 2002 p.1/28 Kursusoversigt 1. Introduktion, matrix-indeksering, -operationer

Læs mere

Spilstrategier. Indhold. Georg Mohr-Konkurrencen. 1 Vindermængde og tabermængde 2. 2 Kopier modpartens træk 4

Spilstrategier. Indhold. Georg Mohr-Konkurrencen. 1 Vindermængde og tabermængde 2. 2 Kopier modpartens træk 4 Indhold 1 Vindermængde og tabermængde 2 2 Kopier modpartens træk 4 3 Udnyt modpartens træk 5 4 Strategityveri 6 5 Løsningsskitser 7 Spilstrategier De spiltyper vi skal se på her, er primært spil af følgende

Læs mere

16. december. Resume sidste gang

16. december. Resume sidste gang 16. december Resume sidste gang Abstrakt problem, konkret instans, afgørlighedsproblem Effektiv kodning (pol. relateret til binær kodning) Sprog L : mængden af instanser for et afgørlighedsproblem hvor

Læs mere

3 Algebra. Faglige mål. Variable og brøker. Den distributive lov. Potenser og rødder

3 Algebra. Faglige mål. Variable og brøker. Den distributive lov. Potenser og rødder 3 Algebra Faglige mål Kapitlet Algebra tager udgangspunkt i følgende faglige mål: Variable og brøker: kende enkle algebraiske udtryk med brøker og kunne behandle disse ved at finde fællesnævner. Den distributive

Læs mere

Databasesystemer, forår 2006 IT Universitetet i København. Forelæsning 3: E-R modellering. 16. februar 2006. Forelæser: Rasmus Pagh

Databasesystemer, forår 2006 IT Universitetet i København. Forelæsning 3: E-R modellering. 16. februar 2006. Forelæser: Rasmus Pagh Databasesystemer, forår 2006 IT Universitetet i København Forelæsning 3: E-R modellering 16. februar 2006 Forelæser: Rasmus Pagh Forelæsningen i dag Datamodellering hvad, hvorfor og hvordan? Business rules

Læs mere

Oversættere Skriftlig eksamen onsdag d. 24. januar 2007

Oversættere Skriftlig eksamen onsdag d. 24. januar 2007 Københavns Universitet Naturvidenskabelig Embedseksamen Oversættere Skriftlig eksamen onsdag d. 24. januar 2007 Eksamenstiden er to timer. Opgavernes vægt i procent er angivet ved hver opgave. Den skriftlige

Læs mere

Programmering. Det rent og skært nødvendige, det elementært nødvendige! Morten Dam Jørgensen

Programmering. Det rent og skært nødvendige, det elementært nødvendige! Morten Dam Jørgensen Programmering Det rent og skært nødvendige, det elementært nødvendige! Morten Dam Jørgensen Oversigt Undervisningen Hvad er programmering Hvordan er et program organiseret? Programmering og fysik Nobelprisen

Læs mere

Stakke, køer og lidt om hægtede lister - kapitel 16 og 17

Stakke, køer og lidt om hægtede lister - kapitel 16 og 17 Datastrukturer & Algoritmer, Datalogi C Forelæsning 2/11-2004 Henning Christiansen Stakke, køer og lidt om hægtede lister - kapitel 16 og 17 Fundamentale datastrukturer man får brug for igen og igen Et

Læs mere

Analytisk plangeometri 1

Analytisk plangeometri 1 1 Analytisk plangeometri 1 Kære 1. x, Vi begynder dag vores forløb om analytisk plangeometri. Dette bliver en udvidelse af ting i allerede kender til, så noget ved I i forvejen, mens andet bliver helt

Læs mere

Nogle grundlæggende begreber

Nogle grundlæggende begreber BE2-kursus 2010 Jørgen Larsen 5. februar 2010 Nogle grundlæggende begreber Lidt simpel mængdelære Mængder består af elementer; mængden bestående af ingen elementer er, den tomme mængde. At x er element

Læs mere

User Guide AK-SM 720 Boolean logic

User Guide AK-SM 720 Boolean logic User Guide AK-SM 720 Boolean logic ADAP-KOOL Refrigeration control systems Anvendelse Funktionen er indeholdt i Systemmanager type AK-SM 720, og kan anvendes til brugerdefinerede funktioner. Funktionerne

Læs mere

Hvad er IT i matematikundervisningen egentlig? Professor, Ph.d. Morten Misfeldt, Aalborg Universitet, København

Hvad er IT i matematikundervisningen egentlig? Professor, Ph.d. Morten Misfeldt, Aalborg Universitet, København Hvad er IT i matematikundervisningen egentlig? Professor, Ph.d. Morten Misfeldt, Aalborg Universitet, København Spørgsmål der afsøges Hvilke udfordringer og muligheder stiller digitale teknologier matematikuddannelsen

Læs mere

Dat 2/BAIT6/SW4: Syntaks og semantik En manual for studerende

Dat 2/BAIT6/SW4: Syntaks og semantik En manual for studerende Dat 2/BAIT6/SW4: Syntaks og semantik En manual for studerende Hans Hüttel Foråret 2011 Indhold Indhold 1 1 Kurset er lavet om! 1 2 Kursets indhold 2 2.1 Kursets emner................................ 2

Læs mere

Forelæsning Uge 6 Mandag

Forelæsning Uge 6 Mandag Forelæsning Uge 6 Mandag Tingene i denne forelæsning er ikke eksamenspensum Forelæsningen afrunder kurset, og forklarer nogle af de begreber, som I har mødt under kurset uden at få detaljeret forklaring

Læs mere

Objects First with Java A Practical Introduction Using BlueJ

Objects First with Java A Practical Introduction Using BlueJ Objects First with Java A Practical Introduction Using BlueJ En introduktion til objektorienteret programmering for begyndere ud fra et software engineering aspekt Om at programmere i Java, ikke om værktøjet

Læs mere

Kompendium i faget. Matematik. Tømrerafdelingen. 2. Hovedforløb. Y = ax 2 + bx + c. (x,y) Svendborg Erhvervsskole Tømrerafdelingen Niels Mark Aagaard

Kompendium i faget. Matematik. Tømrerafdelingen. 2. Hovedforløb. Y = ax 2 + bx + c. (x,y) Svendborg Erhvervsskole Tømrerafdelingen Niels Mark Aagaard Kompendium i faget Matematik Tømrerafdelingen 2. Hovedforløb. Y Y = ax 2 + bx + c (x,y) X Svendborg Erhvervsskole Tømrerafdelingen Niels Mark Aagaard Indholdsfortegnelse for H2: Undervisningens indhold...

Læs mere

Begrænsninger i SQL. Databaser, efterår 2002. Troels Andreasen

Begrænsninger i SQL. Databaser, efterår 2002. Troels Andreasen Databaser, efterår 2002 Begrænsninger i SQL Troels Andreasen Datalogiafdelingen, hus 42.1 Roskilde Universitetscenter Universitetsvej 1 Postboks 260 4000 Roskilde Telefon: 4674 2000 Fax: 4674 3072 www.dat.ruc.dk

Læs mere

Matematisk modellering og numeriske metoder. Lektion 8

Matematisk modellering og numeriske metoder. Lektion 8 Matematisk modellering og numeriske metoder Lektion 8 Morten Grud Rasmussen 18. oktober 216 1 Fourierrækker 1.1 Periodiske funktioner Definition 1.1 (Periodiske funktioner). En periodisk funktion f er

Læs mere

Klasser og objekter. (Afsnit i manualen)

Klasser og objekter. (Afsnit i manualen) Klasser og objekter (Afsnit 4 + 5 i manualen) Grundbegreber Klasser og objekter beskrivelse oprettelse Attributter og metoder tilstand opførsel Indkapsling afskærmning datarepræsentationsuafhængighed Klasser

Læs mere

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 3

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 3 DM502 Forelæsning 3 Indlæsning fra tastatur Udskrift til skærm Repetition Beregning af middelværdi Gentagelse med stop-betingelse (while) Heltalsdivision Division med nul Type-casting ( (double) ) Betinget

Læs mere

Introduktion til datastrukturer. Introduktion til datastrukturer. Introduktion til datastrukturer. Datastrukturer

Introduktion til datastrukturer. Introduktion til datastrukturer. Introduktion til datastrukturer. Datastrukturer Introduktion til datastrukturer Introduktion til datastrukturer Philip Bille Datastrukturer Datastruktur. Metode til at organise data så det kan søges i/tilgås/manipuleres effektivt. Mål. Hurtig Kompakt

Læs mere

Logik. Af Peter Harremoës Niels Brock

Logik. Af Peter Harremoës Niels Brock Logik Af Peter Harremoës Niels Brock December 2009 1 Indledning Disse noter om matematisk logik er en videreudbygning af det, som står i bogen MAT A [1]. Vi vil her gå lidt mere systematisk frem og være

Læs mere

Algoritmer og datastrukturer Course No. 02105 Cheat Sheet 2012. May 15, 2012

Algoritmer og datastrukturer Course No. 02105 Cheat Sheet 2012. May 15, 2012 Algoritmer og datastrukturer Course No. 02105 Cheat Sheet 2012 May 15, 2012 1 CONTENTS 2012 CONTENTS Contents 1 Kompleksitet 3 1.1 Køretid................................................ 3 1.2 Asymptotisk

Læs mere

Lineære sammenhænge. Udgave 2. 2009 Karsten Juul

Lineære sammenhænge. Udgave 2. 2009 Karsten Juul Lineære sammenhænge Udgave 2 y = 0,5x 2,5 2009 Karsten Juul Dette hæfte er en fortsættelse af hæftet "Variabelsammenhænge, 2. udgave 2009". Indhold 1. Lineære sammenhænge, ligning og graf... 1 2. Lineær

Læs mere