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 mhs@formalit.dk

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?

Ugeseddel 4 1. marts - 8. marts

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

Læs mere

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

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

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

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

class Time { int hours, min; } } Time t1; // Erklær variabel af type Time class Time1 { public static void main(string[] args) { Time t1; t1.

class Time { int hours, min; } } Time t1; // Erklær variabel af type Time class Time1 { public static void main(string[] args) { Time t1; t1. Programmering 1999 Forelæsning 4, fredag 10. september 1999 Klasser og objekter Felter, konstruktorer, this Eksempler på klasser: Time, Appointment Eksempler på metoder i Time og Appointment Klassefelter:

Læs mere

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

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

Læs mere

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

b) Udvid din implementation af forme til at understøtte.equals. To objekter af samme form er ens hvis de har samme værdier i felterne.

b) Udvid din implementation af forme til at understøtte.equals. To objekter af samme form er ens hvis de har samme værdier i felterne. Exercise 1: Opgave 9.1 på CodeJudge. a) Lav klasserne Cirkel, Rektangel og Kvadrat, som implementerer vedhæftede interface From.java (se CodeJudge). Lav Rektangel før du laver Kvadrat. Kan du bruge nedarvning

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

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

Rekursion og dynamisk programmering

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

Læs mere

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

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

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

DANMARKS TEKNISKE UNIVERSITET

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

Læs mere

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

Klasser og nedarvning

Klasser og nedarvning Datalogi C, Efterår 2004 OH er, forelæsning 21/9-2004 Klasser og nedarvning Hvad er formålet? Typer, generisk kode, typeparameterisering Kritisk kig på, hvordan man gør i Java. Opgaven til senere: Generalisere

Læs mere

Forelæsning Uge 12 Torsdag

Forelæsning Uge 12 Torsdag Forelæsning Uge 12 Torsdag Protected access Alternativ til public og private Abstrakte klasser og interfaces En abstrakt klasse er en klasse, som man ikke kan lave instanser (objekter) af En abstrakt klasse

Læs mere

Løsning af møntproblemet

Løsning af møntproblemet Løsning af møntproblemet Keld Helsgaun RUC, oktober 1999 Antag at tilstandene i problemet (stillingerne) er repræsenteret ved objekter af klassen State. Vi kan da finde en kortest mulig løsning af problemet

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

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

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

Læs mere

Forelæsning Uge 4 Torsdag

Forelæsning Uge 4 Torsdag Forelæsning Uge 4 Torsdag Klassevariabler og klassemetoder Levetid for variabler og parametre Virkefeltsregler Projektopgave Kaninjagt Lommeregner (for MAT studerende) Klassevariabler og klassemetoder

Læs mere

Forelæsning Uge 12 Mandag

Forelæsning Uge 12 Mandag Forelæsning Uge 12 Mandag Protected access Alternativ til public og private Abstrakte klasser og interfaces En abstrakt klasse er en klasse, som man ikke kan lave instanser (objekter) af En abstrakt klasse

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

Forelæsning Uge 4 Torsdag

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

Læs mere

SWC eksamens-spørgsmål. Oversigt

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

Læs mere

Skriftlig eksamen i Datalogi

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

Læs mere

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

Tree klassen fra sidste forelæsning

Tree klassen fra sidste forelæsning Programmering 1999 Forelæsning 12, fredag 8. oktober 1999 Oversigt Abstrakte klasser. Grænseflader. Programmering 1999 KVL Side 12-1 Tree klassen fra sidste forelæsning class Tree { int age; // in years

Læs mere

Forelæsning Uge 5 Mandag

Forelæsning Uge 5 Mandag Forelæsning Uge 5 Mandag Sortering ved hjælp af klassen Collections Ved hjælp af interfacet Comparable Ved hjælp af interfacet Comparator findbest som sorteringsproblem Køreprøven i uge 7 Form Forberedelse

Læs mere

DM507 Algoritmer og datastrukturer

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

Læs mere

DM507 Algoritmer og datastrukturer

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

Læs mere

Threads i Java. Denne artikel giver en introduktion til threads i Java. Den beskriver hvad tråde er og forklarer hvordan de bruges i Java

Threads i Java. Denne artikel giver en introduktion til threads i Java. Den beskriver hvad tråde er og forklarer hvordan de bruges i Java Denne guide er oprindeligt udgivet på Eksperten.dk Threads i Java Denne artikel giver en introduktion til threads i Java. Den beskriver hvad tråde er og forklarer hvordan de bruges i Java Den forudsætter

Læs mere

DM507 Algoritmer og datastrukturer

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

Læs mere

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

Forelæsning Uge 4 Mandag

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

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2019 Projekt, del I Institut for matematik og datalogi Syddansk Universitet 27. februar, 2019 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

Anvendelse af metoder - Programmering

Anvendelse af metoder - Programmering Denne guide er oprindeligt udgivet på Eksperten.dk Anvendelse af metoder - Programmering En forhåbentlig rigtig god forklaring på hvad metoder er og hvordan de anvendes. Lidt om private og public, retur

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

METODER ARV KLASSER. Grundlæggende programmering Lektion 5

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

Læs mere

Singleton pattern i Java

Singleton pattern i Java Denne guide er oprindeligt udgivet på Eksperten.dk Singleton pattern i Java Denne artikel beskriver Singleton pattern og implementation i Java. Den forudsætter kendskab til Java men ikke til Singleton.

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

Forelæsning Uge 4 Torsdag

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

Læs mere

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

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

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

Læs mere

Studiepraktik. Thomas Bøgholm Mikkel Hansen Jacob Elefsen

Studiepraktik. Thomas Bøgholm Mikkel Hansen Jacob Elefsen Studiepraktik Thomas Bøgholm boegholm@cs.aau.dk Mikkel Hansen mhan@cs.aau.dk Jacob Elefsen jelefs12@student.aau.dk 1 Studiepraktik -- program Program onsdag 10.00 10.15 Registrering af fremmøde og gennemgang

Læs mere

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

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

Læs mere

Java Klasse nedarvninger

Java Klasse nedarvninger Denne guide er oprindeligt udgivet på Eksperten.dk Java Klasse nedarvninger Et let lille overblik i hvordan klasse nedarvning virker i java Skrevet den 07. dec 2011 af mochners I kategorien Programmering

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

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

Forelæsning Uge 5 Mandag

Forelæsning Uge 5 Mandag Forelæsning Uge 5 Mandag Algoritmeskabeloner findone, findall, findnoof, findsumof (sidste mandag) findbest Brug af klassen Collections og interfacet Comparable BlueJ s Debugger Nyttig til at inspicere

Læs mere

Martin Olsen. DM507 Projekt Del I. 19. marts 2012 FOTO: Colourbox

Martin Olsen. DM507 Projekt Del I. 19. marts 2012 FOTO: Colourbox Martin Olsen DM0 Projekt 0 Del I. marts 0 FOTO: Colourbox Indhold Indledning... Opgave... Opgave... Opgave... Opgave... Opgave... Opgave... Opgave... Kildekode til SimpleInv.java... Kildekode til MergeSort.java...

Læs mere

LAMBDA- KALKULER. Fra. til funktionelle sprog

LAMBDA- KALKULER. Fra. til funktionelle sprog SYSTEMUDVIKLING PROGRAMMERINGSSPROG Fra LAMBDA- KALKULER til funktionelle sprog Grundlaget for funktionelle programmeringssprog blev skabt af en matematiker, før computeren var opfundet. Af Dan Mygind

Læs mere

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

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 6 DM502 Forelæsning 6 Klasser og objekter Introduktion Math-klassen Indhold Klasser vs. objekter Først et tænkt eksempel: Vi vil lave en bil i Java 1. spørgsmål: Hvad karakteriserer en bil? Model År Farve...

Læs mere

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

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

Læs mere

Forelæsning Uge 4 Mandag

Forelæsning Uge 4 Mandag Forelæsning Uge 4 Mandag Algoritmeskabeloner Kan (ved simple tilretningerne) bruges til at implementere metoder, der gennemsøger en arrayliste (eller anden objektsamling) og finder objekter, der opfylder

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

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

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

Læs mere

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

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

Stakke, køer og lidt om hægtede lister - kapitel 16 og 17

Stakke, køer og lidt om hægtede lister - kapitel 16 og 17 Datastrukturer & Algoritmer, Datalogi C Forelæsning 2/11-2004 Henning Christiansen Stakke, køer og lidt om hægtede lister - kapitel 16 og 17 Fundamentale datastrukturer man får brug for igen og igen Et

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

Hvad er Objekter - Programmering

Hvad er Objekter - Programmering Denne guide er oprindeligt udgivet på Eksperten.dk Hvad er Objekter - Programmering En rigtig god gennemgang af hvad objekter er! Hvordan de oprettes og anvendes! Det er helt klart til nybegyndere, som

Læs mere

Forelæsning Uge 2 Torsdag

Forelæsning Uge 2 Torsdag Forelæsning Uge 2 Torsdag Niveauer af programbeskrivelser Statiske / dynamiske beskrivelser Klassevariabler og klassemetoder Variabler og metoder der et tilknyttet klassen (i stedet for at være tilknyttet

Læs mere

Programmering i C. Lektion september 2009

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

Læs mere

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

Forelæsning Uge 3 Torsdag

Forelæsning Uge 3 Torsdag Forelæsning Uge 3 Torsdag Billedredigering (bl.a. brug af for-løkker) Gråtonebilleder (som er lidt simplere end farvebilleder) Arrays Kan "opbevare" et antal objekter (som ArrayList) Fast (på forhånd kendt)

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

Forelæsning Uge 3 Torsdag

Forelæsning Uge 3 Torsdag Forelæsning Uge 3 Torsdag Billedredigering Gråtonebilleder (som er lidt simplere end farvebilleder) Rekursive metoder Metoder der kalder sig selv Giver ofte meget elegante og simple løsninger på komplekse

Læs mere

Forelæsning Uge 2 Torsdag

Forelæsning Uge 2 Torsdag Forelæsning Uge 2 Torsdag Niveauer af programbeskrivelser Statiske / dynamiske beskrivelser Klassevariabler og klassemetoder Variabler og metoder der et tilknyttet klassen (i stedet for at være tilknyttet

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

DM507 Algoritmer og datastrukturer

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

Læs mere

Forelæsning Uge 2 Torsdag

Forelæsning Uge 2 Torsdag Forelæsning Uge 2 Torsdag Niveauer af programbeskrivelser Statiske / dynamiske beskrivelser Klassevariabler og klassemetoder Variabler og metoder der et tilknyttet klassen (i stedet for at være tilknyttet

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

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

Forelæsning Uge 4 Mandag

Forelæsning Uge 4 Mandag Forelæsning Uge 4 Mandag Algoritmeskabeloner Kan (ved simple tilretningerne) bruges til at implementere metoder, der gennemsøger en arrayliste (eller anden objektsamling) og finder objekter, der opfylder

Læs mere

Forelæsning Uge 5 Mandag

Forelæsning Uge 5 Mandag Forelæsning Uge 5 Mandag Sortering ved hjælp af klassen Collections Ved hjælp af interfacet Comparable Ved hjælp af interfacet Comparator findbest som sorteringsproblem Information om køreprøven i uge

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

Stakke, køer og lidt om hægtede lister

Stakke, køer og lidt om hægtede lister Datastrukturer & Algoritmer, Datalogi C Forelæsning 4/11-2003 Henning Christiansen Stakke, køer og lidt om hægtede lister - kapitel 16 og 17 Hvorfor? Fundamentale datastrukturer man får brug for igen og

Læs mere

Forelæsning Uge 3 Torsdag

Forelæsning Uge 3 Torsdag Forelæsning Uge 3 Torsdag Billedredigering Gråtonebilleder (som er lidt simplere end farvebilleder) Arrays Kan "opbevare" et antal objekter (som ArrayList) Fast (på forhånd kendt) antal elementer Afleveringsopgave:

Læs mere

Indledning. Hvorfor det forholder sig sådan har jeg en masse idéer om, men det bliver for meget at komme ind på her. God fornøjelse med læsningen.

Indledning. Hvorfor det forholder sig sådan har jeg en masse idéer om, men det bliver for meget at komme ind på her. God fornøjelse med læsningen. Indledning...2 Variabler...13 Eksempel: 1...13 Eksempel 2:...13 Eksempel 3:...15 Eksempel 4:...16 Metoder...17 Metode (intet ind og intet ud)...17 Metode (tekst ind)...18 Metode (tekst ind og tekst ud)...19

Læs mere

Introduktion til funktioner, moduler og scopes i Python

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

Læs mere

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

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

Forelæsning Uge 3 Mandag

Forelæsning Uge 3 Mandag Forelæsning Uge 3 Mandag ArrayList klassen Gør det let at lave en objektsamling (collection) med et variabelt antal elementer Der er mange andre slags objektsamlinger (se Collection interfacet i JavaDoc)

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

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

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

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

Forelæsning Uge 2 Mandag

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

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

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

Find største element, sæt det på sidste plads. Grundidé i hobsortering. er er

Find største element, sæt det på sidste plads. Grundidé i hobsortering. er er Programming 1999 KVL Side 19-2 Tidsforbruget, dvs asymptotisk proportionalt med Sorting af element: Tidsforbrug de mindste element, sortet øvrige element 0 Løkkeinvariant for udvalgssorting osv Find tredjemindste

Læs mere

Det er muligt at chekce følgende opg. i CodeJudge: og

Det er muligt at chekce følgende opg. i CodeJudge: og Det er muligt at chekce følgende opg. i CodeJudge:.1.7 og.1.14 Exercise 1: Skriv en forløkke, som producerer følgende output: 1 4 9 16 5 36 Bonusopgave: Modificer dit program, så det ikke benytter multiplikation.

Læs mere

Forelæsning Uge 3 Mandag

Forelæsning Uge 3 Mandag Forelæsning Uge 3 Mandag Niveauer af programbeskrivelser Statiske / dynamiske beskrivelser ArrayList Collection med variabelt antal elementer Der er mange andre Collection typer (se Collection interfacet

Læs mere

Tilfældige tal. Denne artikel introducerer generering af tilfældige tal og viser lidt om hvad man kan og ikke mindst hvad man ikke bør bruge.

Tilfældige tal. Denne artikel introducerer generering af tilfældige tal og viser lidt om hvad man kan og ikke mindst hvad man ikke bør bruge. Denne guide er oprindeligt udgivet på Eksperten.dk Tilfældige tal Denne artikel introducerer generering af tilfældige tal og viser lidt om hvad man kan og ikke mindst hvad man ikke bør bruge. Den forudsætter

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