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?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Objektorienteret design med arv og polymorfi:

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

Læs mere

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

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

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

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

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

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

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

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

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

SAX Simple API for XML.

SAX Simple API for XML. SAX Simple API for XML. En API (Application Programming Interface) et bibliotek eller et sæt af funktioner eller metoder. SAX er et sådant bibliotek af abstrakte metoder som f. eks. startdocument() eller

Læs mere

Poly. - Javapakke til behandling af polynomier

Poly. - Javapakke til behandling af polynomier Poly - Javapakke til behandling af polynomier z 3 x y x 2 3 x -3 Skrevet af Susanne Nykjær Knudsen, John Thystrup Jensen, Jens Lykke Brandt, Troels C. Damgaard, Jacob W. Winther og Mikkel Bundgaard Vejleder:

Læs mere

RMI med BlueJ. Tutorial lavet af Jákup W. Hansen TSU 2006 3.semester 11. desember 2007

RMI med BlueJ. Tutorial lavet af Jákup W. Hansen TSU 2006 3.semester 11. desember 2007 RMI med BlueJ Tutorial lavet af Jákup W. Hansen TSU 2006 3.semester 11. desember 2007 Hvad er RMI? Når man arbejder med Distribuerede Systemer, som igen vil sige at man ønsker at flere end én komputer

Læs mere

MapBasic &.NET interaktion. MapBasic.NET. Jakob Lanstorp IT konsulent COWI. Odense 23. Juni 2011. 1 8 jun 2011 MapBasic &.

MapBasic &.NET interaktion. MapBasic.NET. Jakob Lanstorp IT konsulent COWI. Odense 23. Juni 2011. 1 8 jun 2011 MapBasic &. MapBasic &.NET interaktion MapBasic.NET Jakob Lanstorp IT konsulent COWI Odense 23. Juni 2011 1 MapBasic &.NET interaktion Erfaring med MapBasic.NET / Visual Studio Anden programmering 2 Program Hurtig

Læs mere

Matematisk induktion

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

Læs mere

Å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

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

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

Start på Arduino og programmering

Start på Arduino og programmering Programmering for begyndere Brug af Arduino Start på Arduino og programmering EDR Hillerød Knud Krogsgaard Jensen / OZ1QK 1 Start på Arduino og programmering Sidste gang (Introduktion) Programmeringssproget

Læs mere

Crash Course i Programmering. HumTek, RUC

Crash Course i Programmering. HumTek, RUC Crash Course i Programmering HumTek, RUC Kursus mål At give en basal introduktion til programmering i sproget Processing At give et overblik over sprogets potentiale At have det sjovt :-) Kursus form Meget

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

Nogle programmeringssprog er mere lige end andre

Nogle programmeringssprog er mere lige end andre Nogle programmeringssprog er mere lige end andre Af Torben Mogensen, DIKU Der findes tusindvis af forskellige programmeringssprog, og der bliver dagligt designet nye. Men er der virkelig så stor forskel

Læs mere

Programmering i C Intro og grundlæggende C 5. marts 2007

Programmering i C Intro og grundlæggende C 5. marts 2007 Programmering i C Intro og grundlæggende C 5. marts 2007 Mads Pedersen, OZ6HR mads@oz6hr.dk Plan for kurset Ma. 5/3: Ma. 19/3: Ma. 2/4: To. 12/4: Formål, intro, grundlæggende Videre, sprogkonstruktioner

Læs mere

Udvikling af DOTNET applikationer til MicroStation i C#

Udvikling af DOTNET applikationer til MicroStation i C# Udvikling af DOTNET applikationer til MicroStation i C# Praktiske tips for at komme i gang. Gunnar Jul Jensen, Cowi Hvorfor nu det? Mdl og Vba kan det hele Fordelene er : udviklingsmiljøet er eksternt

Læs mere

Arealet af en trekant Der er mange formler for arealet af en trekant. Den mest kendte er selvfølgelig

Arealet af en trekant Der er mange formler for arealet af en trekant. Den mest kendte er selvfølgelig Arealet af en trekant Der er mange formler for arealet af en trekant. Den mest kendte er selvfølgelig som også findes i en trigonometrisk variant, den såkaldte 'appelsin'-formel: Men da en trekants form

Læs mere

LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam) { int wmid, wmevent; programmering med

LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam) { int wmid, wmevent; programmering med LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam) int wmid, wmevent; PAINTSTRUCT Introduktion ps; til HDC hdc; programmering med switch (message) case WM_COMMAND: wmid = LOWORD(wParam);

Læs mere

Fra idé til virkelig med Azure Mobile Services

Fra idé til virkelig med Azure Mobile Services Fra idé til virkelig med Azure Mobile Services Niels Ladegaard Beck Holion nlb@holion.dk @nielslbeck Windows Developers in Denmark Azure App Service Mobile App Introduktion til Azure Mobile Services Platform

Læs mere

A Declarative Framework for Enterprise Information Systems

A Declarative Framework for Enterprise Information Systems A Declarative Framework for Enterprise Information Systems Qualification Report Christian Stefansen cstef@diku.dk NEXT August 2005 Dagens workflow Workflowmønstre Kodning SMAWL Intro Kontrakter CDL Arkitektur

Læs mere

Indhold. Senest opdateret:03. september 2013. Side 1 af 8

Indhold. Senest opdateret:03. september 2013. Side 1 af 8 Indhold Introduktion... 2 Scenarier hvor API et kan benyttes... 2 Scenarie 1 Integration til lagerhotel... 2 Scenarie 2 Integration til økonomi system... 2 API Modeller... 2 Webshop2 API Model v1... 3

Læs mere

Computeren repræsenterer en teknologi, som er tæt knyttet til den naturvidenskabelige tilgang.

Computeren repræsenterer en teknologi, som er tæt knyttet til den naturvidenskabelige tilgang. Den tekniske platform Af redaktionen Computeren repræsenterer en teknologi, som er tæt knyttet til den naturvidenskabelige tilgang. Teknologisk udvikling går således hånd i hånd med videnskabelig udvikling.

Læs mere

Web- og serverprogrammering

Web- og serverprogrammering Web- og serverprogrammering Arkitekturer i webprogrammer - dag 6 Model-View-Controller-arkitukturen Flerlags-arkitekturer Læsning: WJSP 10 Dette materiale er under Åben Dokumentlicens, se http://www.sslug.dk/linuxbog/licens.html

Læs mere

vil jeg blive mindet om det af VBA allerede mens jeg skriver koden, da der er tale om en såkaldt kompileringsfejl:

vil jeg blive mindet om det af VBA allerede mens jeg skriver koden, da der er tale om en såkaldt kompileringsfejl: Fejlhåndtering Selv de bedste programmører laver af og til fejl! Dette kommer sikkert som en overraskelse for de fleste, bortset fra de, der har arbejdet med et hvilket som helst større program. Fejl kan

Læs mere

BOSK F2012, 1. del: Prædikatslogik

BOSK F2012, 1. del: Prædikatslogik ε > 0. δ > 0. x. x a < δ f (x) L < ε February 8, 2012 Prædikater Vi skal lære om prædikatslogik lad os starte med prædikater. Et prædikat er et orakel der svarer ja eller nej. Eller mere præcist: Prædikater

Læs mere

CV for Lasse Nielsen

CV for Lasse Nielsen CV for Lasse Nielsen Lasse Nielsen 16. marts 2008 Personlig Data Mit navn er Lasse Nielsen, jeg er født den 17 Juni 1981 på Holbæk sygehus. Min adresse er Rektorparken 18, 7. tv. (Lokal 073) 2450 København

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

OIOSAML.NET og Umbraco. ved Thomas Ravnholt ravnholt @ silverbullet.dk

OIOSAML.NET og Umbraco. ved Thomas Ravnholt ravnholt @ silverbullet.dk OIOSAML.NET og Umbraco ved Thomas Ravnholt ravnholt @ silverbullet.dk Silverbullet, stiftet 2003 Silverbullet A/S IT- rådgivning, projektledelse og implementering Officiel SKI-leverandør Kontorer i Århus

Læs mere

Database for udviklere. Jan Lund Madsen PBS10107

Database for udviklere. Jan Lund Madsen PBS10107 Database for udviklere Jan Lund Madsen PBS10107 Indhold LINQ... 3 LINQ to SQL og Arkitektur... 3 O/R designere... 5 LINQ Den store introduktion med.net 3.5 er uden tvivl LINQ(udtales link): Language-INtegrated

Læs mere

En note om Programmering

En note om Programmering En note om Programmering Kurt Nørmark Institut for Datalogi Aalborg Universitet normark@cs.aau.dk Resumé Denne note er en introduktion til programmering. Formålet er at give dig et indblik i hvad programmering

Læs mere

Introduktion Indtastning Funktioner Scripts Optimering. Matlab

Introduktion Indtastning Funktioner Scripts Optimering. Matlab - robert@math.aau.dk http://www.math.aau.dk/ robert/teaching/2010/matlab 9. august 2010 1/39 Disposition 1. Lidt om. 2. Basiskursus. 3. Opgaver. 4. Mere til basiskursus. 5. Opgaver. 2/39 MATLAB = MATrix

Læs mere

Regularitet og Automater

Regularitet og Automater Plan dregaut 2007 Regularitet og Automater Hvad er Regularitet og Automater? Praktiske oplysninger om kurset Ugens emner Introduktion til ugens opgaver 2 Regularitet og Automater Formål med kurset: at

Læs mere

Programmeringscamp. Implementer funktionerne én for én og test hele tiden.

Programmeringscamp. Implementer funktionerne én for én og test hele tiden. Programmeringscamp De to opgaver træner begge i at lave moduler som tilbyder services der kan bruges af andre, samt i at implementere services efter en abstrakt forskrift. Opgave 1 beder jer om at implementere

Læs mere

Videregående programmering i Java

Videregående programmering i Java Videregående programmering i Java Dag 3 Skabende designmønstre Skabende designmønstre: Fabrikeringsmetode/Fabrik, Singleton, Abstrakt fabrik (Toolkit), Prototype, Objektpulje Eksempel: Forskellige slags

Læs mere

Arkitektur principper og design mønstre til realisering af enterprise applikationer baseret på rige domænemodeller (og.net)

Arkitektur principper og design mønstre til realisering af enterprise applikationer baseret på rige domænemodeller (og.net) Arkitektur principper og design mønstre til realisering af enterprise applikationer baseret på rige domænemodeller (og.net) Kim Harding Christensen EOS A/S Margrethepladsen 3 8000 Århus TLF: 8732 8787

Læs mere

Prioritetskøer og hobe. Philip Bille

Prioritetskøer og hobe. Philip Bille Prioritetskøer og hobe Philip Bille Plan Prioritetskøer Træer Hobe Repræsentation Prioritetskøoperationer Konstruktion af hob Hobsortering Prioritetskøer Prioritetskø Vedligehold en dynamisk mængde S af

Læs mere

Grafer og grafalgoritmer

Grafer og grafalgoritmer Algoritmer og Datastrukturer/Datalogi C Forelæsning 15/10-2002 Henning Christiansen Grafer og grafalgoritmer Hvad mener vi med en graf? NEJ! Graf: En matematisk abstraktion over ting som er logisk forbundet

Læs mere

Indhold. Side 2 af 26

Indhold. Side 2 af 26 Tema Design Design, Programmering og test af Adressebog Fra d. 17 april til 20 april 2012 Vejledere: Gunhild Marie Andersen Kis Boisen Hansen Gruppe B Deltagere Side 1 af 26 Indhold Indledning.... 3 Kodestandard...

Læs mere

Indholdsfortegnelse. javabog.dk Forord

Indholdsfortegnelse. javabog.dk Forord javabog.dk Forord javabog.dk Forord Indholdsfortegnelse 0 Forord...1 0.1 Bogens opbygning...1 0.1.1 Veje gennem bogen...1 0.1.2 Kapitlernes opbygning...3 0.2 Til underviseren...3 0.3 Ændringer i tredje

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

Differential- regning

Differential- regning Differential- regning del () f () m l () 6 Karsten Juul Indhold Tretrinsreglen 59 Formler for differentialkvotienter64 Regneregler for differentialkvotienter67 Differentialkvotient af sammensat funktion7

Læs mere

Oprids over grundforløbet i matematik

Oprids over grundforløbet i matematik Oprids over grundforløbet i matematik Dette oprids er tænkt som en meget kort gennemgang af de vigtigste hovedpointer vi har gennemgået i grundforløbet i matematik. Det er en kombination af at repetere

Læs mere

Skriftlig opgave. Designtanker i database-nære systemer

Skriftlig opgave. Designtanker i database-nære systemer Skriftlig opgave til eksamen for faget»databaser«designtanker i database-nære systemer Martin Ancher Holm Juni 2010 1 Intro Denne skriftlige opgave indeholder kort de daglige tanker jeg har omkring design

Læs mere

Refleksion i Java. 8. juli 2003

Refleksion i Java. 8. juli 2003 Refleksion i Java Udarbejdet af: Jesper Tejlgaard Pedersen Anders Baumann Tine Thorn IT-højskolen i København 4-ugersprojekt F2001 Vejleder: Kasper Østerbye 8. juli 2003 1 Indhold 1 Forord 3 2 Indledning

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

Oversigt. Modellering.6. Begrebsmodellering. Begrebsapparat til OO. Fænomener og begreber. Objektorienteret modellering

Oversigt. Modellering.6. Begrebsmodellering. Begrebsapparat til OO. Fænomener og begreber. Objektorienteret modellering Oversigt Modellering Begrebsmodellering, UML og Java Begrebsapparat til objektorientering Begrebsopfattelser og -modellering Strukturer: specialisering, aggregering, associering Anvendes til organisering

Læs mere

! #!! $ % $! & " &'"! & *+ "! " $ $ ""!,-! $!.! $! " # 1!! &' "

! #!! $ % $! &  &'! & *+ !  $ $ !,-! $!.! $!  # 1!! &' ""# "" # $ % $ & " &'" & " "()" *+ " " $ $ *+" $ %"&'" "( "",- $. + /"&'"-0 $ " # 1 &' " +"% $ %'('" 2 ' ) )030 )030) * )033 " )033 // " " 1 1 41 ")035)036 5- " " " *+773,8 *+ % " " )035& " )036& " 1 %"

Læs mere

dcomnet-nr. 8 Simpel aritmetik på maskinniveau Computere og Netværk (dcomnet)

dcomnet-nr. 8 Simpel aritmetik på maskinniveau Computere og Netværk (dcomnet) dcomnet-nr. 8 Simpel aritmetik på maskinniveau Computere og Netværk (dcomnet) Efterår 2009 1 Simpel aritmetik på maskinniveau I SCO, appendix A, er det beskrevet, hvordan man adderer ikke-negative heltal

Læs mere

IT-Basecamp 2013. Real World Java EE Patterns Adam Bien. Real World Java EE Patterns, Adam Bien Copyright Lund&Bendsen A/S

IT-Basecamp 2013. Real World Java EE Patterns Adam Bien. Real World Java EE Patterns, Adam Bien Copyright Lund&Bendsen A/S IT-Basecamp 2013 Real World Java EE Patterns Adam Bien 1 Indhold Lidt om mig Baggrund for valg af emnet Bogens opbygning Fra J2EE til JEE 5/6 Overflødiggjorte patterns Fremhæve et par patterns 2 Kenneth

Læs mere

02101: Indledende programmering. IMM, Danmarks Tekniske Universitet. Læg en studieplan. Dato: 7/12-2007. Gruppenummer: 20

02101: Indledende programmering. IMM, Danmarks Tekniske Universitet. Læg en studieplan. Dato: 7/12-2007. Gruppenummer: 20 Kursus 02101: Indledende programmering. Michael Holm & Mikael Andersen side 1 af 136 Kursus: Institut: 02101: Indledende programmering IMM, Danmarks Tekniske Universitet. Titel: Læg en studieplan Dato:

Læs mere

Grundlæggende Matematik

Grundlæggende Matematik Grundlæggende Matematik Hayati Balo, AAMS August 2012 1. Matematiske symboler For at udtrykke de verbale udsagn matematisk korrekt, så det bliver lettere og hurtigere at skrive, indføres en række matematiske

Læs mere

Matematik. Grundforløbet. Mike Auerbach (2) Q 1. y 2. y 1 (1) x 1 x 2

Matematik. Grundforløbet. Mike Auerbach (2) Q 1. y 2. y 1 (1) x 1 x 2 Matematik Grundforløbet (2) y 2 Q 1 a y 1 P b x 1 x 2 (1) Mike Auerbach Matematik: Grundforløbet 1. udgave, 2014 Disse noter er skrevet til matematikundervisning i grundforløbet på stx og kan frit anvendes

Læs mere

Programmeringseksempel til CX/IPC

Programmeringseksempel til CX/IPC APP-NOTE 610004 Beckhoff Application Note Date: 7/17/2009 Document Status: 1.1 Beckhoff Automation Aps Naverland 2, DK-2600 Glostrup Phone +45 43 46 76 20 Fax +45 43 46 63 35 Programmeringseksempel til

Læs mere

Kapital- og rentesregning

Kapital- og rentesregning Rentesregning Rettet den 28-12-11 Kapital- og rentesregning Kapital- og rentesregning Navngivning ved rentesregning I eksempler som Niels Oles, hvor man indskyder en kapital i en bank (én gang), og banken

Læs mere

Projekt 7.4 Kvadratisk programmering anvendt til optimering af elektriske kredsløb

Projekt 7.4 Kvadratisk programmering anvendt til optimering af elektriske kredsløb Projekt 7.4 Kvadratisk programmering anvendt til optimering af elektriske kredsløb Indledning: I B-bogen har vi i studieretningskapitlet i B-bogen om matematik-fsik set på parallelkoblinger af resistanser

Læs mere

Objektorienteret programmering!

Objektorienteret programmering! Objektorienteret programmering! Introduktion! Plan!! Generelt om programmeludvikling!! Objekter og klasser (begreber)!! Objektorienteret programmeludvikling!! Programmering i Java! 1! 2! Aforisme! Programmeludvikling!

Læs mere

Softwareudvikling: Miljøer

Softwareudvikling: Miljøer Softwareudvikling: Miljøer Præsentation af mig Praktiske oplysninger Overblik Host-target setup UNIX, historisk UNIX egenskaber UNIX ulemper UNIX, netværk, X11, brugerflader Windows fordele/ulemper Øvelse

Læs mere

Algebra. Dennis Pipenbring, 10. februar 2012. matx.dk

Algebra. Dennis Pipenbring, 10. februar 2012. matx.dk matx.dk Algebra Dennis Pipenbring, 10. februar 2012 nøgleord andengradsligning, komplekse tal, ligningsløsning, ligningssystemer, nulreglen, reducering Indhold 1 Forord 4 2 Indledning 5 3 De grundlæggende

Læs mere

PHP 3 UGERS FORLØB PHP, MYSQL & SQL

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

Læs mere

Terese B. Thomsen 1.semester Formidling, projektarbejde og webdesign ITU DMD d. 02/11-2012

Terese B. Thomsen 1.semester Formidling, projektarbejde og webdesign ITU DMD d. 02/11-2012 Server side Programming Wedesign Forelæsning #8 Recap PHP 1. Development Concept Design Coding Testing 2. Social Media Sharing, Images, Videos, Location etc Integrates with your websites 3. Widgets extend

Læs mere

Object-Relational Mapping

Object-Relational Mapping Databaser for udviklere () Datamatiker TietgenSkolen Underviser: Allan Helboe 06-06-2010 Problemformulering Denne opgave er et forsøg på at beskrive problemerne der opstår ved anvendelsen af en relationel

Læs mere

Grundlæggende OOA - OOD

Grundlæggende OOA - OOD Grundlæggende OOA - OOD Dette kursus henvender sig til personer, der har lille eller ingen erfaring med softwareudvikling. Med udgangspunkt i UML opbygges et solidt kendskab til softwareudviklingens kunst

Læs mere

t a l e n t c a m p d k Matematiske Metoder Anders Friis Anne Ryelund 25. oktober 2014 Slide 1/42

t a l e n t c a m p d k Matematiske Metoder Anders Friis Anne Ryelund 25. oktober 2014 Slide 1/42 Slide 1/42 Hvad er matematik? 1) Den matematiske metode 2) Hvad vil det sige at bevise noget? 3) Hvor begynder det hele? 4) Hvordan vælger man et sæt aksiomer? Slide 2/42 Indhold 1 2 3 4 Slide 3/42 Mængder

Læs mere

Indhold. Senest opdateret : 30. juli 2010. Side 1 af 5

Indhold. Senest opdateret : 30. juli 2010. Side 1 af 5 Indhold Introduktion... 2 Scenarier hvor API et kan benyttes... 2 Scenarie 1 Integration til lagerhotel... 2 Scenarie 2 Integration til økonomi system... 2 Webshop2 API Model... 3 Brugen af API et... 4

Læs mere

Spil Master Mind. Indledning.

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

Læs mere

MobileCTI Dialer Installations og konfigurations vejledning

MobileCTI Dialer Installations og konfigurations vejledning MobileCTI Dialer Installations og konfigurations vejledning Vejledning i Installation og konfiguration af MobileCTI Outlook Dialer / MobileCTI TAPI Dialer Version 2.10 December 2005 www.blueposition.com

Læs mere

Kapitel 3 Lineære sammenhænge

Kapitel 3 Lineære sammenhænge Matematik C (må anvendes på Ørestad Gymnasium) Lineære sammenhænge Det sker tit, at man har flere variable, der beskriver en situation, og at der en sammenhæng mellem de variable. Enhver formel er faktisk

Læs mere

Bilag 2 og 3 og værktøjer

Bilag 2 og 3 og værktøjer Bilag 2 og 3 og værktøjer Lars Erik Storgaard Geodatastyrelsen, laers@gst.dk Program for workshop Geodatastyrelsen Formål hvorfor workshop? Kvalificering af listen over myndigheder Temakammerater Opmærksomhed

Læs mere

Om at læse! en videnskabelig artikel! som diplomstudiestarter"

Om at læse! en videnskabelig artikel! som diplomstudiestarter Om at læse! en videnskabelig artikel! som diplomstudiestarter" Anker Helms Jørgensen! IT Universitetet i København! DUN Konferencen Maj 2010! Om at læse en artikel! 1! Baggrund: It-verdenen møder akademia!

Læs mere

educasoft - en professionel samarbejdspartner med speciale i uddannelse!

educasoft - en professionel samarbejdspartner med speciale i uddannelse! Velkommen til educasoft's hjemmeside educasoft - en professionel samarbejdspartner med speciale i uddannelse! Professionelle undervisere Undervisning i virksomheden Undervisning dag/aften eller week-end

Læs mere

Tidsregistrering. Jacob E., Jacob H., Mathias, Mads H., Jonatan og Dan 3.4. Informationsteknologi B. Roskilde Tekniske Gymnasium 25-11-2014

Tidsregistrering. Jacob E., Jacob H., Mathias, Mads H., Jonatan og Dan 3.4. Informationsteknologi B. Roskilde Tekniske Gymnasium 25-11-2014 2014 Tidsregistrering Jacob E., Jacob H., Mathias, Mads H., Jonatan og Dan 3.4 Informationsteknologi B Roskilde Tekniske Gymnasium 25-11-2014 Indholdsfortegnelse 1 Indledning... 3 2 User stories... 3 3

Læs mere

Komplekse tal. Mikkel Stouby Petersen 27. februar 2013

Komplekse tal. Mikkel Stouby Petersen 27. februar 2013 Komplekse tal Mikkel Stouby Petersen 27. februar 2013 1 Motivationen Historien om de komplekse tal er i virkeligheden historien om at fjerne forhindringerne og gøre det umulige muligt. For at se det, vil

Læs mere

Introduktion til MatLab Matematisk Modellering af Dynamiske Modeller ved Kasper Bjering Jensen, RUC, februar 2010

Introduktion til MatLab Matematisk Modellering af Dynamiske Modeller ved Kasper Bjering Jensen, RUC, februar 2010 Introduktion til MatLab Matematisk Modellering af Dynamiske Modeller ved Kasper Bjering Jensen, RUC, februar 2010 Computere er uvurderlige redskaber for personer der ønsker at arbejde med matematiske modeller

Læs mere

Numeriske metoder. Af: Alexander Bergendorff, Frederik Lundby Trebbien Rasmussen og Jonas Degn. Side 1 af 15

Numeriske metoder. Af: Alexander Bergendorff, Frederik Lundby Trebbien Rasmussen og Jonas Degn. Side 1 af 15 Numeriske metoder Af: Alexander Bergendorff, Frederik Lundby Trebbien Rasmussen og Jonas Degn Side 1 af 15 Indholdsfortegnelse Matematik forklaring... 3 Lineær regression... 3 Numerisk differentiation...

Læs mere