En oversætter for 100

Størrelse: px
Starte visningen fra side:

Download "En oversætter for 100"

Transkript

1 En oversætter for 100 Godkendelsesopgave på kurset Oversættere Vinter 2011/12 1 Introduktion Dette er projektopgaven på Oversættere, vinter Opgaven skal løses i grupper på op til 3 personer. Opgaven bliver stillet mandag d. 21/ og skal afleveres senest fredag d. 22/ Opgaven afleveres via kursushjemmesiden på Absalon. Brug gruppeafleveringsfunktionen i Absalon. Alle medlemmer af gruppen skal på rapportforsiden angives med navn. Der er ikke lavet en standardforside, så lav en selv. Projektopgaven bedømmes som godkendt / ikke godkendt. Godkendelse af denne opgave er (sammen med godkendelse af mindst fire ud af de fem ugeopgaver) en forudsætning for deltagelse i den karaktergivende eksamensopgave, der løses individuelt. En ikke-godkendt godkendelsesopgave kan ikke genafleveres. 2 Om opgaven Opgaven går ud på at implementere en oversætter for sproget 100, som er beskrevet i afsnit 3. Som hjælp hertil gives en fungerende implementering af en delmængde af 100. I afsnit 6 er denne delmængde beskrevet. Der findes på kursussiden en zip-fil kaldet G.zip, der indeholder opgaveteksten, implementeringen af delmængden af 100 samt et antal testprogrammer med input og forventet output. Der kan blive lagt flere testprogrammer ud i løbet af de første uger af opgaveperioden. Det er nødvendigt at modificere følgende filer: Parser.grm Grammatikken for 100 med parseraktioner, der opbygger den abstrakte syntaks. Lexer.lex Leksikalske definitioner for tokens i 100. Type.sml Typechecker for 100. Compiler.sml Oversætter fra 100 til MIPS assembler. Oversættelsen sker direkte fra 100 til MIPS uden brug af mellemkode. 1

2 Andre moduler indgår i oversætteren, men det er ikke nødvendigt at ændre disse. Til oversættelse af ovennævnte moduler (og andre moduler, der ikke skal ændres) bruges Moscow-ML oversætteren inklusive værktøjerne MosML-lex og MosMLyacc. Compiler.sml bruger datastruktur og registerallokator for en delmængde af MIPS instruktionssættet. Filerne compile.sh og compile.bat indeholder kommandoer for hhv. Linux og Windows til oversættelse af de nødvendige moduler. Der vil optræde nogle warnings fra compileren. Disse kan ignoreres, men vær opmærksom på evt. nye fejlmeddelelser eller advarsler, når I retter i filerne. Til afvikling af de oversatte MIPS programmer bruges simulatoren MARS. Der er link til denne fra kursets Absalonside. Krav til besvarelsen Besvarelsen afleveres som en PDF fil med rapporten samt en zip-fil, der indeholder og alle relevante program- og datafiler, sådan at man ved at pakke zip-filen ud i et ellers tomt katalog kan oversætte og køre oversætteren på testprogrammerne. Dette kan f.eks. gøres ved, at I zipper hele jeres arbejdskatalog (og evt. underkataloger). Filerne afleveres via kursushjemmesiden. Brug gruppeaflevering der skal ikke afleveres en kopi pr. gruppemedlem. Rapportforsiden skal angive alle medlemmer af gruppen med navn. Rapporten skal indeholde en begrundet beskrivelse af de ændringer, der laves i ovenstående komponenter. 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 6.2 og 7.3 i Basics of Compiler Design. Der vil primært lægges vægt på, at sproget implementeres korrekt, men effektivitet af den genererede kode kan også inddrages. Optimeringer af særtilfælde vægtes ikke særligt højt, men omtanke omkring den almindelige kodegenerering gør. Hvis der er åbenlyse ineffektiviteter ved generering af almindelig kode, vil forsøg på optimeringer af særtilfælde ligefrem kunne trække ned, da det vidner om forkert prioritering eller manglende forståelse. I skal ikke inkludere hele programteksterne i rapportteksten, men I skal inkludere de væsentligt ændrede eller tilføjede dele af programmerne i rapportteksten som figurer, bilag e.lign. Hvis I henviser til dele af programteksten, skal disse dele inkluderes i rapporten. Rapporten skal beskrive hvorvidt oversættelse og kørsel af eksempelprogrammer (jvf. afsnit 8) giver den forventede opførsel, samt beskrivelse af afvigelser derfra. Endvidere skal det vurderes, i hvilket omfang de udleverede testprogrammer 2

3 er dækkende og der skal laves nye testprogrammer, der dækker de største mangler ved testen. 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. Det er i stort omfang op til jer selv at bestemme, hvad I mener er væsentligt at medtage i rapporten, sålænge de eksplicitte krav i dette afsnit er opfyldt. Rapporten bør holdes under 16 sider. Al væsentlig information om løsningen bør medtages i rapporten, så man i det væsentlige ikke behøver at læse jeres kildekode. Men for mange irrelevante detaljer og udenomssnak vil trække ned. Alle væsentlige designbeslutninger skal dog beskrives og begrundes, og alle fejl og mangler skal beskrives. 2.1 Afgrænsninger af oversætteren Det er helt i orden, at lexer, parser, typechecker og kodegenerator stopper ved den første fundne fejl. Hovedprogrammet CC.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 de oversatte programmer er små nok til, at alle hopadresser kan ligge i konstantfelterne i branch- og hopordrer og at tupler er så små, at størrelse og offsets kan ligge i konstantfeltet i en instruktion. Det ikke nødvendigt at frigøre lager i hoben mens programmet kører. 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. 2.2 MosML-Lex og MosML-yacc Beskrivelser af disse værktøjer findes i Moscow ML s Owners Manual, som kan hentes via kursets hjemmeside. Yderligere information samt installationer af systemet til Windows og Linux findes på Moscow ML s hjemmeside (følg link fra kursets hjemmeside, i afsnittet om programmel). Desuden er et eksempel på brug af disse værktøjer beskrevet i en note, der kan findes i Lex+Parse.zip, som er tilgængelig via kursets hjemmeside er et simpelt imperativt programmeringssprog inspireret af C. Herunder beskrives syntaks og uformel semantik for sproget 100 og en kort beskrivelse af de filer, der implementerer sproget. 3

4 Prog FunDecs FunDecs Type Sid ( Decs ) Stat FunDecs FunDecs Type int Type char Decs Decs Decs1 Dec Decs1 Decs1 Decs1 Dec ; Dec Type Sids Sids Sid Sids Sid, Sids Sid id Sid * id Stats Stats StatStats Stat Exp ; Stat if ( Exp ) Stat Stat if ( Exp ) Stat else Stat Stat while ( Exp ) Stat Stat return Exp ; Stat { Decs1 Stats } Exp numconst Exp charconst Exp stringconst Exp Lval Exp Lval = Exp Exp Exp + Exp Exp Exp - Exp Exp Exp < Exp Exp Exp == Exp Exp ( Exp ) Exp id ( Exps ) Exp ( Exp ) Exps Exps Exps1 Exps1 Exp Exps1 Exp, Exps1 Lval id Lval id * Lval id [ Exp ] Figur 1: Syntaks for 100 4

5 4 Syntaks 4.1 Leksikalske og syntaktiske detaljer Et navn (id) består af bogstaver (både store og små), cifre og understreger og skal starte med et bogstav. Bogstaver er engelske bogstaver, dvs. fra A til Z og a til z. Nøgleord som f.eks. if er ikke legale navne. Talkonstanter (numconst) er ikke-tomme følger af cifrene 0-9. Talkonstanter er begrænset til tal, der kan repræsenteres som positive heltal i Moscow ML. En tegnkonstant (charconst) består af en tegnspecifikator omgivet af enkelte anførselstegn ( ). En tegnspecifikator kan være en af følgende: 1. Et tegn med ASCII kode mellem 32 og 126 undtagen tegnene, " og \. 2. Tegnet \ efterfulgt af et tegn med ASCII kode mellem 32 og 126. Kun tegnspecifikationer, der er lovlige i C, er tilladt. En stringkonstant (stringconst) består af en sekvens af tegnspecifikatorer omgivet af dobbelte anførselstegn ("). Operatorerne + og - har samme præcedens og er begge venstreassociative. Operatorerne < og == har samme præcedens og er begge venstreassociative. De binder begge svagere end +. Tildelingsoperatoren = binder svagere end < og er højreassociativ. else binder til nærmeste if som beskrevet i lærebogen. Der er separate navnerum for variabler og funktioner. Kommentarer starter med /* og slutter med */. Mellem disse kan være vilkårlige tegn som ikke indeholder sekvensen */. 5 Semantik Hvor intet andet er angivet, er semantikken for de forskellige konstruktioner i sproget identisk med semantikken for tilsvarende konstruktioner i C. Et 100 program består af funktionserklæringer. Der skal være en funktion med navn main som ikke har nogen parametre og hvor returtypen er int. Kørsel af et program sker ved kald til denne funktion. Alle funktioner har virkefelt i hele programmet, så de er gensidigt rekursive. Der må ikke erklæres to funktioner med 5

6 samme navn. Bemærk, at 100 her adskiller sig fra C, hvor kun funktioner, der er erklæret tidligere kan ses, og hvor det er muligt at omdefinere funktioner. Udover heltal (typen int) og tegn (typen char) har 100 også referencer. En variabel x erklæret som int *x er f.eks. en reference til et heltal. Den bagvedstillede operator * følger en reference til dens indhold. Referencer kan bruges som tabeller, så hvis f.eks. x er erklæret som int *x vil x[7] referere til det heltal, der ligger 7 maskinord efter det maskinord, som x peger på, og hvis s er erklæret som char *s vil s[7] referere til det tegn, der ligger 7 bytes efter den byte, som s peger på. Bemærk, at kodegenerering af et udtryk af formen x[e] kræver kendskab til typen af x. Det er udefineret, hvad der sker, hvis man bruger offsets udenfor det område, der er allokeret til referencen/tabellen. Endvidere er det udefineret, hvad der sker, hvis man følger referencen i en uinitialiseret referencevariabel. I udtryk gøres ikke forskel på tegn (char) og heltal (int): De repræsenteres begge som heltal. Det er kun, når værdier gemmes og hentes i variabler eller tabeller, at der gøres forskel: Når der hentes og gemmes i tegnvariabler eller tegntabeller overføres 8 bit, mens der overføres 32 bit, når der hentes og gemmes i heltalsvariabler eller heltalstabeller. Referencevariabler fylder også 32 bit, men konverteres ikke automatisk til eller fra heltal. Bemærk, at det betyder, at et udtryk af type int er et lovligt argument til en funktion, der har en parameter af type char. Alle parametre overføres som hele maskinord i registre eller lager, men kun de mindst betydende 8 bit af char parametre bruges. En tegnreference kan også ses som en string bestående af alle tegn fra det, referencen peger på, frem til den nærmeste nulbyte. En stringkonstant er en reference til en string, der indeholder de angivne tegn og afsluttes med en nulbyte. Tegnet \ bruges i tegn- og stringkonstanter som escape-tegn, der indkoder tegn, der ellers ikke er lovlige i en tegnkonstant. De tegn, der kan komme efter et \ er de samme som i C. Det er udefineret, hvad der sker, hvis indholdet af en stringkonstant modificeres på køretid. Operatoren + kan tage både heltal og referencer som argumenter. Reglerne er: Hvis begge argumenter er heltal, er resultatet et heltal. Hvis det ene argument er et heltal n og det andet er en heltalsreference r, er resultatet en reference til et heltal, der er n maskinord efter det, som r peger på. Hvis det ene argument er et heltal n og det andet er en tegnreference r, er resultatet en reference til et tegn, der er n byte efter det, som r peger på. Hvis begge argumenter er referencer, er det en typefejl. Operatoren - kan tage både heltal og referencer som argumenter. Reglerne er: Hvis begge argumenter er heltal, er resultatet et heltal. 6

7 Hvis det første argument er et heltal og det andet er en reference, er det en typefejl. Hvis det første argument er en heltalsreference r og det andet argument er et heltal n, er resultatet en reference til et heltal, der er n maskinord før det, som r peger på. Hvis det første argument er en tegnreference r og det andet argument er et heltal n, er resultatet en reference til et tegn, der er n bytes før det, som r peger på. Hvis begge argumenter er heltalsreferencer, er resultatet et heltal, der angiver antallet af maskinord mellem de to referencer. Hvis begge argumenter er tegnreferencer, er resultatet et heltal, der angiver antallet af bytes mellem de to referencer. Hvis de to argumenter er referencer af forskellig type, er det en typefejl. Bemærk, at den genererede kode for + og - afhænger af typen af argumenterne, så man skal i oversætteren holde styr på typen af udtryk, selv om dette allerede er gjort i typecheckeren. Operatorerne < og == kan tage både heltal og referencer som argumenter. Begge argumenter skal være af samme type. Hvis sammenligningen er sand, returneres tallet 1, ellers tallet 0. Tildelingen l =e beregner l til enten en variabel eller en adresse og beregner e til en værdi, som lægges i variablen eller adressen. Værdien af tildelingen er den gemte værdi. Hvis l er en heltalsvariabel, et element i en heltalstabel eller indholdet af en heltalsreference, skal e være et heltalsudtryk. Hvis l er en tegnvariabel, et element i en tegntabel eller tegnreference, skal e være et heltalsudtryk, men kun de sidste 8 bit af værdien af e gemmes i l. Hvis l er en referencevariabel skal e beregne en reference af den samme type. Alle disse begrænsninger skal checkes i typecheckeren. Betingelser i if og while sætninger er udtryk af heltalstype og betragtes som sande, hvis deres værdi er forskellig fra 0. Både if og while sætninger fungerer på samme måde som i C. I en variabelerklæring (Decs eller Decs1) må det samme navn ikke forekomme flere gange (dette skal checkes), men forskellige erklæringer kan godt erklære variable med samme navn. Variable, der er erklæret i en erklæring lige efter et { har virkefelt (scope) indtil det matchende }. Parametre til en funktion har virkefelt i kroppen af funktionen. Det betragtes som en fejl, hvis en funktion kan afslutte uden at udføre en return sætning. Typecheckeren skal angive fejl, hvis dette er muligt, eller hvis typen af et udtryk, der er angivet efter return, ikke har samme type som funktionens erklærede resultattype. Man kan antage, at alle betingelser i if- og whilesætninger kan være både sande og falske, så hvis der f.eks. ikke er en return- 7

8 sætning efter en if-else-sætning, skal begge grene af if-else-sætningen indeholde en return-sætning. Der er et antal foruddefinerede funktioner, der kan kaldes fra programmet: walloc() tager et heltal n og returnerer en word-aligned reference til mindst n maskinord, der er allokeret på hoben. Returtypen er int *. balloc() tager et heltal n og returnerer en reference til mindst n bytes, der er allokeret på hoben. Returtypen er char *. getint() tager ingen argumenter men returnerer et heltal, der er læst fra standard input. getstring() tager et heltal n som argument og returnerer en hob-allokeret string, der indeholder op til n 1 tegn læst fra standard input efterfulgt af en nul-byte. Der læses kun frem til og med nærmeste linjeskift. Hvis linjen slutter inden, der er læst n 1 tegn, læses frem til og med linjeskiftet og der tilføjes derefter et nul-byte. Uanset dette allokeres mindst n byte på hoben til indholdet. putint() tager et heltal som argument og skriver det ud på standard output. Resultatet er det samme som argumentet. putstring() tager en string som argument og skriver det ud på standard output. Resultatet er det samme som argumentet. Kode for disse funktioner skal tilføjes koden for det oversatte program. Brug de systemkald for i/o, der er beskrevet i dokumentationen til SPIM i bogen Computer Organisation & Design, som blev brugt på arkitekturkurset. Bemærk, at denne dokumentation kan downloades fra kursussiden. Navne på foruddefinerede funktioner er ikke er nøgleord, så variable kan godt hedde det samme. Der kan dog ikke defineres nye funktioner med disse navne. 6 En delmængde af 100 Den udleverede oversætter håndterer kun en delmængde af 100. Begrænsningerne er som følger: Referencer, referencetyper og alle operationer på referencer er ikke implementeret. Typen char og alle operationer på tegn er ikke implementeret. Sammenligningsoperatoren == er ikke implementeret. Løkker og blokke ({... }) er ikke implementeret. 8

9 Der checkes ikke om return-sætninger returnerer samme type som funktionen eller om en funktion kan afslutte uden at komme til en return-sætning. Bemærk, at filen S100.sml har abstrakt syntaks for resten af sproget i kommentarer. 7 Abstrakt syntaks og oversætter Filen S100.sml angiver datastrukturer for den abstrakte syntaks for programmer i 100. Hele programmet har type S100.Prog. Filen C100.sml indeholder et program, der kan indlæse, typechecke og oversætte et 100-program. Det kaldes ved at angive filnavnet for programmet (uden extension) på kommandolinien, f.eks. C100 fib. Extension for 100-programmer er.100, f.eks. fib.100. Når 100-programmet er indlæst og checket, skrives den oversatte kode ud på en fil med samme navn som programmet men med extension.asm. Kommandoen C100 fib vil altså tage en kildetekst fra filen fib.100 og skrive kode ud i filen fib.asm. Den symbolske oversatte kode kan indlæses og køres af MARS. Kommandoen java -jar Mars.jar fib2.asm vil køre programmet og læse inddata fra standard input og skrive uddata til standard output. Lav evt. en makro til denne kommando. Checkeren er implementeret i filerne Type.sig og Type.sml. Oversætteren er implementeret i filerne Compiler.sig og Compiler.sml. Hele oversætteren kan i Linux og MacOS genoversættes (inklusive generering af lexer og parser) ved at skrive source compile.sh på kommandolinien (mens man er i et katalog med alle de relevante filer, inclusive compile.sh). I Windows bruges compile.bat i stedet. Som hjælp til debugging af parser kan man bruge programmet SeeSyntax.sml. Hvis man kører dette program i det interaktive system (mosml SeeSyntax.sml) kan man bruge funktionen showsyntax med et filnavn som argument, og se ML datastrukturen for den abstrakte syntaks. 8 Eksempelprogrammer Der er givet en række eksempelprogrammer skrevet i 100: fib.100 indlæser et ikke-negativt tal n og udskriver f ib(n), hvor f ib er Fibonacci s funktion. copy.100 kopierer 14 tegn fra input til output. charref.100 læser et tal i og en string s ind og udskriver ASCII-koden for det (i 1) te tegn i s. Er medtaget fordi en funktion returnerer en tegnreference. 9

10 sort.100 indlæser et tal n og derefter n tal, som sorteres og skrives ud. sort2.100 gør det samme som sort.100, men bruger referencearitmetik. ssort.100 indlæser en string s, sorterer tegnene i denne og skriver resultatet ud. ssort2.100 gør det samme som ssort.100, men bruger referencearitmetik. textttdfa.100 læser et binært tal ind og skriver dets divisionsrest modulo 3 ud. Hvert eksempelprogram program.100 skal oversættes og køres på inddata, der er givet i filen program.in. Uddata fra kørslen af et program skal stemme overens med det, der er givet i filen program.out. Hvis der ikke er nogen program.in fil, køres programmet uden inddata. Der er endvidere givet et antal nummererede testprogrammer (error01.100,..., error15.100), der indeholder diverse fejl eller inkonsistenser, der skal fanges i checkeren. Der er ikke input- eller outputfiler til disse programmer. Kun fib.100 kan oversættes med den udleverede oversætter. De andre programmer bruger de manglende sprogelementer, og vil derfor give fejl allerede under lexing eller parsing. Selv om testprogrammerne kommer godt rundt i sproget, kan de på ingen måde siges at være en udtømmende test hverken af normal kørsel eller fejlsituationer. Vurder, om der er ting i oversætteren, der ikke er testet, og lave yderligere testprogrammer efter behov. Hvis bedømmerne finder en fejl i jeres kode, som ville være afsløret af et simpelt ekstra testprogram, vil det trække ned. Derimod vil det give bonus, hvis ekstra testprogrammer afslører fejl, som sidenhen rettes. Beskrive gerne dette i jeres testafsnit. 9 Milepæle Da opgaven først skal afleveres efter fem uger, kan man fristes til at udskyde arbejdet på opgaven til sidst i perioden. Dette er en meget dårlig ide. Herunder er angivet retningslinier for hvornår de forskellige komponenter af oversætteren bør være færdige, inklusive de dele af rapporten, der beskriver disse. Uge 47 Lexeren kan genereres og oversættes (husk at erklære de nye tokens i parseren). Rapportafsnit om lexer skrives. Uge 48 Parseren kan genereres og oversættes. Rapportafsnit om lexer og parser skrives. Uge 49 Typecheckeren er implementeret. Rapportafsnit om typechecker skrives. Uge 50 Oversætteren er implementeret, rapportafsnit om denne skrives. 10

11 Uge 51 Afsluttende afprøvning og rapportskrivning, rapporten afleveres om torsdagen. Bemærk, at typechecker og kodegenerering er væsentligt større opgaver end lexer og parser. Lexeren kan udvides og genereres på en times tid og parseren på 2 3 timer. Typecheckeren vil nok kræve 5 8 timers fuldtidsarbejde og kodegeneratoren timer. Her er ikke medregnet tid til at læse op på stoffet i bogen tiderne forudsætter, at man har nogenlunde styr på de relevante dele af pensum. Efter hvert af de ovenstående skridt bør man genoversætte hele oversætteren og prøvekøre den for testprogrammerne. De endnu ikke udvidede moduler kan ved oversættelse rapportere om ikke-udtømmende pattern-matching, og ved køretid kan de rejse undtagelsen Match. Man kan i C100.sml udkommentere kald til de senere faser for at afprøve sprogudvidelserne for de moduler (faser), der allerede er implementerede. Jeres instruktor vil gerne løbende læse og komme med feedback til afsnit af rapporten. I skal dog regne med, at der kan gå noget tid, inden I får svar (så bed ikke om feedback lige før afleveringsfristen), og I skal ikke forvente, at et afsnit bliver læst igennem flere gange. 10 Vink KISS: Keep It Simple, Stupid. Lav ikke avancerede løsninger, før I har en fungerende simpel løsning, inklusive udkast til et rapportafsnit, der beskriver denne. Udvidelser og forbedringer kan derefter tilføjes og beskrives som sådan i rapporten. I kan antage, at læseren af rapporten er bekendt med pensum til kurset, og I kan frit henvise til kursusbøger, noter og opgavetekster. Hver gang I har ændret i et modul af oversætteren, så genoversæt hele oversætteren (med source compile.sh). Dog kan advarsler om pattern matching is not exhaustive i reglen ignoreres indtil alle moduler er udvidede. Når man oversætter signaturen til den genererede parser, vil mosmlc give en Compliance Warning. Denne er uden betydning, og kan ignoreres. Når I udvider lexeren, skal I erklære de nye tokens i parseren med %token erklæringer og derefter generere parseren og oversætte den inden i oversætter lexeren, ellers vil I få typefejl. I lexerdefinitionen skal enkelttegn stå i backquotes ( ), ikke almindelige anførselstegn ( ), som i C eller Java. Det er tilladt at bruge dobbelte anførslestegn (") også om enkelttegn. I kan bruge ML-funktionerne String.toCString og String.fromCString til at indsætte og afkode escapesekvenser i stringkonstanter og Char.toCString 11

12 og Char.fromCString til ditto for tegnkonstanter. De kan også bruges til at checke, om escapesekvenser i tegn- og stringkonstanter er lovlige. MARS bruger C s escapesekvenser i f.eks..asciiz direktivet. 12

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 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

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

Yderligere udvidelser af oversætter for Minimal

Yderligere udvidelser af oversætter for Minimal Yderligere udvidelser af oversætter for Minimal Karakteropgave på kurset Oversættere Vinter 2005 1 Introduktion Dette er den anden del af rapportopgaven på Oversættere, vinter 2005. Opgaven skal løses

Læs mere

DM507 Algoritmer og datastrukturer

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

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 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

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

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

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

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

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

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

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

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

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

Å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

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

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

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 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

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507) Skriftlig Eksamen Algoritmer og Datastrukturer (DM507) Institut for Matematik og Datalogi Syddansk Universitet, Odense Onsdag den 0. juni 009, kl. 9 Alle sædvanlige hjælpemidler (lærebøger, notater, osv.)

Læs mere

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

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

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

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

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

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

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

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

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

CPUer og maskinkode DM534. Rolf Fagerberg

CPUer og maskinkode DM534. Rolf Fagerberg CPUer og maskinkode DM534 Rolf Fagerberg CPUers opbygning En CPU er bygget op af elektriske kredsløb (jvf. sidste forelæsning), som kan manipulere bits. En CPU manipulerer flere bits ad gangen, deres antal

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

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

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507) Skriftlig Eksamen Algoritmer og Datastrukturer (DM507) Institut for Matematik og Datalogi Syddansk Universitet, Odense Mandag den 7. juni 00, kl. 9 Alle sædvanlige hjælpemidler (lærebøger, notater, osv.)

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

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

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

Encoding:...1 Et tegn sæt (character set):...1 UTF-8 og UTF-16 (Unicode):...2

Encoding:...1 Et tegn sæt (character set):...1 UTF-8 og UTF-16 (Unicode):...2 Encoding:...1 Et tegn sæt (character set):...1 UTF-8 og UTF-16 (Unicode):...2 Encoding: Vi har tidligere set på spørgsmålet om et XML dokuments encoding. Det er generelt altid en god ide at gemme et dokument

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

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

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

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

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

Sammenlign og byt. Et eksempel på dokumentering af et program

Sammenlign og byt. Et eksempel på dokumentering af et program Sammenlign og byt Et eksempel på dokumentering af et program Sammenlign og byt Jeg har valgt, som et eksempel, at dokumentere et meget enkelt program som indlæser to tal, sammenligner dem og udskriver

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

Studiepraktik. Thomas Bøgholm Mikkel Hansen Jacob Elefsen

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

Læs mere

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

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 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

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

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

Forelæsning Uge 4 Torsdag

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

Læs mere

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

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

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

Læs mere

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

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

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

Læs mere

Kursusgang 11. Oversigt: Sidste kursusgang Værktøjer til udvikling og implementering af HCI-design Oversigt over Java Swing

Kursusgang 11. Oversigt: Sidste kursusgang Værktøjer til udvikling og implementering af HCI-design Oversigt over Java Swing Kursusgang 11 Oversigt: Sidste kursusgang Værktøjer til udvikling og implementering af HCI-design Oversigt over Java Swing Design af brugerflader 11.1 Samme sted Forskellige steder Sidste kursusgang Samtidigt

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

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

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

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

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

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

Lærevejledning. - en introduktion til maskinarkitektur. faraz@butt.dk Faraz Butt mads@danquah.dk Mads Danquah doktor@dyregod.dk Ulf Holm Nielsen

Lærevejledning. - en introduktion til maskinarkitektur. faraz@butt.dk Faraz Butt mads@danquah.dk Mads Danquah doktor@dyregod.dk Ulf Holm Nielsen Lærevejledning - en introduktion til maskinarkitektur faraz@butt.dk Faraz Butt mads@danquah.dk Mads Danquah doktor@dyregod.dk Ulf Holm Nielsen Roskilde Universitetscenter Naturvidenskabelig Basisuddannelse

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

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

It og informationssøgning Forelæsning september 2006 Nils Andersen. Gentagelser og tekster

It og informationssøgning Forelæsning september 2006 Nils Andersen. Gentagelser og tekster It og informationssøgning Forelæsning 3 20. september 2006 Nils Andersen Gentagelser og tekster Dokumentationstekster Iteration (gentagelse) - med while - med for En- og todimensionale tabeller Typen af

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

XML Difftool brugervejledning

XML Difftool brugervejledning XML Difftool brugervejledning UNI C maj 2007 XML Difftool brugervejledning UNI C Maj 2007 Af UNI C Indhold 1 Kort om XML Difftool og Import... 1 1.1 XML Difftool... 1 1.2 Opbygning af XML import fil...

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2010 Projekt, del III Institut for matematik og datalogi Syddansk Universitet 24. april, 2010 (let justeret 10. maj og 21. maj 2010) Dette projekt udleveres i tre

Læs mere

Computerarkitektur. - en introduktion til computerarkitektur med LINDA

Computerarkitektur. - en introduktion til computerarkitektur med LINDA Computerarkitektur - en introduktion til computerarkitektur med LINDA faraz@butt.dk Faraz Butt mads@danquah.dk Mads Danquah doktor@dyregod.dk Ulf Holm Nielsen Roskilde Universitetscenter Naturvidenskabelig

Læs mere

Hvad er Objekter - Programmering

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

Læs mere

poedit og oversættelse af sprogfiler

poedit og oversættelse af sprogfiler poedit og oversættelse af sprogfiler af Georg S. Adamsen WordPress.Blogos.dk 2009 http://kortlink.dk/wordpressblogosdk/6g38 1 af 11 14-04-2009 14:55 Jeg får af og til spørgsmål om, hvordan man bruger poedit,

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

//Udskriver System.out.println("Hej " + ditfornavn + " " + ditefternavn + "."); System.out.println("Du er " + dinalder + " aar gammel!

//Udskriver System.out.println(Hej  + ditfornavn +   + ditefternavn + .); System.out.println(Du er  + dinalder +  aar gammel! Denne guide er oprindeligt udgivet på Eksperten.dk Brugerinput i Java Denne her artikel gennemgår diverse ting ved brug af brugerinput i Java. Den starter med det simple og fortæller derefter skridt for

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

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

Indstillinger. 1. Built-in viewer 2. Built-in viewer embedded 3. Ekstern viewer

Indstillinger. 1. Built-in viewer 2. Built-in viewer embedded 3. Ekstern viewer TeXMaker guide TeXMaker er den editor, som vi anbefaler til at skrive LaTeX i. Det er en såkaldt cross-platform editor og kan benyttes til både Windows, Mac og Linux. TeXMaker er en ret almindelig editor

Læs mere

Skriftlig eksamen i Datalogi

Skriftlig eksamen i Datalogi Roskilde Universitetscenter Skriftlig eksamen i Datalogi Modul 1 Vinter 1998/99 Opgavesættet består af 5 opgaver, der ved bedømmelsen tillægges følgende vægte: Opgave 1 16% Opgave 2 12% Opgave 3 10% Opgave

Læs mere

Forelæsning Uge 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

Forelæsning Uge 4 Mandag

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

Læs mere

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

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

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

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

Arduino Programmering

Arduino Programmering Microcontroller, Arduino I teknologi skal vi lære at lave programmer til uc for at have muligheden til eksamen at kunne lave intelligente el-produkter. I hvert fald skal vi have set mulighederne, og forstået

Læs mere

DM536. Rapport og debug

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

Læs mere

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

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

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

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

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

Indholdsfortegnelse Forord...8 Makroer samt aktivere Udvikler-fanen...10 Makrosikkerhed (Sikkerhedsindstillinger)...13

Indholdsfortegnelse Forord...8 Makroer samt aktivere Udvikler-fanen...10 Makrosikkerhed (Sikkerhedsindstillinger)...13 1 Indholdsfortegnelse Forord...8 Makroer samt aktivere Udvikler-fanen...10 Hvad er en makro... 10 Hvad kan du bruge en makro til... 10 Hvad en makro er (Visual Basic for Applications)... 11 Det hele sker

Læs mere

I denne artikel, vil der blive gennemgået de grundlæggende PHP-funktioner, såsom udskrift til skærmen, tid og dato og if-sætningen.

I denne artikel, vil der blive gennemgået de grundlæggende PHP-funktioner, såsom udskrift til skærmen, tid og dato og if-sætningen. Denne guide er oprindeligt udgivet på Eksperten.dk Grundlæggende PHP I denne artikel, vil der blive gennemgået de grundlæggende PHP-funktioner, såsom udskrift til skærmen, tid og dato og if-sætningen.

Læs mere

Køreplan Matematik 1 - FORÅR 2005

Køreplan Matematik 1 - FORÅR 2005 Lineær algebra modulo n og kryptologi Køreplan 01005 Matematik 1 - FORÅR 2005 1 Introduktion Kryptologi er en ældgammel disciplin, som går flere tusinde år tilbage i tiden. Idag omfatter disciplinen mange

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

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

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

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