2 Funktionsorienteret programmering i Scheme.

Størrelse: px
Starte visningen fra side:

Download "2 Funktionsorienteret programmering i Scheme."

Transkript

1 2 Funktionsorienteret programmering i Scheme. Lisp og Scheme. Listebegrebet i Lisp. Funktionsdefinition og lambdaudtryk. Navnebinding. Iteration. Første-klasses funktioner. Closures som klasser. Praktisk kørsel af Scheme. Litteratur om Scheme. s. 21 I dette kapitel vil vi introducere programmeringssproget Scheme, og dermed Lispfamilien af sprog. Vi vil endvidere vende tilbage til nogle af de emner, som blev diskuteret i det første kapitel, men her på en mere konkret og sprog-specifik måde. 21

2 Scheme: Et sprog i Lisp-familien. Lisp er det næstældste programmeringssprog efter Fortran. Lisp var det første funktionsorienterede programmeringssprog. Lisp udviklede sig hurtigt til at være et sprog, som kombinerede flere paradigmer: Funktionsorienteret programmering. Imperativ programmering. Objekt-orienteret programmering. Der har de sidste 30 år været mange Lisp-dialekter, som idag må betragtes som uddøde. De dominerede Lisp-dialekter er idag Common Lisp og Scheme. Scheme kan siges at være en Uncommon Lisp. s

3 Historik. Lisp 1 (pure lisp, 1958) Inspireret af Bygger ovenpå Lisp 1.5 Interlisp (1966) MacLisp Lisp machine Lisp (Zeta Lisp) Loops Scheme (1975) CommonLisp Flavors CLOS s. 23 Denne slide giver kun et lille overblik over de væsentligste Lisp dialekter gennem tiden. I dette kursus ser vi først på Scheme, og senere på CLOS, som er en objekt-orienteret overbygning på Common Lisp. Scheme er et meget overskueligt, rent og kraftfuldt sprog i Lisp familien. Common Lisp er derimod stort, og mindre rent, og det er næsten umuligt at få overblik over. I kraft af sin rigdom er Common Lisp dog et kraftfuldt sprog med mangfoldige funktioner og faciliteter, der gør god nytte i praktiske programudviklingssituationer. Scheme er defineret i en kort, men præcis sprograpport: Den 4. reviderede rapport om det Algoritmiske Sprog Scheme (titlen oversat). 23

4 Lister. Den originale, og den primære datastruktur i Lisp. Lister kan indeholde elementer af alle mulige, blandede typer. Konstruktion: (cons a lst) Selektion: (car ny-lst) = a (cdr ny-lst) = lst Et udtryk (et programfragment) er syntaktisk set selv en liste. Scheme slår ikke bro mellem sprogets listebegreb og den syntaktiske repræsentation af Scheme-programmer. ny-lst lst a b c Egentlig liste: d (a b c d) Fuld dot-notation: (a. (b. (c. (d. ( ) )))) ( ) Uegentlig liste: (a b. c) a b c s. 24 De strukturer, som kan konstrueres ved brug af cons, er i realiteten binære træer: (cons left right). Et sådant udtryk kaldes traditionelt et S-udtryk (symbolsk udtryk). Et S-udtryk, som via højre-grenen ender i den tomme liste ( ) opfattes som en egentlig liste (på øverste niveau). Elementerne i en egentlig liste kan naturligvis være hvad som helst, incl. atomer (tal og symboler), uegentlige lister, eller egentlige lister. Det er også naturligt at omtale de primitive atomare typer: tal og symboler. Scheme har et meget veludviklet talbegreb, som er overlegen i forhold til de fleste andre sprog. Symboler er objekter, der er karakteriseret af (1) et navn og af (2) entydig identitet. Sidstnævnte betyder, at hver gang man refererer til et symbol med navn, f.eks., sym, får man fat i et bestemt objekt, hvis navn er sym. Dette er altså en modsætning til tekststrenge, hvor der kan eksistere vilkårlig mange forskellige objekter som er sammensat af tegnene s, y og m. Ud over dette er symbolbegrebet i Scheme desværre ikke særlig veludviklet. I mere klassiske Lisp dialekter kan man tilknytte navngivne egenskaber (værdier) til symboler, kaldet properties. 24

5 Definition og anvendelse af funktioner. Funktions-objekter: Closures. (lambda (parametre ) body ) Funktionsanvendelse (-kald): (e 1 e 2... e n ) Returnerer et funktions-objekt. Lukker af over (indfanger) navnene i funktionsobjektets omgivelser: Definitioner: Statisk navnebinding. Giver en closure (define name expression ) Environment + syntaktisk form. Formen af funktionsdefinition: Alle udtryk i kaldet evalueres på en uniform måde. Værdien af e 1 skal være et funktionsobjekt. Værdierne af e 2... e n kan være vilkårlige objekter. (define name (lambda (parameters ) body )) (define (name parameters ) body ) ~ Globale definitioner: Binder navne i det globale environment. s. 25 Bemærk closure begrebet, som jo altså dækker over en funktion opfattet som et objekt. Dette objekt består dels af funktionens syntaktiske form, og de omgivelser (det environment = samling af navnebindinger), hvori funktionen er defineret. Nederst til højre vises to forskellige former for funktionsdefinition: og (1) (define name (lambda (parameters) body)) (2) (define (name parameters) body) Det er meget væsentligt at forstå at (1) er den oprindelige form, som er i overensstemmelse med den generelle form af define (define name expression) hvor expression evalueres til en værdi, der bindes til navnet name. Formen (2) er syntaktisk sukker for (1), og den har følgende to fordele: Kortere og mindre indlejret. Bestanddelen (name parameters) svarer til kaldsformen af funktionen. Derfor bliver (2) næsten altid benyttet. Men vær sikker på at forstå, at hver gang I ser formen (2) er det blot en overfladisk omskrivning af formen (1). Scheme-systemet er fuldstændig blind for, om man bruger (1) eller (2). Så snart den ser en definition på formen (2) omformer systemet det internt til en definition af formen (1). 25

6 Navnebinding (1): Eksempel. Navnebinding med sukker: (define (solve a b c) (let ((det (- (* b b) (* 4 a c)))) (cond ((> det 0) (list (/ (- (- b) (sqrt det)) (* 2 a)) (/ (+ (- b) (sqrt det)) (* 2 a)))) ((= det 0) (list (/ (- b) (* 2 a)))) (else ())))) Navnebinding uden sukker (illustrerer brug af anonym funktion): (define (solve a b c) ((lambda (det) (cond ((> det 0) (list (/ (- (- b) (sqrt det)) (* 2 a)) (/ (+ (- b) (sqrt det)) (* 2 a)))) ((= det 0) (list (/ (- b) (* 2 a)))) (else ()))) (- (* b b) (* 4 a c)))) s. 26 I eksemplet løses en andengradsligning, i forlængelse af det samme eksempel fra forrige kapitel. Ovenstående illustrerer også cond og list funktionerne. Cond er et eksempel på et betinget udtryk, altså et udtryk der udvælges og beregnes på baggrund af beregning af én eller flere boolske udtryk. Forneden ses hvordan navnebinding i bund og grund realiseres som et kald af en anonym funktion, noteret ved et lambda-udtryk. 26

7 Navnebinding (2). Lokale bindinger af navne: - Simultane definitioner (let ((n1 v1)...) body) (let ((n1 v1)) (let* ((n2 v2)...) body)) ~ ((lambda (n1...) body) v1) - Sekventielle definitioner (let* ((n1 v1) (n2 v2)...) body) ~ Ex (let ((x 5) (y (+ x 7))) (- x y)) Hver navnebinding er gyldig i body (let* ((x 5) (y (+ x 7))) (- x y)) Hver navnebinding er gyldig "til højre" for bindingen. x refererer til et x udenfor let. y er ikke i scope af det netop definerede x. x refererer til det netop definerede x. s. 27 Let, Let*, letrec er (ligesom) cond essentiel syntax ifølge schemerapporten. At det er syntaks betyder at let mv. ikke kan defineres som funktioner. I Lisp jargon kaldes sådanne også special forms. Man kan opfatte let mv. for syntaktiske abstraktioner. (let ((n v)) x) er således en syntaktisk abstraktion over ((lambda (n) x) v)). Syntaktiske abstraktioner kan i de fleste Scheme systemer defineres via makroer. 27

8 Navnebinding (3). Lokale bindinger af navne: Gensidigt rekursive definitioner: Eksempel: (letrec ((f1 (lambda (...)... (f2...)) ) (f2 (lambda (...)... (f1...)) )) body) Hver af navnebindingerne er gyldige i hele letrec-en. Fortolkning af lokale defines : (define (f...) (define (f1...) body1) (define (f2...) body2) body) ~ (define (f...) (letrec ((f1 (lambda (...) body1) (f2 (lambda (...) body2)) body)) s. 28 Man kan omhyggeligt overbevise sig om at der er forskel på kravet til letrec på den ene side, og let og let*, som introduceret på forrige slide. I letrec skal f2 eksempelvis kunne refereres i kroppen af f1. Det betyder at scope af f2 ikke blot er kroppen af letrec, men også de udtryk, som det selv samt tidligere og efterfølgende navne bindes til. Derfor er letrec speciel og fundamental i den forstand at det kun vanskeligt kan realiseres af de andre former. 28

9 Iteration og hale-rekursion. rekursiv løsning: (define (list-length l) ; pre-betingelse: l er en egentlig liste (cond ((null? l) 0) ((pair? l) (+ 1 (list-length (cdr l)))))) halerekursiv løsning: (define (list-length l) ; pre-betingelse: l er en egentlig liste (define (list-length-iter lst count) (if (null? lst) count (list-length-iter (cdr lst) (+ 1 count)))) (list-length-iter l 0)) s. 29 På denne slide viser vi et eksempel på iteration ved almindelig rekursion og ved halerekursion. Eksemplet er ikke det samme som i kapitel 1, men dog tilsvarende. Funktionerne ovenfor tæller antallet af elementer i en egentlig liste (jf. defintionen tidligere i dette kapitel). I Scheme insisterer man på, at enhver implementation skal håndtere halerekursion på lager-effektiv vis. 29

10 Første klasses funktioner (1): Eksempler. Funktioner er af første klasse fordi: 1. De kan overføres som parametre. 2. De kan returneres som resultat. 3. De kan lagres i datastrukturer. Scheme har statisk binding af frie navne: Frie navne i en funktion bindes i funktiondefinitionens omgivelse, ikke i funktionskaldets omgivelse. Eksempel 1: (define (deriv f dx) (lambda (x) (/ (- (f (+ x dx)) (f x)) dx))) > (let ((res (deriv (lambda (x) (* x x x)).0001))) (map res (list ))) ( ) s. 30 Generelt gælder der for alle typer af data, at disse er af 1. klasse hvis ovenstående tre krav (1 3) er opfyldt. Det er ikke overraskende at f.eks. tal er af første klasse. Men det er sikkert nyt for mange studerende, at funktioner er af 1. klasse. Nederst ser vi et eksempel på, at vi kan returnere en funktion fra en funktion. Eksemplet illustrerer i Scheme hvordan vi numerisk kan differentiere en funktion af én reel variabel. Vi minder om, at netop dette eksempel blev diskuteret mere generelt i den første forelæsning om funktionsorienteret programmering. Vi elaborerer videre på eksemplet på næste slide. 30

11 Første klasses funktioner (2): Eksempler. Eksempel 2: > (let ((f-list (map deriv (list (lambda(x) (* x x)) sin log) (list )))) (ny-map f-list (list ))) Her laves en liste af funktioner. (( ) ( ) ( )) (define (ny-map function-list value-list) ; anvend hver af funktionerne i function-list på value-list, ; og returner listen af resultat-lister. (if (null? function-list) () (cons (map (car function-list) value-list) (ny-map (cdr function-list) value-list)))) s. 31 I dette eksempel betegner f-list en liste af funktioner, som fremkommer ved at mappe funktionen deriv (fra forrige side) på funktionerne x*x, sin(x) og cos(x). Den udgave af map, vi anvender kalder først deriv på x*x og første element i listen af er. Dernæst anvendes sinus på det andet af erne, osv. Mapning går generelt ud på at anvende en funktion på alle elementer i en liste, og at returnere listen af de resulterende funktionsværdier. Vi vil ikke diskutere emnet i større detalje her, idet mapning vil blive behandlet i stor detalje i kapitlet om højreordensfunktioner. For at efterprøve resultatet har vi behov for at anvende hver af funktionerne i listen på hvert at tallene i en liste, her ( ). Dertil programmerer vi en særlig funktion nymap, som er vist i lille font forneden på denne slide. Bemærk at det er muligt at lave en liste af funktioner. Dette illustrerer 3. punkt af kravet til 1. klasses objekter. 31

12 Lambda - Den Ultimative. Førsteklasses funktioner med statisk navnebinding (closures) er lige så stærke som klasser. En klassedefinition : (define (class init-parametre) (let ((var 1 value 1 ) Indkapsling af... datarepræsentation (var n value n )) (lambda (op) (cond ((eqv? op op 1 ) beregning af op 1 s værdi )... ((eqv? op op m ) beregning af op m s værdi )))) Klasseinstantiering og operationskald : (let ((obj (class aktuelle-par))) (obj op j )) s. 32 Nedenfor vises en model af, hvilke environments (activation records) og funktionsobjekter, der er tilstedet i det ovenstående. class Det globale environment (lambda (init-parametre)...) init-parametre:... var 1 :... var n :... obj: (lambda (op)...) Environment af ydre let. op: op j Funktionen class er defineret i det globale environment. Dette er den anonyme funktion bag den ydre let også; denne kaldes, hvorved obj bindes til værdien af kaldet af class. Dette er et funktionsobjekt, som ses længst til højre. Hvert funktionsobjekt er karakteriseret af en syntaktisk del og af en reference til det environment, hvori det er defineret. (Obj opj) forårsager kaldet, som giver den nederste activation record. Environment modellen, som vist ovenfor, er taget fra bogen Structures and Interpretation of Computer Programs af Abelson & Sussman, McGrawHill og MIT press. 32

13 Scheme og objekt-orienteret programmering (1). Klasse uden nedarvning. (define (class-name) (let ((instance-var init-value)...) (define (method parameter-list) method-body)... (define (self message) (cond ((eqv? message selector) method)... (else (error "Undefined message" message)))) self)) Anvendelse: (let ((obj (new-instance class-name))) (send obj message parameters)) s. 33 send: new-instance: class-name Det globale environment (lambda ()...) ydre let: instance-variables method: self: obj: message:... Ovenstående er et øjebliksbillede af ovenstående anvendelse af class-name. Man ser det environment som aktiveringen af selve klassen afstedkommer, og under det aktiveringen af den funktion, som repræsenterer objektet (self). Dernæst vil dette kald returnere én af metoderne, som vil blive kaldt af send. Send og new-instance er vist på næste slide. 33

14 Scheme og objekt-orienteret programmering (2). Uden nedarvning. Instantiering: (define (new-instance class) (class)) Metodeaktivering: (define (send object message. args) (let ((method (object message))) (cond ((procedure? method) (apply method args)) (else (error "Error in method lookup " method))))) s. 34 Her vises funktioner, som hhv. instantierer en klasse, og som kan sende en besked til et objekt. Vi kan opfatte disse som syntaktisk sukker, og som abstraktioner over de Scheme detaljer, som tillader os at opfatte funktioner og deres aktiveringer som hhv. klasser og objekter. Primitivet procedure? returnerer hvorvidt et objekt er et procedure-objekt. Det ville have været lidt pænere at spørge ved hjælp af navnet function? men i Scheme kan man i lambdaudtryk godt lave sideeffekter -- derfor talen om procedurer. 34

15 Scheme og objekt-orienteret programmering (3). Klasse med nedarvning. (define (class-name) (let ((super (new-part super-class))) (let ((instance-variable init-value)...) (define (method formal-parameter...) method-body)... (define (dispatch message) (cond ((eqv? message 'selector) method)... (else (method-lookup super message)))) dispatch))) s. 35 Vi har på de forrige slides observeret at funktionsbegrebet i Scheme er stærkt nok til at simulere klasser, information hiding, instantiering, og metodeopslag samt -anvendelse. Simuleringen er meget ligefrem. Det eneste lidt kunstige element er funktionen self, som afbilder en besked i en metode; denne afbildning realiserer vi i et betinget udtryk. Hvis man er bidt af de objekt-orienterede muligheder i Scheme kan man fortsætte lidt endnu. Hvis ikke, kan denne og de næste tre slides overspringes. Vi fortsætter udforskningen af funktionsbegrebet i Scheme med henblik på at efterligne klasser fra OO programmeringssprog. Her vises en skabelon der tillader os at arve fra en superklasse. De understregede dele er nye ift. forrige skabelon. Her vises en klasse, som instantierer et nyt objekt (en objektdel), som bindes til super. Læg også mærke til dispatch (som også kunne kaldes self), som i denne udformning kalder et nyt primitiv : method-lookup. Denne vises på næste side. 35

16 Scheme og objekt-orienteret programmering (4). Med nedarvning. (define (new-part class) (class)) (define (method-lookup object selector) (cond ((procedure? object) (object selector)) (else (error "Inappropriate object in method-lookup: " object)))) (define (send object message. args) (let ((method (method-lookup object message))) (cond ((procedure? method) (apply method args)) ((null? method) (error "Message not understood: " message)) (else (error "Inappropriate result of method lookup: " method))))) (define (object) (let ((super ()) (self nil)) (define (dispatch message) ()) (set! self dispatch) self)) s. 36 Her vises tre ny abstraktioner, med primær fokus på method-lookup. Læg mærke til, hvordan method-lookup aktiveres i send. Nederst vises roden i klassehierarkiet, som ikke i den viste udformning har nogen metoder at tilbyde. 36

17 Scheme og objekt-orienteret programmering (5). Med nedarvning og Smalltalk-agtig self. Ny metode: (define (set-self object-part) (set! self object-part) (send super 'set-self! object-part)) Rod i klassehierarki: (define (object) (let ((super ()) (self nil)) Instantiering: (define (new-instance class) (let ((instance (class))) (virtual-operations instance) instance)) (define (virtual-operations object) (send object 'set-self! object)) (define (set-self obj-part) (set! self obj-part)) (define (responds-to message) (let ((method (method-lookup self message))) (if method #t #f))) (define (dispatch message) (cond ((eqv? message 'set-self!) set-self) ((eqv? message 'responds-to?) responds-to) (else ()))) (set! self dispatch) self)) s. 37 Nu udarter tingene sig. Vi ønsker at self i hvert objekt-del skal referere til hele objektet. Dette arrangerer vi ved brug af assignments i metoden set-self, som vi antager alle klasser har. I et objekt med mange dele, starter vitual-operations kæden af assignments til self. Hvis man vil læse mere om alt dette, kan man konsulterer rapporten Simulation of Object-oriented Concepts and Mechanisms in Scheme af Kurt Nørmark, R-90-01, fra AUC. 37

18 Scheme implementationer. ELK. Hvor: /pack/elk Startes hvordan: /pack/elk/bin/scheme (udførbar fil). Dokumentation: /pack/elk/elk-2.2/doc Specielt filen kernel/kernel.ps. MIT Scheme (virker pt. ikke på Solaris 2 maskiner). Hvor: /pack/mitscm Startes hvordan: /pack/mitscm/bin/mitscm (udførbar fil). Dokumentation: /pack/mitscm/doc (Lange og store manualer...). Hvordan man kører Scheme gennem Emacs: > (define (fak n)...) ESC C-X M-x run-elk M-x run-mit-scheme Disse emacs kommandoer loades fra /user/normark/public/ps4/schemeload.el s. 38 Det forskellige, og mere specifikke dokumentation af de to Scheme systemer findes på programmørkontoret (under Mit Scheme og under ELK -- håber jeg). ELK er ud over at være en Scheme fortolker også et udvidelsessprog: Et Extension Language Kit. Det er muligt fra ELK at slå bro til C, og hvad deraf følger. Se dokumenterne i /pack/elk/elk-2.1/doc/ex kataloget og i /pack/elk/elk-2.1/doc/paper kataloget. 38

19 Litteratur om Scheme. Definerende dokument: Revised 4 Report on the Algorithmic Language Scheme. Bøger: Abelson & Sussman: Structure and Interpretation of Computer Programs. (Introducerende lærebog). Springer & Friedman: Scheme and the Art of Programming. Dybvig: The Scheme Programming Language. Friedman & Felleisen: The Little Lisper. Tidsskrifter. Lisp and Symbolic Computation (Kluwer). Lisp Pointers (ACM). Konferencer. ACM conference on Lisp and Functional Programming (hver andet år). s

Introduktion til Funktionsorienteret Programmering.

Introduktion til Funktionsorienteret Programmering. Introduktion til Funktionsorienteret Programmering. Sammenligning med det imperative paradigme Assignment kontra navnebinding. Iterative kontra rekursion. Introduktion til højereordensfunktioner. Evalueringsrækkefølge.

Læs mere

Objekt-orienteret programmering uden klasser: Self.

Objekt-orienteret programmering uden klasser: Self. Objekt-orienteret programmering uden klasser: Self. Sammenligning klasse-baseret og klasseløs programstrukturering. Basale forhold Singulære objekter Dynamisk nedarvning Variable i forhold til metoder.

Læs mere

4 Basal Objekt-orienteret Programmering I.

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

Læs mere

Metaklasser i Smalltalk.

Metaklasser i Smalltalk. 8 Metaklasser i Smalltalk. Motivation Metodeopslag Simple metaklasser Mere udviklede metaklasser Klasse- og metaklassehierarkiet Instantiering og initialisering Skabelse af klasser og metoder Oversigt

Læs mere

12 Metaobjekt protokoller i CLOS.

12 Metaobjekt protokoller i CLOS. 12 Metaobjekt protokoller i CLOS. Begreber og problemer. Sprog designrum. Niveauer i CLOS. Programobserverende protokoller. Programskabende protokoller. Sprogudvidende protokoller. Eksempler. Kurt Nørmark,

Læs mere

9 Introduktion til CLOS.

9 Introduktion til CLOS. 9 Introduktion til CLOS. Klasser Metoder Generiske funktioner Slots Nedarvning Class precedence lists Klasse-redefinition og objektopdatering Ændring af objekters klassetilhørsforhold Eksempler Kurt Nørmark,

Læs mere

Multiparadigme Programmering

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

Læs mere

18 Multivejstræer og B-træer.

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

Læs mere

10 Metodekombination og multimetoder i CLOS.

10 Metodekombination og multimetoder i CLOS. 10 Metodekombination og multimetoder i CLOS. Metodekombination generelt. Multimetoder generelt. Kald af en generisk funktion i CLOS. Specialisering på enkeltobjekter. Standard metodekombination. Simpel,

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

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

Software Construction 1. semester (SWC) januar 2014 Spørgsmål 1 Spørgsmål 1 Grundlæggende objektorienterede begreber o Klasse (class) o Objekt (object) o Metode (method), herunder return type og parametre o Instansvariable (instance variables) & egenskaber (properties),

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

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

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

Læs mere

29 Opsamling af Objekt-orienteret Programmering.

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

Læs mere

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

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

Læs mere

METODER ARV KLASSER. Grundlæggende programmering Lektion 5

METODER ARV KLASSER. Grundlæggende programmering Lektion 5 METODER KLASSER ARV Grundlæggende programmering Lektion 5 1 METODER Sekvenser af kode om samme emne 2 REPETITION Række af statements der udfører en handling Mindst én metode der hedder main Forskellen

Læs mere

Videregående Programmering for Diplom-E Noter

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

Læs mere

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

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

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

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

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

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

Læs mere

30 Objekt-orienteret Programmering i Andre Sprog.

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

Læs mere

2 Abstrakte datatyper.

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

Læs mere

Python programmering. Per Tøfting. MacFest

Python programmering. Per Tøfting. MacFest Python programmering MacFest 2005 Per Tøfting http://pertoefting.dk/macfest/ Indhold Måder at afvikle Python program på Variabler Data typer Tal Sekvenser Strenge Tupler Lister Dictionaries Kontrolstrukturer

Læs mere

Introduktion til programmering. Programmeringssprog Uge 44 Computer Science, kap 6. Learning Python: kap 13, 14.

Introduktion til programmering. Programmeringssprog Uge 44 Computer Science, kap 6. Learning Python: kap 13, 14. Introduktion til programmering Programmeringssprog Uge 44 Computer Science, kap 6. Learning Python: kap 13, 14. Plan Programmeringsparadigmer Funktionel programmering i Python Pause Scope: referencekonteksten

Læs mere

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

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

Læs mere

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

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

Læs mere

Forelæsning Uge 4 Torsdag

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

Læs mere

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

Forelæsning Uge 4 Torsdag

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

Læs mere

Abstrakte datatyper C#-version

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

Læs mere

Skriftlig eksamen i Datalogi

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

Læs mere

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

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

Læs mere

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

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

Læs mere

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

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

Læs mere

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

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

class subklasse-navn extends superklasse-navn { } NorwaySpruce har superklassen Spruce, som igen har superklassen Tree.

class subklasse-navn extends superklasse-navn { } NorwaySpruce har superklassen Spruce, som igen har superklassen Tree. Programmering 1999 Forelæsning 11, tirsdag 5. oktober 1999 Oversigt Klasse-hierarkier: superklasser og subklasser Nedarvning Polymorfi Programmering 1999 KVL Side 11-1 Hierarkier En klasse repræsenterer

Læs mere

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

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

Læs mere

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

Introduktion til Funktionsorienteret Programmering.

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

Læs mere

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

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

Rekursion og dynamisk programmering

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

Læs mere

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 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

Skriftlig eksamen i Datalogi

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

Læs mere

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

It og informationssøgning Forelæsning september 2006 Nils Andersen. Underprogrammer og betingelser. Standardfunktioner, typeomsætning

It og informationssøgning Forelæsning september 2006 Nils Andersen. Underprogrammer og betingelser. Standardfunktioner, typeomsætning It og informationssøgning Forelæsning 2 13. september 2006 Nils Andersen Underprogrammer og betingelser Standardfunktioner, typeomsætning Funktionskald Moduler, lange navne Brugerdefinerede funktioner

Læs mere

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

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

Læs mere

Dat 2/F6S: Syntaks og semantik 2005 Centrale emner og eksamenspensum

Dat 2/F6S: Syntaks og semantik 2005 Centrale emner og eksamenspensum Dat 2/F6S: Syntaks og semantik 2005 Centrale emner og eksamenspensum Hans Hüttel 14. juni 2005 Indhold 1 Centrale emner 1 2 Fuldt pensum 2 3 Reduceret pensum 3 3.1 Hvad er fjernet her?........................

Læs mere

Virkefeltsregler i Java

Virkefeltsregler i Java Virkefeltsregler i Java int i; int k; Sequence s; int j; What s in a name? Brian spillede blændende i søndags! Skolen ligger i Viby Ring til Kirsten og sig at... Et navn fortolkes i en kontekst og konteksten

Læs mere

Programmering for begyndere Lektion 2. Opsamling mm

Programmering for begyndere Lektion 2. Opsamling mm Lektion 2 Opsamling mm God tone Der er indlagt spørge sessioner Lektion 2 - Agenda Programmering for Lidt ændringer til teknikken, herunder hvordan du genser en lektion Lidt generelle tilbagemeldinger

Læs mere

Rename og redefine. Abstrakte klasser. Dynamisk binding.

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

Læs mere

Projekt - Visual Basic for Applications N på stribe

Projekt - Visual Basic for Applications N på stribe Projekt - Visual Basic for Applications N på stribe Mikkel Kaas og Troels Henriksen - 03x 3. november 2005 1 Introduktion Spillet tager udgangspunkt i det gamle kendte 4 på stribe, dog med den ændring,

Læs mere

Polymorfi. Arv (inheritance) Abstrakte klasser, substitutionsprincippet, overriding, statisk og dynamisk type. Coercion

Polymorfi. Arv (inheritance) Abstrakte klasser, substitutionsprincippet, overriding, statisk og dynamisk type. Coercion Polymorfi Arv (inheritance) Abstrakte klasser, substitutionsprincippet, overriding, statisk og dynamisk type Coercion Tvangskonvertering (forfremmelse og begrænsning) Oversigt Abstrakt klasse abstrakt

Læs mere

Noter til Perspektiver i Matematikken

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

Læs mere

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

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

Læs mere

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

APPENDIX A INTRODUKTION TIL DERIVE

APPENDIX A INTRODUKTION TIL DERIVE APPENDIX A INTRODUKTION TIL DERIVE z x y z=exp( x^2 0.5y^2) CAS er en fællesbetegnelse for matematikprogrammer, som foruden numeriske beregninger også kan regne med symboler og formler. Det betyder: Computer

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

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

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

Læs mere

Recollections about the Development of Pascal. Niklaus Wirth ACM, 1993

Recollections about the Development of Pascal. Niklaus Wirth ACM, 1993 Recollections about the Development of Pascal Niklaus Wirth ACM, 1993 1 Niklaus Wirth, 73 Født i Schweiz, 1934 Ph.D., University of California, Berkeley, 1963 Assistant Professor of CS, Stanford University,

Læs mere

DM507 Algoritmer og datastrukturer

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

Læs mere

LØKKER METODER C S HISTORIE. Grundlæggende programmering Lektion 4

LØKKER METODER C S HISTORIE. Grundlæggende programmering Lektion 4 LØKKER METODER C S HISTORIE Grundlæggende programmering Lektion 4 1 LEKTIER UML struktur diagrammer om biler 2 OPERATORER Syntaks til at udføre forskellige beregninger og handlinger Booleans og hvorfor

Læs mere

02101 Indledende Programmering Introduktion til Eclipse

02101 Indledende Programmering Introduktion til Eclipse 02101 Indledende Programmering Introduktion til Eclipse Version 2018 1 Introduktion I dette kursus lægger vi op til at man bruger det integrerede udviklingsmiljø Eclipse. Basalt set er et integreret udviklingsmiljø

Læs mere

Introduktion til CD ere og Arkivdeling Gammel Dok - September-oktober 2003. Jonas Christiansen Voss

Introduktion til CD ere og Arkivdeling Gammel Dok - September-oktober 2003. Jonas Christiansen Voss Introduktion til CD ere og Arkivdeling Gammel Dok - September-oktober 2003 Jonas Christiansen Voss 2. marts 2004 Indhold 1 CD ere 2 1.1 Brænde dokumenter til CD....................... 2 1.2 Disk Copy.................................

Læs mere

Forelæsning Uge 4 Mandag

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

Læs mere

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

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

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

Real-time programming safety in Java and Ada

Real-time programming safety in Java and Ada Real-time programming safety in Java and Ada Bo Sandén Presenter: Thomas Bøgholm 25. oktober 2007 Forfatteren Artiklen Synkroniserings Begreber Bo Sandén Professor på Colorado Technical University Beskæftiger

Læs mere

Ugeseddel 4 1. marts - 8. marts

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

Læs mere

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

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

Læs mere

Side 1. Databaser og SQL. Dagens gang. Databasebegreber. Introduktion til SQL Kap 1-5

Side 1. Databaser og SQL. Dagens gang. Databasebegreber. Introduktion til SQL Kap 1-5 Databaser og SQL Introduktion til SQL Kap 1-5 1 Dagens gang Databaser Database begreber Mapning af klasser til relationel model Normalisering Opgaver til næste gang 2 Databasebegreber A database is a:

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

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

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

Klasser. Grundlæggende Programmering med Projekt. Peter Sestoft Tirsdag 2. september 2008. (Tak til Jakob Bardram for nogle slides) Dagens begreber

Klasser. Grundlæggende Programmering med Projekt. Peter Sestoft Tirsdag 2. september 2008. (Tak til Jakob Bardram for nogle slides) Dagens begreber Klasser Grundlæggende Programmering med Projekt Peter Sestoft Tirsdag 2. september 2008 (Tak til Jakob Bardram for nogle slides) Dagens begreber Felt (field) Metode (method) Parameter (parameter) Sætning,

Læs mere

DM517:Supplerende noter om uafgørlighedsbeviser:

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

Læs mere

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

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

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

Læs mere

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

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

1. Variable og assignment

1. Variable og assignment 1. Variable og assignment Dette er starten af det faglige indhold i første lektion af 'Programmering i C'. Før dette følger et antal mere praktiske slides, som vi ikke har medtaget i denne 'tematiske udgave'

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

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

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

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

Læs mere

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

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

Læs mere

Introduktion til Smalltalk.

Introduktion til Smalltalk. 7 Introduktion til Smalltalk. Designbeslutninger. Message passing. Klassebegrebet. Metodebegrebet. Forskellige slags variable. Nedarvning og metodeopslag. Instans og klassevariable ift. nedarvning. Blokbegrebet.

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

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

Nolde Museet. I gang med Dreamweaver. Opgave. Opgavebeskrivelse. Layout. Mål og CSS

Nolde Museet. I gang med Dreamweaver. Opgave. Opgavebeskrivelse. Layout. Mål og CSS Opgavebeskrivelse Lav en webside om i Sønderjylland. Opgaven fører dig igennem de basale ting, hvad angår opbygningen af en side med CSS. Der er ikke tale om et komplet site, men du kan bruge opgaven som

Læs mere

Klasser og objekter. (Afsnit i manualen)

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

Læs mere

Metoder Klasser Arv. Operatorer Løkker. Praksis eksempel. Grundlæggende programmering Lektion 3

Metoder Klasser Arv. Operatorer Løkker. Praksis eksempel. Grundlæggende programmering Lektion 3 Praksis eksempel Operatorer Løkker Metoder Klasser Arv Grundlæggende programmering Lektion 3 Praksis eksempel Et program der benytter Unity til at lave et 3D spil Praksis eksempel Spil der benytter Unity

Læs mere

Oversættere, ugeopgave 3

Oversættere, ugeopgave 3 Oversættere, ugeopgave 3 Anders jerg Pedersen (andersbp@me.com) 29. november 2009 Opgave 1 Vi konsrer først NFA er for grammatikken fra opgave 3.22 med produktionen tilføjet: Produktion NFA 0 A 1 C D 2

Læs mere

Programmering i C. Lektion september 2009

Programmering i C. Lektion september 2009 Programmering i C Lektion 1 8. september 2009 Målgruppe Motivation Indhold Form Materiale 2 / 47 Kursusintroduktion 1 Målgruppe 2 Motivation 3 Indhold 4 Form 5 Materiale Målgruppe Motivation Indhold Form

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

SWC eksamens-spørgsmål. Oversigt

SWC eksamens-spørgsmål. Oversigt SWC eksamens-spørgsmål Oversigt #1 Typer og variable #2 Aritmetik og logik #3 Klasser (definition, objekter) #4 Klasser (metoder) #5 Klasser (nedarvning, polymorfi) #6 Conditional statements #7 Repetition

Læs mere