Yderligere udvidelser af oversætter for Minimal

Størrelse: px
Starte visningen fra side:

Download "Yderligere udvidelser af oversætter for Minimal"

Transkript

1 Yderligere udvidelser af oversætter for Minimal Karakteropgave på kurset Oversættere Vinter Introduktion Dette er den anden del af rapportopgaven på Oversættere, vinter Opgaven skal løses individuelt. Opgaven bliver stillet mandag d. 2/ kl og skal afleveres i 2 eksemplarer i førstedelsadministrationen senest fredag d. 13/ kl Denne del af rapportopgaven bedømmes med ekstern censur til en karakter i trettenskalaen. Godkendelsesopgaven er en forudsætning for karakteropgaven, så hvis man ikke har afleveret godkendelsesopgaven eller fået denne godkendt, så kan man ikke få sin karakteropgave bedømt. Ligeledes vil karakteren for karakteropgaven ikke blive registreret på eksamenskontoret før den skriftlige eksamen er bestået. Eksamen og rapportopgave kan bestås i forskellige eksamensterminer. Karakteropgaveteksten angiver fem forskellige opgaver. Hver deltager skal løse en af disse opgaver, og det skal af besvarelsen klart fremgå, hvilken opgave, der er søgt løst. Det er endvidere et krav, at personer, der var i samme gruppe til godkendelsesopgaven, løser forskellige opgaver til karakteropgaven. 2 Om opgaven I dokumentet Sproget Minimal er et simpelt funktionelt sprog beskrevet. Dette blev i godkendelsesopgaven udvidet med en række faciliteter beskrevet i dokumentet Udvidelser af oversætter for Minimal. I filen G-sol.zip (som findes i kataloget /usr/local/del1/dat-oversaet/k) er disse dokumenter samt en implementering af det udvidede Minimal givet. Denne implementation er (efter forfatterens bedste overbevisning) korrekt, men ikke specielt optimeret. Særligt interesserede kan finde en mere optimeret oversætter (som dog stadig har mulighed for utallige forbedringer) i filen Compiler1.sml. Optimeringerne ligger i behandlingen af betingelser, som er oversat som i figur 6.8 i Basics of Compiler Design med en forbedring svarende til opgave 6.9. For at bruge den optimerede oversætter, skal Compiler1.sml omdøbes til Compiler.sml, så den erstatter den simplere oversætter. 1

2 Man kan i karakteropgaven vælge enten at udvide en af ovennævnte implementeringer eller den implementering, som man har været med til at lave i forbindelse med godkendelsesopgaven. Under alle omstændigheder bør det klart fremgå af rapporten hvilken implementering, der bruges som udgangspunkt, og hvis egen gruppes implementering af G-opgaven bruges, skal der i rapporten være en reference til det katalog på DIKU s maskiner, hvor denne implementering findes. Hvis gruppen i fællesskab har rettet eller forbedret deres oversætter siden afleveringen af G-opgaven, bør dette detaljeres i rapporten, sådan at det klart fremgår, hvad udgangspunktet for den individuelle opgave er. Krav til besvarelsen. De i den valgte opgave beskrevne udvidelser skal implementeres og afprøves på de nævnte testprogrammer. Hvis udvidelserne beskriver regler og begrænsninger vedrørende typer eller lignende, skal typecheckeren checke, at disse er overholdt (medmindre andet er angivet). Opgavebesvarelsen skal indeholde en kort beskrivelse af de ændringer, der laves i komponenterne til oversætteren. For Parser.grm skal der kort forklares hvordan grammatikken er gjort entydig (ved omskrivning eller brug af operatorpræcedenserklæringer) samt beskrivelse af eventuelle ikke-åbenlyse løsninger, f.eks. i forbindelse med opbygning af abstrakt syntaks. Det skal bemærkes, at alle konflikter skal fjernes v.h.a. præcedenserklæringer eller omskrivning af syntaks. Med andre ord må MosML-yacc ikke rapportere konflikter i tabellen. For Type.sml og Compiler.sml skal kort beskrives, hvordan typerne checkes og kode genereres for de nye konstruktioner. Brug evt. en form, der ligner figur 5.2 og 6.3 i Basics of Compiler Design. Du skal ikke vedlægge udskrifter af hele programteksten, men du skal angive adressen på et filkatalog på DIKU s førstedelssystem, hvor alle relevante filer kan findes. Der må ikke efter afleveringsfristen rettes i filerne i dette katalog. Særligt vigtige mindre dele af programteksten kan inkorporeres som figurer i rapporten. Rapporten skal beskrive hvorvidt oversættelse og kørsel af eksempelprogrammer (jvf. afsnit 4) giver den forventede opførsel, samt beskrivelse af afvigelser derfra. Kendte mangler i typechecker og oversætter skal beskrives, og i det omfang det er muligt, skal der laves forslag til hvordan disse evt. kan udbedres. Der bliver ikke lagt ret stor vægt på effektiviteten af oversætteren (sålænge det ikke tager flere minutter at oversætte eksempelprogrammerne), så det anbefales at bruge simple datastrukturer. Desuden er det vigtigere at kunne køre alle eksempelprogrammerne end at generere effektiv kode kun for nogle af disse, så det anbefales at man ikke laver optimeringer før man har en fuldt fungerende oversætter. Man kan godt opnå god karakter uden at lave optimeringer, sålænge den grundlæggende implementering er fornuftig og velargumenteret. 2

3 Det er i stort omfang op til dig selv at bestemme, hvad du mener er væsentligt at medtage i rapporten, sålænge de eksplicitte krav i dette afsnit er opfyldt. Udover udskrifter må rapporten maksimalt fylde 10 sider, helst mindre, dog uden at udelade beskrivelser af mangler i programmet eller væsentlige designvalg. 2.1 Afgrænsninger af oversætteren Det er helt i orden, at lexer, parser og typechecker stopper ved den første fundne fejl. Hovedprogrammet MC.sml kører typecheck på programmerne inden oversætteren kaldes, så oversætteren kan antage, at programmerne er uden typefejl m.m. Det kan antages, at offsets og konstanter i Minimal-programmer er små nok til, at de kan være i konstantfelterne i MIPS instruktioner. Endvidere kan det antages at de oversatte programmer er små nok til, at alle hopadresser kan ligge i konstantfelterne i branch- og hopordrer. Der skal ikke laves test for overløb på stakken eller hoben. Den faktiske opførsel ved overløb er udefineret, så om der sker fejl under afvikling eller oversættelse, eller om der bare beregnes mærkelige værdier, er underordnet. Stak og hob skal dog være store nok til, at testprogrammerne kan køre uden overløb med de angivne testdata. 3 De enkelte opgaver I de følgende afsnit er fem forskellige opgaver omkring udvidelser af sproget Minimal angivet. Du skal vælge en af disse, og du må ikke vælge samme udvidelse som et andet medlem af den gruppe, som du lavede godkendelsesopgaven sammen med. Det er op til gruppemedlemmerne at blive indbyrdes enige om en fordeling af opgaverne. Opgaverne er søgt lavet, så de er nogenlunde lige omfattende, men nogle kan have mere vægt på typecheck end på kodegenerering eller omvendt. Ingen af opgaverne er trivielle, men der er heller ingen skjulte fælder, der gør opgaverne betydeligt vanskeligere, end de ser ud. 3.1 Opgave 1: Tildelinger og løkker Syntaksen af Minimal som beskrevet i Sproget Minimal og Udvidelser til Minimal udvides med følgende produktioner: TypeId void id Exp Exp ; Exp Exp id := Exp Exp loop Exp Exp break 3

4 Semikolon (;) binder svagere end := og loop, som begge har samme præcedens som =>, else, in og write. Det kan ikke observeres om semikolon er højre- eller venstreassociativ, så du må selv vælge Semantik Typen void bruges til udtryk, der ikke beregner en værdi, men i stedet udføres for deres sideeffekt. Variabler (både parametre til funktioner og letbundne variabler) kan ikke have typen void, men funktioner kan godt have resultattype void. Udtrykket e 1 ;e 2 udregnes ved først at udregne e 1 og derefter e 2. Det er typen og værdien af e 2, der bruges som type og værdi for hele udtrykket e 1 ;e 2. e 1 skal have typen void. Udtrykket x:=e udregner e til en værdi v og overskriver derefter indholdet af variablen x med v. Den nye værdi for x er gyldig i resten af x s virkelfelt eller indtil næste tildeling til x (hvad, der end sker først). x og e skal have samme type, men denne kan ellers være vilkårlig (dog ikke void). Hele udtrykket har typen void. Udtrykket loop e 1 er en løkke, der gentager udregning af e 1 indtil løkken forlades med et break udtryk. e 1 skal have typen void, og hele løkken (loop e 1 ) har også typen void. Et udtryk af formen break vil forlade den nærmest omgivende løkke. break har typen void. Der kan godt være mere end et break-udtryk inde i en løkke. break-udtryk skal stå inde i løkker, så der skal gives en fejlmeddelelse, hvis break forekommer udenfor en løkke Testprogrammer Testprogrammer til denne udvidelse har navne, der begynder med loop, f.eks. loop-primes.m og loop-error01.m. Se endvidere afsnit Opgave 2: Generelle lister og par Minimal udvides med partyper (svarende til SML s partyper) og med lister, hvor elementerne kan være af vilkårlig (men konsistent) type. Syntaksen af Minimal som beskrevet i Sproget Minimal og Udvidelser til Minimal ændres som følgende: Produktionerne for TypeId erstattes af følgende: 4

5 TypeId Type id Type int Type bool Type Type list Type Type Type ( Type ) Der tilføjes ekstra produktioner for Exp: Exp Exp Exp let id = Exp in Exp Exp ( Type ) [] er højreassociativ og binder stærkere end ::, men svagere end +. I typer stærkere end list. Symbolerne ( og ) bruges til at gruppere typeudtryk (ligesom almindelige parenteser bruges i regneudtryk). NB! Den trykte udgave af K-opgaven bruger fejlagtigt almindelige parenteser til gruppering af typeudtryk. Dette er en fejl, da det giver en parserkonflikt, der er meget svær at fjerne Semantik Et udtryk af formen e 2 vil først beregne e 1 og e 2 til værdierne v 1 og v 2. Derefter allokeres to sammenhængende maskinord i hoben, v 1 lægges ind i det første og v 2 lægges ind i det andet. Værdien af udtrykket e 2 er adressen på det første af de to maskinord. Hvis e 1 og e 2 har typerne t 1 og t 2 vil e 2 have typen t 2. Et udtryk af formen let y = e 1 in e 2 vil først udregne e 1 (som skal have en type af formen t 2 ) til adressen på to sammenhængende maskinord. Indholdet af det første af de to maskinord lægges ind i variablen x og indholdet af det andet maskinord lægges ind i variablen y. Virkefeltet af x og y er e 2, som beregnes til at give værdien af hele let-udtrykket. x har typen t 1, y har typen t 2 og hele udtrykket har samme type som e 2 (som kan være vilkårlig). NB! De to variabler x og y skal være forskellige (dette krav er ikke angivet i den trykte opgavetekst). Listeelementer kan nu være af vilkårlige typer inklusive par- og listetyper, så det er f.eks. muligt at have en liste af lister af heltal eller en liste af par af heltal og boolske værdier. Par kan også bygges af vilkårlige typer, f.eks. kan man have et par bestående af et heltal og en liste af boolske værdier. Under typecheck skal der tages særligt hensyn til den tomme liste ([]), da man ikke kan se til hvilken listetype den tomme liste hører. [] kan f.eks. betyde både den tomme liste af heltal, den tomme liste af par af heltal osv. For at gøre dette entydigt, indføres konstruktionen (t)[], hvor t er en type. Det betyder at [] her har typen t (som følgelig skal være en listetype). [] kan af hensyn til bagudkompatibilitet stadig bruges uden typeangivelse. I givet fald har [] (som i det oprindelige sprog) typen int list. 5

6 3.2.2 Testprogrammer Testprogrammer til denne udvidelse har navne, der begynder med types, f.eks. types-primes.m og types-error01.m. Se endvidere afsnit Opgave 3: Udvidede case-udtryk Minimal udvides med generaliserede case-udtryk. Syntaksen af Minimal som beskrevet i Sproget Minimal og Udvidelser til Minimal ændres som følgende: Produktionen for case-udtryk erstattes med følgende: Exp case Exp of Rules hvor Rules er beskrevet med produktionerne Rules Rule Rules Rules Rules Rule Pattern => Exp Pattern id Pattern num Pattern true Pattern false Pattern [] Pattern Pattern :: Pattern Ovenstående grammatik har en tvetydighed omkring indlejredede case-udtryk. Eksempel: I følgende programstump kan den sidste regel ( v::w => 2) binde til begge case-udtryk. case x of [] => 0 y::z => case z of [] => 1 v::w => 2 Problemet er velkendt fra SML og løses på samme måde: Hvis der er flere indlejrede case-udtryk, binder regler til den nærmeste case. I eksemplet binder den sidste regel altså til det andet case-udtryk. Tvetydigheden kan løses med præcedensregler eller omskrivning af grammatikken. 6

7 3.3.1 Semantik Hvert case-udtryk består af et udtryk e 0 og en række regler (rules), som hver består af et mønster (pattern) og et udtryk. Semantikken er, at e 0 udregnes til en værdi v, hvorefter hver regel prøves i rækkefølge, indtil man finder en regel, hvis mønster matcher v, hvorefter reglens udtryk beregnes i omgivelser, hvor variabler i mønstret er bundet til de tilsvarende dele af værdien. Variablerne i mønstret har med andre ord virkefelt i udtrykket i den regel, hvor mønstret indgår. Det kan antages, at reglerne er udtømmende, dvs. at der til enhver værdi findes mindst en regel, der matcher værdien. Dette behøves ikke at blive testet, og skulle en værdi ikke matche nogen regel, er det udefineret, hvad der sker. Alle udtrykkene i reglerne skal have ens type (som ellers kan være vilkårlig), og denne type er resultattype af hele case-udtrykket. Alle reglernes mønstre skal være kompatible med typen af e 0. Her bruges følgende regler: Et variabelmønster er kompatibel med enhver type. Et talmønster er kompatibel med typen int. Mønstrene true og false er kompatible med typen bool. Mønstret [] er kompatibel med typen int list. Et mønster af formen p 1 :: p 2 er kompatibel med typen int list, forudsat at p 1 er kompatibel med typen int og p 2 er kompatibel med typen int list. p 1 og p 2 må ikke indeholde variabler af samme navn. Med andre ord må et mønster ikke indeholde gentagne variabler (dette skal checkes af typecheckeren). Et mønster matcher værdier og binder variabler efter følgende regler: Et variabelmønster matcher enhver værdi, og binder variablen til denne værdi. Et talmønster n matcher en talværdi m, hvis m = n. Der bindes ingen variabler. Mønstret true matcher den sande boolske værdi. Der bindes ingen variabler. Mønstret false matcher den falske boolske værdi. Der bindes ingen variabler. Mønstret [] matcher den tomme liste. Der bindes ingen variabler. Et mønster af formen p 1 :: p 2 matcher en ikke-tom liste l, forudsat at p 1 matcher hovedet af l og p 2 matcher halen af l. 7

8 Hvis et mønster ikke matcher værdien, prøves næste regel. Det kan antages, at den sidste regel matcher, hvis ingen af de foregående gør det. Vink: Man kan ved oversættelse af mønstre med fordel bruge en label som nedarvet attribut: Når mønstret ikke matcher, hoppes til denne label. Koden, der skal udføres ved succesfuld match, kan ligge lige efter koden for mønstret, så der ikke laves noget hop, når mønstret matcher Testprogrammer Testprogrammer til denne udvidelse har navne, der begynder med case, f.eks. case-primes.m og case-error01.m. Se endvidere afsnit Opgave 4: Records Syntaksen af Minimal som beskrevet i Sproget Minimal og Udvidelser til Minimal ændres ved at tilføje følgende produktioner: Prog Exp where RecordDecls Funs RecordDecls record { TypeIds } id RecordDecls RecordDecls RecordDecls TypeId record id id Exp FieldId Exp id { FieldDefs } FieldId id FieldId FieldId. id FieldDefs FieldDef FieldDefs FieldDef, FieldDefs FieldDef id = Exp Produktionen Exp id fjernes til gengæld fra grammatikken, da almindelige variabler er indeholdt i produktionerne for FieldId.. er en operator, så der kan være mellemrum (whitespace) før eller efter denne.. binder stærkere end alle andre operatorer Semantik En record er en hoballokeret datastruktur, som har et antal navngivne felter, som hver er tilknyttet en værdi. Recordtyper skal erklæres med record-erklæringer. En record-erklæring opremser (i krølleklammer) felternes navne og typer og angiver tilsidst navnet på recordtypen. Virkefeltet af en record-erklæring er de efterfølgende record-erklæringer og funktioner samt udtrykket før where. En record må ikke indeholde to eller flere felter med samme navn og to recordtyper må ikke dele feltnavne. Med andre ord må hvert feltnavn kun forekomme 8

9 en gang i en record-erklæring. Et felt i en record kan have enhver type, inklusive lister eller andre recordtyper. Hvis et felt har en recordtype, skal denne recordtype være erklæret i en tidligere record-erklæring. Der er derfor ikke mulighed for (direkte eller indirekte) rekursive recordtyper. Der må ikke være to recordtyper af samme navn. Variabler eller felter af recordtype erklæres ved at angive nøgleordet record og recordtypenavnet før variabelnavnet. En record bygges ved først at angive recordtypenavnet og derefter (i krølleklammer) at give felterne værdier. Rækkefølgen af felter skal være den samme som i erklæringen, og alle felter skal gives værdier af deres erklærede typer. Eksempel: Givet erklæringerne record {int x, int y} point record {int radius, record point centre} circle vil udtrykket circle{radius = 5, centre = point{y = 17, x = 12}} have typen record circle. Hvis variablen x er en recordvariabel, som indeholder et felt med navn f, så vil udtrykket x.f returnere værdien af feltet f i x. Gentagen brug af. giver adgang til felter i indlejrede records. Hvis f.eks. y har værdien fra eksemplet herover, så vil y.centre have værdien svarende til udtrykket point{x = 12, y = 17} og y.centre.y vil have værdien 17. Læg mærke til, at den første forekomst af y er et variabelnavn, mens den anden forekomst er et feltnavn. Records bliver som nævnt allokeret på hoben (ligesom lister). En værdi af recordtype implementeres som en pointer til den hoballokerede record. I eksemplet ovenfor er y således en pointer til en record, der består af to maskinord indeholdende henholdsvis et heltal 5 og en pointer til en anden hoballokeret record, som også består af to maskinord, denne gang med værdierne 12 og 17. Vink: Lav en særskilt symboltabel for recordtyper og evt. også en for feltnavne Testprogrammer Testprogrammer til denne udvidelse har navne, der begynder med record, f.eks. record-qsort.m og record-error01.m. Se endvidere afsnit Opgave 5: Arrays Minimal udvides med hoballokerede tabeller (arrays) med elementer af vilkårlig type (inklusive andre tabeltyper). Syntaksen af Minimal som beskrevet i Sproget Minimal og Udvidelser til Minimal ændres som følgende: Produktionerne for TypeId erstattes af følgende: 9

10 TypeId Type id Type int Type bool Type int list Type Type array Der tilføjes ekstra produktioner for Exp: Exp alloc Exp of Exp Exp size Exp Exp Exp [ Exp ] Exp Exp [ Exp ] := Exp of, size og tildelingsoperatoren := har samme præcedens som write, else, => osv. Tabelopslag (med [ og ]) binder stærkere end alle operatorer Semantik En tabel med elementer af typen t har typen t array. En værdi af typen t array er adressen på et stykke hoballokeret lager, der indeholder tabellens størrelse og dens elementer, som er af type t. Man allokerer en tabel på hoben med alloc e 1 of e 2, hvor e 1 beregnes til et heltal n og e 2 til en værdi v af type t, hvorefter der allokeres n+1 sammenhængende maskinord på hoben. Det første af disse sættes til at indeholde n, mens alle de resterende n maskinord sættes til v. Udtrykket alloc e 1 of e 2 vil returnere adressen på det andet af de allokerede maskinord, det vise sige adressen på første element i tabellen. Den returnerede tabel har typen t array. Man kan godt allokere en tabel med 0 elementer. I givet fald allokeres kun et maskinord, der indeholder størrelsen (altså 0). Bemærk, at e 2 beregnes een gang uanset hvor mange elementer, der allokeres (selv 0). Det er udefineret, hvad der sker, hvis man forsøger at allokere et negativt antal elementer (altså hvis n < 0). size e beregner e til tabel (dvs. en adresse a) og returnerer tabellens størrelse (dvs. indholdet af maskinordet på adressen a 4). Hvis e 1 er et udtryk af typen t array og e 2 er et udtryk af typen int, vil udtrykket e 1 [e 2 ] først beregne e 1 til en adresse a og e 2 til et heltal n og dernæst returnere indholdet af maskinordet på adressen a + 4n (dvs. det n te element i tabellen, hvor det første element har nummer 0). Typen af resultatet er t. Hvis der ikke er noget element med nummer n i tabellen, dvs. hvis n < 0 eller n m, hvor m er antallet af elementer i tabellen, skal programmet stoppe og indikere fejlen ved at udskrive tallet Hvis e 1 er et udtryk af typen t array, e 2 er et udtryk af typen int og e 3 et udtryk af type t, vil udtrykket e 1 [e 2 ] := e 3 være af typen t. Først beregnes e 1 til 10

11 en adresse a og e 2 til et heltal n og dernæst beregnes e 3 til en værdi v af type t, som lægges i maskinordet på adressen a + 4n. Resultatet af hele udtrykket er v. Igen skal programmet stoppe og udskrive -777, hvis n ikke ligger indenfor tabellens grænser Testprogrammer Testprogrammer til denne udvidelse har navne, der begynder med array, f.eks. array-primes.m og array-error01.m. Se endvidere afsnit 4. 4 Eksempelprogrammer I kataloget /usr/local/del1/dat-oversaet/k findes testprogrammer for hver af ovenstående opgaver. De til den valgte opgave hørende eksempelprogrammer skal oversættes og køres på inddata, der for program.m er givet i filen program.in (hvis ikke der er en sådan fil, køres programmet uden inddata). Uddata fra kørslen af et program skal stemme overens med det, der er givet i filen program.out. Filer, hvis navn indeholder teksten error (f.eks. loop-error01.m) indeholder typefejl, og oversættelse af disse skal given en relevant fejlmeddelelse og angivelse af omtrentlig position i programmet. Udover testprogrammerne til den valgte opgave, skal man stadig kunne afvikle eksempelprogrammerne fra godkendelsesopgaven og rapportere fejl for de fejlbehæftede programmer. Dog kan visse af de programmer, der i godkendelsesopgaven skulle give typefejl, som følge af udvidelserne af sproget nu være typekorrekte, og disse skal derfor ikke give typefejl. Det bør nævnes i rapporten, hvor dette er tilfældet. Det er ikke noget krav, at der testes med flere testprogrammer end de ovenstående, men hvis man f.eks. laver optimeringer, kan det være en god ide at lave programmer, der afprøver disse. Selv om registerallokatoren ikke laver spill, er der rigeligt med registre til, at eksempelprogrammerne kan oversættes uden spill. Derfor betragtes det som en fejl, hvis registerallokatoren rejser undtagelsen not_colourable for et af eksempelprogrammerne. /usr/local/del1/dat-oversaet/k indeholder også opgaveteksten (dette dokument) og filen G-sol.zip. Indholdet af /usr/local/del1/dat-oversaet/k findes også i filen K.zip via kursets hjemmeside (fra siden om rapportopgaver). 11

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

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

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

En oversætter for 100

En oversætter for 100 En oversætter for 100 Godkendelsesopgave på kurset Oversættere Vinter 2011/12 1 Introduktion Dette er projektopgaven på Oversættere, vinter 2011 2012. Opgaven skal løses i grupper på op til 3 personer.

Læs mere

DATALOGI 1E. Skriftlig eksamen mandag den 23. juni 2003

DATALOGI 1E. Skriftlig eksamen mandag den 23. juni 2003 Københavns Universitet Naturvidenskabelig Embedseksamen DATALOGI 1E Skriftlig eksamen mandag den 23. juni 2003 Opgaverne vægtes i forhold til tidsangivelsen herunder, og hver opgaves besvarelse bedømmes

Læs mere

Oversættere. Vejledende løsninger til Skriftlig eksamen onsdag d. 20. april 2005

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

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

Å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

Oversættere Skriftlig eksamen onsdag d. 20. april 2005

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

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

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

Skriftlig eksamen, Programmer som Data 2. 3. januar 2014

Skriftlig eksamen, Programmer som Data 2. 3. januar 2014 Skriftlig eksamen, Programmer som Data 2. 3. januar 2014 Dette eksamenssæt har 5 sider. Tjek med det samme at du har alle siderne. Eksamenssættet udleveres elektronisk fra kursets hjemmeside torsdag 2.

Læs mere

DATALOGI 1E. Skriftlig eksamen torsdag den 3. juni 2004

DATALOGI 1E. Skriftlig eksamen torsdag den 3. juni 2004 Københavns Universitet Naturvidenskabelig Embedseksamen DATALOGI 1E Skriftlig eksamen torsdag den 3. juni 2004 Opgaverne vægtes i forhold til tidsangivelsen herunder, og hver opgaves besvarelse bedømmes

Læs mere

Oversættere / Datalogi 1E

Oversættere / Datalogi 1E Københavns Universitet Naturvidenskabelig Embedseksamen Oversættere / Datalogi 1E Skriftlig eksamen onsdag d. 26. januar 2005 Eksamenstiden er to timer. Opgavernes vægt i procent er angivet ved hver opgave.

Læs mere

Oversættere Skriftlig eksamen onsdag d. 19. april 2006

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

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

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

DATALOGI 1E. Skriftlig eksamen fredag den 7. juni 2002

DATALOGI 1E. Skriftlig eksamen fredag den 7. juni 2002 Københavns Universitet Naturvidenskabelig Embedseksamen DATALOGI 1E Skriftlig eksamen fredag den 7. juni 2002 Opgaverne vægtes i forhold til tidsangivelsen, og hver opgaves besvarelse bedømmes som en helhed.

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

Noter til C# Programmering Iteration

Noter til C# Programmering Iteration Noter til C# Programmering Iteration Programflow Programmer udfører det meste af deres arbejde vha. forgrening og løkker. Løkker Mange programmeringsproblemer kan løses ved at gentage en handling på de

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

Oversættere Skriftlig eksamen onsdag d. 25. januar 2006

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

Læs mere

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer Skriftlig Eksamen DM507 Algoritmer og Datastrukturer Institut for Matematik og Datalogi Syddansk Universitet, Odense Mandag den 6. juni 2016, kl. 15:00 19:00 Besvarelsen skal afleveres elektronisk. Se

Læs mere

MIPS modulet og registerallokatoren

MIPS modulet og registerallokatoren MIPS modulet og registerallokatoren Værktøjer til oversætterdelen af K1 Dat1E 2001 MIPS modulet Den vigtigste del af modulet MipsData.sml er datatypen mips, som beskriver MIPS ordrer, se figur 1. Alle

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

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

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

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

Læs mere

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

To mikroarkitekturer til MIPS Karakteropgave på Maskinarkitektur 1B

To mikroarkitekturer til MIPS Karakteropgave på Maskinarkitektur 1B To mikroarkitekturer til MIPS Karakteropgave på Maskinarkitektur 1B Martin Zachariasen 10. september 2004 1 Introduktion Dette er den karaktergivende rapportopgave på kurset Maskinarkitektur 1B, efterår

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

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

Noter til C# Programmering Selektion

Noter til C# Programmering Selektion Noter til C# Programmering Selektion Sætninger Alle sætninger i C# slutter med et semikolon. En sætning kontrollerer sekvensen i programafviklingen, evaluerer et udtryk eller gør ingenting Blanktegn Mellemrum,

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

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

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

Videregående Programmering for Diplom-E Noter

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

Læs mere

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

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

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

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

Læs mere

Moduler i Standard ML

Moduler i Standard ML Moduler i Standard ML Hans Hüttel December 2001 I løbet af datalogikurset har vi haft glæde af en hel række forskellige standardmoduler som f.eks. Math, Int, Real og String. Disse moduler kan, har vi set,

Læs mere

DM507 Algoritmer og datastrukturer

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

Læs mere

Sider og segmenter. dopsys 1

Sider og segmenter. dopsys 1 Sider og segmenter dopsys 1 Lokal vs global sideallokering (1) Med (a) som udgangspunkt giver (b) lokal hhv. (c) global allokering forskellige resultater dopsys 2 Lokal vs global sideallokering (2) Den

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

Baggrundsnote om logiske operatorer

Baggrundsnote om logiske operatorer Baggrundsnote om logiske operatorer Man kan regne på udsagn ligesom man kan regne på tal. Regneoperationerne kaldes da logiske operatorer. De tre vigtigste logiske operatorer er NOT, AND og. Den første

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

DATALOGI 1E. Skriftlig eksamen fredag d. 16. januar 2004

DATALOGI 1E. Skriftlig eksamen fredag d. 16. januar 2004 Københavns Universitet Naturvidenskabelig Embedseksamen DATALOGI 1E Skriftlig eksamen fredag d. 16. januar 2004 Opgaverne vægtes i forhold til tidsangivelsen herunder, og hver opgaves besvarelse bedømmes

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

DRONNINGER (QUEENS) Opgave 1

DRONNINGER (QUEENS) Opgave 1 DRONNINGER (QUEENS) I denne opgave vil vi beskæftige os med det såkaldte 8-dronningeproblem, hvor man skal placerede 8 dronninger på et 8 x 8 skakbræt, således at ingen af dronningerne kan slå hinanden.

Læs mere

Projekt arbejde til kurset Advanced Models and Programs, SASP-AMP 2008 Poul Brønnum, IT Universitetet i København, Maj 2008. Indholdsfortegnelse

Projekt arbejde til kurset Advanced Models and Programs, SASP-AMP 2008 Poul Brønnum, IT Universitetet i København, Maj 2008. Indholdsfortegnelse Udvidelse af MicroC compileren til at kunne håndtere struct- og union typer samt switch-, break- og continue statement. Yderligere er ovenstående konstruktioner anvendt til at indføre malloc og free kald

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

Sider og segmenter. dopsys 1

Sider og segmenter. dopsys 1 Sider og segmenter dopsys 1 Lokal vs global sideallokering (1) Med (a) som udgangspunkt giver (b) lokal hhv. (c) global allokering forskellige resultater dopsys 2 Lokal vs global sideallokering (2) Den

Læs mere

It og informationssøgning Forelæsning november 2006 Nils Andersen. Regulære udtryk og formelle sprog

It og informationssøgning Forelæsning november 2006 Nils Andersen. Regulære udtryk og formelle sprog It og informationssøgning Forelæsning 11 22. november 2006 Nils Andersen Regulære udtryk og formelle sprog Regulært udtryk Forening, sammenstilling og Kleene-gentagelse Andre notationer og operatorer Modulet

Læs mere

Udarbejdet af CFU Absalon

Udarbejdet af CFU Absalon Chatbots i Scratch Introduktion: En chatbot er et lille program, der kan chatte. De bruges mange steder på internettet, enten for at kunne hjælpe i nogle bestemte situationer eller for at underholde. De

Læs mere

Løsningsforslag Skriftlig eksamen 9. januar 2012

Løsningsforslag Skriftlig eksamen 9. januar 2012 Løsningsforslag Skriftlig eksamen 9. januar 2012 Version 1, 2012-01-09 Spørgsmål 1 Spørgsmål 1.1 Først laver vi indlysende korrekt NFAer for hver af de to dele (ddd ddd) og (_ddd)* af det givne regulære

Læs mere

Mircobit Kursus Lektion 3 (Du skal her vælge Lets Code Og nederst Microsoft Block Editor.)

Mircobit Kursus Lektion 3   (Du skal her vælge Lets Code Og nederst Microsoft Block Editor.) Mircobit Kursus Lektion 3 http://microbit.org/ (Du skal her vælge Lets Code Og nederst Microsoft Block Editor.) I sidste lektion var der en opgave man selv skulle prøve at løse. Man skulle lave et tabel

Læs mere

Kontrol-strukturer i PHP

Kontrol-strukturer i PHP Denne guide er oprindeligt udgivet på Eksperten.dk Kontrol-strukturer i PHP Denne artikel gennemgår kontrolstrukturer i PHP. 'if', 'switch', 'while' og 'for' bliver gennemgået. Den forudsætter lidt grundlæggende

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet side af sider Danmarks Tekniske Universitet Skriftlig prøve, den. maj 00. Kursusnavn Algoritmer og datastrukturer I Kursus nr. 005. Tilladte hjælpemidler: Alle skriftlige hjælpemidler. Vægtning af opgaverne:

Læs mere

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

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

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet side af sider Danmarks Tekniske Universitet Skriftlig prøve, den. maj 00. Kursusnavn Algoritmer og datastrukturer Kursus nr. 06. Tilladte hjælpemidler: Alle hjælpemidler. Vægtning af opgaverne: Opgave

Læs mere

Programmering for begyndere Lektion 2. Opsamling mm

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

Læs mere

Kapitel 3 Betinget logik i C#

Kapitel 3 Betinget logik i C# Kapitel 3 i C# er udelukkende et spørgsmål om ordet IF. Det er faktisk umuligt at programmere effektivt uden at gøre brug af IF. Du kan skrive små simple programmer. Men når det bliver mere kompliceret

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

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

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

DM13-3. Obligatorisk opgave E.05 Håndoptimering af SPARC assembler-kode

DM13-3. Obligatorisk opgave E.05 Håndoptimering af SPARC assembler-kode - 3. Obligatorisk opgave E.05 Håndoptimering af SPARC assembler-kode Jacob Aae Mikkelsen - 191076 12. december 2005 1 Indhold 1 Opgave beskrivelse 2 2 Muligheder for optimering 2 2.1 efter branch.........................

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

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

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

Læs mere

DM507 Eksamen Obligatorisk Opgave Rejseplanlægning

DM507 Eksamen Obligatorisk Opgave Rejseplanlægning Institut for Matematik og Datalogi Syddansk Universitet, Odense 21. februar 2011 LMF DM507 Eksamen Obligatorisk Opgave Rejseplanlægning 1 Problemet Denne opgave går ud på at lave et program, som ud fra

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

Oversættere. Vejledende løsninger til Skriftlig eksamen onsdag d. 18. april 2007

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

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

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

5. OPSÆTNING DOKUMENTSKABELONER 5.1 TRIN

5. OPSÆTNING DOKUMENTSKABELONER 5.1 TRIN 5. OPSÆTNING DOKUMENTSKABELONER Under fanen Dok. skabeloner kan du arbejde med de skabeloner som du har i systemet, eller du kan oprette nye. I denne vejledning kigger vi på hvordan du kan tilrette selve

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

Kursus 02199: Programmering. Kontrol af programudførelsen. afsnit 3.1-3.5. if (indkomst > 267000) topskat = (indkomst-267000) * 0.

Kursus 02199: Programmering. Kontrol af programudførelsen. afsnit 3.1-3.5. if (indkomst > 267000) topskat = (indkomst-267000) * 0. Kursus 02199: Programmering afsnit 3.1-3.5 Anne Haxthausen IMM, DTU 1. Kontrol af programudførn (afsnit 3.1) 2. Valg-sætninger (if og switch) (afsnit 3.2 og 3.3) 3. Bloksætninger (afsnit 3.2) 4. Logiske

Læs mere

Systemkald DM14. 1. Obligatoriske opgave. Antal sider: 7 inkl. 2 bilag Afleveret: d. 18/3-2004 Afleveret af: Jacob Christiansen, 130282-2111

Systemkald DM14. 1. Obligatoriske opgave. Antal sider: 7 inkl. 2 bilag Afleveret: d. 18/3-2004 Afleveret af: Jacob Christiansen, 130282-2111 DM14 1. Obligatoriske opgave Systemkald Antal sider: 7 inkl. 2 bilag Afleveret: d. 18/3-2004 Afleveret af: Jacob Christiansen, 130282-2111 Side 1 af 5 Intro: Formålet med opgaven at et lave en system kald

Læs mere

It og informationssøgning Forelæsning december 2006 Jakob Grue Simonsen. Diverse emner af almen interesse

It og informationssøgning Forelæsning december 2006 Jakob Grue Simonsen. Diverse emner af almen interesse It og informationssøgning Forelæsning 12 6. december 2006 Jakob Grue Simonsen Diverse emner af almen interesse 1 Gemme objekter til filer I python skal en fil på disken åbnes, før man kan læse eller skrive

Læs mere

Spil Master Mind. Indledning.

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

Læs mere

Fable Kom godt i gang

Fable Kom godt i gang Fable Kom godt i gang Opdateret: 26-03-2018 Indholdsfortegnelse 1. Først skal du installere programmet på din computer 3 2. Når programmet er installeret er du klar til at pakke robotten ud 4 3. Nu er

Læs mere

Projekt - Visual Basic for Applications N på stribe

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

Læs mere

Rekursion C#-version

Rekursion C#-version Note til Programmeringsteknologi Akademiuddannn i Informationsteknologi Rekursion C#-version Finn Nordbjerg 1 Rekursion Rekursionsbegrebet bygger på, at man beskriver noget ved "sig selv". Fx. kan tallet

Læs mere

c) For, er, hvorefter. Forklar.

c) For, er, hvorefter. Forklar. 1 af 13 MATEMATIK B hhx Udskriv siden FACITLISTE TIL KAPITEL 7 ØVELSER ØVELSE 1 c) ØVELSE 2 og. Forklar. c) For, er, hvorefter. Forklar. ØVELSE 3 c) ØVELSE 4 90 % konfidensinterval: 99 % konfidensinterval:

Læs mere

Høvdingebold. Introduktion. Scratch

Høvdingebold. Introduktion. Scratch Scratch 2 Høvdingebold All Code Clubs must be registered. By registering your club we can measure our impact, and we can continue to provide free resources that help children learn to code. You can register

Læs mere

Skriftlig Eksamen Kombinatorik, sandsynlighed og randomiserede algoritmer (DM528)

Skriftlig Eksamen Kombinatorik, sandsynlighed og randomiserede algoritmer (DM528) Skriftlig Eksamen Kombinatorik, sandsynlighed og randomiserede algoritmer (DM58) Institut for Matematik & Datalogi Syddansk Universitet Torsdag den 7 Januar 010, kl. 9 13 Alle sædvanlige hjælpemidler (lærebøger,

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

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer Skriftlig Eksamen DM507 Algoritmer og Datastrukturer Institut for Matematik og Datalogi Syddansk Universitet, Odense Tirsdag den 24. juni 2014, kl. 10:00 14:00 Besvarelsen skal afleveres elektronisk. Se

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet Eksamen 02105, F14 side 1 af 14 Danmarks Tekniske Universitet Skriftlig prøve, den 22. maj 2014. Kursusnavn: Algoritmer og datastrukturer 1 Kursusnummer: 02105 Hjælpemidler: Skriftlige hjælpemidler. Det

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet side af 2 sider Danmarks Tekniske Universitet Skriftlig prøve, den 2. maj 200. Kursusnavn Algoritmer og datastrukturer I Kursus nr. 0205. Tilladte hjælpemidler: Alle skriftlige hjælpemidler. Vægtning af

Læs mere

Kom godt i gang med Fable-robotten

Kom godt i gang med Fable-robotten Kom godt i gang med Fable-robotten 1. Først skal du installere programmet på din computer. Gå ind på shaperobotics.com og under support vælger du download: Her vælger du, under PC App om du kører Windows

Læs mere

EKSAMENSBESTEMMELSER FOR AFGANGSPROJEKTET. Kommunomuddannelsen på akademiniveau. Gældende fra januar 2015

EKSAMENSBESTEMMELSER FOR AFGANGSPROJEKTET. Kommunomuddannelsen på akademiniveau. Gældende fra januar 2015 EKSAMENSBESTEMMELSER FOR AFGANGSPROJEKTET Kommunomuddannelsen på akademiniveau Gældende fra januar 2015 Kommunomuddannelsen www.cok.dk/kommunom 12-01-2015 INDHOLDSFORTEGNELSE 1. Eksamen på Afgangsprojektet...

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

Oversættere, ugeopgave 3

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

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet side af 2 sider Danmarks Tekniske Universitet Skriftlig prøve, den 2. maj 200. Kursusnavn Algoritmer og datastrukturer Kursus nr. 02326. Tilladte hjælpemidler: Alle hjælpemidler. Vægtning af opgaverne:

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 Afleveringsopgaver

Læs mere

Bemærk! Et PHP script har kun brug for at forbinde én gang til databaseserveren. Det kan så sagtens udføre flere kommandoer vha. denne forbindelse.

Bemærk! Et PHP script har kun brug for at forbinde én gang til databaseserveren. Det kan så sagtens udføre flere kommandoer vha. denne forbindelse. Mysqli Webintegrator Når vi arbejder med server-side scripting ( i vort tilfælde PHP), har vi ofte behov for at kunne tilgå data, som vi opbevarer i en database. Det kan f.eks. dreje sig om nyhederne i

Læs mere

Obligatorisk projekt 3.

Obligatorisk projekt 3. Obligatorisk projekt 3. Administration af Regionale Køre-Planer Fag: Projektet omhandler emner fra fagene Softwarearkitektur og Distribuerede Programmer, samt SystemUdviklingsMetoder. Formål: Formålet

Læs mere

Python programmering. Per Tøfting. MacFest

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

Læs mere

DM517:Supplerende noter om uafgørlighedsbeviser:

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

Læs mere

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