Moduler i Standard ML

Størrelse: px
Starte visningen fra side:

Download "Moduler i Standard ML"

Transkript

1 Moduler i Standard ML Hans Hüttel December 2001 I løbet af datalogikurset har vi haft glæde af en hel række forskellige standardmoduler som f.eks. Math, Int, Real og String. Disse moduler kan, har vi set, bruges i mange forskellige sammenhænge. I denne note beskriver jeg nogle grundlæggende aspekter ved modulsystemet i Standard ML hvordan man kan lave sine egne moduler fordelene ved at opbygge sit program som moduler Undervejs vil jeg benytte et lille eksempel på moduler. Noten kan ikke beskrive alle aspekter af modulsystemet i SML. Den interesserede læser kan finde en grundig beskrivelse, herunder en gennemgang af de såkaldte funktorer, i [HR99, kapitel 11]. 1 Et lille eksempel Lad os forklare hovedideerne i modulsystemerne med et lille eksempel. Vi vil lave et modul der kan udføre nogle simple operationer på (endelige) mængder og repræsentere simple konstanter. Vi antager at alle elementer i en mængde skal have samme type. 1.1 Krav til mængdemodulet Vi skal kunne udtrykke den tomme mængde og for ethvert element a skal vi kunne bygge mængden {a}. Vores mængdeoperationer skal være foreningsmængde ( ), indsættelse af et element og fjernelse af et element. Endelig skal vi kunne undersøge om a er element i mængden M, d.v.s. om a M. Det kan også være rart at kunne få en liste der angiver elementerne i en given mængde. 1

2 element : a * a list -> bool fjern : a * a list -> a list forening : a list * a list -> a list indsaet : a * a list -> a list oprems : a -> a singleton : a -> a list tom : a list Tabel 1: Interface til vores mængdemodul I en mængde forekommer ethvert element præcis een gang. Derfor kan vi udtrykke en mængde som en liste hvis elementer alle er forskellige. Den tomme mængde udtrykker vi således som den tomme liste. Mængder skal kunne have vilkårlige typer elementer. Derfor skal vi lave en parametriseret type der er polymorf, d.v.s. vi laver typeerklæringen type a mgd = a list Vi kan nu specificere det interface vi ønsker til vores mængdemodul. Funktionerne element, fjern, forening, indsaet, oprems og singleton skal være polymorfe funktioner. Konstantværdien tom skal være den tomme liste (der er en polymorf værdi). Tilsammen giver det os et interface som i Tabel 1. Nu skal vi så beskrive hvad funktionerne rent faktisk gør. Dette giver anledning til det lille SML-program i Tabel 2. Funktionerne over lister er ganske sædvanlige rekursive funktioner over lister og jeg vil derfor ikke gennemgå dem alle her. Hvis læseren har behov for at genopfriske begreberne om lister i SML henviser jeg til [HR99, kapitel 5]. Blot vil jeg nævne at definitionen af funktionen oprems specificerer typeinformationen for at sikre at SML-systemet udleder den korrekte type for denne funktion. En liste, opfattet som værende af type a mgd opremses ved simpelthen at opfatte den som værende af type a list. 1.2 Strukturer i SML Vi indfører nu det første nye begreb fra modulsystemet. Vi kan nemlig pakke erklæringerne i Tabel 2 ind i en såkaldt struktur. En struktur er indkapslet i ordene struct...end. En strukturerklæring består af det reserverede ord structure efterfulgt af navnet på strukturen, et lighedstegn og selve strukturen. Se Tabel 3. 2

3 type a mgd = a list; (* den tomme maengde *) val tom = []; (* funktion der opretter en maengde med eet givet element *) fun singleton a = [a]; fun element (x,[]) = false element (x,(y::m)) = x=y orelse element (x,m); fun indsaet (x,m) = if element (x,m) then m else (x::m); fun fjern (x,[]) = [] fjern (x,(y::m)) = if x=y then m else y::(fjern (x,m)); fun forening ([],m) = m forening ((x::m1),m2) = if element (x,m2) then forening (m1,m2) else x::(forening (m1,m2)); fun oprems m : a mgd = m : a list Tabel 2: En samling af erklæringer der modellerer mængder 3

4 structure Maengde = struct type a mgd = a list; val tom = []; fun singleton a = [a]; fun element (x,[]) = false element (x,(y::m)) = x=y orelse element (x,m); fun indsaet (x,m) = if element (x,m) then m else (x::m); fun fjern (x,[]) = [] fjern (x,(y::m)) = if x=y then m else y::(fjern (x,m)); fun forening ([],m) = m forening ((x::m1),m2) = if element (x,m2) then forening (m1,m2) else x::(forening (m1,m2)); fun oprems m = m Tabel 3: Strukturen Maengde Hvordan holder SML-systemet styr på denne erklæring? SML-systemet holder som bekendt styr på erklæringer i en omgivelse. Erklæringen i Tabel 3 binder navnet Maengde til to omgivelser, nemlig en typeomgivelse som binder typekonstruktoren mgd og en værdiomgivelse som binder alle de erklærede variabel- og funktionsnavne. Når man skal bruge variable og funktioner skal man derfor foranstille navnet på strukturen. Så vi skal f.eks. skrive - Maengde.indsaet ("hest",maengde.singleton "gris"); og får svaret val it = ["hest","gris"] : string list Hvis man bruger mange funktioner i en struktur kan man åbne strukturen så man slipper for de lange navne. Hertil bruger man funktionen open, der fortæller hvilke funktioner der findes i strukturens omgivelse. - open Maengde; > type a mgd = a list val a element = fn : a * a list -> bool val a fjern = fn : a * a list -> a list 4

5 val a forening = fn : a list * a list -> a list val a indsaet = fn : a * a list -> a list val a oprems = fn : a list -> a list val a singleton = fn : a -> a list val a tom = [] : a list Herefter kan man bruge løs af funktioner og værdier: - singleton 7; > val it = [7] : int list - forening (singleton 7,singleton 9); > val it = [7, 9] : int list 1.3 Signaturer i SML Enhver struktur i SML har en grænseflade, nemlig en fortegnelse over de typer man har defineret i strukturer og typerne af de værdier (simple værdier og funktioner) som er defineret i strukturen. Denne grænseflade kalder man en signatur En signatur er en meddelelse fra systemet Når man erklærer en struktur og præsenterer den for SML-systemet vil SMLsystemet automatisk finde strukturens signatur. For strukturen fra Tabel 3 giver SML-systemet dette svar: structure Maengde : sig type a mgd = a list val element : a * a list -> bool val fjern : a * a list -> a list val forening : a list * a list -> a list val indsaet : a * a list -> a list val oprems : a mgd -> a list val singleton : a -> a list val tom : a list end En signatur kan man således opfatte som typen af en struktur. 5

6 signature MaengdeSignatur = sig type a mgd val element : a * a mgd -> bool val fjern : a * a mgd -> a mgd val forening : a mgd * a mgd -> a mgd val indsaet : a * a mgd -> a mgd val oprems : a mgd -> a list val singleton : a -> a mgd val tom : a mgd Tabel 4: Signaturen MaengdeSignatur En signatur er også en kravspecifikation Men man kan også opfatte en signatur som en specifikation af kravene til et moduls interface og selv erklære sine signaturer. Vi kunne starte designet af vores modul med at erklære en signatur og herefter finde ud af hvordan funktionerne i signaturen rent faktisk skulle se ud. Vi kunne derfor skrive en signaturerklæring som i Tabel 4. Vi ville definere en type for mængder a mgd og bruge denne som udgangspunkt i stedet for lister. Herefter kunne vi så arbejde med at få lavet en struktur hvori vi har defineret funktionerne i signaturen MaengdeSignatur. I vores strukturerklæring skriver vi at strukturen overholdet signaturen MaengdeSignatur. Dette har vi gjort i Tabel 5. 2 Strukturer skal matche deres signaturer I det følgende vil vi antage at vi selv erklærer vores signaturer. Når man som i Tabel 4 har erklæret en struktur Str som man påstår overholder en bestemt signatur Sig vil SML-systemet tjekke om dette faktisk er tilfældet. 2.1 Regler for match Hvornår matcher en struktur Str en signatur Sig? I Str skal der være erklæret i hvert fald de typer og værdier (herunder funktioner) som Sig foreskriver. 6

7 structure Maengde : MaengdeSignatur = struct type a mgd = a list; val tom = []; fun singleton a = [a]; fun element (x,[]) = false element (x,(y::m)) = x=y orelse element (x,m); fun indsaet (x,m) = if element (x,m) then m else (x::m); fun fjern (x,[]) = [] fjern (x,(y::m)) = if x=y then m else y::(fjern (x,m)); fun forening ([],m) = m forening ((x::m1),m2) = if element (x,m2) then forening (m1,m2) else x::(forening (m1,m2)); fun oprems m : a mgd = m : a list Tabel 5: En erklæring af Maengde hvor vi kræver at Maengde skal matche signaturen MaengdeSignatur Typerne af de værdier i Str som kræves af Sig skal stemme overens med de tilsvarende typer beskrevet i Sig Strukturen Maengde i Tabel 5 matcher signaturen MaengdeSignatur; hvis a mgd forstås som a list vil alle værdier få den korrekte type og der er de værdier som signaturen foreskriver. I Tabel 6 ser vi strukturen AltMaengde, et eksempel på en noget anderledes struktur der også matcher signaturen MaengdeSignatur. Forskellen er at vi i strukturen AltMaengde repræsenterer mængder ikke som lister, men som elementer af en nyerklæret datatype. Se [HR99, kapitel 7 og 8] for at blive mindet om datatype-erklæringer. Til gengæld kan vi se at strukturen TristMaengde i Tabel 7 ikke kan matche signaturen MaengdeSignatur. Dels mangler funktionerne forening og oprems helt, dels har værdien tom typen int list hvor signaturen foreskriver den polymorfe type a list. 2.2 Værdier i en struktur ud over signaturens er lokale! Vi har lige set at en struktur Str matcher en signatur Sig hvis der i Str findes mindst de værdier som Sig foreskriver og disse har de typer som Sig kræver. 7

8 structure AltMaengde : MaengdeSignatur= struct datatype a mgd = Tom Tilfoej of a* a mgd val tom = Tom; fun singleton a = Tilfoej (a,tom) fun element (x,tom) = false element (x,tilfoej(y,m)) = x=y orelse element (x,m); fun indsaet (x,m) = if element (x,m) then m else Tilfoej(x,m); fun fjern (x,tom) = Tom fjern (x,tilfoej(y,m)) = if x=y then m else Tilfoej(y,(fjern (x,m))); fun forening (Tom,m) = m forening (Tilfoej(x,m1),m2) = if element (x,m2) then forening (m1,m2) else Tilfoej(x,(forening (m1,m2))); fun oprems Tom = [] oprems (Tilfoej(x,m)) = x::(oprems m) Tabel 6: En anden struktur som også matcher signaturen MaengdeSignatur structure TristMaengde : MaengdeSignatur= struct type a mgd = a list; val tom = [ 42 ]; fun singleton a = [a]; fun element (x,[]) = false element (x,(y::m)) = x=y orelse element (x,m); fun indsaet (x,m) = if element (x,m) then m else (x::m); fun fjern (x,[]) = [] fjern (x,(y::m)) = if x=y then m else y::(fjern (x,m)); Tabel 7: En struktur som ikke matcher signaturen MaengdeSignatur 8

9 structure HMaengde : MaengdeSignatur= struct type a mgd = a list; val tom = []; fun singleton a = [a]; fun element (x,[]) = false element (x,(y::m)) = x=y orelse element (x,m); fun indsaet (x,m) = if element (x,m) then m else (x::m); fun fjern (x,[]) = [] fjern (x,(y::m)) = if x=y then m else y::(fjern (x,m)); fun forening ([],m) = m forening ((x::m1),m2) = if element (x,m2) then forening (m1,m2) else x::(forening (m1,m2)); fun oprems m : a mgd = m : a list; fun hest x = forening (x, ["hest"]) Tabel 8: En struktur der matcher signaturen MaengdeSignatur og har en yderligere værdi, nemlig funktionen hest Men dette indebærer at der i Str kan findes yderligere værdier. Tabel 8 giver et eksempel på dette. Vi erklærer en struktur HMaengde som har tilføjet en ekstra funktion hest. Hvis vi f.eks. prøver at bruge hest-funktionen til at tilføje hest til den tomme mængde får vi at vide at hest-funktionen ikke er bundet: - HMaengde.hest HMaengde.tom;! Toplevel input:! HMaengde.hest HMaengde.tom;! ^^^^^^^^^^^^^! Unbound value component: HMaengde.hest Så hvis man erklærer værdier i en struktur ud over de værdier som signaturen angiver, vil disse værdier være lokale. Dette kan man udnytte hvis man har brug for at erklære hjælpefunktioner i sin struktur. Fordi disse hjælpefunktioner er lokale, er de skjult for uvedkommende. 9

10 2.3 Transparent og opak matching I de eksempler vi netop har set, er al information i signaturen tilgængelig for brugeren af moduler. Dette kalder man transparent matching man kan se ind i modulet. Men det kan give problemer med hensyn til typeinformation. Her er et eksempel på problemet med transparent matching. I strukturen Maengde repræsenterer vi mængder som lister uden gentagelse af elementer. Men der er ikke noget der forhindrer os i at bruge funktionerne fra strukturen på andre slags lister, og så får vi naturligvis resultater der er noget vås: - Maengde.fjern(1,[1,1,2,3]); > val it = [1, 2, 3] : int list Ovenstående fejl kan naturligvis undgås ved lidt omtanke. Men hvis vi anvendte fjern-funktionen f.eks. på en meget lang liste kan vi risikere at vi begår og overser en fejl. Derfor giver SML mulighed for at man kan skjule typeinformation. Herefter kan man kun bruge funktionerne i strukturen på elementer som bliver bygget af funktioner i strukturen. Man skjuler typeinformation ved at bruge opak 1 matching af signaturer. I Tabel 9 ser vi hvordan vi på denne måde kan erklære Maengde så typeinformationen om a mgd ikke længere er synlig. Vi skal faktisk blot skrive :> i strukturens hoved i stedet for :. Nu vil funktionsanvendelsen fra før give en typefejl, fordi typen a mgd ikke længere kan ses bare at være en liste. - Maengde.fjern(1,[1,1,2,3]);! Toplevel input:! Maengde.fjern(1,[1,1,2,3]);! ^^^^^^^^! Type clash: expression of type! a list! cannot have type! int mgd Når vi anvender funktioner korrekt får vi svar som nedenstående: - Maengde.singleton "hest"; > val it = <mgd> : string mgd Hvordan kan man nu se hvilke elementer der er i en mængde? Det kan vi med funktionen oprems: 1 opak [o pa k] (fr. opaque, lat. opacus skyggefuld, mørk) uigennemsigtig 10

11 structure Maengde : > MaengdeSignatur= struct type a mgd = a list; val tom = []; fun singleton a = [a]; fun element (x,[]) = false element (x,(y::m)) = x=y orelse element (x,m); fun indsaet (x,m) = if element (x,m) then m else (x::m); fun fjern (x,[]) = [] fjern (x,(y::m)) = if x=y then m else y::(fjern (x,m)); fun forening ([],m) = m forening ((x::m1),m2) = if element (x,m2) then forening (m1,m2) else x::(forening (m1,m2)); fun oprems m : a mgd = m : a list Tabel 9: Erklæringen af en struktur der matcher signaturen MaengdeSignatur med opak matching eneste forskel er :> - val mgd1 = Maengde.singleton "hest"; > val mgd1 = <mgd> : string mgd - val mgd2 = Maengde.singleton "ko"; > val mgd2 = <mgd> : string mgd - val mgd3= Maengde.forening(mgd1,mgd2); > val mgd3 = <mgd> : string mgd - Maengde.oprems mgd3; > val it = ["hest", "ko"] : string list En yderligere fordel ved at skjule typedetaljer på denne måde er at vi kan lave detaljerne i et modul om uden at brugerne af modulet får brug får at vide det. Hvis vi f.eks. beslutter os til at lave modulet Maengde om så det anvender datatype-ideen fra AltMaengde ovenfor kan vi blive ved med at bruge det nye modul på præcis samme måde som det gamle. Både Maengde og AltMaengde matcher jo MaengdeSignatur så funktionerne vi har til rådighed hedder samme i begge tilfælde, og der er i begge filfælde en type som hedder a mgd hvis udseende vi ikke kender. 11

12 3 Hvorfor er det en god ide at opbygge sit program af moduler? Det er ofte en god idé at opbygge sit program som en samling moduler. Alle moderne programmeringssprog understøtter denne ide. Objektorienterede programmeringssprog som Java og C++ benytter en lidt anden struktureringsidé end ML men den grundlæggende filosofi er beslægtet: Et program kan struktureres som en samling af moduler der hver især tilbyder en række værdier og operationer. Programmet benytter de forskellige modulers operationer (og modulerne kan naturligvis kalde hinanden.) Genbrug og deling af gode ideer Hvis man ofte bruger de samme beslægtede funktioner kan man samle dem i et modul som man oversætter een gang for alle med mosmlc. Man kan desuden vælge at gøre sine biblioteker offentligt tilgængelige på Internet. MLs biblioteker er opstået på denne måde. Bedre muligheder for arbejdsdeling Hvis flere mennesker går sammen om at lave et program kan man opdele programmeringsopgaven i flere mindre delopgaver. Hver delopgave går ud nu på at udarbejde et modul. Hvis man bliver enige om modulernes signaturer på forhånd behøver man kun at kende dem og hver enkelt kan herefter arbejde videre for sig. Nemmere at opdatere dele af et program Hvis man opdeler et program i moduler kan man lettere opdatere et program uden at skulle foretage gennemgribende rettelser i hele programmet. Mange store softwareproducenter udsender med mellemrum opdateringer af deres programmer. Sådanne opdateringer består typisk af nye versioner af moduler til erstatning af gamle. 4 Separat oversættelse af moduler Vi kan oversætte moduler hver for sig med mosmlc og senere indlæse modulerne med load præcis som vi ville indlæse et modul fra standardbiblioteket. Her er hvad man skal huske: En signatur kan oversættes for sig selv. En signaturfil skal have efternavnet sig (ikke sml!) og signaturen i filen skal have samme navn som filen. Signaturen Mystik skal derfor findes i signaturfilen Mystik.sig. 12

13 En struktur der matcher Sig skal hedde det samme som Sig. Hvis signaturen Mystik findes i signaturfilen Mystik.sig, skal strukturen hedde Mystik. Filen med den pågældende struktur skal også hedde det samme samme som signaturen. Så strukturfilen skal hedde Mystik.sml. Når man oversætter en signatur MinSignatur.sig får man som resultat en ny fil MinSignatur.ui hvor ui står for user interface. Denne fil beskriver signaturens krav. Når man oversætter en struktur MinStruktur.sml får man desuden en ny fil MinStruktur.uo. Hvis strukturen skal matche en signatur man allerede har oversat undersøger ML-systemet om der allerede findes en ui-fil og om denne passer med resultatet af at oversætte strukturen. Hvis man vil indlæse et modul skal de relevante ui- og uo-filer være tilgængelige fra det katalog hvor det program der bruger dem findes. På en lokal installation af Moscow ML kan man placere sine biblioteker i underkataloget lib hvor standardbibliotekerne findes. Litteratur [HR99] M. Hansen og H. Rischel. Introduction to Programming Using SML, Addison-Wesley

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

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

Læs mere

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

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

Læs mere

Lineær regression i Standard ML

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

Læs mere

Et SML-program til sortering af linier i en tekstfil

Et SML-program til sortering af linier i en tekstfil Et SML-program til sorterg af lier i en tekstfil Hans Hüttel 10. januar 2002 Indhold 1 Om denne tekst 2 2 Interface 2 3 At dlæse strenge fra en fil og danne en liste af dem 3 3.1 Funktionsdefitioner.......................

Læs mere

DATALOGI 0 GA. Skriftlig eksamen tirsdag den 18. januar 2005 af to timers varighed. Opgavesæt med vejledende løsninger

DATALOGI 0 GA. Skriftlig eksamen tirsdag den 18. januar 2005 af to timers varighed. Opgavesæt med vejledende løsninger Københavns Universitet bacheloruddannelsen i datalogi side 1 af 6 DATALOGI 0 GA Skriftlig eksamen tirsdag den 18. januar 2005 af to timers varighed Opgavesæt med vejledende løsninger Dette opgavesæt består

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

Datalogi 0 GA Forelæsning september 2003 Nils Andersen. Tegn og tekster. Listefunktionalen map. Naïv sortering

Datalogi 0 GA Forelæsning september 2003 Nils Andersen. Tegn og tekster. Listefunktionalen map. Naïv sortering Datalogi 0 GA Forelæsning 11 12 18. september 2003 Nils Andersen Tegn og tekster. Listefunktionalen map. Naïv sortering Typen char af tegn Typen string af tekster Eksempler Højereordensfunktionen map Sortering

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

3 Algebraisk Specifikation af Abstrakte Datatyper.

3 Algebraisk Specifikation af Abstrakte Datatyper. 3 Algebraisk Specifikation af Abstrakte Datatyper. Specifikation kontra program. Bestanddele af en algebraisk specifikation. Klassificering af funktioner i en ADT. Systematisk definition af ligninger.

Læs mere

Datalogi 0 GA Forelæsning oktober 2003 Nils Andersen. Undtagelser. Kombinatorisk søgning

Datalogi 0 GA Forelæsning oktober 2003 Nils Andersen. Undtagelser. Kombinatorisk søgning Datalogi 0 GA Forelæsning 19 20 23. oktober 2003 Nils Andersen Undtagelser. Kombinatorisk søgning Undtagelser Erklæring Kast Gribning Det grådige princip til løsning af et kombinatorisk problem Frembringelse

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

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

Ordinær eksamen i Introduktion til programmering, blok 1, 2010

Ordinær eksamen i Introduktion til programmering, blok 1, 2010 Ordinær eksamen i Introduktion til programmering, blok 1, 2010 1. November 2010 Dette dokument udgør opgavesættet for den ordinære eksamen i kurset Introduktion til programmering, blok 1, 2010. Det består

Læs mere

Kapitel 4 Løkker i C#

Kapitel 4 Løkker i C# Kapitel 4 Løkker i C# Løkker en vigtig del af alle programmeringssprog, og C# er ikke andeles. En løkke er en måde at udføre en del af koden gentagne gange. Ideen er at du fortsætter med at udføre en opgave

Læs mere

Introduktion til funktioner, moduler og scopes i Python

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

Læs mere

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

Michael Jokil 11-05-2012

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

Læs mere

Tilgang til data. To udbredte metoder for at tilgå data: Sekventiel tilgang Random access: tilgang via ID (key, nøgle) for dataelementer.

Tilgang til data. To udbredte metoder for at tilgå data: Sekventiel tilgang Random access: tilgang via ID (key, nøgle) for dataelementer. Merging og Hashing Tilgang til data To udbredte metoder for at tilgå data: Sekventiel tilgang Random access: tilgang via ID (key, nøgle) for dataelementer. API for sekventiel tilgang (API = Application

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

DM507 Algoritmer og datastrukturer

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

Læs mere

Tilgang til data. To udbredte metoder for at tilgå data: Sekventiel tilgang Random access: tilgang via ID (også kaldet key, nøgle) for dataelementer.

Tilgang til data. To udbredte metoder for at tilgå data: Sekventiel tilgang Random access: tilgang via ID (også kaldet key, nøgle) for dataelementer. Merging og Hashing Tilgang til data To udbredte metoder for at tilgå data: Sekventiel tilgang Random access: tilgang via ID (også kaldet key, nøgle) for dataelementer. API for sekventiel tilgang (API =

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

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

DM507 Algoritmer og datastrukturer

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

Læs mere

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

MIPS, registerallokering og MARS

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

Læs mere

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

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

Python 3 kursus lektion 1:

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

Læs mere

Å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

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

Programmering og Problemløsning, 2017

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

Læs mere

Datalogi 0 GA Forelæsning september 2003 Nils Andersen. Datamatiske principper

Datalogi 0 GA Forelæsning september 2003 Nils Andersen. Datamatiske principper Datalogi 0 GA Forelæsning 1 2 1. september 2003 Nils Andersen Datamatiske principper EDB som simulering Programmering Problemløsning Tilstandsorienteret Værdiorienteret (= funktionsorienteret) Administrative

Læs mere

Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Ideen er simpel:

Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Ideen er simpel: Grådige algoritmer Grådige algoritmer Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Ideen er simpel: Opbyg løsningen skridt for skridt ved hele tiden af vælge lige

Læs mere

Programmering C RTG - 3.3 09-02-2015

Programmering C RTG - 3.3 09-02-2015 Indholdsfortegnelse Formål... 2 Opgave formulering... 2 Krav til dokumentation af programmer... 3 ASCII tabel... 4 Værktøjer... 5 Versioner af ASCII tabel... 6 v1.9... 6 Problemer og mangler... 6 v2.1...

Læs mere

Indhold. Maskinstruktur... 3. Kapitel 1. Assemblersprog...3. 1.1 Indledning...3 1.2 Hop-instruktioner... 7 1.3 Input og output...

Indhold. Maskinstruktur... 3. Kapitel 1. Assemblersprog...3. 1.1 Indledning...3 1.2 Hop-instruktioner... 7 1.3 Input og output... Indhold Maskinstruktur... 3 Kapitel 1. Assemblersprog...3 1.1 Indledning...3 1.2 Hop-instruktioner... 7 1.3 Input og output... 9 Kapitel 2. Maskinkode... 13 2.1 Den fysiske maskine... 13 2.2 Assemblerens

Læs mere

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

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

Læs mere

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

Lær Python dag 1 - modul 1

Lær Python dag 1 - modul 1 Lær Python dag 1 - modul 1 Introduktion, basis python Steffen Berg Klenow Jonas Bamse Andersen Syddansk Universitet Indhold 1. Velkommen 2. Programmering i python 3. Typer, variabler og udtryk 1 Velkommen

Læs mere

Programmering og Problemløsning, 2017

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

Læs mere

Programmering og Problemløsning, 2017

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

Læs mere

Elementær Matematik. Mængder og udsagn

Elementær Matematik. Mængder og udsagn Elementær Matematik Mængder og udsagn Ole Witt-Hansen 2011 Indhold 1. Mængder...1 1.1 Intervaller...4 2. Matematisk Logik. Udsagnslogik...5 3. Åbne udsagn...9 Mængder og Udsagn 1 1. Mængder En mængde er

Læs mere

Sådan anvendes databaseskabelonen

Sådan anvendes databaseskabelonen Sådan anvendes databaseskabelonen Indhold Hvad er databaseskabelonen? 4 Opret en ny database 4 Vælg en ny database til programmet 5 Hent komponentdatabaser på hjemmesiden 7 Importer komponentdata i databasen

Læs mere

Målet for disse slides er at beskrive nogle algoritmer og datastrukturer relateret til at gemme og hente data effektivt.

Målet for disse slides er at beskrive nogle algoritmer og datastrukturer relateret til at gemme og hente data effektivt. Merging og hashing Mål Målet for disse slides er at beskrive nogle algoritmer og datastrukturer relateret til at gemme og hente data effektivt. Dette emne er et uddrag af kurset DM507 Algoritmer og datastrukturer

Læs mere

Hent filoplysninger fra billeder og filer

Hent filoplysninger fra billeder og filer Hent filoplysninger fra billeder og filer I denne vejledning bliver det gennemgået, hvordan man via Power Forespørgsel kan hente filoplysninger fra en mappe ind i Excel. Der skal opbygges følgende elementer:

Læs mere

Listen over reserverede ord er meget lang, men de væsentligste vil jeg beskrive her i denne artikel:

Listen over reserverede ord er meget lang, men de væsentligste vil jeg beskrive her i denne artikel: Denne guide er oprindeligt udgivet på Eksperten.dk SQL og ASP En artikel omkring simpel SQL og hvordan disse opbygges, udformes og udføres, sådan at man kan få et brugbart resultat i ASP. Dette ligefra

Læs mere

Målet for disse slides er at diskutere nogle metoder til at gemme og hente data effektivt.

Målet for disse slides er at diskutere nogle metoder til at gemme og hente data effektivt. Merging og hashing Mål Målet for disse slides er at diskutere nogle metoder til at gemme og hente data effektivt. Dette emne er et uddrag af kurset DM507 Algoritmer og datastrukturer (2. semester). Mål

Læs mere

Exceptions i Delphi. Try except

Exceptions i Delphi. Try except Exceptions i Delphi Exceptions er en teknik til at fange fejl under programafviklingen. Ikke programmeringsfejl, men fejl der opstår i forskellige situationer, f.eks. en fil der mangler en fil der er skrivebeskyttet,

Læs mere

DM507 Algoritmer og datastrukturer

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

Læs mere

DM507 Algoritmer og datastrukturer

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

Læs mere

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

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

Læs mere

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

Automatisering af dataarbejde 2.2

Automatisering af dataarbejde 2.2 - Ofte kan man ikke bruge data direkte som det ligger i input, fx statistikbank tabeller det skal transformeres - Transformation af data er fx nødvendigt hvis data - Er disaggregeret - Har manglende observationer

Læs mere

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

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 3 DM502 Forelæsning 3 Indlæsning fra tastatur Udskrift til skærm Repetition Beregning af middelværdi Gentagelse med stop-betingelse (while) Heltalsdivision Division med nul Type-casting ( (double) ) Betinget

Læs mere

Objektorientering. Programkvalitet

Objektorientering. Programkvalitet 1 PROSA-Bladet nr. 4 1993 Objektorientering = Programkvalitet? Af Finn Nordbjerg, adjunkt ved Datamatikeruddannelsen, Aalborg Handelskole 1. Indledning Objektorientering er blevet et edb-fagets mest udbredte

Læs mere

Komplekse tal og Kaos

Komplekse tal og Kaos Komplekse tal og Kaos Jon Sporring Datalogisk Institut ved Københavns Universitet Universitetsparken 1, 2100 København Ø August, 2006 1 Forord Denne opgave er tiltænkt gymnasiestuderende med matematik

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

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

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

Læs mere

Rettelser til Pilen ved træets rod

Rettelser til Pilen ved træets rod Rettelser til Pilen ved træets rod Hans Hüttel Pr. 12. juni 2003 Nedenstående rettelser er indsamlet af mig selv, Peter Poulsen, Martin Maach og ikke mindst Lars Schunk i løbet af foråret 2003. Simple

Læs mere

Oversættere Skriftlig eksamen onsdag d. 24. januar 2007

Oversættere Skriftlig eksamen onsdag d. 24. januar 2007 Københavns Universitet Naturvidenskabelig Embedseksamen Oversættere Skriftlig eksamen onsdag d. 24. januar 2007 Eksamenstiden er to timer. Opgavernes vægt i procent er angivet ved hver opgave. Den skriftlige

Læs mere

Vejledning i at anvende besvarelsesformular. Juli 2016

Vejledning i at anvende besvarelsesformular. Juli 2016 Vejledning i at anvende besvarelsesformular Juli 2016 Hvem skal anvende vejledningen? Vejledningen er relevant for dig, hvis du skal anvende besvarelsesformular på postkasser eller materialer. Du skal

Læs mere

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

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

Læs mere

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

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

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

Installationsvejledning SAS Foundation 9.2 SAS Enterprise Guide 4.2. Windows Vista

Installationsvejledning SAS Foundation 9.2 SAS Enterprise Guide 4.2. Windows Vista Installationsvejledning SAS Foundation 9.2 SAS Enterprise Guide 4.2 Windows Vista Oversigt Inden installationen... 3 Udpakning af softwaren... 4 Kopiér licensen ind... 6 Installationen... 7 Yderligere

Læs mere

Fang Prikkerne. Introduktion. Scratch

Fang Prikkerne. Introduktion. Scratch Scratch 2 Fang Prikkerne All Code Clubs must be registered. Registered clubs appear on the map at codeclubworld.org - if your club is not on the map then visit jumpto.cc/ccwreg to register your club. Introduktion

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

Ide med Diff. Mål. Tidsplan. 1.uge: 2.uge:

Ide med Diff. Mål. Tidsplan. 1.uge: 2.uge: Side 1 af 5 Ide med Diff. Min ide med differenertierings modulet er at lave et program som kan vise 3d objekter, og få lavede en konverter som kan konventer 3ds filer over til noget som flash kan bruge.

Læs mere

Vejledning i at anvende besvarelsesformular. August 2019

Vejledning i at anvende besvarelsesformular. August 2019 Vejledning i at anvende besvarelsesformular August 2019 Hvem skal anvende vejledningen? Vejledningen er relevant for dig, hvis du skal anvende besvarelsesformular på postkasser eller materialer. Du skal

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

Brug af Archive-funktion i SportIdent (baseret på version 10.3 af SI-programmerne)

Brug af Archive-funktion i SportIdent (baseret på version 10.3 af SI-programmerne) Brug af Archive-funktion i SportIdent (baseret på version 10.3 af SI-programmerne) Formål: Ved at anvende arkiv-funktionen kan arrangørerne ved et træningsløb uden tilmeldinger eller ved åbne baner hurtigt

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

Lad os som eksempel se på samtidigt kast med en terning og en mønt:

Lad os som eksempel se på samtidigt kast med en terning og en mønt: SANDSYNLIGHEDSREGNING Stokastisk eksperiment Et stokastisk eksperiment er et eksperiment, hvor vi fornuftigvis ikke på forhånd kan have en formodning om resultatet af eksperimentet Til gengæld kan vi prøve

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

PHP Snippets. De små korte. Skrevet af Daniel Pedersen

PHP Snippets. De små korte. Skrevet af Daniel Pedersen PHP Snippets De små korte Skrevet af Daniel Pedersen Indhold PHP Snippets De små korte er en samling af små og praktiske kode eksempler med kort forklaring, som med formål at kunne benyttes til opsalgsværk

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

Kursusarbejde 3 Grundlæggende Programmering

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

Læs mere

Andengradsligninger. Frank Nasser. 12. april 2011

Andengradsligninger. Frank Nasser. 12. april 2011 Andengradsligninger Frank Nasser 12. april 2011 c 2008-2011. Dette dokument må kun anvendes til undervisning i klasser som abonnerer på MatBog.dk. Se yderligere betingelser for brug her. Bemærk: Dette

Læs mere

Specialiseringen Rapport Lavede Af Rasmus R. Sørensen Side 1 af 6

Specialiseringen Rapport Lavede Af Rasmus R. Sørensen Side 1 af 6 Side 1 af 6 Indholdsfortegnelse INDHOLDSFORTEGNELSE 1 INTRO 3 STARTEN AF SPECIALISERINGEN 3 ANKOMST TIL SKOTLAND 4 DATABASER 5 NETVÆRK 5 INTERAKTION 5 AFSLUTNING AF SPECIALISERINGEN 5 KONKLUSION 6 Side

Læs mere

Oversættere Vejledende løsninger til Skriftlig eksamen onsdag d. 24. januar 2007

Oversættere Vejledende løsninger til Skriftlig eksamen onsdag d. 24. januar 2007 Københavns Universitet Naturvidenskabelig Embedseksamen Oversættere Vejledende løsninger til Skriftlig eksamen onsdag d. 24. januar 2007 Eksamenstiden er to timer. Opgavernes vægt i procent er angivet

Læs mere

Programmering og Problemløsning, 2017

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

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

Nintex Workflow UK/DK

Nintex Workflow UK/DK Nintex Workflow UK/DK Når Nintex Workflows anvendes i et Dansk sproget SharePoint miljø, er der lidt forskel på hvad de forskellige elementer kaldes, såvel som rækkefølgen på disse. Noget er oversat, noget

Læs mere

Programmering og Problemløsning, 2017

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

Læs mere

Forelæsning Uge 2 Torsdag

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

Læs mere

Algoritmer og invarianter

Algoritmer og invarianter Algoritmer og invarianter Iterative algoritmer Algoritmen er overordnet set een eller flere while eller for-løkker. Iterative algoritmer Algoritmen er overordnet set een eller flere while eller for-løkker.

Læs mere

Procesbeskrivelse - Webprogrammering

Procesbeskrivelse - Webprogrammering Procesbeskrivelse - Webprogrammering Indholdsfortegnelse Forudsætninger... 1 Konceptet... 2 Hjemmesiden... 2 Server-side... 3 Filstrukturen... 3 Databasehåndtering og serverforbindelse... 4 Client-side...

Læs mere

Opgaveteknisk vejledning Word 2016 til Mac. Tornbjerg Gymnasium 10. december 2015

Opgaveteknisk vejledning Word 2016 til Mac. Tornbjerg Gymnasium 10. december 2015 Opgaveteknisk vejledning Word 2016 til Mac Tornbjerg Gymnasium 10. december 2015 Gem!!! Så snart et dokument er oprettet skal det gemmes under et fornuftigt navn, gør det til en vane at gemme hele tiden

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

fredag 13-05-2011 Vejledning til SU-batchjobs R014, R028 og R029 UNI C

fredag 13-05-2011 Vejledning til SU-batchjobs R014, R028 og R029 UNI C fredag 13-05-2011 Vejledning til SU-batchjobs R014, R028 og R029 UNI C Vejledning til SU-batchjobs R014, R028 og R029 I forbindelse med installation af version 10.2 blev SU-batchjob R014 ændret. Samtidig

Læs mere

Licensmanager ikke installeret

Licensmanager ikke installeret 1. februar 2018 Indhold 1... 2 1.1 Den hurtige og enkle løsning... 3 Side 1 af 6 1 Ved programopstart opstår en af nedenstående fejl: Denne type fejl opleves nu og da, og skyldes, at programmet ikke kan

Læs mere

18 Multivejstræer og B-træer.

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

Læs mere

Administration af subsites BRUGERVEJLEDNING FOR ADMINISTRATOREN

Administration af subsites BRUGERVEJLEDNING FOR ADMINISTRATOREN Administration af subsites BRUGERVEJLEDNING FOR ADMINISTRATOREN Indholdsfortegnelse Introduktion... 2 Definitioner... 2 Generelt... 3 Oprettelse af en skabelon... 4 Sidetypeskabeloner... 5 Globale displaymoduler...

Læs mere

Dynamisk programmering

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

Læs mere

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

Som sagt kræves der helst lidt viden om OOP hvis man virkelig vil lærer noget, og ikke bare lave copypaste

Som sagt kræves der helst lidt viden om OOP hvis man virkelig vil lærer noget, og ikke bare lave copypaste Denne guide er oprindeligt udgivet på Eksperten.dk Indkøbsvogn i PHP I denne artikel vil jeg prøve at lave en indkøbskurv som let kan udvides, og som ikke er svær at forstå. Det er bedst med viden om OOP(klasser),

Læs mere

Opgave: Digitalisering af et dokument

Opgave: Digitalisering af et dokument Denne opgave omhandler digitaliseringen af et Veje i Frederikssund Kommune. I opgaven gennemgås følgende: Oprettelse af mapper og sider på hjemmesiden Indsættelse af tekst, billeder, links til PDF og hjemmesider

Læs mere

Vejledning til Teknisk opsætning

Vejledning til Teknisk opsætning Vejledning til Teknisk opsætning v. 1.0 Adm4you, 2010. Indhold Kort om denne vejledning... 3 Generelt om easyourtime... 3 Installation af databasen... 3 Sikkerhed og rettigheder... 4 SQL Login... 4 Rettigheder

Læs mere

Objects First with Java A Practical Introduction Using BlueJ

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

Læs mere