Programmering og Problemløsning, 2017

Størrelse: px
Starte visningen fra side:

Download "Programmering og Problemløsning, 2017"

Transkript

1 Programmering og Problemløsning, 2017 Rekursion Towers of Hanoi og Liniegrafik Martin Elsman Datalogisk Institut Københavns Universitet DIKU 13. Oktober, 2017 Martin Elsman (DIKU) Programmering og Problemløsning, Oktober, / 18

2 Outline 1 Rekursion Towers of Hanoi og Liniegrafik Introduktion Towers of Hanoi Liniegrafik Martin Elsman (DIKU) Programmering og Problemløsning, Oktober, / 18

3 Introduktion Rekursion En metode for hvilken en løsning til et problem findes ved at løse mindre instanser af det samme problem. I dag vil vi se på brug af rekursion til to formål: 1 Implementation af spillet Towers of Hanoi. Spilleren (evt. computeren) skal flytte N skiver der er placeret i orden på den første af tre pinde til den sidste pind. Spilleren må kun flytte en skive af gangen og en stor skive må ikke placeres ovenpå en mindre. 2 Tegning af figurer ved hjælp af linier. Ved brug af et simpelt F# GUI interface kan vi tegne rekursive figurer med linier. Martin Elsman (DIKU) Programmering og Problemløsning, Oktober, / 18

4 Towers of Hanoi Spillet Towers of Hanoi Spillet spilles med N skiver der kan placeres på tre pinde. Udgangspunktet er at alle skiverne ligger i orden på den første pind. Spilleren (evt. computeren) skal flytte skiverne (en af gangen) således at alle ender på den fjerneste pind. På intet tidspunkt må en stor skive ligge ovenpå en mindre skive. === ===== ======= ========= === ========= ======= ===== === ===== ======= ========= Martin Elsman (DIKU) Programmering og Problemløsning, Oktober, / 18

5 Towers of Hanoi Vi deler spillet Towers of Hanoi i to dele: 1 Et modul der implementerer spilkonfigurering og tegning af pinde og skiver. Dette modul vil håndhæve reglerne og give både dig og computeren mulighed for at spille. 2 En applikation der kan spille spillet ved brug af en rekursiv algoritme. Martin Elsman (DIKU) Programmering og Problemløsning, Oktober, / 18

6 Towers of Hanoi Modulet Pegs: module Pegs type t val init : int -> t val move : int -> int -> t -> t val tostring : t -> string module App = val reset : int -> unit val mv : int -> int -> unit Bemærk: Typen t refererer til den interne repræsentation af spil-konfigurationen (skiverne på pindene). Ved at gemme repræsentationen kan en bruger kun ændre på konfigurationen ved brug af init og move. Modulet App bruges når et menneske skal spille spillet i fsharpi. Martin Elsman (DIKU) Programmering og Problemløsning, Oktober, / 18

7 Towers of Hanoi DEMO af modulet Pegs bash-3.2$ fsharpc --nologo -a pegs.fsi pegs.fs bash-3.2$ fsharpi --nologo -r pegs.dll --readline- > open Pegs.App;; > reset 3;; === ===== ======= val it : unit = () > Martin Elsman (DIKU) Programmering og Problemløsning, Oktober, / 18

8 Towers of Hanoi Den interne spil-repræsentation Typen t i Pegs modulet er internt repræsentereret som en liste (af længde 3) af heltalslister. Som eksempel kan en start-konfiguration være repræsenteret som: [[1;2;3];[];[]] Operationen Pegs.move flytter det øverste tal i en liste til en anden hvis reglerne er opfyldt. Ellers fejler operationen. val move : int -> int -> t -> t Operationen Pegs.init konstruerer en ny start-konfiguration. val init : int -> t Operationen Pegs.toString konstruerer en streng-repræsentation af en konfiguration (til udskrivning). val tostring : t -> string Martin Elsman (DIKU) Programmering og Problemløsning, Oktober, / 18

9 Towers of Hanoi Hanoi algoritmen Kan vi finde en generel strategi for at gennemføre spillet uden at bryde reglerne? Ja Her er en strategi: For at flytte N skiver fra en startpind til en målpind, ved brug af en reservepind: Hvis N er 0: du er færdig! Ellers: 1 Flyt (rekursivt) N 1 skiver fra startpinden til reservepinden (med brug af målpinden som reservepind). 2 Flyt 1 pind fra startpinden til målpinden. 3 Flyt (rekursivt) N 1 skiver fra reservepinden til målpinden (med brug af startpinden som reservepind). === ===== ======= ========= === ===== ========= ======= Martin Elsman (DIKU) Programmering og Problemløsning, Oktober, / 18

10 Towers of Hanoi Hanoi algoritmen i F# (hanoi.fs) let rec hanoi n src aux tgt pegs = if n = 0 then pegs else let pegs = hanoi (n-1) src tgt aux pegs let pegs = Pegs.move src tgt pegs do printf "%s" (Pegs.toString pegs) let pegs = hanoi (n-1) aux src tgt pegs in pegs let play i = let pegs = Pegs.init i do printf "%s" (Pegs.toString pegs) hanoi i pegs let res = play 4 Spørgsmål: Vi udskriver konfigurationen efter hver flytning. Kan vi skrive en simpel funktion til beregning af antal flytninger? Martin Elsman (DIKU) Programmering og Problemløsning, Oktober, / 18

11 Towers of Hanoi Simpel funktion til beregning af antal flytninger: let rec hanoi_count n = if n <= 0 then 0 else 2*hanoi_count (n-1) + 1 do printf "%d\n" (hanoi_count 5) Bemærk: Funktionen hanoi_count n beregner tallet 2 n 1. Kodefilerne for pegs.fsi samt pegs.fs er tilgængelige på Absalon (under Filer). bash-3.2$ fsharpc --nologo -a pegs.fsi pegs.fs bash-3.2$ fsharpc --nologo -r pegs.dll hanoi.fs bash-3.2$ mono hanoi.exe... Martin Elsman (DIKU) Programmering og Problemløsning, Oktober, / 18

12 Liniegrafik Simpel funktionalitet til Liniegrafik: Biblioteket img_util.dll giver mulighed for at åbne en simpel GUI applikation indeholdende et bitmap der kan tegnes i. Biblioteksfilerne img_util.fsi samt img_util.fs er tilgængelige på Absalon (under Filer). Udvalgte funktioner (img_util.fsi) module ImgUtil type color = System.Drawing.Color val red : color type bitmap = System.Drawing.Bitmap val setline : color -> int*int -> int*int -> bitmap -> unit val runsimpleapp : string -> int -> int -> (bitmap -> unit) -> unit... Martin Elsman (DIKU) Programmering og Problemløsning, Oktober, / 18

13 Liniegrafik Bitmap Koordinater Origin (0, 0) findes i øverste venstre hjørne. Martin Elsman (DIKU) Programmering og Problemløsning, Oktober, / 18

14 Liniegrafik En simpel applikation Konstruer en applikation med et bitmap canvas. Tegn en rød firkant-spiral. Benyt setline funktionaliteten. Start spiralen i punkt (300, 300) Martin Elsman (DIKU) Programmering og Problemløsning, Oktober, / 18

15 Liniegrafik Koden for spiral.fs open ImgUtil let rec spiral bmp s i x y = if i >= 350 then () else let p1 = (x,y) let p2 = (x+i,y) let p3 = (x+i,y+i) let p4 = (x-s,y+i) let p5 = (x-s,y-s) do setline red p1 p2 bmp do setline red p2 p3 bmp do setline red p3 p4 bmp do setline red p4 p5 bmp spiral bmp s (i+2*s) (x-s) (y-s) do runsimpleapp "Spiral" (fun bmp -> spiral bmp > ignore) Martin Elsman (DIKU) Programmering og Problemløsning, Oktober, / 18

16 Liniegrafik Compilér og kør $ fsharpc -a img_util.fsi img_util.fs $ fsharpc -r img_util.dll spiral.fs $ mono32 spiral.exe Bemærk: På Mac OS er det nødvendigt at køre med mono32. På andre platforme skulle mono virke fint. Applikationen kan lukkes med ESC, f.eks. Martin Elsman (DIKU) Programmering og Problemløsning, Oktober, / 18

17 Liniegrafik Sierpinski tegn trekanter med firkanter! Kode: open ImgUtil let rec triangle bmp len (x,y) = if len < 25 then setbox blue (x,y) (x+len,y+len) bmp else let half = len / 2 do triangle bmp half (x+half/2,y) do triangle bmp half (x,y+half) do triangle bmp half (x+half,y+half) do runsimpleapp "Sierpinski" (fun bmp -> triangle bmp 400 (25,25) > ignore) Martin Elsman (DIKU) Programmering og Problemløsning, Oktober, / 18

18 Liniegrafik Martin Elsman (DIKU) Programmering og Problemløsning, Oktober, / 18

Programmering og Problemløsning, 2017

Programmering og Problemløsning, 2017 Programmering og Problemløsning, 2017 Programmering med Lister og Arrays Martin Elsman Department of Computer Science University of Copenhagen DIKU October 3, 2017 Martin Elsman (DIKU) Programmering og

Læs mere

Programmering og Problemløsning, 2017

Programmering og Problemløsning, 2017 Programmering og Problemløsning, 2017 Martin Elsman Datalogisk Institut Københavns Universitet DIKU 10. Oktober, 2017 Martin Elsman (DIKU) Programmering og Problemløsning, 2017 10. Oktober, 2017 1 / 15

Læs mere

Programmering og Problemløsning, 2017

Programmering og Problemløsning, 2017 Programmering og Problemløsning, 2017 Martin Elsman Department of Computer Science University of Copenhagen DIKU September 27, 2017 Martin Elsman (DIKU) Programmering og Problemløsning, 2017 September

Læs mere

Programmering og Problemløsning, 2017

Programmering og Problemløsning, 2017 Programmering og Problemløsning, 2017 Højere-ordens Funktioner Part I Martin Elsman Datalogisk Institut Københavns Universitet DIKU 20. November, 2017 Martin Elsman (DIKU) Programmering og Problemløsning,

Læs mere

Programmering og Problemløsning, 2017

Programmering og Problemløsning, 2017 Programmering og Problemløsning, 2017 Parsing med Højere-Ordens Funktioner Martin Elsman Datalogisk Institut Københavns Universitet DIKU 1. December, 2017 Martin Elsman (DIKU) Programmering og Problemløsning,

Læs mere

Programmering og Problemløsning, 2017

Programmering og Problemløsning, 2017 Programmering og Problemløsning, 2017 Træstrukturer Part III Martin Elsman Datalogisk Institut Københavns Universitet DIKU 3. November, 2017 Martin Elsman (DIKU) Programmering og Problemløsning, 2017 3.

Læs mere

Programmering og Problemløsning, 2017

Programmering og Problemløsning, 2017 Programmering og Problemløsning, 2017 Typer og Mønstergenkendelse Martin Elsman Datalogisk Institut Københavns Universitet DIKU 23. Oktober, 2017 Martin Elsman (DIKU) Programmering og Problemløsning, 2017

Læs mere

Programmering og Problemløsning, 2017

Programmering og Problemløsning, 2017 Programmering og Problemløsning, 2017 Input og Output Martin Elsman Datalogisk Institut Københavns Universitet DIKU 27. November, 2017 Martin Elsman (DIKU) Programmering og Problemløsning, 2017 27. November,

Læs mere

Dynamisk programmering

Dynamisk programmering Dynamisk programmering Dynamisk programmering Et algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Har en hvis lighed med divide-and-conquer: Begge opbygger løsninger til større problemer

Læs mere

Et SML-program til at finde rødder i en kontinuert funktion

Et SML-program til at finde rødder i en kontinuert funktion Et SML-program til at finde rødder i en kontinuert funktion Hans Hüttel Ole Høgh Jensen 11 januar 2002 Indhold 1 Om denne tekst 1 2 Hvad er bisektion? 1 3 Specifikation af vores program 2 4 SML-versionen

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

Dynamisk programmering

Dynamisk programmering Dynamisk programmering Dynamisk programmering Optimeringsproblem: man ønsker at finde bedste den kombinatoriske struktur blandt mange mulige. Dynamisk programmering Optimeringsproblem: man ønsker at finde

Læs mere

Programmering I Java/C#

Programmering I Java/C# Programmering I Java/C# Dit første projekt Datatekniker Intro to C# C# (C Sharp) Et enkelt, moderne, generelt anvendeligt, objektorienteret programmeringssprog Udviklet af Microsoft, ledet af danskeren

Læs mere

Dynamisk programmering

Dynamisk programmering Dynamisk programmering Dynamisk programmering Optimeringsproblem: man ønsker at finde bedste den kombinatoriske struktur (struktur opbygget af et endeligt antal enkeltdele) blandt mange mulige. Eksempler:

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 Tirsdag den 27. maj 2003, kl. 9.00 3.00 Opgave (25%) For konstanten π = 3.4592... gælder identiteten π 2 6 =

Læs mere

DM507 Algoritmer og datastrukturer

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

Læs mere

Undervisningsbeskrivelse

Undervisningsbeskrivelse Undervisningsbeskrivelse Stamoplysninger til brug ved prøver til gymnasiale uddannelser Termin Skoleåret 2016/17 Institution Hansenberg Gymnasium Uddannelse Fag og niveau Lærer Hold htx Programmering,

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet side af sider Danmarks Tekniske Universitet Skriftlig prøve, den. maj 00. Kursusnavn Algoritmer og datastrukturer Kursus nr. 06. Tilladte hjælpemidler: Alle hjælpemidler. Vægtning af opgaverne: Opgave

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2017 Projekt, del III Institut for matematik og datalogi Syddansk Universitet 6. april, 2017 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

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

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2019 Projekt, del III Institut for matematik og datalogi Syddansk Universitet 10. april, 2019 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

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet side af sider Danmarks Tekniske Universitet Skriftlig prøve, den. maj 00. Kursusnavn Algoritmer og datastrukturer I Kursus nr. 005. Tilladte hjælpemidler: Alle skriftlige hjælpemidler. Vægtning af opgaverne:

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet side af 2 sider Danmarks Tekniske Universitet Skriftlig prøve, den 2. maj 200. Kursusnavn Algoritmer og datastrukturer I Kursus nr. 0205. Tilladte hjælpemidler: Alle skriftlige hjælpemidler. Vægtning af

Læs mere

Programmering 1999 KVL Side 5-4. Klassen Time: metoder. Metoder i objektet giver mulighed for at ændre tilstanden, eller kigge på tilstanden.

Programmering 1999 KVL Side 5-4. Klassen Time: metoder. Metoder i objektet giver mulighed for at ændre tilstanden, eller kigge på tilstanden. Programmering 1999 Forelæsning 5, tirsdag 14. september 1999 Oversigt Mere om klasser og objekter Klassefelter: static Konstante felter: final Indkapsling og synlighed: private og public Overlæsning af

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet side af 2 sider Danmarks Tekniske Universitet Skriftlig prøve, den 2. maj 200. Kursusnavn Algoritmer og datastrukturer Kursus nr. 02326. Tilladte hjælpemidler: Alle hjælpemidler. Vægtning af opgaverne:

Læs mere

Skriftlig eksamen i Datalogi

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

Læs mere

Billedbehandling Pixlr.com Side 1

Billedbehandling Pixlr.com Side 1 Billedbehandling Pixlr.com Side 1 Billedbehandling Pixlr.com Side 2 Indholdsfortegnelse Det første skærmbillede... Side 3 Navigation... Side 4 Åbne Pixlr Advanced... Side 5 Inde i programmet... Side 6

Læs mere

Lær Python - Dag 4, modul 2 Objektorienteret programmering

Lær Python - Dag 4, modul 2 Objektorienteret programmering Lær Python - Dag 4, modul 2 Objektorienteret programmering Simon J. Larsen 28. oktober 2017 Institut for Matematik og Datalogi Metoder Metoder Indtil videre har vi kun brugt objekter til at gemme værdier.

Læs mere

Introduktion til ActionScript, fortsat

Introduktion til ActionScript, fortsat Introduktion til ActionScript, fortsat Kaspar Rosengreen Nielsen kaspar@interactivespaces.net i n t e r a c t i v e s p a c e s. n e t Kaspar Nielsen, kaspar@interactivespaces.net 1 Dagens program Opsamling

Læs mere

Algorithms and Architectures I Rasmus Løvenstein Olsen (RLO) Mm2: Rekursive algoritmer og rekurrens - October 12, 2010

Algorithms and Architectures I Rasmus Løvenstein Olsen (RLO) Mm2: Rekursive algoritmer og rekurrens - October 12, 2010 Algorithms and Architectures I Rasmus Løvenstein Olsen (RLO) Mm2: Rekursive algoritmer og rekurrens - October 12, 2010 1 Algorithms and Architectures II 1. Introduction to analysis and design of algorithms

Læs mere

Introduktion til funktioner, moduler og scopes i Python

Introduktion til funktioner, moduler og scopes i Python Denne guide er oprindeligt udgivet på Eksperten.dk Introduktion til funktioner, moduler og scopes i Python Denne artikel er fortsættelsen af "I gang med Python", som blevet publiceret her på sitet for

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

Skriftlig Eksamen Algoritmer og Datastrukturer 2 (2003-ordning)

Skriftlig Eksamen Algoritmer og Datastrukturer 2 (2003-ordning) Skriftlig Eksamen Algoritmer og Datastrukturer 2 (2003-ordning) Datalogisk Institut Aarhus Universitet Fredag den 28. maj 2004, kl. 9.00 13.00 Opgave 1 (20%) En (r, k) kryds-graf er en orienteret graf

Læs mere

Undervisningsbeskrivelse

Undervisningsbeskrivelse Undervisningsbeskrivelse Stamoplysninger til brug ved prøver til gymnasiale uddannelser Termin Skoleåret 2015/16 Institution Hansenberg Gymnasium Uddannelse Fag og niveau Lærer Hold htx Programmering,

Læs mere

Online billede filtrering

Online billede filtrering Online billede filtrering Eksamensprojekt 2014 Andreas Lorentzen, klasse 3.4 Roskilde Tekniske Gymnasium Programmering C 09-05-2014 I dette projekt vil jeg demonstrerer en af de mange ting moderne browsere

Læs mere

Objects First with Java A Practical Introduction Using BlueJ

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

Læs mere

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

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet side af sider Danmarks Tekniske Universitet Skriftlig prøve, den 3. maj 0. Kursusnavn: Algoritmer og datastrukturer I Kursus nr. 005. Varighed: timer Tilladte hjælpemidler: Alle skriftlige hjælpemidler.

Læs mere

Binære søgetræer. Binære søgetræer. Nærmeste naboer. Nærmeste nabo

Binære søgetræer. Binære søgetræer. Nærmeste naboer. Nærmeste nabo Philip Bille er. Vedligehold en dynamisk mængde S af elementer. Hvert element har en nøgle x.key og satellitdata x.data. operationer. PREDECESSOR(k): returner element x med største nøgle k. SUCCESSOR(k):

Læs mere

Bits DM534. Rolf Fagerberg, 2012

Bits DM534. Rolf Fagerberg, 2012 Bits DM534 Rolf Fagerberg, 2012 Resume af sidst Overblik over kursus Introduktion. Tre pointer: Datalogi er menneskeskabt og dynamisk. Tidslinie over fremskridt mht. ideer og hardware. Algoritme er et

Læs mere

Instruktion til banelægning i Condes til træningsløb

Instruktion til banelægning i Condes til træningsløb Instruktion til banelægning i Condes til træningsløb Har du ikke Condes 9 på din computer kan det hentes på www.condes.dk RSOK s login oplysninger findes her (kræver login til klubbens hjemmeside, har

Læs mere

Spil Master Mind. Indledning.

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

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet side af 2 sider Danmarks Tekniske Universitet Skriftlig prøve, den 23. maj 20. Kursusnavn: Algoritmer og datastrukturer I Kursus nr. 0205. Varighed: 4 timer Tilladte hjælpemidler: Alle skriftlige hjælpemidler.

Læs mere

Algorithms and Architectures I Rasmus Løvenstein Olsen (RLO), Jimmy Jessen Nielsen (JJE) Mm2: Rekursive algoritmer og rekurrens - October 10, 2008

Algorithms and Architectures I Rasmus Løvenstein Olsen (RLO), Jimmy Jessen Nielsen (JJE) Mm2: Rekursive algoritmer og rekurrens - October 10, 2008 Algorithms and Architectures I Rasmus Løvenstein Olsen (RLO), Jimmy Jessen Nielsen (JJE) Mm2: Rekursive algoritmer og rekurrens - October 10, 2008 1 Algorithms and Architectures II 1. Introduction to analysis

Læs mere

lineær regression er en metode man bruger for at finde den mindste afstand mellem bestemte punkter ved at bruge denne formel: a= n i=1 i=1

lineær regression er en metode man bruger for at finde den mindste afstand mellem bestemte punkter ved at bruge denne formel: a= n i=1 i=1 Linær regression lineær regression er en metode man bruger for at finde den mindste afstand mellem bestemte punkter ved at bruge denne formel: a= (Xi Yi) n * Xi 2 n * x 2 x * y Figur 1. Nu vil vi løse

Læs mere

Divide-and-Conquer algoritmer

Divide-and-Conquer algoritmer Divide-and-Conquer algoritmer Divide-and-Conquer algoritmer Det samme som rekursive algoritmer. Divide-and-Conquer algoritmer Det samme som rekursive algoritmer. 1. Opdel problem i mindre delproblemer

Læs mere

Introduktion Til Konkurrenceprogrammering

Introduktion Til Konkurrenceprogrammering Introduktion Til Konkurrenceprogrammering Søren Dahlgaard og Mathias Bæk Tejs Knudsen {soerend,knudsen}@di.ku.dk Version 0.1 Indhold Indhold i Introduktion 1 1 Palindromer 3 1.1 Introduktion til Python...............

Læs mere

Skriftlig Eksamen Algoritmer og Datastrukturer 1. Datalogisk Institut Aarhus Universitet

Skriftlig Eksamen Algoritmer og Datastrukturer 1. Datalogisk Institut Aarhus Universitet Side af 1 sider Skriftlig Eksamen Algoritmer og Datastrukturer 1 Datalogisk Institut Aarhus Universitet Dette eksamenssæt består af en kombination af små skriftlige opgaver og multiplechoice-opgaver. Opgaverne

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

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

Manual til Explain Everthing

Manual til Explain Everthing Manual til Explain Everthing Af Randi Majgård Høgh VIFIN Indholdsfortegnelse Forord Hjælp & indstillinger Oprettelse af dokumenter Gennemgang af værktøjer Video - og lydoptagelser Hvordan deler og eksporter

Læs mere

Moduler i Standard ML

Moduler i Standard ML Moduler i Standard ML Hans Hüttel December 2001 I løbet af datalogikurset har vi haft glæde af en hel række forskellige standardmoduler som f.eks. Math, Int, Real og String. Disse moduler kan, har vi set,

Læs mere

uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Ksys, aritm, StdCtrls, Buttons, ComCtrls;

uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Ksys, aritm, StdCtrls, Buttons, ComCtrls; unit emcam; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Ksys, aritm, StdCtrls, Buttons, ComCtrls; type RData = Record Alfa,Beta : Real; End; RResult = Record

Læs mere

Kompendium til Geogebra

Kompendium til Geogebra Kompendium til Geogebra Hardsyssel Efterskole Matematik 8. Klasse Side 1 af 12 Kompendium til Geogebra 1. Generel præsentation af Geogebra 1.1 Download af programmet Geogebra kan gratis downloades fra

Læs mere

Divide-and-Conquer algoritmer

Divide-and-Conquer algoritmer Divide-and-Conquer algoritmer Divide-and-Conquer algoritmer Det samme som rekursive algoritmer. Divide-and-Conquer algoritmer Det samme som rekursive algoritmer. 1. Opdel problem i mindre delproblemer

Læs mere

Orienterede grafer. Orienterede grafer. Orienterede grafer. Vejnetværk

Orienterede grafer. Orienterede grafer. Orienterede grafer. Vejnetværk Philip Bille Orienteret graf (directed graph). Mængde af knuder forbundet parvis med orienterede kanter. Vejnetværk Knude = vejkryds, kant = ensrettet vej. deg + (6) =, deg - (6) = sti fra til 6 8 7 9

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

Et udtrykstrç med de ære regnearter, heltalskonstanter og variabler beskrives. Type Expr = Sumèplus, minus, times, div: Args, const: Int, name: Textè

Et udtrykstrç med de ære regnearter, heltalskonstanter og variabler beskrives. Type Expr = Sumèplus, minus, times, div: Args, const: Int, name: Textè Opgave 1 è20èè Et udtrykstrç med de ære regnearter, heltalskonstanter og variabler beskrives af fçlgende rekursive Trine-type: Type Expr = Sumèplus, minus, times, div: rgs, const: Int, name: Textè Type

Læs mere

DM507 Algoritmer og datastrukturer

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

Læs mere

portal.microsoftonline.com

portal.microsoftonline.com Office Online Office Online er et supplement til Officepakken, som du har liggende på computeren. Office Online ligger i skyen og åbnes i din webbrowser på adressen: portal.microsoftonline.com Du skal

Læs mere

DATALOGISK INSTITUT, AARHUS UNIVERSITET

DATALOGISK INSTITUT, AARHUS UNIVERSITET DATALOGISK INSTITUT, AARHUS UNIVERSITET Det Naturvidenskabelige Fakultet EKSAMEN Grundkurser i Datalogi Antal sider i opgavesættet (incl. forsiden): 6 (seks) Eksamensdag: Fredag den 25. juni 200, kl. 9.00-.00

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

Symmetrisk Traveling Salesman Problemet

Symmetrisk Traveling Salesman Problemet Symmetrisk Traveling Salesman Problemet Videregående Algoritmik, Blok 2 2008/2009, Projektopgave 2 Bjørn Petersen 9. december 2008 Dette er den anden af to projektopgaver på kurset Videregående Algoritmik,

Læs mere

Procedurer og funktioner - iteration og rekursion

Procedurer og funktioner - iteration og rekursion Procedurer og funktioner - iteration og rekursion Procedurer De første procedurer vi så på var knyttet til handlinger, der skulle udføres, fx at klikke på en knap for at lukke en form eller afslutte et

Læs mere

Introduktion til Banedesign / Visio. af Preben Nielsen

Introduktion til Banedesign / Visio. af Preben Nielsen Introduktion til Banedesign / Visio af Preben Nielsen Formål med introduktionen: At give nye brugere en grundlæggende indlærring i brugen af Banedesign og Visio 2013 Meget kort fortalt om Visio og Banedesign:

Læs mere

Enigma. Et programmeringssprog. Forfatter: Niels Serup X. Y Vejleder: A B C. Fag: Programmering Uddannelsessted: N M

Enigma. Et programmeringssprog. Forfatter: Niels Serup X. Y Vejleder: A B C. Fag: Programmering Uddannelsessted: N M Enigma Et programmeringssprog Forfatter: Niels Serup X. Y Vejleder: A B C Fag: Programmering Uddannelsessted: N M 25. maj 2010 Indholdsfortegnelse Indledning 3 Sproget 3 Syntax.............................................

Læs mere

Hjælp! Der er brok med mit ML-program

Hjælp! Der er brok med mit ML-program Hjælp! Der er brok med mit ML-program Hans Hüttel December 2001 Indhold 1 Formålet med denne note 1 2 Der er ere slags fejl 2 2.1 Brugerfejl............................. 2 2.2 Syntaksfejl.............................

Læs mere

Divide-and-Conquer algoritmer

Divide-and-Conquer algoritmer Divide-and-Conquer algoritmer Divide-and-Conquer algoritmer Det samme som rekursive algoritmer. 1. Opdel problem i mindre delproblemer (af samme type). 2. Løs delproblemerne ved rekursion (dvs. kald algoritmen

Læs mere

SPHERO 2.0 undervisningsforløb til mellemtrinnet i matematik Polygoner og vinkler

SPHERO 2.0 undervisningsforløb til mellemtrinnet i matematik Polygoner og vinkler SPHERO 2.0 undervisningsforløb til mellemtrinnet i matematik Polygoner og vinkler Fælles mål 2014 Matematik Eleven kan handle med overblik i sammensatte situationer med matematik. Eleven kan anvende geometriske

Læs mere

Divide-and-Conquer algoritmer

Divide-and-Conquer algoritmer Divide-and-Conquer algoritmer Divide-and-Conquer algoritmer Det samme som rekursive algoritmer. Divide-and-Conquer algoritmer Det samme som rekursive algoritmer. 1. Opdel problem i mindre delproblemer

Læs mere

MIPS, registerallokering og MARS

MIPS, registerallokering og MARS MIPS, registerallokering og MARS Torben Mogensen 2011 Resumé Vi beskriver modulerne Mips.sml og RegAlloc.sml, samt hvordan de bruges sammen med MIPS-emulatoren MARS. 1 MIPS modulet Modulet Mips.sml indeholder

Læs mere

Orienterede grafer. Introduktion Repræsentation Søgning Topologisk sortering og DAGs Stærke sammenhængskomponenter Implicitte grafer.

Orienterede grafer. Introduktion Repræsentation Søgning Topologisk sortering og DAGs Stærke sammenhængskomponenter Implicitte grafer. Orienterede grafer Introduktion Repræsentation Søgning Topologisk sortering og DAGs Stærke sammenhængskomponenter Implicitte grafer Philip Bille Orienterede grafer Introduktion Repræsentation Søgning Topologisk

Læs mere

Lineær Programmering i GeoGebra Side 1 af 8

Lineær Programmering i GeoGebra Side 1 af 8 Lineær Programmering i GeoGebra Side 1 af 8 Grundlæggende find selv flere funktioner, fx i GG s indbyggede hjælpefunktion. Vær opmærksom på at grænsefladen i GeoGebra ændrer sig med tiden, da værktøjet

Læs mere

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

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

Læs mere

Orienterede grafer. Orienterede grafer. Orienterede grafer. Orienterede grafer

Orienterede grafer. Orienterede grafer. Orienterede grafer. Orienterede grafer Philip Bille Orienteret graf. Mængde af knuder forbundet parvis med orienterede kanter. deg + (7) =, deg - (7) = Lemma. v V deg - (v) = v V deg + (v) = m. Bevis. Hver kant har netop en startknude og slutknude.

Læs mere

Flowchart og Nassi ShneidermanN Version. Et flowchart bruges til grafisk at tegne et forløb. Det kan fx være et programforløb for en microcontroller.

Flowchart og Nassi ShneidermanN Version. Et flowchart bruges til grafisk at tegne et forløb. Det kan fx være et programforløb for en microcontroller. Flowchart Et flowchart bruges til grafisk at tegne et forløb. Det kan fx være et programforløb for en microcontroller. Et godt program til at tegne flowcharts med er, EDGE-Diagrammer, eller Smartdraw.

Læs mere

Kursusarbejde 3 Grundlæggende Programmering

Kursusarbejde 3 Grundlæggende Programmering Kursusarbejde 3 Grundlæggende Programmering Arne Jørgensen, 300473-2919 klasse dm032-1a 21. november 2003 Indhold 1. Kode 2 1.1. forestillinger.h............................................. 2 1.2. forestillinger.cc.............................................

Læs mere

Algoritmisk geometri

Algoritmisk geometri Algoritmisk geometri 1 Intervalsøgning 2 Motivation for intervaltræer Lad der være givet en database over ansatte i en virksomhed Ansat Alder Løn Ansættelsesdato post i databasen Antag, at vi ønsker at

Læs mere

DANMARKS TEKNISKE UNIVERSITET

DANMARKS TEKNISKE UNIVERSITET DANMARKS TEKNISKE UNIVERSITET Skriftlig prøve, 14. december 2018, 4 timer Side 1 af 18 Kursus navn: 02101 Indledende Programmering Kursus : 02101 Tilladte hjælpemidler: Ikke-digitale skriftlige hjælpemidler

Læs mere

DM13-3. Obligatorisk opgave E.05 Håndoptimering af SPARC assembler-kode

DM13-3. Obligatorisk opgave E.05 Håndoptimering af SPARC assembler-kode - 3. Obligatorisk opgave E.05 Håndoptimering af SPARC assembler-kode Jacob Aae Mikkelsen - 191076 12. december 2005 1 Indhold 1 Opgave beskrivelse 2 2 Muligheder for optimering 2 2.1 efter branch.........................

Læs mere

Anvendelse af del og hersk princippet involverer altså problemopdelning og løsningskombination.

Anvendelse af del og hersk princippet involverer altså problemopdelning og løsningskombination. 32. Rekursion Rekursive funktioner er uundværlige til bearbejdning af rekursive datastrukturer. Rekursive datastrukturer forekommer ofte - f.eks. både som lister og træer. Rekursiv problemløsning via del

Læs mere

Generel projektbeskrivelse

Generel projektbeskrivelse 02121 Ingeniørarbejde Softwareteknologi Januar 2010 1 Introduktion Generel projektbeskrivelse Formålet med programmeringsprojektet er at give deltagerne erfaring med at designe og konstruere et simpelt

Læs mere

Sådan laver du en Baggrund i Animtoon

Sådan laver du en Baggrund i Animtoon Sådan laver du en Baggrund i Animtoon Først skal du finde dig et billede du vil bruge som baggrund, det kan være en tegning du selv har tegnet eller et billede du har taget med et kamera, som for eksempel

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 Onsdag den. august 200, kl. 9.00.00 Opgave (25%) Lad A = A[] A[n] være et array af heltal. Længden af det længste

Læs mere

Syntaks og syntaksgenkendelse, særligt regulære udtryk og tilstandsmaskiner og lidt om anvendelser i bioinformatik

Syntaks og syntaksgenkendelse, særligt regulære udtryk og tilstandsmaskiner og lidt om anvendelser i bioinformatik Datalogi C, RUC Forelæsning 22. november 2004 Henning Christiansen Syntaks og syntaksgenkendelse, særligt regulære udtryk og tilstandsmaskiner og lidt om anvendelser i bioinformatik Dagens program Hvad

Læs mere

Athena DIMENSION Tværsnit 2

Athena DIMENSION Tværsnit 2 Athena DIMENSION Tværsnit 2 Januar 2002 Indhold 1 Introduktion.................................. 2 2 Programmets opbygning........................... 2 2.1 Menuer og værktøjslinier............................

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

Scratch. - introduktionshæfte

Scratch. - introduktionshæfte Scratch - introduktionshæfte Opret bruger 2 Det første, du skal gøre er at oprette dig som bruger, så dine projekter bliver gemt. Gå ind på scratch.mit.edu/ Vælg knappen Meld dig ind i Scratch i den øverste

Læs mere

Michael Jokil 11-05-2012

Michael Jokil 11-05-2012 HTX, RTG Det skrå kast Informationsteknologi B Michael Jokil 11-05-2012 Indholdsfortegnelse Indledning... 3 Teori... 3 Kravspecifikationer... 4 Design... 4 Funktionalitet... 4 Brugerflade... 4 Implementering...

Læs mere

Et udtryk er (som bekendt?) lineært hvis den differentierede er en konstant funktion, dvs. at den ikke afhænger af x. Betragt f lgende værdiprocedurer

Et udtryk er (som bekendt?) lineært hvis den differentierede er en konstant funktion, dvs. at den ikke afhænger af x. Betragt f lgende værdiprocedurer Opgave 1 (25%) Simple udtryk med +, - og * over heltal og en enkelt variabel x kan repræsenteres som værdier af f lgende type: Type Expression = Sum(const: Int, x: Unit, plus, minus, times: Arguments)

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet ksamen 036, side af sider anmarks Tekniske Universitet Skriftlig prøve, den 3. maj 0. Kursusnavn: lgoritmer og datastrukturer Kursus nr. 036. Varighed: timer Tilladte hjælpemidler: lle skriftlige hjælpemidler.

Læs mere

Ideer til datalogiprojekter. Keld Helsgaun

Ideer til datalogiprojekter. Keld Helsgaun Ideer til datalogiprojekter Keld Helsgaun 1 Keld Helsgaun Forskning: kombinatorisk optimering heuristisk søgning (kunstig intelligens) programmeringsværktøjer Undervisning: programmering, datastrukturer

Læs mere

Lineær regression i Standard ML

Lineær regression i Standard ML Lineær regression i Standard ML Hans Hüttel 1. november 2001 Indhold 1 Hvad denne note handler om 2 2 Hvor bruger man lineær regression? 2 3 Problemanalyse 3 3.1 Den matematiske teori......................

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

Samtale og farveark. Lærereksemplar. Kun til lærerbrug. Før Rema

Samtale og farveark. Lærereksemplar. Kun til lærerbrug. Før Rema Samtale og farveark Før Rema 1 Her må du farve. 2 Forlaget Delta Skriv ovenpå 3 gange, begynd ved prikken. Skriv ovenpå - skriv selv. Tæl. Før Rema 3 Træk streg mellem tal og tegning. Tegn en terning magen

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

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

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

Seriediagrammer - Guide til konstruktion i LibreOffice Calc

Seriediagrammer - Guide til konstruktion i LibreOffice Calc Seriediagrammer - Guide til konstruktion i LibreOffice Calc På forbedringsvejlederuddannelsen anvender vi seriediagrammer til at skelne mellem tilfældig og ikketilfældig variation. Med et seriediagram

Læs mere