Kontraktbaseret Programmering Anker Mørk Thomsen 1. udgave ISBN:

Størrelse: px
Starte visningen fra side:

Download "Kontraktbaseret Programmering Anker Mørk Thomsen 1. udgave ISBN: 978-87-40-41315-1"

Transkript

1 -1 Kontraktbaseret Programmering Anker Mørk Thomsen 1. udgave ISBN:

2 Forord Denne bog er blevet til gennem undervisning i faget Kontraktbaseret Udvikling på bacheloruddannelsen i Softwareudvikling. Emnet har jeg opdelt i to dele. Den første del omfatter konstruktion og udvikling af algoritmer ved at anvende formelle metoder. Denne første del indeholder også diskret matematik, som danner grundlag for at kunne arbejde med de formelle metoder. Bog 1 indeholder pensum for den første del af faget, som kaldes Kontraktbaseret Programmering. Bog 2 Kontraktbaseret Design omhandler design af programmodulerne i et objektorienteret sprog. Januar 2014 Anker Mørk Thomsen 0

3 Indhold I Matematik 9 1 Matematisk argumentation Deduktive argumentationsformer Modus Ponens Modus Tollens Den hypotetiske syllogisme Den disjunktive syllogisme Reductio ad Absurdum Afslutningsvis om argumentation Notation Det direkte bevis Det indirekte bevis Bevis ved modstrid (Proof by contradiction) Bevis ved at opdele i flere tilfælde Simpel Induktion Øvelser Stærk Induktion Strukturel induktion Beviser med fejl Simple og vanskelige påstande Spilteori Øvelser I

4 INDHOLD II 2 Mængder og logik At definere mængder ved hjælp af egenskaber Mængdeoperationer boolsk algebra Boolsk Algebra Kardinalitet Relationer Relationelle databaser Binære relationer Ordningsrelationer Funktioner Venn-diagrammer Øvelser Udsagnslogik Øvelser Boolske operatorer Boolske udtryk Øvelser Regneregler for de boolske operatorer Øvelser Prædikatlogik Øvelser Tilfredsstillelsesmængden Øvelser Kvantificerede udtryk Kvantorer Øvelser Regneregler for kvantificerede udtryk Et-punkts-reglen Sammensætte og adskille termer Sammensætte og adskille rangen Distribution

5 INDHOLD III Den tomme rang Konstant term Øvelser Associativitet Associative operatorer Venstre-associative operatorer Højre-associative operatorer De logiske kvantorer Alkvantoren Eksistenskvantoren Øvelser Mere om prædikater og kvantificerede udtryk II Programkonstruktion 67 5 Imperative Programmer og Programtilstande Lidt om Java Variabler i Java Værdier og referencer Lidt om udførelse af Java-programmer Programtilstande Øvelser Korrekthed Øvelser Hvad er programmering? Specifikationer Øvelser Programnotation Programmeringssprogets kommandoer skip abort Sekvens af kommandoer

6 INDHOLD IV Tilordningskommandoen Selection eller alternativer, IF Iteration eller gentagelse, DO Non-determinisme Klasser og interface-moduler Funktioner Procedurer Eksempler Udvalgssortering Beregning af de første n Fibonacci-tal Øvelser Prædikattransformeren WP Korrekthed Semantik Prædikattransformeren wp Prædikattransformeren wp s egenskaber Øvelser Programmeringssprogets semantik - skip, abort og tilordning Sætningen skip Sætningen abort Tilordningssætningen Øvelser Semantik: Array-variabler Øvelser Programmeringssprogets semantik: Sekvens Programmeringssprogets semantik: IF-sætningen Øvelser Programmeringssprogets semantik: DO-sætningen Kaffekandeproblemet DO-sætningens semantik Øvelser Checklisten for løkker Øvelser

7 INDHOLD V 8 Udvikling af programmer uden løkker At beregne udtryk i tilordningssætninger Øvelser Udvikling af IF-sætninger Øvelser Konstruktion af løkker Konstruktion af løkker Metoden Opsummering af metoden Effektivisering Øvelser At slette en konjunkt Slette en konjunkt Heltalsdivision Beregne heltalsdelen af n Ubegrænset lineær søgning Anvendelser af ubegrænset lineær søgning Sortering af tre værdier Konstruktion af invariant og variant Løkken Begrænset lineær søgning Øvelser Erstatte en konstant med en variabel Erstatte konstanter med variabler Øvelser Beregne heltalsdelen af n Binær søgning generelt Anvendelser af binær søgning Den mest brugte anvendelse af binær søgning Beregne heltalsdelen af n Øvelser Begrænset lineær søgning (igen)

8 INDHOLD VI 12 At forøge en variabels virkefelt At forøge en variabels virkefelt Den sociale bedrager Øvelser A Løsninger til udvalgte øvelser 182

9 Introduktion En kravspecifikation er en aftale mellem systemudvikleren og aftageren. Kravspecifikationen beskriver de egenskaber, der kræves af det færdige produkt. Til brug for skrivning af kravspecifikationer anvendes mange forskellige beskrivelsesværktøjer, hvoraf nogle er formelle og andre er uformelle, dvs. baseret på figurer, tegninger, eksempler, benchmarks og tekstlig beskrivelse. De formelle specifikationer kan være formuleret i diagrammer eller formelle sprog. I praksis anvendes en blanding af de forskellige beskrivelsesformer. Se Søren Lauesen: Software Requirements. Styles and Techniques Lauesen [2000], som indeholder en udførlig beskrivelse af metoder og teknikker til at danne kravspecifikationer i samarbejde med brugere. Bogen indeholder desuden en række gennemarbejdede eksempler. Se også hjemmesiden Søren Lauesen. En kravspecifikation er i denne sammenhæng en aftale mellem systemudvikleren og slutbrugeren. I Kontraktbaseret Udvikling fokuserer vi på aftaler mellem systemudviklere, hvor den ene er klient og den anden aftager. Den samme systemudvikler eller programmør kan have begge roller. Kontrakterne er i Kontraktbaseret Udvikling aftaler om programmodulers funktionelle egenskaber. Lad os antage, at en programmør skal udvikle et programmodul, og at hun har tænkt sig at anvende et modul, som andre har skrevet. Det modul, der skal anvendes kalder vi en server. Det modul, som skal udvikles, kalder vi en klient. I kontraktbaseret udvikling udstyrer vi serveren med en specifikation, der beskriver, i hvilke procestilstande programmøren må anvende modulet. Programmøren, der skal udvikle klienten, skal altså sikre sig, at procedurer og funktioner i serveren kun kaldes i de programtilstande, som er anført i kravspecifikationen som gyldige tilstande. Under forudsætning af, at serveren anvendes korrekt, så skal specifikationen beskrive serverens funktion. Specifikationen skal altså beskrive serverens virkning. Vi siger, at der er en kontrakt mellem klient og server. På den anden side, hvis serveren anvendes forkert, så kan klienten ikke stille krav til serverens funktion. Kontrakten beskriver på den måde, hvad programmet eller programmodulet skal udføre. Det er så programudviklerens opgave at sikre konstruktion af et korrekt program, det vil sige et program, der lever op til kontrakten. Kontrakter indgås altså mellem programudvikleren, som kan være en systemudvikler eller en programmør, og de systemudviklere, der skal anvende programmet til konstruktion af andre programmer. I Kontraktbaseret Udvikling beskæftiger man sig altså ikke med aftaler med slutbrugere. Design af brugergrænsefalden og databasedesign ligger derfor udenfor emneområdet for Kontraktbaseret Udvikling. I forhold til en slutbruger kan det opfattes som en dyd at skrive programmer, der kan acceptere ethvert input, som brugeren kan finde på at anvende. Vi kan godt lide robuste programmer. 1

10 INDHOLD 2 Man kan vejlede eller tvinge slutbrugeren til at gøre det rigtige. Mellem programmoduler er sagen en anden. Her stiller vi eksplicitte krav til klienten. En kontrakt mellem klient og programmør kan være mere eller mindre formaliseret. I mange tilfælde er kontrakter løst formulerede og upræcise. Prøv blot at kigge på dokumentationen af klasserne i Java. Se Java SE 7 API Documentation. En kontrakt kaldes også en specifikation, og den består af mindst følgende to dele: En præbetingelse, der beskriver i hvilke tilstande, programmet eller programdelen må udføres. For en metode er præbetingelsen en beskrivelse af de tilstande 1, hvor man må kalde metoden. Hvis man ikke overholder præbetingelsen, kan man ikke kræve, at programmet opfylder postbetingelsen. Den, der kalder en metode i en ugyldig tilstand, kan ikke stille krav til resultatet. En postbetingelse, der beskriver programmets eller programmodulets resultat. Postbetingelsen beskriver de mulige tilstande, som programmet vil etablere under udførelsen, forudsat at programmet starter udførelsen med præbetingelsen opfyldt. Eksempel 0.1. En procedure, der sorterer en liste af typen Person, kan beskrives uformelt ved en specifikation i stil med pre Det forudsættes, at alle elementer i listen er af typen post Listen l er sorteret i ikke-aftagende void sorter(list l) hvor pre er præbetingelsen og post er postbetingelsen. Den uformelle specifikation er altså skrevet som en kommentar. Nøgleordt pre angiver præbetingelsen, og nøgleordet post angiver postbetingelsen. Specifikationen anvender JML-syntaks. Se figur Her følger et eksempel på en uformel specifikation af en funktion, der returnerer det største tal i en talrække. Variablen r gør det muligt at referere til funktionens returværdi (resultat). pre post r >= alle tal i func max(int[] t)->double r 1 En tilstand er en funktion fra mængden af variabler til de tilhørende værdier. Man medtager i beskrivelsen af tilstande kun de variabler, som er berørt af programmet eller programmodulet.

11 INDHOLD 3 Figur 0.0.1: Kontrakt for et program Udover pre- og postbetingelsen består kontrakter for procedurer og funktioner desuden af et hoved, der beskriver modulets navn, metodens parametre og evantuelt returtype. Modulets hoved kaldes ofte modulets signatur. For at anvende modulet (kalde funktionen eller proceduren) korrekt, skal man overholde de typer, som signaturen angiver for parametre og returtype. Signaturen er en syntaktisk specifikation. Præ- og postbetingelser er semantiske specifikationer, som omhandler virkningen af at anvende metoden. Formaliserede kontrakter er formuleret i et matematisk sprog eller i et programmeringssprog og består af udsagn om programmets variabler. Sådanne udsagn kaldes prædikater. Prædikater er udsagn, der kan være sande eller falske. Et prædikat P(x, y) er altså et udsagn eller påstand om variablerne x og y. Udsagnets værdi er enten sand eller f alsk afhængig af indholdet af variablerne x og y. I programmeringsssprog kalder vi ofte prædikater for logiske udtryk eller boolske udtryk. Eksempelvis er x>y+k et prædikat. Sandhedsværdien afhænger af de aktuelle værdier af variablerne x, y og k. I tilstanden {x = 3, y = 2, k = 2} er udtrykket sandt. I tilstanden {x = 3, y = 1, k = 4} er udtrykket falsk.

12 INDHOLD 4 Vi vil arbejde med at formulere kontrakter i form af prædikater. Desuden vil vi anvende de formelle kontrakter på to måder. Vi vil anvende kontrakter som værktøj til at udvikle programmerne, og vi vil anvende kontrakter som grundlag for afprøvning (test) af programmerne. Vi har til hensigt at tilegne os og anvende en teknik, hvor man ud fra en specifikation (kontrakt) konstruerer et program eller et programmodul. Principielt er en specifikation i sig selv et program. Hvis man havde en virtuel maskine til rådighed, som kunne fortolke kontrakten direkte, så ville man slippe for arbejdet med at omforme kontrakten til et andet sprog. I en vis forstand er det netop, hvad man gør i et sprog som SQL. Her beskriver man ikke en beregningsproces. Man beskriver det ønske resultat. F. eks. beskriver select distinct nr from T where T.nr>7 at man ønsker en tabel (relation) med attributten nr. Værdierne i kolonnen nr skal alle være større en 7 og der må ikke forkomme to ens værdier. Værdierne i A skal hentes fra tabellen T. Man kalder også et sprog af denne type for et deklarativt sprog. Man kan med en vis ret sige, at SQL-sætningen er en udførbar specifikation. Hvis vi derimod skriver // T er en given relation create empty relation R foreach (Row r in T){ if (r.nr>7) R.addRow(r) } er der tale om at beskrive en fremgangsmåde til beregning af resultatet. Her er der tale om et imperativt program. Programmet består af en række kommandoer, som skal udføres i en bestemt rækkefølge. De programmer, som vi skal arbejde med, kaldes imperative programmer. Imperative programmer fører under udførelsen computeren fra en starttilstand til en sluttilstand. De fleste af de programmeringssprog, som benyttes i praksis, er imperative, hvor programmerne udføres gennem en række trin, der hver ændrer på computerens tilstand. Der findes dog mange programmeringssprog, der ikke er imperative. Vi har allerede nævnt SQL. Af andre sprogparadigmer kan nævnes funktionelle sprog (f. eks. Lisp og Haskell) og logiksprog (f.eks. Prolog). Se Wikipedia 2. En programs tilstand består af en mængde af benævnte værdier. Navnene kalder vi variabler, og værdierne tages fra de sædvanlige værdimængder: Hele tal, naturlige tal, brøker, tegn osv. 2 Java og C # er også imperative sprog. Der findes også objektorienterede funktionelle sprog.

13 INDHOLD 5 En tilstand er en afbildning (funktion) fra mængden af variabler til værdier, og vi kan beskrive en tilstand ved en tabel: Tilstand 0 : a 23 x 4.5 i 7 Tilstand 1 : a 23 x 5 i 7 Tilstand 0 og Tilstand 1 adskiller sig kun ved værdien af variablen x. Begge tilstande er præcist beskrevet, idet vi kender den præcise værdi af variablerne. Udførelsen af et program kaldes en proces. En program begynder udførelsen i en starttilstand, hvor alle variabler i programmet har givne værdier eller eventuelt ukendte værdier, og programmet slutter udførelsen i en sluttilstand, hvor variablerne har værdier, som er etableret gennem programmets udførelse. I en konkret udførelse kan man eventuelt aflæse disse værdier ved hjælp af en debugger. I nogle tilfælde kan det således ske, at et program må starte i en ukendt tilstand. Et sådant program har en startbetingelse, der er sand, dvs. programmet må udføres i enhver starttilstand. Som programmør og som udvikler er man normalt ikke interesseret i de konkrete tilstande, som et program gennemløber under udførelsen med et givet input. De konkrete tilstande er kun interessante for den, som vil følge udførelsen af programmet med et givet input. I stedet er det interessant at se på forholdet mellem input og output og i de mulige tilstande, som programmet kan være i under udførelsen. De gyldige inputtilstande bekriver vi i en præbetingelse i form af et prædikat, f.eks. x 0 n > 0. Dette prædikat er sandt i alle tilstande, hvor x er støre end eller lig med 0, dvs. alle ikke-negative værdier af x, og hvor n er positiv. Resultatet af et program beskrives i en postbetingelse igen i form af et prædikat, f. eks. x = b[i], dvs. variablen x har samme værdi som variablen b[i]. Prædikater er boolske funktioner dvs. funktioner, der kan antage en af værdierne true og f alse, afhængig af værdierne af de variabler, som ingår i prædikatet. Prædikatet x 0 n > 0 er således f alse i tilstanden {x = 1, n = 2} og true i tilstanden {x = 2, n = 3}. Antag, at b er arrayen int[] b = {2, 4, 2, 4, 1} og x = 2 og i = 2. Så er x = b[i] lig med true. Normalt består undervisningen i programmering i, at man simultant lærer et programmeringssprog og at skrive programmer i dette sprog. Man lærer at gætte, hvad programmerne skal indeholde på grundlag af nogle skabeloner og at afprøve programmerne. Hvis afprøvningen ikke giver det ønskede resultat, udfører man en rettelse (evt. ved et nyt gæt) og gentager afprøvningen. Dette fortsætter, indtil man tror, at programmet er korrekt. I denne bog lærer man at konstruere programmer ved at anvende en teknik, hvor programmers indhold (tekst) kan beregnes. Derved opnår man en større sikkerhed for, at programmerne er korrekte. Lad os se på et eksempel. Funktionen pre post r er den midterste værdi af x, y og func midt(int x, int y, int z)->int r {... }

14 INDHOLD 6 påstås ifølge specifikationen at returnere den midterste værdi af de tre tal: x, y og z. F. eks skal kaldet midt(7,3,12) returnere værdien 7. Vi har ikke vist kildekoden til funktionens krop. Antallet af forskellige mulige input til midt(x,y,z) er (2 32 ) 3 = En afprøvning af alle mulige input er i praksis umuligt. Ved at vælge en teststrategi, kan vi afprøve udvalgte input. Det kan bruges til at øge tilliden til, at funktionen regner rigtigt. Men vi kan i princippet kun være sikker, hvis alle muligheder er afprøvet. Hvis et input giver en fejl, f. eks. hvis midt(-7,3,12)=-7, så er vi blevet oplyst. Vi ved, at der er en fejl, og vi kan rette i programmet, så fejlen forsvinder. Desværre kan rettelsen give anledning til nye fejl. Læren af dette er. Hvis funktionen regner rigtigt med et givet input, er vi ikke blevet meget klogere. De andre input mangler at blive afprøvet. Gennem afprøvning af programmer kan man i bedste fald afsløre, om der er fejl. Det er generelt ikke muligt gennem afprøvning at afgøre, om et program er korrekt. Den eneste måde, hvorpå vi kan bevise, at funktionen regner rigtigt for alle gyldige input, er ved at studere, hvorledes funktionen er programmeret. Dette kræver, at vi studerer kildekoden. Skal man så ikke anvende test. Jo, test bør være en del af de værktøjer, som vi bruger til at øge sikkerheden for, at vore programmer regner rigtigt. Den teknik, som bogen benytter, er baseret på matematik og især på anvendelse af logik. Det er derfor nødvendigt, at den studerende bliver fortrolig med denne disciplin. Man skal være fortrolig med almindelig algebra (aritmetik), mængdelære, udsagnslogik og prædikatkalkyle for at kunne arbejde med udvikling af programmer efter bogens teknik. Besværet med at lære dette lønner sig, idet man som programmør opnår en større sikkerhed i at skrive korrekte programmere. I tilgift reducerer man den tid, man ellers skulle anvende til test. At udvikle programsystemer til computere er en vanskelig og udfordrende opgave. Hvis kravene til et program er upræcise og uklare, er opgaven også at finde ud af, hvilken opgave programmet skal løse. Upræcise beskrivelser af krav og ønsker til programmer er en kilde til mange fallerede projekter. De fleste har lært programmering baseret på uformelle, tekstlige og til tider upræcise beskrivelser af, hvad programmerne skal udføre. Samtidig har man udviklet programmerne baseret på intuition og gætteri kombineret med erfaring. De fejl, der opstår ved denne fremgangsmåde, kalder man lus (eng. bugs), og man investerer mange kræfter i at finde og rette fejl, kaldet aflusning (eng. debugging). Problemet er, at man ikke kan vide, om en funden fejl er den sidste, eller om rettelse af fejlen har introduceret flere fejl. Ved aflusning af store systemer såsom operativsystemer, store administrative systemere mv. vil man ofte introducere nye fejl. Allerede i 1960 erne blev det klart, at fejlbehæftede programmer var et stort problem. Dette gjaldt ikke mindst operativsystemer. Et operativsystem kunne indeholde omkring 1000 alvorlige fejl. F. eks. udsendte CDC hver uge rettelser til operativsystemet på deres CDV Rettelserne kom på hulkort og fyldte flere hundrede hulkort. Hver rettelsesrunde gav anledning til nye fejl; men antallet af fejl, der skulle rettes hver uge blev mindre og mindre. På et tidpunkt valgte man at udsende en ny version af operativsystemet. Men også applikationer kunne give anledning til alvorlige problemer, hvis programmerne havde fejl. Englænderen C. A. R. Hoare foreslog i artiklen An Axiomatic Basis for Computer Programming Hoare [1969] at indføre en formel matematisk metode til at hjælpe med at skrive

15 INDHOLD 7 korrekte programmer. Det er i stor udstrækning en videreudvikling af denne metode, som bliver præsenteret i denne bog. I bogen A Dicipline of Programming Dijkstra [1976]beskriver E. W. Dijkstra udførligt idéen bag de teknikker, vi skal arbejde med. Bertrand Meyer introducerede i programmeringssproget Eiffel begrebet Design by Contract, hvor man kan forsyne programmer med formelle specifikationer (se f. eks. Meyer [2009]), der fastlægger kravene til input (præbetingelser) og præcise beskrivelser af output (postbetingelser). Disse krav kan så blive kontrolleret under udførelsen af programmet. Kontrol af formelle specifikationer under udførelse af et program svarer til at udføre en test. Hvis udførelsen gennemføres uden fejlreaktioner, har man kun sikret sig, at programmet udføres korrekt med de givne inputdata og i de givne omgivelser. Det beviser ikke, at programmet er korrekt. Vi vil benytte de formelle specifikationer til at konstruere korrekte programmer. På samme måde, som ingeniører anvender matematik som værktøj til at konstruere bygninger, maskiner, broer mv, vil vi anvende matematik til at konstruere programmer. Dette kræver dels, at vi tilegner os de matematiske værktøjer, som skal anvendes til konstruktionen og dels, at vi lærer at skrive præcise formelle specifikationer. Den matematik, som vi benytter os af, kaldes diskret matematik, idet den i modsætning til den matematik, som ingeniører og fysikere benytter sig af, ikke behandler kontinuerte størrelser, men alene arbejder med størrelser, der kan antage diskrete (adskilte) værdier, såsom hele tal og boolske værdier (falsk og sand). Vi anvender diskret matematik, fordi den digitale computer kun kan arbejde med hele tal. Alt, hvad der lagres i en computer og alt, hvad der behandles i en computer, er hele tal. I computeren er tallene repræsenteret på binær form, dvs. hvor kun cifrene 0 og 1 anvendes. Al information i en computer er således kodet ved brug af hele tal. En omfattende præsentation af diskret matematik findes i David Gries og Fred B Schneiders A logical Approach to discrete Math Gries and Schneider [1993]. Den del af diskret matematik, som vi har speciel interesse i er: Mængder Relationer Funktioner Udsagnslogikken Prædikatkalkulen Til brug for programmering vil vi arbejde med: En simpel programnotation, som er en modificeret delmængde af sproget Java. Herved får vi adgang til at afprøve programmerne, hvis dette er ønskeligt. Programsemantik ved brug af prædikattransformeren wp (weakest precondition)

16 INDHOLD 8 Programsemantik er beskrivelsen af virkningen af udførelse af et program. Typisk beskriver man virkningen af de enkelte sætningstyper i sit programmeringssprog. I Java vil vi således beskrive virkningen af tilordningssætninger, if-sætninger og while-sætninger mv. Valget er faldet på wp, da det er et kraftfuldt værktøj, og da det umiddelbart er muligt at anvende wp til at konstruere programmer, der opfylder givne postbetingelser.

17 Del I Matematik 9

18 Kapitel 1 Matematisk argumentation Dette kapitel handler om at kunne forstå og gennemføre en matematisk argumentation for, at et udsagn eller en påstand er sand. En matematisk argumentation for en påstand kaldes et bevis. Det matematiske bevis er baseret på anvendelse af symboler og nogle faste slutningsregler og adskiller sig i præcision og entydighed fra den måde, hvorpå vi argumenterer for en påstand i dagligt sprog. Alligevel er der en klar sammenhæng mellem matematisk bevisførelse og dagligdagens argumentation. Lad os tage et eksempel fra Sherlock Holmes i historien»silver Blaze«Doyle. Sherlock Holmes siger: A dog was kept in the stalls, and yet, though someone had been in and fetched out a horse, the dog had not barked... Obviously the visitor was someone whom the dog knew well... Holmes argumentation indeholder to præmisser. Den første er»hunden gøede ikke ad den besøgende i stalden«. Den anden præmis er implicit, nemlig at»hunde gør ikke af folk, de kender«. De to præmisser medfører, at»hunden kendte den besøgende«. Dette er et eksempel på en type argumentation, som vi kender fra dagligdagen. I matematikken ville man opstille begge præmisser, så det var tydeligt, på hvilket grundlag man drog sin slutning. I matematikken ville man opstille argumenationen således: 1. Præmis. Hunden gøede ikke af den, der kom ind i stalden. 2. Præmis. Hunde gør ikke af folk, de kender. 3. Konklusion. Ergo, hunden kendte den besøgende. Læg mærke til det underforståede alle i præmissen Hunde gør ikke af folk, de kender. Der menes, at alle hunde opfører sig på den måde. Men der kan jo være hunde, som opfører sig anderledes. Nogle hunde ville gø af glæde ved at se en person, som de kender. Men vi udtaler os ikke om rigtigheden af præmisserne. Vi udtaler os kun om argumentationen, dvs. 10

19 KAPITEL 1. MATEMATISK ARGUMENTATION 11 hvis præmisserne er sande, så er slutningen også sand. Sherlock Holmes mener altså, at hans præmisser holder. Og det er netop akilleshælen i hans metode. Måske holder hans præmisser ikke. Selv om resultatet af et argument er forkert, kan selve argumentationen være rigtig. F. eks. Præmis. Alle rige mennesker bor nord for København Præmis. X er rig Konklusion. Altså bor X nord for København Argumentationen er korrekt, men mindst den ene præmis er forkert. Hvilken? Argumentationsformen er et eksempel på en syllogisme. En syllogisme er en logisk slutning, som består af to eller flere præmisser og en konklussion. Præmisserne og konklusionen skal være såkaldte katagoriske udsagn, dvs. udsagn om, at der består en given relation mellem to genstande eller begreber. I eksemplet ovenfor er der en relation mellem rige mennesker og København samt mellem X og rige mennesker. Begrebet rige mennesker er mellembegrebet, som knytter X til København. Se Weston [1992]for mere information om syllogismer. Man kan også hente information om syllogismer på Internet, f. eks. i Den store Danske. Se også Wikipedia. Linket til Wikipedia indeholder en oversigt over forskellige former for syllogismer. På Ludvig Holbergs tid var studiet af syllogismere en vigtig del af universitetsuddannelserne. Her følger et eksempel på en ukorrekt syllogisme hentet fra Ludvig Holbergs skuespil Erasmus Montanus. Rasmus Berg var på besøg i sit hjem, og han ville brillere med det, han havde lært på universitetet. Her er hans syllogisme. En sten kan ikke f lyve Morlille kan ikke f lyve Ergo er morlille en sten Der er ingen egenskab, der forbinder en sten med morlille. At de har samme egenskab, nemlig ikke at kunne flyve gør dem ikke ens. Der er intet mellembegreb som i argumentationen ovenfor på denne side. Her er rig mellembegrebet, der forbinder X med bor nord for København Deduktive argumentationsformer Vi skal se på nogle metoder, som kan anvendes ved argumentation for påstande. Metoderne baseres på det, vi kalder en implikation P Q. Hvis P er sand, så er Q også sand.

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

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

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

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

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

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

Læs selv om LOGIK. Erik Bjerre og Pernille Pind Forlaget Pind & Bjerre

Læs selv om LOGIK. Erik Bjerre og Pernille Pind Forlaget Pind & Bjerre Læs selv om LOGIK Erik Bjerre og Pernille Pind Forlaget Pind & Bjerre Læs selv om LOGIK Erik Bjerre og Pernille Pind Forlaget Pind & Bjerre 2 Logik Sandt eller falsk? Lyver han? Taler hun sandt? Det ville

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

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

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

Introduktion til prædikatlogik

Introduktion til prædikatlogik Introduktion til prædikatlogik Torben Braüner Datalogisk Afdeling Roskilde Universitetscenter 1 Plan Symbolisering af sætninger Syntaks Semantik 2 Udsagnslogik Sætningen er den mindste syntaktiske enhed

Læs mere

Logik. Helge Elbrønd Jensen og Tom Høholdt Fortolket af Michael Elmegård og Øistein Wind-Willassen.

Logik. Helge Elbrønd Jensen og Tom Høholdt Fortolket af Michael Elmegård og Øistein Wind-Willassen. Logik Helge Elbrønd Jensen og Tom Høholdt Fortolket af Michael Elmegård og Øistein Wind-Willassen. 25. juni 2014 2 Indhold 1 Matematisk Logik 5 1.1 Udsagnslogik.................................... 5 1.2

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

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

Programmering, algoritmik og matematik en nødvendig sammenblanding?

Programmering, algoritmik og matematik en nødvendig sammenblanding? Programmering, algoritmik og matematik en nødvendig sammenblanding? Oplæg til IDA møde, 29. november 2004 Martin Zachariasen DIKU 1 Egen baggrund B.Sc. i datalogi 1989; Kandidat i datalogi 1995; Ph.D.

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

Den sproglige vending i filosofien

Den sproglige vending i filosofien ge til forståelsen af de begreber, med hvilke man udtrykte og talte om denne viden. Det blev kimen til en afgørende ændring af forståelsen af forholdet mellem empirisk videnskab og filosofisk refleksion,

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

Gödel: Über formal unentschiedbare Sätze der Principia Mathematica und verwandter Systeme I, 1931

Gödel: Über formal unentschiedbare Sätze der Principia Mathematica und verwandter Systeme I, 1931 Kommentar til 1 Gödel: Über formal unentschiedbare Sätze der Principia Mathematica und verwandter Systeme I, 1931 Denne afhandling af den 24-årige Kurt Gödel er blevet en klassiker. Det er vist den eneste

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

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

Sproget Limba. Til brug i G1 og K1. Dat1E 2003

Sproget Limba. Til brug i G1 og K1. Dat1E 2003 Sproget Limba Til brug i G1 og K1 Dat1E 2003 Abstract Limba er et simpelt imperativt sprog med hoballokerede tupler. Dette dokument beskriver uformelt Limbas syntaks og semantik samt en fortolker for Limba,

Læs mere

Projekt 1.4 De reelle tal og 2. hovedsætning om kontinuitet

Projekt 1.4 De reelle tal og 2. hovedsætning om kontinuitet Projekt 1.4 De reelle tal og 2. hovedsætning om kontinuitet Mens den 1. hovedsætning om kontinuerte funktioner kom forholdsvis smertefrit ud af intervalrusebetragtninger, så er 2. hovedsætning betydeligt

Læs mere

Euklids algoritme og kædebrøker

Euklids algoritme og kædebrøker Euklids algoritme og kædebrøker Michael Knudsen I denne note vil vi med Z, Q og R betegne mængden af henholdsvis de hele, de rationale og de reelle tal. Altså er { m } Z = {..., 2,, 0,, 2,...} og Q = n

Læs mere

Introduktion til differentialregning 1. Jens Siegstad og Annegrethe Bak

Introduktion til differentialregning 1. Jens Siegstad og Annegrethe Bak Introduktion til differentialregning 1 Jens Siegstad og Annegrete Bak 16. juli 2008 1 Indledning I denne note vil vi kort introduktion til differentilregning, idet vi skal bruge teorien i et emne, Matematisk

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

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

Om brugen af matematiske tegn og objekter i en god matematisk fremstilling

Om brugen af matematiske tegn og objekter i en god matematisk fremstilling Om brugen af matematiske tegn og objekter i en god matematisk fremstilling af Petur Birgir Petersen Et særpræg ved matematik som videnskab er den udstrakte brug af symboler. Det er vigtigt at symbolerne

Læs mere

Differentialregning. Ib Michelsen

Differentialregning. Ib Michelsen Differentialregning Ib Michelsen Ikast 2012 Forsidebilledet Tredjegradspolynomium i blåt med rød tangent Version: 0.02 (18-09-12) Denne side er (~ 2) Indholdsfortegnelse Introduktion...5 Definition af

Læs mere

Tal. Vi mener, vi kender og kan bruge følgende talmængder: N : de positive hele tal, Z : de hele tal, Q: de rationale tal.

Tal. Vi mener, vi kender og kan bruge følgende talmængder: N : de positive hele tal, Z : de hele tal, Q: de rationale tal. 1 Tal Tal kan forekomme os nærmest at være selvfølgelige, umiddelbare og naturgivne. Men det er kun, fordi vi har vænnet os til dem. Som det vil fremgå af vores timer, har de mange overraskende egenskaber

Læs mere

Ja! det beviste vi uge 16+17

Ja! det beviste vi uge 16+17 Ugens emner Lukketheds- og afgørlighedsegenskaber [5.3-5.5] lukkethed under,,,, * lukkethed under homomorfi og invers homomorfi pumping -lemmaet beslutningsproblemer: membership, emptiness, finiteness

Læs mere

Reeksamen i Diskret Matematik

Reeksamen i Diskret Matematik Reeksamen i Diskret Matematik Første Studieår ved Det Teknisk-Naturvidenskabelige Fakultet 21. august 2015 Nærværende eksamenssæt består af 10 nummererede sider med ialt 17 opgaver. Tilladte hjælpemidler:

Læs mere

Boolsk algebra For IT studerende

Boolsk algebra For IT studerende Boolsk algebra For IT studerende Henrik Kressner Indholdsfortegnelse Indledning...3 Logiske kredsløb...4 Eksempel:...4 Operatorer...4 NOT operatoren...5 AND operatoren...5 OR operatoren...6 XOR operatoren...7

Læs mere

Skriftlig Eksamen Diskret Matematik (DM528)

Skriftlig Eksamen Diskret Matematik (DM528) Skriftlig Eksamen Diskret Matematik (DM528) Institut for Matematik & Datalogi Syddansk Universitet Tirsdag den 20 Januar 2009, kl. 9 13 Alle sædvanlige hjælpemidler (lærebøger, notater etc.) samt brug

Læs mere

3. Om skalamønstrene og den indfoldede orden

3. Om skalamønstrene og den indfoldede orden Dette er den tredje af fem artikler under den fælles overskrift Studier på grundlag af programmet SKALAGENERATOREN (forfatter: Jørgen Erichsen) 3. Om skalamønstrene og den indfoldede orden Lad os begynde

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

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

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

Matematisk induktion

Matematisk induktion Induktionsbeviser MT01.0.07 1 1 Induktionsbeviser Matematisk induktion Sætninger der udtaler sig om hvad der gælder for alle naturlige tal n N, kan undertiden bevises ved matematisk induktion. Idéen bag

Læs mere

Lad os som eksempel se på samtidigt kast med en terning og en mønt:

Lad os som eksempel se på samtidigt kast med en terning og en mønt: SANDSYNLIGHEDSREGNING Stokastisk eksperiment Et stokastisk eksperiment er et eksperiment, hvor vi fornuftigvis ikke på forhånd kan have en formodning om resultatet af eksperimentet Til gengæld kan vi prøve

Læs mere

Diskrete Matematiske Metoder. Jesper Lützen

Diskrete Matematiske Metoder. Jesper Lützen Diskrete Matematiske Metoder Jesper Lützen Juni 2013 ii Indhold Introduktion. ix 0.1 Den aksiomatisk-deduktive metode................. ix 0.2 Diskret matematik; hvad er det?.................. x 1 Tal,

Læs mere

Sproget Six. Til brug i rapportopgaven på kurset Oversættere. Vinter 2006. Abstract

Sproget Six. Til brug i rapportopgaven på kurset Oversættere. Vinter 2006. Abstract Sproget Six Til brug i rapportopgaven på kurset Oversættere Vinter 2006 Abstract Six er baseret på det sprog, der vises i figur 6.2 og 6.4 i Basics of Compiler Design. Den herværende tekst beskriver basissproget

Læs mere

Hjerner i et kar - Hilary Putnam. noter af Mogens Lilleør, 1996

Hjerner i et kar - Hilary Putnam. noter af Mogens Lilleør, 1996 Hjerner i et kar - Hilary Putnam noter af Mogens Lilleør, 1996 Historien om 'hjerner i et kar' tjener til: 1) at rejse det klassiske, skepticistiske problem om den ydre verden og 2) at diskutere forholdet

Læs mere

Matematisk Metode. Jesper Lützen og Ian Kiming

Matematisk Metode. Jesper Lützen og Ian Kiming Matematisk Metode Jesper Lützen og Ian Kiming 17. oktober 2008 ii Contents Introduktion. Den aksiomatisk-deduktive metode ix 1 Logik 1 1.1 Udsagn og prædikater........................ 1 1.2 Sammensatte

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

Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Ideen er simpel:

Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Ideen er simpel: Grådige algoritmer Grådige algoritmer Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Ideen er simpel: Opbyg løsningen skridt for skridt ved hele tiden af vælge lige

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

Analyse 2. Bevis af Fatous lemma (Theorem 9.11) Supplerende opgave 1. Øvelser

Analyse 2. Bevis af Fatous lemma (Theorem 9.11) Supplerende opgave 1. Øvelser Analyse 2 Øvelser Rasmus Sylvester Bryder 24. og 27. september 203 Bevis af Fatous lemma (Theorem 9.) Hvis (u j ) j er en følge af positive, målelige, numeriske funktioner (dvs. med værdier i [, ]) over

Læs mere

Køreplan Matematik 1 - FORÅR 2005

Køreplan Matematik 1 - FORÅR 2005 Lineær algebra modulo n og kryptologi Køreplan 01005 Matematik 1 - FORÅR 2005 1 Introduktion Kryptologi er en ældgammel disciplin, som går flere tusinde år tilbage i tiden. Idag omfatter disciplinen mange

Læs mere

Fraktaler Mandelbrots Mængde

Fraktaler Mandelbrots Mængde Fraktaler Mandelbrots Mængde Foredragsnoter Af Jonas Lindstrøm Jensen Institut For Matematiske Fag Århus Universitet Indhold Indhold 1 1 Indledning 3 2 Komplekse tal 5 2.1 Definition.......................................

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

DM536. Rapport og debug

DM536. Rapport og debug DM536 Rapport og debug Kilder Vigtig.it (Felix Palludan Hargreaves) http://vigtig.it/dm502/howto_report.pdf http://vigtig.it/blog/teaching/#toc-relevant-tips Peter Schneider-Kamp http://imada.sdu.dk/~petersk/dm536/project2.pdf

Læs mere

PHP 3 UGERS FORLØB PHP, MYSQL & SQL

PHP 3 UGERS FORLØB PHP, MYSQL & SQL PHP 3 UGERS FORLØB PHP, MYSQL & SQL Uge 1 & 2 Det basale: Det primære mål efter uge 1 og 2, er at få forståelse for hvordan AMP miljøet fungerer i praksis, og hvordan man bruger PHP kodesproget til at

Læs mere

Klassen er sammenlæst, altså 5 og 6 klasse på en og samme tid. Samtidig er klassen pt på ca 11 elever ialt.

Klassen er sammenlæst, altså 5 og 6 klasse på en og samme tid. Samtidig er klassen pt på ca 11 elever ialt. Introduktion til mat i 5/6 klasse Vejle Privatskole 13/14: Klassen er sammenlæst, altså 5 og 6 klasse på en og samme tid. Samtidig er klassen pt på ca 11 elever ialt. Udgangspunktet bliver en blød screening,

Læs mere

brikkerne til regning & matematik tal og algebra F+E+D preben bernitt

brikkerne til regning & matematik tal og algebra F+E+D preben bernitt brikkerne til regning & matematik tal og algebra F+E+D preben bernitt 1 brikkerne. Tal og algebra E+D 2. udgave som E-bog ISBN: 978-87-92488-35-0 2010 by bernitt-matematik.dk Kopiering af denne bog er

Læs mere

Lineære differentialligningers karakter og lineære 1. ordens differentialligninger

Lineære differentialligningers karakter og lineære 1. ordens differentialligninger enote 11 1 enote 11 Lineære differentialligningers karakter og lineære 1. ordens differentialligninger I denne note introduceres lineære differentialligninger, som er en speciel (og bekvem) form for differentialligninger.

Læs mere

Ufuldstændighed, mængdelære og beregnelighed

Ufuldstændighed, mængdelære og beregnelighed Ufuldstændighed, mængdelære og beregnelighed Thomas Bolander, DTU Informatik Matematik: Videnskaben om det uendelige Folkeuniversitetet i København, efteråret 2009 Thomas Bolander, FUKBH 09 s. 1/27 Sidste

Læs mere

ARGUMENTER OG ARGUMENTATION

ARGUMENTER OG ARGUMENTATION ARGUMENTER OG ARGUMENTATION Når vi kommunikerer, udveksler vi meddelelser, men også meninger med hinanden. Meningsudveksling på ord foregår ved hjælp af påstande, argumenter og vurderinger. Men hvad vil

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

Skriftlig Eksamen Kombinatorik, sandsynlighed og randomiserede algoritmer (DM528)

Skriftlig Eksamen Kombinatorik, sandsynlighed og randomiserede algoritmer (DM528) Skriftlig Eksamen Kombinatorik, sandsynlighed og randomiserede algoritmer (DM58) Institut for Matematik & Datalogi Syddansk Universitet Torsdag den 7 Januar 010, kl. 9 13 Alle sædvanlige hjælpemidler (lærebøger,

Læs mere

Selvreference i begrænsningsresultaterne

Selvreference i begrænsningsresultaterne Selvreference i begrænsningsresultaterne Thomas Bolander, IMM, DTU. tb@imm.dtu.dk To pointer: (1) Der skal kun meget lidt udover selvreference til for at få de klassiske logiske begrænsningsresultater.

Læs mere

Videnskabsteori - Logik og videnskabelig argumentation. Mette Dencker

Videnskabsteori - Logik og videnskabelig argumentation. Mette Dencker Videnskabsteori - Logik og videnskabelig argumentation Mette Dencker 1 Dagens program Logik Argumentation Toulmins argumentationsmodel Opgaver 2 Logik I hvad er logik? At tænke (ræsonnere) korrekt Vurdering

Læs mere

Om at løse problemer En opgave-workshop Beregnelighed og kompleksitet

Om at løse problemer En opgave-workshop Beregnelighed og kompleksitet Om at løse problemer En opgave-workshop Beregnelighed og kompleksitet Hans Hüttel 27. oktober 2004 Mathematics, you see, is not a spectator sport. To understand mathematics means to be able to do mathematics.

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

Grådige algoritmer. Et algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.

Grådige algoritmer. Et algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Grådige algoritmer Grådige algoritmer Et algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Grådige algoritmer Et algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.

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

3. klasse 6. klasse 9. klasse

3. klasse 6. klasse 9. klasse Børne- og Undervisningsudvalget 2012-13 BUU Alm.del Bilag 326 Offentligt Elevplan 3. klasse 6. klasse 9. klasse Matematiske kompetencer Status tal og algebra sikker i, er usikker i de naturlige tals opbygning

Læs mere

Introduktion til DM507

Introduktion til DM507 Introduktion til DM507 Rolf Fagerberg Forår 2017 1 / 20 Hvem er vi? Underviser: Rolf Fagerberg, IMADA Forskningsområde: algoritmer og datastrukturer 2 / 20 Hvem er vi? Underviser: Rolf Fagerberg, IMADA

Læs mere

Rolf Fagerberg. Forår 2015

Rolf Fagerberg. Forår 2015 Forår 2015 Dagens program 1 2 3 4 5 Underviser:, IMADA Forskningsområde: algoritmer og datastrukturer Underviser:, IMADA Forskningsområde: algoritmer og datastrukturer Deltagere: BA i Datalogi BA i Software

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

Introduktion til SQL

Introduktion til SQL Introduktion til SQL Introduktion til SQL 1. udgave, 1. oplag 2013 Copyright 2013 Libris Media A/S Forfatter: Bobby Henningsen Forlagsredaktion: Peter Wiwe og Louise Peulicke Larsen Omslag: Louise Peulicke

Læs mere

BRP Sortering og søgning. Hægtede lister

BRP Sortering og søgning. Hægtede lister BRP 18.10.2006 Sortering og søgning. Hægtede lister 1. Opgaver 2. Selection sort (udvælgelsessortering) 3. Kompleksitetsanalyse 4. Merge sort (flettesortering) 5. Binær søgning 6. Hægtede lister 7. Øvelser:

Læs mere

UNDERVISNING I PROBLEMLØSNING

UNDERVISNING I PROBLEMLØSNING UNDERVISNING I PROBLEMLØSNING Fra Pernille Pinds hjemmeside: www.pindogbjerre.dk Kapitel 1 af min bog "Gode grublere og sikre strategier" Bogen kan købes i min online-butik, i boghandlere og kan lånes

Læs mere

Skriftlig eksamen i. Databaser. Vinter 2002/2003. Vejledende løsninger

Skriftlig eksamen i. Databaser. Vinter 2002/2003. Vejledende løsninger Skriftlig eksamen i Databaser Vinter 2002/2003 Vejledende løsninger Dette eksamenssæt består af 5 nummererede sider (incl. denne). Der er 5 opgaver, som ved bedømmelsen tillægges følgende vægte: Opgave

Læs mere

HTX, RTG. Rumlige Figurer. Matematik og programmering

HTX, RTG. Rumlige Figurer. Matematik og programmering HTX, RTG Rumlige Figurer Matematik og programmering Vejledere: Jørn Christian Bendtsen og Karl G. Bjarnason Morten Bo Kofoed Nielsen & Michael Jokil 10-10-2011 In this assignment we have been working with

Læs mere

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507) Skriftlig Eksamen Algoritmer og Datastrukturer (DM507) Institut for Matematik og Datalogi Syddansk Universitet, Odense Onsdag den 0. juni 009, kl. 9 Alle sædvanlige hjælpemidler (lærebøger, notater, osv.)

Læs mere

Iteration af et endomorft kryptosystem. Substitutions-permutations-net (SPN) og inversion. Eksklusiv disjunktion og dens egenskaber

Iteration af et endomorft kryptosystem. Substitutions-permutations-net (SPN) og inversion. Eksklusiv disjunktion og dens egenskaber Produktsystemer, substitutions-permutations-net samt lineær og differentiel kryptoanalyse Kryptologi, fredag den 10. februar 2006 Nils Andersen (Stinson 3., afsnit 2.7 3.4 samt side 95) Produkt af kryptosystemer

Læs mere

Emneopgave: Lineær- og kvadratisk programmering:

Emneopgave: Lineær- og kvadratisk programmering: Emneopgave: Lineær- og kvadratisk programmering: LINEÆR PROGRAMMERING I lineær programmering løser man problemer hvor man for en bestemt funktion ønsker at finde enten en maksimering eller en minimering

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

Seminaropgave: Præsentation af idé

Seminaropgave: Præsentation af idé Seminaropgave: Præsentation af idé Erik Gahner Larsen Kausalanalyse i offentlig politik Dagsorden Opsamling på kausalmodeller Seminaropgaven: Praktisk info Præsentation Seminaropgaven: Ideer og råd Kausalmodeller

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

Computerstøttet beregning

Computerstøttet beregning CSB 2009 p. 1/16 Computerstøttet beregning Lektion 1. Introduktion Martin Qvist qvist@math.aau.dk Det Ingeniør-, Natur-, og Sundhedsvidenskabelige Basisår, Aalborg Universitet, 3. februar 2009 people.math.aau.dk/

Læs mere

Funktionsterminologi

Funktionsterminologi Funktionsterminologi Frank Nasser 12. 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: Dette

Læs mere

Kapitel 3 Betinget logik i C#

Kapitel 3 Betinget logik i C# Kapitel 3 i C# er udelukkende et spørgsmål om ordet IF. Det er faktisk umuligt at programmere effektivt uden at gøre brug af IF. Du kan skrive små simple programmer. Men når det bliver mere kompliceret

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

1 Beregnelighed. 1.1 Disposition. 1.2 Præsentation. Def. TM. Def. RE/R. Def. 5 egenskaber for RE/R. Def. NSA. Bevis. NSA!RE. Def. SA. Bevis. SA!

1 Beregnelighed. 1.1 Disposition. 1.2 Præsentation. Def. TM. Def. RE/R. Def. 5 egenskaber for RE/R. Def. NSA. Bevis. NSA!RE. Def. SA. Bevis. SA! 1 Beregnelighed 1.1 Disposition Def. TM Def. RE/R Def. 5 egenskaber for RE/R Def. NSA Bevis. NSA!RE Def. SA Bevis. SA!R Bevis. SA RE Def. Beslutningsproblem Arg. Self-Accepting er uløselig 1.2 Præsentation

Læs mere

INDHOLDSFORTEGNELSE. INDLEDNING... 7 Kristian Langborg-Hansen. KAPITEL ET... 9 I gang med App Inventor. KAPITEL TO...

INDHOLDSFORTEGNELSE. INDLEDNING... 7 Kristian Langborg-Hansen. KAPITEL ET... 9 I gang med App Inventor. KAPITEL TO... INDHOLDSFORTEGNELSE INDLEDNING... 7 Kristian Langborg-Hansen KAPITEL ET... 9 I gang med App Inventor Installation af App Inventor... 10 Trådløs installation... 11 Installation af emulator (Windows)...

Læs mere

Start på programmering (IT-hæfter fra Libris)

Start på programmering (IT-hæfter fra Libris) Start på programmering (IT-hæfter fra Libris) Greg Perry Pris Bøger: Start på programmering (IT-hæfter fra Libris) pdf - (KR 0.00); Start på programmering (IT-hæfter fra Libris) fb2 - (KR 0.00); Start

Læs mere

Introduktion til C programmering

Introduktion til C programmering Introduktion til C programmering Rasmus Erik Voel Jensen Uge 17 voel@math.ku.dk Dagens forelæsning Formalia Indledende programmering, main, include, printf, variable, scanf, if-else, statements, eksempler

Læs mere

MODELSÆT 2; MATEMATIK TIL LÆREREKSAMEN

MODELSÆT 2; MATEMATIK TIL LÆREREKSAMEN MODELSÆT ; MATEMATIK TIL LÆREREKSAMEN Forberedende materiale Den individuelle skriftlige røve i matematik vil tage udgangsunkt i følgende materiale:. En diskette med to regnearks-filer og en MathCad-fil..

Læs mere

Matematisk modellering og numeriske metoder. Lektion 16

Matematisk modellering og numeriske metoder. Lektion 16 Matematisk modellering og numeriske metoder Lektion 16 Morten Grud Rasmussen 6. november, 2013 1 Interpolation [Bogens afsnit 19.3 side 805] 1.1 Interpolationspolynomier Enhver kontinuert funktion f på

Læs mere

Test af It-komponent

Test af It-komponent Test af It-komponent I programmeringssproget Java Programmet Login service Elev: Mads Funch Klasse 2.4 Mat, It, Programmering Skole: Roskilde Tekniske Gymnasium HTX Underviser: Karl Dato: 31-08-2016 Side

Læs mere

De fire elementers kostbare spejl

De fire elementers kostbare spejl Projekt.6 Lineær algebra moderne og klassisk kinesisk De fire elementers kostbare spejl "Som bekendt anses matematikken for at være en meget vigtig videnskab. Denne bog om matematik vil derfor være af

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

Algoritmer og invarianter

Algoritmer og invarianter Algoritmer og invarianter Iterative algoritmer Algoritmen er overordnet set een eller flere while eller for-løkker. Iterative algoritmer Algoritmen er overordnet set een eller flere while eller for-løkker.

Læs mere

Noter til C# Programmering Selektion

Noter til C# Programmering Selektion Noter til C# Programmering Selektion Sætninger Alle sætninger i C# slutter med et semikolon. En sætning kontrollerer sekvensen i programafviklingen, evaluerer et udtryk eller gør ingenting Blanktegn Mellemrum,

Læs mere

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507) Skriftlig Eksamen Algoritmer og Datastrukturer (DM507) Institut for Matematik og Datalogi Syddansk Universitet, Odense Mandag den 7. juni 00, kl. 9 Alle sædvanlige hjælpemidler (lærebøger, notater, osv.)

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

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