JSR-335: λ-udtryk i Java

Størrelse: px
Starte visningen fra side:

Download "JSR-335: λ-udtryk i Java"

Transkript

1 JSR-335: λ-udtryk i Java Morten Heine Sørensen

2 λ-udtryk i Java Ny feature i Java SE 8. Elegant syntaks for anonyme funktioner. Funktionel stil supplerer objekt-orientering. Alternativ til anonyme indre klasser. Faciliterer parallel evaluering. Defineret i JSR-335, endelig version midt 2013?

3 Dette foredrag DEL 1: Teori for λ-kalkule. PAUSE DEL 2: λ-udtryk i Java.

4 Barberer-paradokset Barberen i Sevilla barberer (kun) alle dem der ikke barberer sig selv. Q: Barberer han sig selv? A: Han barberer sig selv hvis han ikke barberer sig selv! Og omvendt!

5 Russels paradoks (1901) R = { x not (x ϵ x) } R ϵ R not ( R ϵ R ) Uformel matematik med R er inkonsistent. En teori hvori R kan udtrykkes er inkonsistent. Inspirerede konkurrerende teorier som konsistent fundament for matematikken. A la konkurrerende programmeringssprog i dag.

6 λ-kalkule som teori Russells typeteori (1908): Konsistent fundament for matematikken. Viste sig bøvlet at arbejde med. Churchs λ-kalkule (1928): Alternativt fundament baseret på funktioner. Viste sig inkonsistent (Kleene & Rosser). Delteorien med funktioner viste sig frugtbar. Andre systemer: ZFC mængdeteori (Zermelo-Fraenkel). Map Theory (Klaus Grue).

7 λ-kalkule som sprog Simpelt, utypet funktionssprog med abstraktion: I stedet for f(x)=x skriver vi f = λx.x, eller bare λx.x uden noget navn. Anvendelse: I stedet for f(4) Skriver vi f 4 eller (f 4). Teoretisk sprog, før der fandtes computere.

8 Abstraktion I = λx.x Identitetsfunktionen I. I = λy.y Den samme funktion. K* = λx.λy.y En funktion der returnerer funktionen I. K = λx.λy.x En relateret funktion. Q: Er K og K* den samme funktion? A: Nej K tager et argument x og returnerer I K* tager et argument x og returnerer funktionen λy.x

9 Anvendelse I = λx.x Identitetsfunktionen I. K = λx.λy.x Projektion. I K En funktion anvendt på en funktion. Ren λ-kalkule: Ingen konstanter, foruddefinerede funktioner, Kun abstraktion (λ), variabel, anvendelse.

10 Parenteser Traditionelt: argument i parentes. Definition f(x) =... Anvendelse f(4). Parenteser i λ-kalkule: afklarer scope. (λx.x) I og λx.(x I) er forskellige (sidste er default). K (I I) og (K I) I er forskellige (sidste er default).

11 Currying Flere argumenter, et af gangen: f(x,y)= udtrykkes som f = λx.λy. f(2,4) udtrykkes som f 2 4. Schönfinkeling?

12 Reduktion Evaluering, traditionelt: Definition f(x) = x + x. Anvendelse f(4) = = 8. Reduktion i λ-kalkule Eksempel: (λx. x ) N -> N Q: K I I ->? A: K I I = (λx.λy.x) I I = -> (λy.i) I -> I

13 Church-Turings tese Vi kigger kun på funktioner fra heltal til heltal: Tesen: f(x) = x+2. f(x,y) = det største tal der går op i både x og y. f(x) = kvadratroden af x, afrundet til heltal. Alt der kan beregnes, kan beregnes af et λ-udtryk. Evidens: λ-kalkule kan det samme som (idealiseret) Java. Alle programmeringssprog kan det samme.

14 Tal i λ-kalkule - Church-numerals 1 := λs.λz.(s z) 2 := λs.λz.(s (s z)) n := λs.λz.(s ( (s z) )) n gange s Plus = λm.λn.λs.λz.m s (n s z) Q: Plus 2 3 ->? A: Plus 2 3 -> (λs.λz.2 s (3 s z)) -> (λs.λz.2 s (s (s (s z)))) -> (λs.λz.s (s (s (s (s z))))) = 5

15 Funktionsprogrammering - tal n:= λs.λz.(s (s z))) n gange s De naturlige tal ~ datastruktur med to konstruktører: tallet 0. successor-funktionen, der tæller et tal 1 op. Church-numerals abstraherer over konstruktørerne. Definitionen af plus udnytter abstraktionen.

16 Funktionsprogrammering lister [1,7,4] := λc.λn.c 1 (c 7 (c 4 n))) [x1,,xm] := λc.λn.c x1 ( (c xm n) ) Lister ~ datastruktur med to konstruktører: nil, den tomme liste. cons, der sætter et element foran en liste. Listeprogrammering: reduce x f [1,7,4] := f 1 (f 7 (f 4 x)) map [1,7,4] := [f 1, f 7, f 4] filter p [1,7,4] := [1,4] (dem der opfylder p)

17 Reduce reduce = λx.λf.λl.l f x Q: reduce 0 max [1,7,4] ->? A: reduce 0 max [1,7,4] -> [1,7,4] max 0 -> (λc.λn.c 1 (c 7 (c 4 n)))) max 0 -> max 1 (max 7 (max 4 0)) -> max 1 (max 7 4) -> max 1 7 -> 7

18 Map C map = λf.λl.λc.λn.l (λx.c (f x)) n Q: map succ [1,7,4] ->? A: map succ [1,7,4] -> λc.λn.[1,7,4] C n -> λc.λn.c 1 (C 7 (C 4 n)) -> λc.λn.c (succ 1) (c (succ 7) (c (succ 4) n)) -> [succ 1, succ 7, succ 4] -> [2, 8, 5]

19 Filter filter= λf.λl.λc.λn.l (λz.λs.if (f z) (c z s) s) n Q: filter (λx.x>3) [1,7,4] ->? A: filter (λx.x>3) [1,7,4] -> [7,4]

20 Sidespor: Kombinatorer (Curry) Konstanter K og S med reduktioner K A B -> A S A B C -> (A C) (B C) Det simpleste programmeringssprog! Kan udtrykkes i λ-kalkule K = λx.λy.x S = λx.λy.λx.(x z) (y z) Også omvendt.

21 Church-Rossers Sætning K (I I) = (λx.λy.x) ((λx.x) (λw.w)) λy.((λx.x) (λw.w)) (λx.λy.x) (λw.w) λy.λw.w Q: Forskellig resultat afhængig af reduktioner? A: Nej konfluens i et antal trin! Man må reducere hvor man vil, som i ( ).

22 Evaluering CBN vs CBV Hvor reducerer vi i (λx.x) ((λy.y) I) Programmeringssprog: Ikke reducere under λ. CBV (~ivrig): Argument før anvendelse: (λx.x) ((λy.y) I) -> (λx.x) I CBN (~doven): Anvendelse: (λx.x) ((λy.y) I) -> ((λy.y) I)

23 Uendelige reduktioner ω = λx.(x x) self apply. Ω = ω ω self-apply self-applied. Q: Ω ->? A: Ω -> Ω -> Ω -> Ω -> Ω -> K* = λx.λy.y Q: K* Ω ->? A: K* Ω -> K* Ω -> K* Ω -> K* Ω -> K* Ω -> I

24 Uendelige reduktioner Uendelig: Nogle λ-udtryk har kun en uendelig: Ω Uendelig: Nogle λ-udtryk har kun en endelig: I K Kombineret: Nogle λ-udtryk har begge dele: K* Ω Normaliserings-sætningen (Curry & Feys): Hvis man reducerer længst til venstre finder man slutresultatet (normalformen), hvis der er et.

25 Halting-problemet Skriv et Java-program Nobelpris der tager et String argument som input: Et java-program P. og svarer Ja, hvis P s main-metode terminerer; og Nej ellers. Alternativt: λ-udtryk som input, svar om der findes normalform.

26 Halting-problemet P NEJ! P P 25 JA! Nobelpris Q: Kan Nobelpris ikke bare kalde P s main-metode og se hvad der sker? A: Nej! Kan loope uendeligt skal svare Ja eller Nej!

27 Halting-problemet Det kan ikke lade sig gøre! Bevist i 1936 af Turing (for Turing-maskiner). Viser uafgørlighed af Hilberts Entscheidungsproblem (Churchs Sætning).

28 Varianter af λ-kalkule: Typer Type-fri/utypet. Typet (forskellige varianter). Typede λ-udtryk (a la Curry - typeinferens) λx.x : P -> P (funtionen der afbilder P er over P er) λx.λy.x : P -> (Q -> P) Eller (a la Church - typecheck) λx:p.x : P -> P λx:p.λy:q.x : P -> (Q -> P)

29 Typesystem (a la Curry) Γ, x:p x : P Γ, x:p M : Q Γ M : P -> Q Γ N : P Γ λx:m : P -> Q Γ M N : Q Q: λx.λy.λz.(x z) (y z) :? A: λx.λy.λz.(x z) (y z) : (P->Q->R)->(P->Q)->P->R.

30 Typeinferens m.v. for et λ-udtryk M, kan vi afgøre: har M en type? Hvis M har en type, er der en mest generel type. Eksempler λx.x : P -> Q? λx.x : P -> P? λx.x : (P->Q) -> (P->Q)? λx.x x :? FORKERT. RIGTIG, mest generel. RIGTIG, mere specifik. INGEN type. Normalisering: Hvis M har en type, så findes ingen uendelige reduktioner fra M.

31 Funktionsprogrammeringssprog Influeret af λ-kalkule: Lisp (type-fri) Scheme (type-fri) Miranda (typet, rent, dovent) ML (typet, ivrigt) F# (.net OO-variant af ML) Clojure (moderne variant af LISP).

32 Propositionslogik Γ, P P Γ, P Q Γ P -> Q Γ P Γ P -> Q Γ Q P -> P? P -> Q? P -> (Q -> P)? RIGTIG FORKERT RIGTIG

33 Curry-Howard-isomorfien Γ, P P Γ, P Q Γ P -> Q Γ P Γ P -> Q Γ M N: Q Γ x:p x : P Γ x:p M : Q Γ M : P -> Q Γ N : P Γ λx:m : P -> Q Γ M N : Q

34 Curry-Howard-isomorfien Programmering ~ Logik Type ~ Formel. λ-udtryk ~ Bevis. Reduktion ~ Bevisnormalisering. Polymorfi ~ 2. ordens logik. Exceptions ~ Klassisk logik. Osv.

35 Opsummering - λ-kalkule Startede som fundament for matematikken. Udviklede sig til teoretisk programmeringssprog. Inspirerede akademiske og kommercielle sprog. Livligt studeret også nu til dags. Halting Reduktioner problemet Funktionssprog Kombinatorer Typeinferens Church-Turings tese Curry-Howard isomorfien Logiske systemer Church-Rosser Typesystemer

36 Dette foredrag DEL 1: Teori for λ-kalkule. PAUSE DEL 2: λ-udtryk i Java.

37 Java Med Java SE 8 er der lagt op til λ-udtryk i Java. Elegant syntaks for anonyme funktioner. Funktionel stil supplerer objekt-orientering. Alternativ til anonyme indre klasser. Faciliterer parallel evaluering.

38 Problem: Sortèr en liste af koordinater class NumberPair { private Integer first; private Integer second; } List<NumberPair> list = ; Comparator<NumberPair> c1 =???; Collections.sort(list,c1); public interface Comparator<T> { } public int compare(t i, T j);

39 Løsning 1: Implementèr interface List<NumberPair> list = ; Comparator<NumberPair> c1 = new NPComparator(); Collections.sort(list,c1); public class NPComparator implements Comparator<NumberPair> { } public int compare(numberpair x, NumberPair y) { } return x.getfirst()!=y.getfirst()? x.getfirst()-y.getfirst() : x.getsecond()-y.getsecond();

40 Kritik Voldsomt med ny klasse NPComparator for at få sorteret en skallet liste af koordinater. Fænomenet optræder mange steder hvor vi skal levere en call-back-metode til et API, f.eks. i event listeners i GUI-programmering.

41 Løsning 2: Anonym indre klasse List<NumberPair> list = ; Comparator<NumberPair> c2 = new Comparator<NumberPair>() { }; public int compare(numberpair x, NumberPair y) { } return x.getfirst()!=y.getfirst()? Collections.sort(list,c2); x.getfirst()-y.getfirst() : x.getsecond()-y.getsecond();

42 Kritik Udfordringer med anonyme indre klasser (Goetz): Bulky syntax. Confusion surrounding the meaning of names/this. Inflexible class-loading/instance-creation semantics. Inability to capture non-final local variables. Inability to abstract over control flow. Først og Fremmest Bulky syntax.

43 Ide: Udelad det oplagte List<NumberPair> list = ; Comparator<NumberPair> c2 = new Comparator<NumberPair>() { }; public int compare(numberpair x, NumberPair y) { } return x.getfirst()!=y.getfirst()? Collections.sort(list,c2); x.getfirst()-y.getfirst() : x.getsecond()-y.getsecond();

44 Løsning 3: λ-udtryk List<NumberPairs> list = ; Collections.sort(list, (x,y) -> x.getfirst()!=y.getfirst()? x.getfirst()-y.getfirst() : x.getsecond()-y.getsecond()); Syntaks & semantik: (x)->x i stedet for λx.x. (i,j) -> i.compareto(j) er (meget groft sagt) en forkortelse for den anonyme indre klasse i forrige eksempel. De manglende dele fremgår af konteksten.

45 λ-udtryk i Java Definition Et λ-udtryk L må forekomme i en kontekst hvor den forventede type T, er et funktionsinterface og L er kompatibelt med T.. kontekst.. forventet type = funktionsinterface λ-udtryk tilladt her

46 Syntaks for λ-udtryk ArgumentList -> Body Body: Udtryk (evalueret og returneret). Return-kommando ikke relevant. En kommando-blok (evalueret som en metode-krop). Returner resultat i ingen/alle grene (eller kaster exception). Break/continue ulovligt på yderste niveau.

47 Syntaks for λ-udtryk eksempler Eksempler: (int x, int y) -> x + y x -> x + y () -> { System.out.println( λ in Java! ); } <T> (T x) -> x Sidebemærkninger: Argument-typer ikke obligatoriske (a la Curry). Krop er udtryk/kommandoblok. ( og ) kan udelades ved 1 type-frit argument.

48 Kontekster med forventet type Tildeling (variablens type). Cast (eksplicit type). Return-kommando (metodens retur-type). Array-initialisering (array-typen). Metode-argument (metodens argument-type). Konstruktør-argument (- -). λ-udtryk (body) (type-propagering). Betingede udtryk? : (type-propagering).

49 Kontekster med type - eksempler Q: RIGTIGT/FORKERT? A: Forkert. Object l = (Integer i, Integer j) -> i.compareto(j); Q: RIGTIGT/FORKERT? A: Rigtigt. Object l = (Comparator<Integer>) (i,j) -> i.compareto(j); Q: RIGTIGT/FORKERT? A: Rigtigt. Comparator<Integer> l = (i,j) -> i.compareto(j);

50 Funktionsinterface (tidl. SAM) Et interface med (groft sagt) èn metode. Den samme metode kan nedarves flere gange. Metoder fra class må gerne være der.

51 Funktionsinterface - eksempler java.lang.runnable java.util.concurrent.callable java.util.comparator java.lang.reflect.invocationhandler java.awt.event.actionlistener javax.swing.event.changelistener

52 Funktionsinterface - eksempel public interface LambdaType<A,B> { } public B app(a a); Måske vil der være nogle indbyggede typer

53 Kompatibilitet Et λ-udtryk er kompatibelt med type T hvis: T er et funktionsinterface med metode M; og λ-udtrykket har samme antal parametre som M, og parameter-typerne er parvis identiske; og Hvert udtryk der returneres i λ-udtrykkets krop er kompatibelt med M s retur-type; og Hver exception kastet i λ-udtrykkets krop er tilladt af M s throws-klausul.

54 Kompatibilitet - eksempler Q: Hvilke er rigtige? LambdaType<Object,Object> f1 = (Object y) -> new Object(); LambdaType<Object,Object> f2 = (Object y) -> 5; LambdaType<Object,Object> f3 = (Integer y) -> new Object(); LambdaType<Object,Object> f4 = (Integer y) -> 5;

55 Virkefelt - Definition Ethvert navn i λ-udtrykkets krop (herunder this, men undtagen parametre og lokale variable) fortolkes i udtrykkets omgivelser. Enhver fanget variabel skal være effektivt final.

56 Virkefelt λ-udtryk vs indre klasse public class HelloWorld { Runnable r1 = () -> { System.out.println(this.toString()); }; Runnable r2 = new Runnable() { public void run() { System.out.println(this.toString()); } }; public String tostring() { return "Hello, world!"; } public static void main(string [] args) { new HelloWorld().r1.run(); new HelloWorld().r2.run(); } }

57 Virkefelt λ-udtryk vs indre klasse Q: Hvad skriver programmet ud? A: λ-udtryk fortolker this relativt til den omgivende kontekst, den indre klasse relativt til sig selv. Andre forskelle i virkefelt i forhold til anonyme indre klasser.

58 Virkefelt rekursiv λ-udtryk LambdaType<Integer,Integer> factorial = x -> x==0? 1 : x*factorial.app(x-1); LambdaType<Integer,Integer> factorial = x -> x==0? 1 : x*this.app(x-1); System.out.println( factorial 4= "+factorial.app(4)); Q: Hvilken factorial er rigtig, og hvad skrives ud? A: Den første!

59 Virkefelt - variabelfangst Korrekt: int k = 1; LambdaType<Integer,Integer> g = (int x) -> k+x; Forkert: int k = 1; LambdaType<Integer,Integer> g = (int x) -> k+x; k++; Årsag: En λ-udtryk eller anonym indre klasse (heap) kan overleve sit enclosing instance (stack).

60 Problem Implementèr et funktionsinterface, hvor der findes en klasse der implementerer metoden. class NumberPair { private int first; private int second; public int comparebysumthis(numberpair b) { } public int comparebylexthis(numberpair b) {} } List<NumberPair> l= Collections.sort(l,(x,y)-> x.comparebysumthis(y));

61 Problem Implementèr et funktionsinterface, hvor der findes en klasse der implementerer metoden. Class NumberPairComparator { public static int comparebysum(numberpair a, NumberPair b) {} public static int comparebylex(numberpair a, NumberPair b) {} } List<NumberPair> l= Collections.sort(l,(x,y)-> NumberPairComparator. comparebysum(x,y));

62 Kritik λ-udtrykket er bare mekanik. (x,y)-> x.comparebysumthis(y) (x,y)-> NumberPairComparator. comparebysum(x,y)

63 Løsning: Metode-referencer Metode-reference Collections.sort(l,NumberPairComparator::compareBySum); Collections.sort(l,NumberPair::compareBySumThis); Svarer cirka til anonym indre klasse med metoden. Statisk Klasse:: statisk-metode-med-args This Klasse:: instans-metode-med-args-1 Instans instans:: instans-metode-med-args Instans-eksempel: Collections.sort(l,numberPairComparator::compareBySumInstance);

64 Problem Hvordan udvider vi eksisterende interfaces (f.eks. collection-api et) med nye metoder til programmering med λ-udtryk? Implementationer af API-erne vil mangle de nye metoder. Løsning : interface default-metoder.

65 Default-metode interface Iterator<E> { } boolean hasnext(); E next(); void remove(); void skip(int i) default { for (; i > 0 && hasnext(); i--) next(); }

66 Default-metode - eksempel Ny metode List.sort List<Integer> list = list.sort(integer::compareto);

67 Default-metode Multipel nedarvning Interface A default metode A Interface B default metode B <<implements>> Class C metode A metode B Kun instans-metoder. Statisk metode kan ikke forekomme i interface. Statisk metode kan ikke overrides. Andre begrænsninger i forhold til generel multipel nedarvning.

68 Map, Filter, Reduce med collections Lambdafikation af collection API et med default metoder. Eksempel: Summen af hvert element større end 2, hver talt 1 op. List<Integer> =... int sum = list.filter(n->n>2).map(n->n+1).reduce(0,(a,b)->a+b); Funktionsprogrammering: Brug af λ-udtryk. Sammensætning af funktioner med dot-notation. Mulighed for : parallel afvikling. doven evaluering. auto/human optimering.

69 Implementation i VM Muligheder: Anonym indre klasse. Giver mange klasser, perm-space. Forskelle i virkefelt. Method handles (Java 7 SE). Ikke fuldt modnet. Binær kompabilitet en prioritet. Valg: Udsæt valg til run-time! Dynamic invoke (for dynamiske sprog).

70 Opsummering - λ-udtryk i Java Motivation - indre anonyme klasser bøvlede. Definition: Syntaks kontekst med forventet type Funktionsinterface type-kompabilitet Virkefelt: Lambda vs indre Rekursion variabelfangst Metode-referencer. Interface default-metoder, multipel nedarvning. Funktionsprogrammering med map, filter, reduce.

71 Referencer Lambda projektside: Jdk8 download: Tutorial (Goetz): Specification: Java SE 8 og videre (Ritter): From Lambdas to Bytecode (Goetz): Teori: Lectures on the Curry-Howard Isomorphism

72 Spørgsmål/Kommentarer?

A Profile for Safety Critical Java

A Profile for Safety Critical Java A Profile for Safety Critical Java Martin Schoeberl Hans Søndergaard Bent Thomsen Anders P. Ravn Præsenteret af: Henrik Kragh-Hansen November 8, 2007 Forfatterne Martin Schoeberl Udvikler af JOP processoren

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

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

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

Læs mere

BRP 6.9.2006 Kursusintroduktion og Java-oversigt

BRP 6.9.2006 Kursusintroduktion og Java-oversigt BRP 6.9.2006 Kursusintroduktion og Java-oversigt 1. Kursusintroduktion 2. Java-oversigt (A): Opgave P4.4 3. Java-oversigt (B): Ny omvendings -opgave 4. Introduktion til næste kursusgang Kursusintroduktion:

Læs mere

Datalogi OB, Efterår 2002 OH er, forelæsning 10/ Klasser og nedarvning

Datalogi OB, Efterår 2002 OH er, forelæsning 10/ Klasser og nedarvning Datalogi OB, Efterår 2002 OH er, forelæsning 10/9-2002 Klasser og nedarvning Hvad er formålet? Typer, generisk kode, typeparameterisering Kritisk kig på, hvordan man gør i Java. Eftermiddagens opgave:

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

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

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

Ugens emner. Regulære sprog og digitale billeder. Adressering af områder. Et alfabet. Dette billede: kan repræsenteres af en FA med 832 tilstande

Ugens emner. Regulære sprog og digitale billeder. Adressering af områder. Et alfabet. Dette billede: kan repræsenteres af en FA med 832 tilstande Ugens emner Regulære sprog og digitale billeder Digitale billeder og regulære sprog Regulære udtryk i Java og Unix Dette billede: Turing-maskiner [uddrag af Martin kap. 9-0] Church-Turing tesen, beregnelighed

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

Forelæsning Uge 6 Mandag

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

Læs mere

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

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 4 DM502 Forelæsning 4 Flere kontrolstrukturer for-løkke switch-case Metoder Indhold Arrays og sortering af arrays String-funktioner for-løkke Ofte har man brug for at udføre det samme kode, for en sekvens

Læs mere

University of Southern Denmark Syddansk Universitet. DM503 Forelæsning 11

University of Southern Denmark Syddansk Universitet. DM503 Forelæsning 11 DM503 Forelæsning 11 Generics Pakker Exceptions Indhold Generics Nedarvning og Generics Generics Nedarvning og Generics Husk Box fra sidst Generics public class Box {! private T object;! public void

Læs mere

DM502. Peter Schneider-Kamp (petersk@imada.sdu.dk) http://imada.sdu.dk/~petersk/dm502/

DM502. Peter Schneider-Kamp (petersk@imada.sdu.dk) http://imada.sdu.dk/~petersk/dm502/ DM502 Peter Schneider-Kamp (petersk@imada.sdu.dk) http://imada.sdu.dk/~petersk/dm502/ 1 DM502 Bog, ugesedler og noter De første øvelser Let for nogen, svært for andre Kom til øvelserne! Lav opgaverne!

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

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

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 2 DM502 Forelæsning 2 Repetition Kompilere og køre Java program javac HelloWorld.java java HeloWorld.java Debugge Java program javac -g HelloWorld.java jswat Det basale Java program public class HelloWorld

Læs mere

Eksempel: Skat i år 2000

Eksempel: Skat i år 2000 Kursus 02199: Programmering afsnit 2.1-2.7 Anne Haxthausen IMM, DTU 1. Værdier og typer (bl.a. char, boolean, int, double) (afsnit 2.4) 2. Variable og konstanter (afsnit 2.3) 3. Sætninger (bl.a. assignments)

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 i C. Lektion 4. 5. december 2008

Programmering i C. Lektion 4. 5. december 2008 Programmering i C Lektion 4 5. december 2008 Funktioner Eksempel Fra sidst 1 Funktioner 2 Eksempel Funktioner Eksempel Eksempel: 1 / f u n k t i o n s p r o t o t y p e r / i n t i n d l a e s ( void )

Læs mere

DM01 DM01. 3. Obl. Afl. Jacob Christiansen, 130282, jacob.ch@mail.tdcadsl.dk. D12, Elias 18/3-2003. Side 1 af 11

DM01 DM01. 3. Obl. Afl. Jacob Christiansen, 130282, jacob.ch@mail.tdcadsl.dk. D12, Elias 18/3-2003. Side 1 af 11 DM01 DM01 3. Obl. Afl. Jacob Christiansen, 130282, jacob.ch@mail.tdcadsl.dk D12, Elias 18/3-2003 Side 1 af 11 DM01 Indholdsfortegnelse: BILAG:...2 1 FORMÅL:...3 2 KLASSER:...4 2.1 DILEMMA:...4 2.1.1 METODER:...4

Læs mere

JavaScript. nedarvning.

JavaScript. nedarvning. JavaScript er et sprog, der kan give en hjemmeside mere funktionalitet og gøre den interaktiv, så den reagerer på læsernes handlinger. CGI (Common Gateway Interface) har hidtil været de protokoller, man

Læs mere

dintprog Manual Revision: 1241 August 24, 2010 I Introduktion 3 1 Notation 3 II Begreber 4 2 Grundbegreber om programmering 4

dintprog Manual Revision: 1241 August 24, 2010 I Introduktion 3 1 Notation 3 II Begreber 4 2 Grundbegreber om programmering 4 dintprog Manual Revision: 1241 August 24, 2010 Indhold I Introduktion 3 1 Notation 3 II Begreber 4 2 Grundbegreber om programmering 4 3 Grundbegreber om modellering 4 III Sprogkonstruktioner 5 4 Klasser

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

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

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

Kursus i OOP og Java. Kursus i Objektorienteret programmering i Java

Kursus i OOP og Java. Kursus i Objektorienteret programmering i Java Kursus i OOP og Java Kursus i Objektorienteret programmering i Java Åben Dokumentlicens Dette foredragsmateriale er under Åben Dokumentlicens (ÅDL) Du har derfor lov til frit at kopiere dette værk Bruger

Læs mere

Introduktion til C programmering

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

Læs mere

Objektorienteret Programmering

Objektorienteret Programmering Objektorienteret Programmering Struktureret Systemudvikling Jan Bendtsen Automation and Control Indhold Lidt om programmeringssprog Klasser i Java Klasser i C++ Oversættelse og kørsel af kode Et eksempel:

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

Datalogi OB, Efterår 2002 OH er, forelæsning 3/9-2002 - forstå datastrukturer og algoritmer (teoretisk forståelse og intuition)

Datalogi OB, Efterår 2002 OH er, forelæsning 3/9-2002 - forstå datastrukturer og algoritmer (teoretisk forståelse og intuition) Datalogi OB, Efterår 2002 OH er, forelæsning 3/9-2002 Datastrukturer og algoritmer Henning Christiansen henning@ruc.dk http://www.ruc.dk/~henning Formål: at kunne - forstå datastrukturer og algoritmer

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

Ufuldstændighed, mængdelære og beregnelighed

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

Læs mere

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

Hashing og hashtabeller

Hashing og hashtabeller Datastrukturer & Algoritmer, Datalogi C Forelæsning 16/11-2004 Hashing og hashtabeller Teknik til at repræsentere mængder Konstant tid for finde og indsætte men ingen sortering af elementerne Specielt

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

Java Programmering. En bog for begyndere. Skrevet af Henrik Kressner

Java Programmering. En bog for begyndere. Skrevet af Henrik Kressner Java Programmering En bog for begyndere Skrevet af Henrik Kressner Indholdsfortegnelse Introduktion...3 1 Introduktion til Java...4 1.1 Javakoden...4 1.2 Det første program...6 1.2 Skriv til skærmen...6

Læs mere

Kursus navn: Indledende programmering Kursus nr. 02101

Kursus navn: Indledende programmering Kursus nr. 02101 Danmarks Tekniske Universitet Side 1 af 8 sider Skriftlig prøve, den 15. december 2007 Kursus navn: Indledende programmering Kursus nr. 02101 Tilladte hjælpemidler: Alle skriftlige hjælpemidler Vægtning

Læs mere

Videregående Programmering Obligatorisk opgave - 3. semester, efterår 2004

Videregående Programmering Obligatorisk opgave - 3. semester, efterår 2004 Overvågningssystem Beskrivelse Bagagesorteringssystemet består af et antal skranker (check-in) til modtagelse og registrering af bagage, et automatiseret sorteringsanlæg samt et antal terminaler (gates),

Læs mere

Hvad er et tal? Dan Saattrup Nielsen

Hvad er et tal? Dan Saattrup Nielsen 12 Det filosofiske hjørne Hvad er et tal? Dan Saattrup Nielsen Det virker måske som et spøjst spørgsmål, men ved nærmere eftertanke virker det som om, at alle vores definitioner af tal refererer til andre

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

Tabelbegrebet. Klassediagrammer (III) Oversigt. Anvendelse af Tabeller. Tabeller og qualified associations

Tabelbegrebet. Klassediagrammer (III) Oversigt. Anvendelse af Tabeller. Tabeller og qualified associations Tabelbegrebet Klassediagrammer (III) Tabeller og qualified associations originally by Michael R. Hansen modified/extended by Anne E. Haxthausen Informatics and Mathematical Modelling Technical University

Læs mere

Objektorienterede metoder

Objektorienterede metoder Objektorienterede metoder Denne gang: Designmønstre Skabende designmønstre: Fabrikeringsmetode/Fabrik, Singleton, Abstrakt fabrik (Toolkit), Prototype, Objektpulje Singleton eksempel: Forskellige slags

Læs mere

Tabeller (I) Tabeller

Tabeller (I) Tabeller Tabeller (I) Klassediagrammer (III) Tabeller og qualified associations Michael R. Hansen mrh@imm.dtu.dk Informatics and Mathematical Modelling Technical University of Denmark En tabel fra en mængde A til

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

2 Funktionsorienteret programmering i Scheme.

2 Funktionsorienteret programmering i Scheme. 2 Funktionsorienteret programmering i Scheme. Lisp og Scheme. Listebegrebet i Lisp. Funktionsdefinition og lambdaudtryk. Navnebinding. Iteration. Første-klasses funktioner. Closures som klasser. Praktisk

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

Noter og opgaver. Programmering A IMADA. Niels Kjeldsen & Jacob Aae Mikkelsen. Med grundig korrektur og rettelser af Edmund Christiansen

Noter og opgaver. Programmering A IMADA. Niels Kjeldsen & Jacob Aae Mikkelsen. Med grundig korrektur og rettelser af Edmund Christiansen Programmering A IMADA Noter og opgaver Niels Kjeldsen & Jacob Aae Mikkelsen Med grundig korrektur og rettelser af Edmund Christiansen Noter til Programmering A INDHOLD Indhold 1 Indledning 3 2 Kom i gang

Læs mere

Civilingeniøreksamen 49104 12. januar 2001. Skriftelig prøve den 12. januar 2001 Kursusnummer 49104

Civilingeniøreksamen 49104 12. januar 2001. Skriftelig prøve den 12. januar 2001 Kursusnummer 49104 Skriftelig prøve den 12. januar 2001 Kursusnummer 49104 Kursusnavn: Programmering. Tilladte hjælpemidler: Alle skriftlige hjælpemidler Opgavesættet består af fire opgaver, der har følgende vægtning: Opgave

Læs mere

Hashing og hashtabeller

Hashing og hashtabeller Datastrukturer & Algoritmer, Datalogi C Forelæsning 12/11-2002 Hashing og hashtabeller Teknik til at repræsentere mængder Konstant tid for finde og indsætte men ingen sortering af elementerne Specielt

Læs mere

14.1 Internationale programmer

14.1 Internationale programmer 14.1 Internationale programmer Når et program skal anvendes af flere kulturer og sprog opstår behov for at programtekster, beløb og datoangivelser afhænger af landet og sproget, og man må i gang med at

Læs mere

Hvad er et distribueret objekt? Plan 12.3. Objekter, objektreferencer, metoder, parameteroverførsel. Objekter: notation

Hvad er et distribueret objekt? Plan 12.3. Objekter, objektreferencer, metoder, parameteroverførsel. Objekter: notation Plan 12.3. Oversigt over grundlæggende begreber Java: eksempel på applikation, programmering og oversættelse Uddybning af grundlæggende begreber Java RMI implementation Forklaring af øvelsen Hvad er et

Læs mere

Kontraktbaseret Design. Anker Mørk Thomsen

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

Læs mere

Speciale. Evaluering af Java til udvikling af indlejrede realtidssystemer ved brug af en eksisterende Java Optimized Processor (JOP)

Speciale. Evaluering af Java til udvikling af indlejrede realtidssystemer ved brug af en eksisterende Java Optimized Processor (JOP) Speciale Evaluering af Java til udvikling af indlejrede realtidssystemer ved brug af en eksisterende Java Optimized Processor (JOP) Speciale efterår 2005 Teknisk Informationsteknologi Jan Lauritzen & Mads

Læs mere

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

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

Læs mere

Webserverprogrammering

Webserverprogrammering Webserverprogrammering WSP fortsat - dag 11 Behandling af XML (StAX) Syndikering og RSS med XML JAXB - XML Java-objekter Projekthjælp Dette materiale er under Åben Dokumentlicens, se http://www.sslug.dk/linuxbog/licens.html

Læs mere

Gödels ufuldstændighedssætninger

Gödels ufuldstændighedssætninger Gödels ufuldstændighedssætninger Thomas Bolander, DTU Informatik Matematik: Videnskaben om det uendelige 2 Folkeuniversitetet i København, efteråret 2011 Thomas Bolander, FUKBH 11 s. 1/21 Gödels ufuldstændighedssætning

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

Aritmetiske Forelæsning Pr ogrammering operatorer tir 1999 sda præcedens september 1999 Logiske Sammenligningsoperatorer operatorer præcedens

Aritmetiske Forelæsning Pr ogrammering operatorer tir 1999 sda præcedens september 1999 Logiske Sammenligningsoperatorer operatorer præcedens Programmering 1999 Forelæsning 3, tirsdag 7. september 1999 Aritmetiske og logiske operatorer, præcedens Den indbyggede klasse String: tegnstrenge Metoder i klasser Metoder: returtype eller void Metoder:

Læs mere

RMI introduktion. Denne artikel beskriver Java RMI (Remtote Method Invocation).

RMI introduktion. Denne artikel beskriver Java RMI (Remtote Method Invocation). Denne guide er oprindeligt udgivet på Eksperten.dk RMI introduktion Denne artikel beskriver Java RMI (Remtote Method Invocation). Den beskriver teorien bag RMI, viser et simpelt kode eksempel og forklarer

Læs mere

Dag 10 Flertrådet programmering

Dag 10 Flertrådet programmering Videregående programmering i Java Dag 10 Flertrådet programmering Fremlæggelse af programmering/status for projekter Dokumentation med javadoc Flertrådede designmønstre: Arbejdstråd, Producent Konsument,

Læs mere

Common Language Runtime. Multithreading

Common Language Runtime. Multithreading Common Language Runtime Multithreading Multithreading i.net Dedicated threads Programmøren kontrollerer starttidspunkt, levetid m.m. for den enkelte thread. Pooled threads Threads lånes fra en pulje af

Læs mere

Jacob Christiansen, Institut for MAtematik og DAtalogi, Syddansk Universitet, Odense

Jacob Christiansen, Institut for MAtematik og DAtalogi, Syddansk Universitet, Odense 7 DM -. Obligatoriske Opgave Løsning af ligningssystem vha. fipunktmetoden Jacob Christiansen, 8 moffe@imada.sdu.dk Institut for MAtematik og DAtalogi, Syddansk Universitet, Odense. Opgaven Der skal implementeres

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

DM507 Algoritmer og datastrukturer

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

Læs mere

Programmering. Udvidet Programmering. Kurserne. Kurset: programmering i sproget Java. Lærerne: Morten Larsen og Peter Sestoft

Programmering. Udvidet Programmering. Kurserne. Kurset: programmering i sproget Java. Lærerne: Morten Larsen og Peter Sestoft Kurserne Kurset: programmering i sproget Java Programmering og Udvidet Programmering Lærerne: Morten Larsen og Peter Sestoft Kursusmål: I skal lære at skrive interessante programmer i Java Forudsætninger:

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

Forelæsning Uge 2 Torsdag

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

Læs mere

Python 3 kursus lektion 1:

Python 3 kursus lektion 1: Python 3 kursus lektion 1: Her laves et nyt program Her køre programmet! Her skrives koden: Gem (CTRL-s) Tryk F5 (for at køre) www.madsmatik.dk d.14-01-2016 1/5 At skrive til skærmen: Hello World Man kan

Læs mere

Programmering 2. dprog2 E2013. http://www.cs.au.dk/dprog2/

Programmering 2. dprog2 E2013. http://www.cs.au.dk/dprog2/ Programmering 2 dprog2 E2013 http://www.cs.au.dk/dprog2/ Læringsmål Deltagerne skal ved afslutningen af kurset kunne: forklare og anvende både basale og videregående elementer af et moderne programmeringssprog,

Læs mere

dintprog Manual Revision: 731 September 30, 2009 1 Introduktion 3 1.1 Notation... 3 I Begreber 4 2 Grundbegreber om programmering 4

dintprog Manual Revision: 731 September 30, 2009 1 Introduktion 3 1.1 Notation... 3 I Begreber 4 2 Grundbegreber om programmering 4 dintprog Manual Revision: 731 September 30, 2009 Indhold 1 Introduktion 3 1.1 Notation................................. 3 I Begreber 4 2 Grundbegreber om programmering 4 3 Grundbegreber om modellering

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

Tredjepart webservices

Tredjepart webservices Tredjepart webservices 4. juni 2015 USS Dok. Klik her for at angive tekst. 1/12 Indholdsfortegnelse Introduktion... 3 Miljøer... 3 Adgang... 3 API kald... 4 GET: /authorizations... 4 Input 4 Output 4 Output

Læs mere

BlogReader 1.0.0 Af Jonas F. Jensen.

BlogReader 1.0.0 Af Jonas F. Jensen. BlogReader 1.0.0 Af Jonas F. Jensen. Indholdsfortegnelse Forord.....3 Hvad er BlogReader?......4 RSS, XML og sematic web......4 Klasse struktur i UML......4 Overordnet opbygning......5 UML diagram over

Læs mere

Induktive og rekursive definitioner

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

Læs mere

Grundlæggende Programmering ITU, Efterår 1999. Skriftlig eksamen i Grundlæggende Programmering

Grundlæggende Programmering ITU, Efterår 1999. Skriftlig eksamen i Grundlæggende Programmering Skriftlig eksamen i Grundlæggende Programmering ITU, 20. januar 2000 Alle hjælpemidler tilladt, dog ikke datamat. Eksamen er skriftlig, fire timer, og bedømmes efter 13-skalaen. Opgavesættet består af

Læs mere

Dokumentation af programmering i Python 2.75

Dokumentation af programmering i Python 2.75 Dokumentation af programmering i Python 2.75 Af: Alexander Bergendorff Jeg vil i dette dokument, dokumentere det arbejde jeg har lavet i løbet opstarts forløbet i Programmering C. Jeg vil forsøge, så vidt

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

Logik. Af Peter Harremoës Niels Brock

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

Læs mere

Introduktion til ActionScript

Introduktion til ActionScript Introduktion til ActionScript 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 på

Læs mere

Om binære søgetræer i Java

Om binære søgetræer i Java Om binære søgetræer i Java Mads Rosendahl 7. november 2002 Resumé En fix måde at gemme data på er i en træstruktur. Måden er nyttig hvis man får noget data ind og man gerne vil have at det gemt i en sorteret

Læs mere

Sekvenser af længde mellem 1 og 4 ord repræsenteres ved en klasse Segment, som uden grundlæggende ser således ud:

Sekvenser af længde mellem 1 og 4 ord repræsenteres ved en klasse Segment, som uden grundlæggende ser således ud: Besvarelse af opgave til formuleret til øvelserne 10. september 2002 Datastrukturer og algoritmer Henning Christiansen 22/9-2002 Følgende er ikke en eksakt besvarelse af opgaven, idet den benytter hashtabeller

Læs mere

Modern Concurrency Abstractions for C#

Modern Concurrency Abstractions for C# Modern Concurrency Abstractions for C# Nick Benton Luca Cardelli Cédric Fournet Presenter: Henrik Kragh-Hansen September 27, 2007 Motivation for concurrency Forbedring af concurrency Baggrundsinformation

Læs mere

BOSK F2011, 1. del: Udsagnslogik

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

Læs mere

Asymptotisk analyse af algoritmers køretider

Asymptotisk analyse af algoritmers køretider Asymptotisk analyse af algoritmers køretider Analyse af køretid (RAM-modellen vs. virkeligheden) public class Linear { public static void main(string[] args) { long time = System.currentTimeMillis(); long

Læs mere

Opgaver. Oktober 2009

Opgaver. Oktober 2009 Opgaver Oktober 2009 Dette er en samling af supplerende opgaver til kurset Programmering 2. I nogle opgaver henvises til filer med Java programmer/klasser. Dette eksempelmateriale kan nås via WWW: http://www.cs.au.dk/dprog2/eksempler/

Læs mere

Forelæsning Uge 3 Mandag

Forelæsning Uge 3 Mandag Forelæsning Uge 3 Mandag ArrayList Collection med variabelt antal elementer Der er mange andre Collection typer (se Collection interfacet i JavaDoc) MusicOrganizer projektet Eksempel på brug af ArrayList

Læs mere

Eksamens spørgsmål i Java HTML - DataBase 3. Semester (i)

Eksamens spørgsmål i Java HTML - DataBase 3. Semester (i) Eksamens spørgsmål i Java HTML - DataBase 3. Semester (i) 1: KLASSE METODE KONSTRUKTØR EKS. PÅ TYPE (VARIABLE) PUBLIC/PRIVATE OBJECT UD FRA KLASSE KALD METODE TILFØR PARAMETER TIL METODE RETURNERE VARIBEL.

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

DM536. Rapport og debug

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

Læs mere

Databaseadgang fra Java

Databaseadgang fra Java Databaseadgang fra Java Grundlæggende Programmering med Projekt Peter Sestoft Fredag 2007-11-23 Relationsdatabasesystemer Der er mange databaseservere Microsoft Access del af Microsoft Office MySQL god,

Læs mere

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

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 10 DM502 Forelæsning 10 Rekursion Fakultet n! Fibonaccitallene 2. projektopgave Opgaven Formalia Indhold Rekursion Rekursion Prøv at definere en liste af tal uden at bruge ordet liste Rekursion Prøv at definere

Læs mere

Google App Engine. Google App Engine som platform. Claus Myglegaard Vagner og Jacob von Eyben

Google App Engine. Google App Engine som platform. Claus Myglegaard Vagner og Jacob von Eyben GoogleAppEngine GoogleAppEnginesomplatform ClausMyglegaardVagnerogJacobvonEyben Abstract CloudcomputingerenteknologidervinderfremidengenerelleITinfrastruktur. SocialemediersåsomLinkedIn,TwitterogFacebookharøgetbehovetfor

Læs mere

Rapport Bjælken. Derefter lavede vi en oversigt, som viste alle løsningerne og forklarede, hvad der gør, at de er forskellige/ens.

Rapport Bjælken. Derefter lavede vi en oversigt, som viste alle løsningerne og forklarede, hvad der gør, at de er forskellige/ens. Rapport Bjælken Indledning Vi arbejdede med opgaverne i grupper. En gruppe lavede en tabel, som de undersøgte og fandt en regel. De andre grupper havde studeret tegninger af bjælker med forskellige længder,

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

Data load og udtræk. 2. iteration: implmentation (test af backend) PHP mysql. Loade og parse XML (SimpleXML, Xpath) Filhåndtering i PHP JSON

Data load og udtræk. 2. iteration: implmentation (test af backend) PHP mysql. Loade og parse XML (SimpleXML, Xpath) Filhåndtering i PHP JSON Data load og udtræk 2. iteration: implmentation (test af backend) 1 PHP mysql Loade og parse XML (SimpleXML, Xpath) Filhåndtering i PHP JSON 2 Data udtræk PHP mysql: Processen 1. Forbind til MySQL server

Læs mere

Programmering 2. dprog2 E2012. http://www.cs.au.dk/dprog2/

Programmering 2. dprog2 E2012. http://www.cs.au.dk/dprog2/ Programmering 2 dprog2 E2012 http://www.cs.au.dk/dprog2/ Læringsmål Deltagerne skal ved afslutningen af kurset kunne: forklare og anvende både basale og videregående elementer af et moderne programmeringssprog,

Læs mere

SigmaT.

SigmaT. Java + Groovy Disposition Om SigmaT Eksempel på indlejring af Groovy Overvågning af PEM Ønske om dynamisk loaded Java uden at fifle med classloaderen Groovy til hjælp Opsamling hvad jeg ikke har fortalt

Læs mere

Overblik. Class Loader. Java. Class Libraries. Bytecode. Verifier Java. Source (.java) Just in Time Compiler. Java

Overblik. Class Loader. Java. Class Libraries. Bytecode. Verifier Java. Source (.java) Just in Time Compiler. Java OOP1 Java intro. Klasser, objekter, interfaces, nedarvning, Association, Aggregation og Composition mvh. Try and catch exceptions. Package Intro. til jar filer. Overblik Compile-time Environment Run-time

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

Integer.parseInt(args[0]) konverterer tegnstreng (f.eks. "10") til heltal (10). if (udtryk) else

Integer.parseInt(args[0]) konverterer tegnstreng (f.eks. 10) til heltal (10). if (udtryk) else Programmering 1999 Forelæsning 2, fredag 3. september 1999 Betingede ordrer: if-, if Indlejrede betingede ordrer Løkker med begrænset iteration: for Løkker med ubegrænset iteration: while Betingede ordrer,

Læs mere