8 Specifikation med Logiske Udtryk.

Størrelse: px
Starte visningen fra side:

Download "8 Specifikation med Logiske Udtryk."

Transkript

1 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 Eiffel klasse i forhold til dens specifikation. Overgangen til fejlhåndtering. Notationen til specifikation af funktioner samt en del af eksemplerne i denne forelæsning er taget fra bogen Cliff B. Jones "Software Development -- A Rigorous Approach", Prentice Hall,

2 Specifikation i forhold til program. Hvad og ikke hvordan En specifikation af en abstrakt datatype udtrykker, hvad operationerne gør, snarere hvordan den gør det. Bevis af korrekthed En specifikation kan benyttes til at bevise, at en implementation af en abstrakt datatype er korrekt i forhold specifikationen. Check af korrekthed En specifikation kan benyttes til at checke en implementation af en abstrakt datatype under programudførelsen. Vi har i en tidligere forelæsning stiftet bektskab med den algebraiske specifikations-teknik. I denne forelæsning vil vi introducere en anden form for specifikationer, baseret på logiske udsagn tilknyttet en abstrakte datatype og dens operationer. Denne slide minder læseren om, at specifikationerne, som vil blive behandlet i denne forelæsning, har samme grundlægge egenskaber og formål som algebraiske specifikationer. Hvorfor indfører vi en ny specifikationsform, når vi allerede har brugt tid og kræfter på at forstå een sådan formalisme (algebraiske specifikationer)? 1. I forbindelse med praktisk, objekt-orienteret programmering ønsker vi at kunne tilknytte specifikationen tæt til selve programmet. Der er ofte for stor afstand mellem elementerne i en algebraisk specifikation af en ADT og implementationen af en klasse, der realiserer typen. Én årsag er, at operationer i en algebraisk specifikation er rene funktioner, mens operationer i klasser ofte har sideeffekter på den af klassen beskrevne tilstand. Specifikation af abstrakte datatyper med logiske udtryk kan således bringes tættere til elementerne i implementationen af typen. 2. Der findes nogle datatyper, som mest hensigtsmæssigt specificeres algebraisk; og omvt. Det betyder, at hvis vi har to forskellige specifikationsformer til vores rådighed, vil vi kunne vælge den mest hensigtsmæssige i en given situation. 110

3 Specifikation af ADT-er med funktioner. Type Navn Functions Funktions-specifikationer Pre- og postbetingelsessignaturer: pre-f: T1 x T2 x Tn -> Boolean post-f: T1 x T2 x Tn x R -> Boolean Specifikation af en funktion: f: T1 x T2 x Tn -> R pre-f(t1, t2,, tn) = boolsk udtryk post-f(t1, t2,, tn, r) = boolsk udtryk En prebetingelse udtrykker, om det er meningsfuldt at kalde funktionen med de givne parametre. En postbetingelse udtrykker, at funktionen returnerer et bestemt resultat, når denne kaldes med de givne parametre. Vi starter med at introducere specifikation af abstrakte datatyper, hvor alle operationer er funktioner, på samme måde som alle operationer i de algebraiske specifikationer, vi tidligere har set på, er funktioner. Dette betyder, at operationer på datatypen ikke ændrer i objekters tilstand. Hvis vi er igang med at specificere typen T, kan vi have en operation f: T -> T, hvor f(t) er at betragte som en modificeret kopi af det objekt, f blev anvt på. I en praktisk objekt-orienteret programmeringssammenhæng vil vi i stedet for udtrykke os med t.f; operationen f kaldes på objektet t, som er af typen T; f kan have en eller anden effekt på tilstanden af det objekt, t refererer til. Vi vil i denne forelæsning gradvis nærme os en situation, hvor vi kan bruge logiske udsagn til at specificere ADT-er i Eiffel. Dette omfatter også klasser, hvis instanser har tilstand, der muteres. 111

4 Eksempler på specifikation af funktioner. Subtraktion: sub: Int x Int -> Int pre-sub(x, y) = true post-sub(x, y, r) = ( x = y + r) Kvadratrod: Eksplicit specifikation sqrt: Real -> Real pre-sqrt(r) = (r 0) post-sqrt(r, s) = (s = r) Implicit specifikation sqrt: Real -> Real pre-sqrt(r) = (r 0) post-sqrt(r, s) = (s * s = r) Største fælles divisor: gcd: Nat x Nat -> Nat pre-gcd(x, y) = true post-gcd(x, y, r) = is-common-divisor (x, y, r) and ( e in Nat: ((e > r) and is-common-divisor(x, y, e)) ) I den eksplicitte specifikation af kvadratrodsfunktionen sqrt antager vi, at den matematiske kvadratrodsfunktion er kt og veldefineret. I den implicitte specifikation antager vi "kun", at vi ker mulitiplikationsoperationen Kvantorer i logiske udtryk tilføjer ekstra udtryksfuldhed i specifikationen. Opgave. I specifikationen af gcd er der benyttet en anden funktion is-common-divisor: Nat x Nat x Nat -> Boolean. Intuitivt ønsker vi, at is-common-divisor(x, y, r) udtrykker om r går op i både x og y. Specificer denne funktion. I specifikationen af is-commondivisor benyttes måske en ny funktion, som bør specificeres. Diskuter hvor langt man skal gå med specifikationen af sådanne funktioner. 112

5 Korrekthedsbevis af funktionsimplementation på basis af specifikation Specifikation af en funktion: f: T1 x T2 x Tn -> R pref-f(t1, t2,, tn) = post-f(t1, t2,, tn, r) = Implementation af funktionen f(p1: T1; p2: T2; pn: Tn): R is --declarations --body Relativ til implementation af f skal det vises at: t1 in T1, t2 in T2, tn in Tn: pre-f(t1, t2,, tn) => post(t1, t2,., tn, f(t1, t2, tn)) For at kunne bevise dette formelt kræves, at der er formuleret bevisregler for alle de typer af konstruktioner, der benyttes i kroppen af f. Formålet med denne slide er at gøre klart, hvad det vil sige at bevise korrektheden af implementationen af en funktion ud fra en specifikation af funktionen. Implikationen, som er kriteriet for, at funktionen er korrekt, udtrykker, at hvis prebetingelsen er sand så skal postbetingelsen være opfyldt på parametrene og det resultat, som funktions-implementationen returnerer. For at gennemføre et sådant bevis minutiøst og overbevise kræves, at man ker den præcise betydning af de kommaner og udtryk, der indgår i funktionsdefinitionen. På nuvære tidspunkt har vi ikke defineret semantikken af de enkelte Eiffel kommander på en formel matematisk måde. Derfor kan vi ikke for nærvære udføre beviser af korrektheden af en funktion. Vi ver imidlertid tilbage til bevisregler for udvalgte kommaner senere på kurset. Næste slide konkretiserer indholdet af denne slide i den situation, at vi vil vise, at en bestemt implementation af Fibonacci funktionen myfib er korrekt i forhold til specifikationen. 113

6 Eksempel på specifikation, implementation og krav til korrekthedsbevis for en funktion. Givet funktionen fib: fib(0) = 0 fib(1) = 1 fib(n) = fib(n-1) + fib(n-2), n 2 Specifikation af myfib: myfib: Nat0 -> Nat0 pre-myfib(n) = true post-myfib(n, r) = (r = fib(n)) Implementation af myfib myfib(n: integer): integer is local a: integer; b: integer; count: integer; br: integer from a := 1; b := 0; count := n; until count = 0 loop br := b; b:= a; a := a + br; count := count - 1 ; result := b ; -- myfib For at bevise, at implementationen af myfib er korrekt, skal man vise, at result = fib(n), når myfib terminerer. Specifikationen af myfib, og det vil i et og alt sige den rekursive defintion af fib, udgør grundlaget for et bevis for, at Eiffel implementationen af myfib er korrekt. Som omtalt har vi nu ikke introduceret bevisreglerne for assignment og loop kommanerne i Eiffel, så vi kan nu ikke bevise korrektheden af funktionen. I en senere forelæsning vil vi beskrive semantikken af udvalgte Eiffel kommaner. Vi vil ve tilbage til netop dette eksempel og gennemføre beviset for korrektheden af myfib i forhold til dens specifikation. Opgave: Find en variant og en invariant af løkken i funktionen myfib. Løsningen findes i noterne til sidste slide i denne forelæsning. (Det anbefales, at man prøver på at formulere varianten og invarianten, inden man kigger). 114

7 Assertions i Eiffelprogrammer. Et Eiffel program kan tilknytte en række logiske udtryk, som vi vil benævne assertions. Assertions udgør en programspecifikation. En specifikation udtrykker betingelserne for, at programmet er korrekt. Assertions udgør også højniveau kumentation af klasse i Eiffel understøttelse af lokalisering af årsagen til fejl (debugging) grundlaget for håndtering af undtagelsessituationer (exceptions). et redskab for definition af ansvarsfordeling mellem klasser. Denne slide udtrykker nogle overordnede kvaliteter ved anvelsen af assertions i et Eiffel program. 115

8 Pre- og postbetingelser og klasseinvarianter i Eiffel. class C feature op1() is require pre-op1 ensure post-op1 ; --op1 Formuleret Prebetingelse Formuleret Postbetingelse Eiffel assertions. op2() is require pre-op2 ensure post-op2 Formuleret Klasseinvariant invariant class-c-invariant ; --class C Vi går nu over til at studere specifikation af Eiffel programmer. Prebetingelserne ovenfor, såsom pre-op1, kaldes de formulerede prebetingelser. Den egentlige prebetingelse, som skal gælde for op1 dannes ud fra den formulerede prebetingelse og invarianten. Vi ver tilbage til dette senere i kapitlet. Ganske tilsvare forhold gælder for postbetingelserne. Vi taler altså også om den formulerede postbetingelse. Vi kalder invarianten, som angives nederst i en klasse-definition, for den formulerede klasseinvariant. 116

9 Klasseinvarianter i Eiffel. En klasseinvariant er et assertion, som udtrykker nogle generelle betingelser som alle objekter af klassen skal opfylde på bestemte tidspunkter i objeternes levetid. Hvornår skal invarianten være opfyldt: Efter instantiering og initialisering (efter udførelsen af Create). Efter (og før) udførelse af en eksporteret operation, som overholder sin pre-betingelse. Typisk brug af klasseinvarianter: En klasseinvariant udtrykker typisk betingelser for konsistens mellem attributværdier og funktionsværdier i en instans af klassen. Invarianten skal altså være opfyldt efter instantiering/initialisering samt efter hver ekstern operation på typen. Man kan spørge om dette implicerer, at invarianten er opfyldt før hver operation på typen. Dette er tilfældet i simple situationer. Der kan g laves invarianter, som kan ændres udefra, uden at der bliver kaldt en operation på typen. Det er tilfældet, hvis invarianten involverer udtryk, som kan påvirkes fra andre klasser i OOSC handler om dette. Vi vil derfor også kræve, at invarianten er opfyldt, inden en operation udføres. Invarianter kes også fra vores ikke-tekniske hverdag. Det er f.eks. en regel, at kanden på afdelingens kaffemaskiner altid skal indeholde mindst een krus kaffe. Alle transaktioner på kaffemaskinen skal overholde denne invariant. Bemærk at handlingerne, der beståer i at tømme kaffekanden samt at lave ny kaffe er at betragte som én transaktion i denne model. På et tidspunkt er kanden tom, men da dette tidspunkt ikke forekommer mellem to (eksterne) transaktioner på maskinen, bryder vi ikke invarianten. Ved forelæsningen vil vi se på en klasse 'Kunde', som indeholder navne og adresseattributter, og vi vil diskuterer forskellige konsistensforhold i objekter af denne klasse. 117

10 Eksempel på klasseinvariant. class BANK_ACCOUNT creation create feature balance, interest_rate : REAL; interest_rate: real; create(initial_amount: REAL) is transactions.create(100); balance := initial_amount; transactions.put(initial_amount) ; deposit(amount: real) is ; withdraw(amount: real) is ; add_interest(days: integer) is ; feature {NONE} transactions: TRANSACTION_HISTORY; add(amount: real) is transactions.put(amount); balance := balance + amount invariant balance = transactions.add_together; ; -- class BANK_ACCOUNT Eksemplet viser den velkte klasse BANK_ACCOUNT med en transaktionshistoie. Invarianten udtrykker en vigtig konsistensbetingelse mellem attributten balance og den lagrede transaktionshistorie. 118

11 Eksempel på klasseinvariant (fortsat). Class TRANSACTION_HISTORY creation create feature{none} history: ARRAY[TRANSACTION]; next_free, high_index: INTEGER; feature create(max: INTGER) is high_index := max; history.create(1,max); next_free := 1; ; put(amount: REAL) is require not full local tr: TRANSACTION tr.create(amount); history.put(tr, next_free); next_free := next_free + 1 ; get(i: integer): TRANSACTION is require i < next_free; i >= 1 result := history.item(i) ; full: BOOLEAN is result := next_free > high_index ; add_together: REAL is ; -- class TRANSACTION_HISTORY Denne slide viser en skitse af klassen TRANSACTION_HISTORY, som blev anvt i eksemplet på forrige side. 119

12 Kontrakt mellem en klasse og dens klienter. class supplier feature op_supplier() is require pre ensure post class client feature x: supplier op_client() is x.op_supplier() Nydelse: Jeg ved, at prebetingelsen er opfyldt Ydelse: Jeg skal opfylde postbetingelsen Ydelse: Jeg skal opfylde prebetingelsen Nydelse: Jeg ved, at postbetingelsen er opfyldt. På denne slide (og nedenfor) betegner prebetingelsen den effektive prebetingelse. Ditto med postbetingelsen. De effektive pre- og postbetingelser udgør en kontrakt mellem en klasse og dens klienter. En operation i klassen lover at opfylde post-betingelsen såfremt klienten kalder operationen med opfyldt prebetingelse. Kontrakten er udtryk for en klar ansvarsfordeling mellem klient og leverandøren. Det er klientens ansvar at undersøge, om prebetingelsen af supplier-operationen er opfyldt. Hvis dette ikke er tilfældet, bliver supplier-operationen ikke kaldt, og der opstår en fejlsituation i klienten. Det er således ikke nødvig i kroppen af en operation i leverandør-klassen at teste, om operationens pre-betingelse er opfyldt. Den skal være opfyldt. Hvis supplier-operationen ikke opfylder sin post-betingelse opstår der en fejlsituation i supplier klassen. Denne klare ansvarsfordeling, og deraf følge minimal, eksplicit programmet test af betingelser forud for udførelsen af en operation, står i skarp kontrast til en programmeringsteknik, som kaldes defensiv programmering. I defensiv programmering går man både med livrem og seler i den forstand, at man gerne udfører samme test (f.eks. af prebetingelsen) to forskellige steder i programmet, for at forhindre misforståelser om ansvarsfordelingen. I og med at opfyldelse af prebetingelsen er klientens ansvar, skal alle dele af en prebetingelse være tilgængelig for klienterne. Dette betyder, at der ikke må indgår hemmelige (private/usynlige) deltryk i en prebetingelse. Hvis der var dele af en prebetingelse, der var hemmelige, ville man kun vanskeligt kunne laste klienten, at en prebetingelse ikke kunne opfyldes (Klienten kunne sige: Det er meget godt, men jeg har ikke en chance for at ke til de detaljer, som prebetingelsen udtaler sig om ). I en postbetingelse må der derimod godt indgår private aspekter fra en klasse. Når postbetingelsen annonceres til klienter i kumentationsøjemed (af værktøjet short), ser man bort fra de dele af en postbetingelse, der indeholder private elementer. 120

13 Formen af assertions i Eiffel. Assertion: en konjunktion ( and then -ing) af enkelt-assertions. Enkelt-assertion: navngiven eller unavngiven assertion-klausul Assertion-klausul: Boolsk udtryk eller Uformel assertion. Eksempel: min_betingelse: i 0; max_betingelse: i < max; -- for alle i mellem 0 og max gælder p(i) Post-betingelser: Assertion som beskrevet ovenfor med følge udvidelser exp beregnet med hensyn til objektets old exp tilstand før kald af operationen. equal(strip (), old strip ()) Sand hvis og kun hvis objektets tilstand er uforandret ift. før kaldet. I eksemplet midt på denne slide vises der en konjunktion af tre enkelt-assertions, hvoraf de to første er navngivne, og det sidste er uformelt angivet (som en kommentar: -- ). Navnene på del-assertions er uden betydning for det samlede assertion, og de har ingen betydning for semantikken af programmet. Navnene tjener til fornuftig kommunikation mellem køretidssystemet (når det opdager en fejl under programudførelse) og testkøreren. Assertions der består af kommentarer spiller udelukke en rolle som kumentation. Bemærk at old expr kun må forekomme i en postbetingelse. Det noget mystiske udtryk equal(strip(), old strip()) anver et primitiv strip(a, b, ) som vi nu ikke har set på. Kort fortalt returnerer det et array af alle felter i det nuvære objekt, pånær felterne med navnene a, b, etc. Specielt returnerer strip() et array af alle felter (i en eller anden bestemt rækkefølge) af det nuvære objekt. Ovenståe udtryk siger dermed, at objektets tilstand er uforandret af den operation, hvoraf vi nu studerer postbetingelsen. Strip er et generelt tilgængelig primitv, som g klart snævert er designet mod ovenståe anvelse. Strip er beskrevet i afsnit og 9.10 af Eiffel the Language. 121

14 Specifikation af klasser i Eiffel. Sammrag Prebetingeler, postbetingelser og invarianter. Eiffel understøtter pre- og postbetingelser på operationer samt invarianter i klasser. Mutation af programtilstand. Nogle operationer i en ADT i Eiffel muterer (ændrer) tilstanden af programmet. Ikke alle operationer er funktioner. Check af assertions. Assertions i Eiffel skal kunne verificeres under programudførelsen, uden massiv påvirkning af udførelsestiden af programmet. Dette udelukker udsagn med eksistens- og alkvantorer. Uformelle assertions. Pre- og postbetingelser er ikke nødvigvis formelle. Man kan skrive uformelle pre- og postbetingelser, som naturligvis ikke kan verificeres under programudførelse. 122

15 Korrekthedskriterium for Eiffel-klasser. class C creation create feature create() is require pre-create krop-create ; --create op() is require pre-op krop-op ensure post-op invariant INV ; --class C {pre-create } krop-create {INV} For alle eksporterede operationer: {INV and pre-op } krop-op {INV and post-op} Korrekthedskriteriet udtrykker betingelserne for, at implementationen af klassen opfylder den givne specifikation. Notationen {assertion1} kommaner {assertion2} er en såkaldt Hoare-sætning, som udtrykker: Hvis assertion1 er opfyldt før udførelsen af kommaner, og hvis kommaner terminerer, da skal assertion2 være opfyldt efter udførelsen af kommaner. I forbindelse med programbeviser i del 2 af noterne vil vi stifte nærmere bektskab med denne notation. Korrekthedskriteriet for Create læses: Hvis Create's prebetingelse er opfyldt, så skal klasseinvarianten INV være opfyldt, efter at kroppen af Create er udført. Man kunne godt vælge at styrk prebetingelsen med et udsagn der udtrykker default initialiseringen af felter, som foretages af Eiffel. Man kunne også godt vælge at medtage en eksplict postbetingele af creation proceduren, som dermed ville kunne styrke INV. Tilsvare for korrekthedskriteriet for andre operationer Create: Hvis invarianten og prebetingelsen er opfyldt inden udførelsen af operationen, da skal postbetingelsen og invarianten være opfyldt efter udførelse af operationen. Konjunktionerne af de formulerede pre/postbetingelser og klasseinvarianten udgør det vi kalder de effektive pre/postbetingelser. (ne fortsættes på flg. sides noteark). 123

16 Hvis assertions ikke overholdes Hvis en assertion brydes: Programmet kommer i en undtagelsestilstand. Programmet får chancen for at håndtere tilstanden: Undtagelsestilstanden afblæses, og programmet fortsætter eller Programmet terminerer, og undtagelsessituationen beskrives. Det er relevant at spørge, om invarianten skal checkes i følge situation: class C feature op1() is ; op2(); ; op2() is invariant INV ; --class C Løsning til opgave Løsning til opgave på slide: "Eksempel på specifikation, implementation og krav til korrekthedsbevis for en funktion": Varianten kan være count, idet denne variabel tælles ned for hvert gennemløb, og den bliver aldrig negativ. Invarianten kan være a = fib(n - count + 1); b = fib(n - count); count 0; count Š n Vi antager at op1 kaldes fra en klient af klassen C. Spørgsmålet er hvorvidt invarianten skal checkes når op1 kalder op2 på current object. Det fremgår, at når op2 kaldes fra op1 kan op2 opfattes som en intern operation, som sammen med de øvrige handlinger i op1 skal tilfredsstille invarianten; det er ikke nødvigt at op2 i denne situation selv tilfredsstiller invarianten. Det er ikke let at finde nogen kumentation af denne situation i Eiffel manualerne, og man kan blive i tvivl om præcist hvornår invarianten skal checkes. En testkørsel afslører, at vores installation ikke checker invarianten, når op2 kaldes fra op1 (Eiffel 2.3 resultat). Bemærk, at invarianten er opfyldt før udførelsen af løkken, idet count her har værdien n, a er 1, b er 0, samt fib(1) = 1 og fib(0) = 0, jf. definitionen af fib. Bemærk også, at ved termineringen af løkken er count = 0, hvilket vil sige, at b = fib(n). Sidstnævnte er i alt væsentlighed postbetingelsen af myfib. 124

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

Årsagen til fejl. Erkendelse af fejl. Håndtering af fejl.

Årsagen til fejl. Erkendelse af fejl. Håndtering af fejl. 9 Fejlhåndtering Årsagen til fejl Erkelse af fejl Håndtering af fejl Fejlerkelse og -håndtering i objekt-orienterede sprog Fejlerkelse og -håndtering i Eiffel Udbredelse af fejl i Eiffel Nuanceret fejlhåndtering

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

3 Algebraisk Specifikation af Abstrakte Datatyper.

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

Læs mere

14 Algoritmeanalyse. Noter. Algoritmebegrebet. Hvad er algoritmeanalyse? Problemstørrelse og køretid. Køretid for forskellige kontrolstrukturer.

14 Algoritmeanalyse. Noter. Algoritmebegrebet. Hvad er algoritmeanalyse? Problemstørrelse og køretid. Køretid for forskellige kontrolstrukturer. 14 Algoritmeanalyse. Algoritmebegrebet. Hvad er algoritmeanalyse? Problemstørrelse og køretid. O og Ω. Køretid for forskellige kontrolstrukturer. Eksempler på algoritmeanalyse. Eksponentiel og polynomiel

Læs mere

22 Hobe. Noter. PS1 -- Hobe. Binære hobe. Minimum-hob og maximum-hob. Den abstrakte datatype minimum-hob. Opbygning af hobe. Operationen siv-ned.

22 Hobe. Noter. PS1 -- Hobe. Binære hobe. Minimum-hob og maximum-hob. Den abstrakte datatype minimum-hob. Opbygning af hobe. Operationen siv-ned. 22 Hobe. Binære hobe. Minimum-hob og maximum-hob. Den abstrakte datatype minimum-hob. Opbygning af hobe. Operationen siv-ned. Indsættelse i hobe. Sletning af minimalt element i hobe. Repræsentation. 327

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

Rename og redefine. Abstrakte klasser. Dynamisk binding.

Rename og redefine. Abstrakte klasser. Dynamisk binding. 11 Nedarvning II. Enkeltnedarvning i Eiffel. Rename og redefine. Initialisering af superklasse-dele af et objekt. Interfaces til klienter og subklasser. Typesammenlignelighed og polymorfi. Abstrakte klasser.

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

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

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

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

13 Objekt-orienteret Design.

13 Objekt-orienteret Design. 13 Objekt-orienteret Design. Analyse i forhold til design. Programbeskrivelse og designbeskrivelse. Sømløs udvikling. Design i forhold til OO Eiffel programmering. Kategorisering af klasser i et design.

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

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

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

30 Objekt-orienteret Programmering i Andre Sprog.

30 Objekt-orienteret Programmering i Andre Sprog. 30 Objekt-orienteret Programmering i Andre Sprog. Abstrakte datatyper i Pascal. Abstrakte datatyper i Modula og Ada. C++ Overordnet organisering Instantiering og initialisering. Interfaces. Nedarvning.

Læs mere

12 Nedarvning III. Noter. Multipel nedarvning. Nedarvning og assertions. PS1 -- Nedarvning III. Kurt Nørmark, Aalborg Universitet, 1994.

12 Nedarvning III. Noter. Multipel nedarvning. Nedarvning og assertions. PS1 -- Nedarvning III. Kurt Nørmark, Aalborg Universitet, 1994. 12 Nedarvning III. Multipel nedarvning. Nedarvning og assertions. 169 Multipel nedarvning. A C Klassen C arver egenskaberne fra både A og. A og egenskaber er umiddelbart tilgængelige i C. x A C x x er

Læs mere

Kontraktbaseret Design. Anker Mørk Thomsen

Kontraktbaseret Design. Anker Mørk Thomsen Kontraktbaseret Design Anker Mørk Thomsen 5. marts 2014 -2 Kontraktbaseret Design Anker Mørk Thomsen 1. udgave ISBN: 9788740491500 Forord Bogen er blevet til gennem undervisning i faget Kontraktbaseret

Læs mere

Elementær Matematik. Mængder og udsagn

Elementær Matematik. Mængder og udsagn Elementær Matematik Mængder og udsagn Ole Witt-Hansen 2011 Indhold 1. Mængder...1 1.1 Intervaller...4 2. Matematisk Logik. Udsagnslogik...5 3. Åbne udsagn...9 Mængder og Udsagn 1 1. Mængder En mængde er

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

5 Basal Objekt-orienteret Programmering II.

5 Basal Objekt-orienteret Programmering II. 5 Basal Objekt-orienteret Programmering II. Historik og sprogoversigt. Programbeskrivelse kontra programudførelse. Referencer og værdier. Skabelse af objekter i Eiffel. Features og deres klassificering

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

Martin Olsen. DM507 Projekt Del I. 19. marts 2012 FOTO: Colourbox

Martin Olsen. DM507 Projekt Del I. 19. marts 2012 FOTO: Colourbox Martin Olsen DM0 Projekt 0 Del I. marts 0 FOTO: Colourbox Indhold Indledning... Opgave... Opgave... Opgave... Opgave... Opgave... Opgave... Opgave... Kildekode til SimpleInv.java... Kildekode til MergeSort.java...

Læs mere

Forelæsning Uge 4 Mandag

Forelæsning Uge 4 Mandag Forelæsning Uge 4 Mandag Algoritmeskabeloner findone, findall, findnoof, findsumof Primitive typer (forfremmelse og begrænsning) Identitet versus lighed (for objekter, herunder strenge) Opfølgning på Skildpadde

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

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

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

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

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

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

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

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

DM507 Algoritmer og datastrukturer

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

Læs mere

Software Construction 1 semester (SWC) Spørgsmål 1

Software Construction 1 semester (SWC) Spørgsmål 1 Spørgsmål 1 Objekter #1 Giv en kort præsentation af begrebet objekt, samt hvorledes du erklærer(declare), opretter(create) og bruger objekter Du kan beskrive o Datatyper o Variable / Instans variable /

Læs mere

Sortering. Eksempel: De n tal i sorteret orden

Sortering. Eksempel: De n tal i sorteret orden Sortering 1 / 34 Sortering Input: Output: Eksempel: n tal De n tal i sorteret orden 6, 2, 9, 4, 5, 1, 4, 3 1, 2, 3, 4, 4, 5, 9 2 / 34 Sortering Input: Output: Eksempel: n tal De n tal i sorteret orden

Læs mere

Brug og Misbrug af logiske tegn

Brug og Misbrug af logiske tegn Brug og Misbrug af logiske tegn Frank Nasser 20. april 2011 c 2008-2011. Dette dokument må kun anvendes til undervisning i klasser som abonnerer på MatBog.dk. Se yderligere betingelser for brug her. Bemærk:

Læs mere

Databasesystemer. Databaser, efterår Troels Andreasen. Efterår 2002

Databasesystemer. Databaser, efterår Troels Andreasen. Efterår 2002 Databaser, efterår 2002 Databasesystemer 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

DM507 Algoritmer og datastrukturer

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

Læs mere

Exceptions i Delphi. Try except

Exceptions i Delphi. Try except Exceptions i Delphi Exceptions er en teknik til at fange fejl under programafviklingen. Ikke programmeringsfejl, men fejl der opstår i forskellige situationer, f.eks. en fil der mangler en fil der er skrivebeskyttet,

Læs mere

Sortering af information er en fundamental og central opgave.

Sortering af information er en fundamental og central opgave. Sortering Sortering Input: Output: Eksempel: n tal De n tal i sorteret orden 6, 2, 9, 4, 5, 1, 4, 3 1, 2, 3, 4, 4, 5, 9 Mange opgaver er hurtigere i sorteret information (tænk på ordbøger, telefonbøger,

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

Å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

Sortering. Eksempel: De n tal i sorteret orden

Sortering. Eksempel: De n tal i sorteret orden Sortering 1 / 32 Sortering Input: Output: Eksempel: n tal De n tal i sorteret orden 6, 2, 9, 4, 5, 1, 4, 3 1, 2, 3, 4, 4, 5, 9 2 / 32 Sortering Input: Output: Eksempel: n tal De n tal i sorteret orden

Læs mere

class Time { int hours, min; } } Time t1; // Erklær variabel af type Time class Time1 { public static void main(string[] args) { Time t1; t1.

class Time { int hours, min; } } Time t1; // Erklær variabel af type Time class Time1 { public static void main(string[] args) { Time t1; t1. Programmering 1999 Forelæsning 4, fredag 10. september 1999 Klasser og objekter Felter, konstruktorer, this Eksempler på klasser: Time, Appointment Eksempler på metoder i Time og Appointment Klassefelter:

Læs mere

1 Grundbegreber. Noter. Stilarter i programmering og sprog. Syntaks og semantik. Datatyper. Kontrolstrukturer. Udtryk. Abstraktioner.

1 Grundbegreber. Noter. Stilarter i programmering og sprog. Syntaks og semantik. Datatyper. Kontrolstrukturer. Udtryk. Abstraktioner. 1 Grundbegreber. Stilarter i programmering og sprog. Syntaks og semantik. Datatyper. Kontrolstrukturer. Udtryk. Abstraktioner. Parametermekanismer. Blokke og navnebindinger. Scope og scoperegler. 3 Parallelle

Læs mere

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen (bemærk at log n betegner totals logaritmen): n 2 (log n) 2 2.

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen (bemærk at log n betegner totals logaritmen): n 2 (log n) 2 2. Eksamen august Algoritmer og Datastrukturer (-ordning) Side af sider Opgave (%) n + n er O(n )? n / er O(n / )? n er O(n log n)? n er O((log n) )? n er Ω(n )? Ja Nej Opgave (%) Opskriv følgende funktioner

Læs mere

P (n): rekursiv beregning af f n kræver f n beregninger af f 1. P (n) er sand for alle n 2.

P (n): rekursiv beregning af f n kræver f n beregninger af f 1. P (n) er sand for alle n 2. P (n): rekursiv beregning af f n kræver f n beregninger af f 1. P (n) er sand for alle n 2. Bevis ved stærk induktion. Basisskridt: P (2) er sand og P (3) er sand. Induktionsskridt: Lad k 2 og antag P

Læs mere

Matematiske metoder - Opgavesæt

Matematiske metoder - Opgavesæt Matematiske metoder - Opgavesæt Anders Friis, Anne Ryelund, Mads Friis, Signe Baggesen 24. maj 208 Beskrivelse af opgavesættet I dette opgavesæt vil du støde på opgaver, der er markeret med enten 0, eller

Læs mere

Listen over reserverede ord er meget lang, men de væsentligste vil jeg beskrive her i denne artikel:

Listen over reserverede ord er meget lang, men de væsentligste vil jeg beskrive her i denne artikel: Denne guide er oprindeligt udgivet på Eksperten.dk SQL og ASP En artikel omkring simpel SQL og hvordan disse opbygges, udformes og udføres, sådan at man kan få et brugbart resultat i ASP. Dette ligefra

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

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

Skriftlig Eksamen Algoritmer og Datastrukturer (dads) Skriftlig Eksamen Algoritmer og Datastrukturer (dads) Datalogisk Institut Aarhus Universitet Mandag den 27. maj 2002, kl. 9.00 13.00 Opgave 1 (25%) Denne opgave handler om multiplikation af positive heltal.

Læs mere

Forelæsning Uge 4 Torsdag

Forelæsning Uge 4 Torsdag Forelæsning Uge 4 Torsdag Algoritmeskabeloner findone, findall, findnoof, findsumof (sidste mandag) findbest Levetid for variabler og parametre Virkefeltsregler Hvor kan man bruge de forskellige variabler?

Læs mere

Studieordning for diplomuddannelsen i informationsteknologi

Studieordning for diplomuddannelsen i informationsteknologi Studieordning for diplomuddannelsen i informationsteknologi April 2007 [v3] 1 Introduktion... 2 2 Formål... 2 3 Indhold... 2 4 Adgangskrav... 3 5 Eksaminer... 3 6 Studieplan... 3 6.1 Formelle modeller

Læs mere

Sortering af information er en fundamental og central opgave.

Sortering af information er en fundamental og central opgave. Sortering 1 / 36 Sortering Input: Output: Eksempel: n tal De n tal i sorteret orden 6, 2, 9, 4, 5, 1, 4, 3 1, 2, 3, 4, 4, 5, 6, 9 Mange opgaver er hurtigere i sorteret information (tænk på ordbøger, telefonbøger,

Læs mere

OBS! Prøveeksamen med syntaks på tirsdag! Kursusgang 8

OBS! Prøveeksamen med syntaks på tirsdag! Kursusgang 8 Kursusgang 8 OBS! Prøveeksamen med syntaks på tirsdag! Kursusgang 8 Matematik Arkæologi Eksempel Semantik Bims (Basic Imperative Statements / Begrænset Imperativt Sprog) Abstrakt syntaks Transitionssystemer

Læs mere

Sortering. De n tal i sorteret orden. Eksempel: Kommentarer:

Sortering. De n tal i sorteret orden. Eksempel: Kommentarer: Sortering Sortering Input: Output: n tal De n tal i sorteret orden Eksempel: Kommentarer: 6, 2, 9, 4, 5, 1, 4, 3 1, 2, 3, 4, 4, 5, 9 Sorteret orden kan være stigende eller faldende. Vi vil i dette kursus

Læs mere

Ugeseddel 4 1. marts - 8. marts

Ugeseddel 4 1. marts - 8. marts Ugeseddel 4 1. marts - 8. marts Læs følgende sider i kapitel 6 i lærebogen: s. 233 258 og s. 291 317 (afsnit 6.3 overspringes). Begynd at overveje, hvad afleveringsopgaven skal omhandle. Læs vejledningen,

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2013 Projekt, del I Institut for matematik og datalogi Syddansk Universitet 5. marts, 2013 Dette projekt udleveres i to dele. Hver del har sin deadline, således

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

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

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

It og informationssøgning Forelæsning oktober 2006 Jakob Grue Simonsen. Klasser

It og informationssøgning Forelæsning oktober 2006 Jakob Grue Simonsen. Klasser It og informationssøgning Forelæsning 7 25. oktober 2006 Jakob Grue Simonsen Klasser Downey, Elkner & Meyers: Chapt. 12-14 Andersen & Simonsen: kap. 7 Vi har tidligere set, at Python tilbyder en række

Læs mere

Algoritmedesign med internetanvendelser ved Keld Helsgaun

Algoritmedesign med internetanvendelser ved Keld Helsgaun Algoritmedesign med internetanvendelser ved Keld Helsgaun 1 Analyse af algoritmer Input Algoritme Output En algoritme er en trinvis metode til løsning af et problem i endelig tid 2 Algoritmebegrebet D.

Læs mere

Rekursion og dynamisk programmering

Rekursion og dynamisk programmering Rekursion og dynamisk programmering Datastrukturer & Algoritmer, Dat C Forelæsning 12/10-2004 Henning Christiansen Rekursion: at en procedure kalder sig selv eller et antal metoder kalder hinanden gensidigt.

Læs mere

Objektorienteret design med arv og polymorfi:

Objektorienteret design med arv og polymorfi: Note til Programmeringsteknologi Akademiuddannelsen i Informationsteknologi Objektorienteret design med arv og polymorfi: Substitutionsprincippet Composite Design Pattern Finn Nordbjerg Side 1 Objektorienteret

Læs mere

Assignment #5 Toolbox Contract

Assignment #5 Toolbox Contract Assignment #5 Toolbox Contract Created by: René Kragh Trine Randløv E mail address cph rk70@cphbusiness.dk 23 11 2014 1 Introduktion Dette dokument indeholder en vertikal kontrakt for et system som skal

Læs mere

Algoritmer og Datastrukturer 1. Gerth Stølting Brodal Aarhus Universitet

Algoritmer og Datastrukturer 1. Gerth Stølting Brodal Aarhus Universitet Algoritmer og Datastrukturer 1 Gerth Stølting Brodal Aarhus Universitet Kursusbeskrivelsen Kursusbeskrivelsen: Algoritmer og datastrukturer 1 Formål Deltagerne vil efter kurset have indsigt i algoritmer

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

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer Skriftlig Eksamen DM507 Algoritmer og Datastrukturer Institut for Matematik og Datalogi Syddansk Universitet, Odense Mandag den 6. juni 2016, kl. 15:00 19:00 Besvarelsen skal afleveres elektronisk. Se

Læs mere

Forelæsning Uge 4 Torsdag

Forelæsning Uge 4 Torsdag Forelæsning Uge 4 Torsdag Algoritmeskabeloner findone, findall, findnoof, findsumof (i mandags) findbest Levetid for variabler og parametre Virkefeltsregler Hvor kan man bruge de forskellige variabler?

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

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

Sproget Rascal (v. 2)

Sproget Rascal (v. 2) Sproget Rascal (v. 2) Til brug i K1 på kurset Oversættere Opdateret 29/11 2004 Abstract Rascal er et simpelt Pascal-lignende imperativt sprog. Dette dokument beskriver uformelt Rascals syntaks og semantik

Læs mere

Introduktion til Funktionsorienteret Programmering.

Introduktion til Funktionsorienteret Programmering. 1 Introduktion til Funktionsorienteret Programmering. Dynamiske sprog og omgivelser. Applikativ og funktionsorienteret programmering. Eksempler på funktionsorienteret programmering. Uafhængighed af evalueringsrækkefølge.

Læs mere

DM517:Supplerende noter om uafgørlighedsbeviser:

DM517:Supplerende noter om uafgørlighedsbeviser: DM517:Supplerende noter om uafgørlighedsbeviser: Jørgen Bang-Jensen October 9, 2013 Abstract Formålet med denne note er at give en form for kogebogsopskrift på, hvorledes man bygger et uafgørlighedsbevis

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

Sammenhængskomponenter i grafer

Sammenhængskomponenter i grafer Sammenhængskomponenter i grafer Ækvivalensrelationer Repetition: En relation R på en mængde S er en delmængde af S S. Når (x, y) R siges x at stå i relation til y. Ofte skrives x y, og relationen selv

Læs mere

AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007

AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007 AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007 Opgavebesvarelsen skal afleveres som enten en printerudskrift eller som et passende dokument sendt via email til fjj@noea.dk. Besvarelsen skal

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

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

[FUNKTIONER] Hvornår kan vi kalde en sammenhæng en funktion, og hvilke egenskaber har disse i givet fald. Vers. 2.0

[FUNKTIONER] Hvornår kan vi kalde en sammenhæng en funktion, og hvilke egenskaber har disse i givet fald. Vers. 2.0 MaB Sct. Knud Gymnasium, Henrik S. Hansen % [FUNKTIONER] Hvornår kan vi kalde en sammenhæng en funktion, og hvilke egenskaber har disse i givet fald. Vers..0 Indhold Funktioner... Entydighed... Injektiv...

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

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2016 Projekt, del I Institut for matematik og datalogi Syddansk Universitet 29. februar, 2016 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

Lær Python dag 1 - modul 1

Lær Python dag 1 - modul 1 Lær Python dag 1 - modul 1 Introduktion, basis python Steffen Berg Klenow Jonas Bamse Andersen Syddansk Universitet Indhold 1. Velkommen 2. Programmering i python 3. Typer, variabler og udtryk 1 Velkommen

Læs mere

Skriftlig eksamen, Programmer som Data Onsdag 6. januar Spørgsmål 1 (20 %): Regulære udtryk og automater

Skriftlig eksamen, Programmer som Data Onsdag 6. januar Spørgsmål 1 (20 %): Regulære udtryk og automater Skriftlig eksamen, Programmer som Data Onsdag 6. januar 2010 Dette eksamenssæt har 5 sider. Tjek med det samme at du har alle siderne. Eksamens varighed er 4 timer. Der er fire spørgmål. For at få fuldt

Læs mere

16. marts P NP. Essentielle spørgsmål: NP P? Et problem Q kaldes NP -fuldstændigt 1 Q NP 2 R NP : R pol Q. Resume sidste gang

16. marts P NP. Essentielle spørgsmål: NP P? Et problem Q kaldes NP -fuldstændigt 1 Q NP 2 R NP : R pol Q. Resume sidste gang 16. marts 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 svaret

Læs mere

Grafer og graf-gennemløb

Grafer og graf-gennemløb Grafer og graf-gennemløb Grafer En mængde V af knuder (vertices). En mængde E V V af kanter (edges). Dvs. ordnede par af knuder. Grafer En mængde V af knuder (vertices). En mængde E V V af kanter (edges).

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

Algoritmer og Datastrukturer 1. Gerth Stølting Brodal

Algoritmer og Datastrukturer 1. Gerth Stølting Brodal Algoritmer og Datastrukturer 1 Gerth Stølting Brodal Kursusbeskrivelsen Kursusbeskrivelsen: Algoritmer og datastrukturer 1 Formål Deltagerne vil efter kurset have indsigt i algoritmer som model for sekventielle

Læs mere

Forelæsning Uge 2 Mandag

Forelæsning Uge 2 Mandag Forelæsning Uge 2 Mandag Sætninger Simple sætninger (assignment, interne og eksterne metodekald) Sammensatte sætninger (blok, selektion, gentagelse) Udtryk og operatorer Java syntax og style guide Afleveringsopgave:

Læs mere

Algoritmer og Datastrukturer 1. Gerth Stølting Brodal

Algoritmer og Datastrukturer 1. Gerth Stølting Brodal Algoritmer og Datastrukturer 1 Gerth Stølting Brodal Kursusbeskrivelsen Kursusbeskrivelsen: Algoritmer og datastrukturer 1 Formål Deltagerne vil efter kurset have indsigt i algoritmer som model for sekventielle

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

Klasser og Objekter i Python. Uge 46 Learning Python: kap 15-16, 19-22.

Klasser og Objekter i Python. Uge 46 Learning Python: kap 15-16, 19-22. Klasser og Objekter i Python Uge 46 Learning Python: kap 15-16, 19-22. Klasser og objekter En klasse beskriver en klump af samhørende funktioner og variable En klasse er en beskrivelse. En kage form Klassens

Læs mere

Kontrol-strukturer i PHP

Kontrol-strukturer i PHP Denne guide er oprindeligt udgivet på Eksperten.dk Kontrol-strukturer i PHP Denne artikel gennemgår kontrolstrukturer i PHP. 'if', 'switch', 'while' og 'for' bliver gennemgået. Den forudsætter lidt grundlæggende

Læs mere

16/04/12 50% 50% Waveform Chart Waveform Graph XY Graph Indicator Graph 33% 17% 88% 13%

16/04/12 50% 50% Waveform Chart Waveform Graph XY Graph Indicator Graph 33% 17% 88% 13% Samuel Alberg Thrysøe, PhD, PostDoc, Kontakt info: Email: sat@iha.dk, Tlf: +45 25533552 2 4. 5 Waveform Chart Waveform Graph XY Graph Indicator Graph 4. 33% Waveform Chart Waveform Graph XY Graph Indicator

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

Grafer og graf-gennemløb

Grafer og graf-gennemløb Grafer og graf-gennemløb Grafer En mængde V af knuder (vertices). En mængde E V V af kanter (edges). Dvs. ordnede par af knuder. Grafer En mængde V af knuder (vertices). En mængde E V V af kanter (edges).

Læs mere

Grafer og graf-gennemløb

Grafer og graf-gennemløb Grafer og graf-gennemløb Grafer En mængde V af knuder (vertices). En mængde E V V af kanter (edges). Dvs. ordnede par af knuder. Grafer En mængde V af knuder (vertices). En mængde E V V af kanter (edges).

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 (tolv) Eksamensdag: Fredag den 7. august 009, kl.

Læs mere