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

Størrelse: px
Starte visningen fra side:

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

Transkript

1 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 i MicroC. Projekt arbejde til kurset Advanced Models and Programs, SASP-AMP 2008 Poul Brønnum, IT Universitetet i København, Maj 2008 Indholdsfortegnelse 1. Forord og indledning Baggrund og problemstilling Continue statement Switch statement Break statement Struct og Union typer malloc og free kald Problemanalyse og teknisk beskrivelse Continue Switch Break Struct og Union Typer malloc og free Afprøvning af programmet Konklusion Litteratur Bilag...9

2 2 1. Forord og indledning Rapporten er udarbejdet maj 2008 som afslutning på kurset Advanced Models and Programs på IT universitetet i København, under vejledning af Peter Sestoft som jeg takker for god hjælp. Udover at berøre og praktisere anvendelsen af en række programmeringssprog og analyseteknikker, indeholdt kurset en fire lektioners gennemgang af compileres konstruktion og omgivelser. Teorien knyttet til denne del af kurset blev anskueliggjort og praktiseret gennem øvelser med og tilretninger af MicroC compileren, samt parameterfiles for Coco parseren til C. Betegnelser som på kurset udelukkende blev anvendt i engelsk version af alle deltagere, er adopteret i denne rapport, og introduceres så vidt muligt i anførselstegn. Da den udførte program-kode udvider compiler og parserparametre, er der lagt vægt på at bibeholde den eksisterende grundstruktur i disse. Der er således f.eks. bygget videre på compilerens Abstract Syntax Tree (AST) samt klasser for typer, expressions og statements, således at denne afprøvede base kan genbruges. The C Programming Language, second edition af Kerninghan og Ritchie [1] er benyttet som reference for kravene til et korrekt C sprog. Denne rapport med tilhørende dokumenter, filer og kildekode kan downloades fra 2. Baggrund og problemstilling I det følgende beskrives de krav, der stilles til udvidelserne af MicroC. 2.1 Continue statement. Dette statement skal indlede næste gennemløb af nærmeste for eller while loop, og kan således betragtes som et kontrolleret goto. Loops er allerede implementeret i MicroC. I for statement skal programmet fortsætte ved loopets increment-step. Det er ikke muligt at anvende statementet uden for loops. 2.2 Switch statement Dette statement skal kunne udføre en forgrening i programmet, bestemt af hvorvidt et udtryk finder match i en liste af én eller flere konstante værdier. Forgreningspunkter bærer labels af formen case: konstant svarende til startpunkter for denne fordeling. En mulig default: label kan opfange ikke-matchede udtryk. Break statement (2.3) benyttes til at afslutte en sådan forgrening inden næste label, men er ikke krævet, dvs. fall through kan opstå i C.

3 3 2.3 Break statement Dette statement skal muliggøre, at enten en loop konstruktion eller et switch statement (se 2.2) kan forlades uden at gennemføre indledende test af variable. Statementet forårsager at inderste loop eller switch forlades (afbrydes) straks, og fortsætter i næste niveau. I den sammenhæng skal nævnes, at en continue inde i en switch sætning derimod vil afbryde alle omgivende switch statements indtil nærmeste loop statement. Der er ikke muligt at anvende break udenfor switch eller loops. 2.4 Struct og Union typer. Disse typer skal kunne referere til en gruppe af én eller flere variable, således at denne gruppe kan behandles som én enhed i stedet for som enkeltstående variable. Struct skal organisere disse variable sekventielt, medens union har sine variable placeret overlappende med samme startposition. I det følgende anvendes fællesbetegnelsen record for de to typer. Til at deklarere variable af disse typer, skal anvendes keywords struct eller union. Til en deklaration kan knyttes et typenavn svarende til int eller bool for primitive typer. Når en type er defineret, kan variable efterfølgende defineres ved at referere til dette typenavn. Variable i en record kaldes members og skal kunne adresseres ved at sammenknytte members med operatorerne. og ->. Sidstnævnte benyttes til at adressere via pointere. Syntaks er således (struct union) [typenavn] [{ type navn;*}] [variabelnavn]; Eksempel: struct header { struct header *ptr; int size; } base; Struct header freehdr; Eksemplet viser samtidig, at members kan have samme type som den deklarerende record, blot denne selv-henvisning foregår i pointerform for at undgå cyklisk reference. Alle eksisterende typer skal kunne benyttes som member variabel. Således også pointere og arrays. 2.5 malloc og free kald Disse kald skal på kørselstidspunkt kunne allokere og frigive memory til et MicroC program, således at et behov for lager som ikke kendes statisk, kan tilfredsstilles dynamisk fra en memorypool. Alle typer kan tildeles memory via malloc. Da C sproget ikke har garbage collection, ønskes computerens memory anvendt så optimalt som muligt. Derfor skal f.eks. free muliggøre, at memory hentet via malloc og ikke længere er anvendt, kan genbruges.

4 4 3. Problemanalyse og teknisk beskrivelse I de følgende analyser af opgaveløsninger refererer check til compilerens gennemløb af AST med henblik på type check medens compile tilsvarende henviser til gennemløbet hvor der dannes mellemliggende kode. Environment er datastrukturer og funktioner tilknyttet respektive gennemløb. Under krav formuleret til check er underforstået, at der kastes en compiler exception såfremt pågældende krav ikke opfyldes. 3.1 Continue Denne funktionalitet løses med god hjælp fra eksisterende compiler og parser. En ny statement klasse ContStatement afledt af Statement introduceres, og parseren danner som node i AST et objekt heraf, når det mødes hvor statements i øvrigt kan optræde. Når AST gennemløbes for type check, kontrolleres ved hjælp af en simpel loop tæller - (whilelevel) indført til formålet i While statement - at et omgivende loop er i gang. Til at understøtte Compile indføres i while statement en continue label (contlab) som henviser til eksisterende start label eller increment label afhængig af loop type. Disse labels pushes i environment i særlig ActiveWhiles stack ved indledning af nyt loop. Herefter kan Continue compileres som en simpel goto til den øverste label i denne stack. 3.2 Switch Den ønskede funktionalitet a) Først at evaluere tilknyttet switch expression b) Dernæst at finde tilhørende case værdi i en liste af mulige forgreningspunkter (under hensyntagen til en eventuel default label) c) Endelig at fortsætte udførelse ved statement tilknyttet den fundne case værdi og tage højde for et eventuelt møde med et break statement løses ved hjælp af følgende tilføjelser og hjælpekonstruktioner: - parseren indstilles til at møde keyword switch på statement niveau, hvilket vil indlede dannelsen af et objekt i en ny klasse Switch afledt af Statement. Samtidig danner parseren et dictionary (casedict) som er element i en stack (switchstack) der vedligeholdes i environment. Formålet er, at der allerede på parserniveau sikres, at case numre ikke kan optræde duplikerede og at case labels ikke kan mødes uden for en omgivende switch. - Til type check kontrolleres ved hjælp af en simpel loop tæller - (switchlevel) i Switch statement - at en omgivende switch er i gang.

5 5 - Der dannes et objekt af en ny undertype, LabelStatement, som sørger for at skabe og lagre en unik label for et tilhørende statement. Denne klasse kontrollerer endvidere, at label nr. er af type Constant. - Endelig styres compilering af nestede switch blokke ved hjælp af en stack over igangværende Switch objekter (ActiveSwitches) som vedligeholdes i compile environment. Switch objektet er konstrueret med to elementer: Et switch expression og et Block statement (composite Statement, en gruppe af et eller flere andre statements). Herefter kan den ønskede funktionalitet konstrueres, der henvises til indledningen af dette punkt: - Check er forholdsvist simpelt. Først kontrolleres expression for at være integer type. Dernæst steppes switchlevel, hvilket vil legalisere at der efterfølgende mødes break statements. Endelig udføres check af Block statementet, og switchlevel reduceres igen. - Compilering er knap så enkel. Funktionen skal indledes af en test, og dernæst skal der fortsættes et eller andet sted i switch blokken, som gennemløbet endnu ikke har mødt i AST og dermed compileret til kendte labels. Derfor benyttes følgende konstruktion, inspireret af Compilers, Principles techniques and tools [2]: Først springes uden om koden til en label (beginlab) som indleder testen. Herefter kan blok statementet (som jo i øvrigt rekursivt kan indeholde nestede switch statements) compileres. Endelig compileres testen baseret på switch-expression denne test fordeler sig til nu kendte labels, som ovenfor beskrevne LabelStatement i mellemtiden har tilføjet det aktuelle Switch objekt gennem ActiveSwitches stack i environment. Eller laver fall through hvis der ikke findes en default label. Skelet for kodegenerering kan sammenfattes således: * GOTO beginlab; * ([caselabel n: default:] statement)*; * GOTO endlab; * beginlab: * <test>; * endlab: Generering af test kode foregår ved simpel if expression equals label constant goto case label. En statisk optimering havde været mulig, ved f.eks. at anvende tabelopslag i tilfælde hvor konstanterne ligger tilstrækkelig tæt. Eller en effektiv hash-lookup kan inlines eller kaldes gennem systemkald som anskueliggjort senere under malloc/free. Dette kan være relevant ved tunge loops. 3.3 Break En break skal afbryde et igangværende switch statement eller loop, afhængig af hvad der er nærmest i scope. Til dette formål vedligeholder Switch og While objekter en stack i environment (ActiveLabels) som indeholder end-label for switch henholdsvis loop statements.

6 6 Herefter kan break håndteres yderst enkelt: Test foretages ved at sikre sig at der findes switch eller loop i gang (whilelevel > 0 eller switchlevel > 0). Compile udføres ved at emitte en goto til den øverste label i ActiveLabels stack. 3.4 Struct og Union Typer Disse to typer har flere ligheder end forskelle, og fælles-behandles i det følgende under betegnelsen records, med mindre de varierer. Det er centralt for denne del af analysen, at records muliggør indførelse af composite typer på individuelt program niveau. Typer kan nu ikke længere findes frem gennem færdige og kendte typeklasser, men skal dannes og compileres, samt identificeres ved et eventuelt typenavn. Samtidig er deklaration af en recordtype variabel mere kompleks, idet variablen kan deklareres i umiddelbar forlængelse af type deklarationen, i hvilket tilfælde typen ikke behøver at blive navngivet. Eller en record variabel kan deklareres gennem refererence til et allerede deklareret typenavn. Endelig kan et typenavn deklareres uden nødvendigvis samtidig at deklarere variable. Analysen skal yderligere håndtere den vinkel, at disse typer da de ikke er kendte når parseren starter skal lagres og fremfindes dynamisk under hensyntagen til scope og environment. På mange måder den samme håndtering som foregår for almindelige variable. Men en type og en variabel i samme scope kan godt have samme navn. Record typer aspirerer således til at være composite subtyper af Type klassen, på samme måde som Block statements rummer andre Statement typer. Og disse typer aspirerer endvidere til at have en væsentlig del af sin struktur fælles med almindelige variable. På denne baggrund er funktionaliteten indført som beskrevet i det følgende: Der oprettes to ny Operator klasser til at håndtere sammenstilling af member variable: varmember og ptrmember for henholdsvis. og -> operator. Samtidig indføres en ny subtype til Access typen, som kan rumme 2 andre objekter af Access type, samt en memberoperator. Denne type kaldes MemberAccess og har således de samme basis egenskaber som Access mht. bl.a. lvalue or rvalue. Endvidere kan den rumme et ubegrænset antal members, idet højre ben i objektets node i AST kan være et nyt MemberAccess objekt. Jeg har haft en række forskellige overvejelser vedrørende organisation af disse typer, og har valgt en løsning, hvor navngivne typer lagres sammen med andre variable, idet navnet prefixes tegnet som er illegalt i et almindeligt variabelnavn og derfor vil blive afvist af parseren. På den ene side undgås en masse duplikering af kode og data (håndtering i scope stacks, lookup lokalt / globalt, forskellig behandling i forskellig type environment etc.). På den anden side kan dette valg indebære en fare for urent design ved at lagre to forskellige slags emner i samme struktur. Men overordnet vil f.eks. check af en alm. variabel skulle fremfinde variablens type ud fra dens navn, på samme måde som et type navn skal. Og håndtering af tegnet kan foregå centralt i Record-typen. På type niveau indføres en Record type som er en abstract class. Heraf afledes Struct og Union klasserne som f.eks. ved polymorphic dispatch beregner member offset og size på hver sin måde. Parseren danner i første omgang en ikke-komplet Record type, som bl.a. indeholder en member List. Denne færdiggøres løbende, og senest ved deklaration af type og variabel, hvor bl.a.

7 7 referencer til allerede definerede typer løses, og member List færdigbehandles med hensyn til offset og kontrol af duplicates. Endelig har jeg fundet det relevant at indføre tre delegates (FindType, AddType og StartRecord) som kaldes fra en type og udfører environment funktioner der har samme formål men er implementeret forskelligt i henholdsvis check og compile environment. På den både kan den eksisterende adskillelse mellem de to environments bibeholdes, samtidig med at beslægtet funktionalitet kan udføres og kontrolleres i de respektive environments. (Og et objekt orienteret design bibeholdes uden eksplicit test på typer). Herefter står tilbage at udføre check og compile af et MemberAccess objekt. Venstre del af et member par kontrolleres således, at pointer operatorer kun er tilladt for members med PointerAccess. Samtidig vedligeholdes en stack i environment over aktuel Record type, således at members kan behandles og kontrolleres rekursivt. Compile af et MemberAccess foretages ved at første element placerer sin adresse på normal vis vha. sin VariableAccess. Herefter udfører members rekursivt ADD af sit offset til denne adresse. 3.5 malloc og free For dynamisk at kunne allokere og tilgå memory i samme adresserum som øvrige variable, er den eksisterende stack (1000 integers) opdelt i to halvdele, hvoraf den nederste fortsætter med uændret formål. Jeg har valgt at tilrette den algoritme som er beskrevet i The C Programming Language, 2. ed. [1], idet den netop udviklede funktionalitet for Record typer derved kan komme i spil. Den samlede kode er vist i bilag 2. Koden vil kunne opdeles så en compilering vil starte med at danne en arbejdsfil som består af indledende system deklarationer efterfulgt at det program som skal compileres og afsluttet med selve malloc / free koden. Eksemplet viser den totale kode. Da MicroC (endnu) ikke har mulighed for casts eller void datatyper, har jeg måttet liberalisere typecheck for assignments, således at der kan assignes mellem int og pointer typer. Dette bør ved første lejlighed strammes igen, men er nødvendig for at muliggøre denne implementering. Malloc fungerer gennem et system af header records, som dels beskriver et umiddelbart følgende dataareal gennem et size member, og dels peger på næste fri blok. Funktionen henter memory fra systemet når det er nødvendigt, og holder selv regnskab med en liste af fri datablokke, som er linket sammen i en cirkulær liste. Når en bruger anmoder om memory af en bestemt størrelse starter et gennemløb, som stopper ved første fri blok der kan rumme det ønskede. Hvis denne blok har den nøjagtige størrelse frigøres den, og returneres til bruger med den adresse som umiddelbart følger blokkens header. Bruger kan herefter assigne denne adresse til en pointer, og arbejde videre med den på normal vis. Hvis den mødte blok indeholder mere end nødvendigt, omdannes den sidste del til en blok der returneres til bruger, medens den første del fortsætter sit liv som fri blok med en reduceret længde. Hvis der ikke er nogle blokke til rådighed af ønsket størrelse forsøger funktionen at hente mere memory fra systemet, der linkes ind i ringen af fri blokke. Hvis systemet afviser anmodningen, returnerer malloc værdien 0 til bruger.

8 8 free virker omvendt, dvs. bruger afleverer en blok til funktionen. Denne linkes ind i den eksisterende ring af fri blokke. Hvis nabo blokke er fri, smeltes de sammen med den frigjorte blok. Jeg har forsøgt så vidt muligt at debugge koden i bilag 2, og har fundet at den opfører sig som beskrevet. Det viste applikationskald demonstrerer (set udefra) kun, at memory et eller andet sted kan skrives og læses. 4. Afprøvning af programmet. Bilag 1 viser en række eksempler og test af break, continue og switch. Bilag 2 viser som beskrevet i forrige afsnit en intens brug af records samt implementering af malloc og free. 5. Konklusion. Formålet med at udføre denne rapport har især været at forøge min forståelse af og kendskab til compileres virkemåde. I den sammenhæng har arbejdet været meget lærerigt, og vist hvor meget der kan laves med få instruktioner når den nødvendige infrastruktur er til stede. Samtidig har arbejdet også forøget forståelsen for at ensartede principper følges, så overblikket bevares selv om programmet er langt inde i f.eks. en nestet member-deklaration af et array af pointervariable. Med hensyn til det konkrete resultat, så mener jeg at det er lykkedes at skabe brugbare tilføjelser til de omhandlede emner, uden at indføre unødvendige begrænsninger. Malloc kræver naturligvis mere memory til rådighed i praksis. Selv om afprøvningen har vist korrekte resultater, ville jeg i en fremtidig version bruge yderligere tid på test og atter test. Som en af de første tilføjelser til en ny release, ville jeg indføre void pointere, så der kan udføres mere rene assignments. Og en funktions pointer kunne åbne en række muligheder. Efter en mere grundig gennemgang af stackens anvendelse, kan det muligvis være en fordel at lægge stacken sidst i memory, således at der kastes en exception ved stack overflow som ved tidligere version - i stedet for at fortsætte ind i malloc område.

9 9 6. Litteratur 1. Brian W. Kernighan, Dennis M. Ritchie: The C Programming Language, 2. edition, Prentice Hall (1988) 2. Aho A., Lam M., Sethi R., Ullman J.D.: Compilers. Principles, Techniques & Tools, 2. edition, Addison Wesley (2006) 3. Appel, A.: Modern compiler implementation in java, 2. edition, Cambridge University Press (2002) 7. Bilag Bilag 1. Bilag 2. Bilag 3. Bilag 4. Demonstration og test af break, continue og switch statements Implementation af malloc og free, samt demonstration af kald Programtekst for MicroC compiler med farvemarkering af ændringer Tilsvarende liste for Coco ATG parameter file

Å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

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

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

Læs mere

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

Software Construction 1 semester (SWC) Spørgsmål 1 Spørgsmål 1 Objekter #1 Giv en kort præsentation af begrebet objekt, samt hvorledes du erklærer(declare), opretter(create) og bruger objekter Du kan beskrive o Datatyper o Variable / Instans variable /

Læs mere

Online kursus: Programming with ANSI C

Online kursus: Programming with ANSI C Online kursus 365 dage DKK 1.999 Nr. 90198 P ekskl. moms Denne kursuspakke giver dig et bredt kendskab til sproget C, hvis standarder er specificeret af American National Standards Institute (ANSI). Kurserne

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

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

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

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

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

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

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

Pointers. Programmering i C. 11. december Lektion 5. Eksempel: denne plads. Getting the address of a variable:

Pointers. Programmering i C. 11. december Lektion 5. Eksempel: denne plads. Getting the address of a variable: Programmering i C Lektion 5 11. december 2008 Pointers 1 Pointers 2 Referenceparametre 2 / 23 Husk: En variabel er en navngiven plads i computerens lager. En pointer er en pegepind der peger på denne plads.

Læs mere

Klasse 1.4 Michael Jokil 03-05-2010

Klasse 1.4 Michael Jokil 03-05-2010 HTX I ROSKILDE Afsluttende opgave Kommunikation og IT Klasse 1.4 Michael Jokil 03-05-2010 Indholdsfortegnelse Indledning... 3 Formål... 3 Planlægning... 4 Kommunikationsplan... 4 Kanylemodellen... 4 Teknisk

Læs mere

Kernealphaerne Indhold af G1

Kernealphaerne Indhold af G1 Kernealphaerne Indhold af G1 3 små opgaver: 1. Oversæt en kerne og afvikl den på en kernealpha 2. Håndoversæt en C/C++ funktion til alpha assembler 3. Implementer procedurer til dynamisk lagerallokering

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

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

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

Læs mere

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

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

Læs mere

METODER ARV KLASSER. Grundlæggende programmering Lektion 5

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

Læs mere

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

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

SWC eksamens-spørgsmål. Oversigt

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

Læs mere

Planen for idag. Indhold af G1. Kernealphaerne. Alpha erne. Datalogi 1F Forår 2003

Planen for idag. Indhold af G1. Kernealphaerne. Alpha erne. Datalogi 1F Forår 2003 Planen for idag Datalogi 1F Forår 2003 G1 Et gensyn med KFirst G1 Jørgen Sværke Hansen cyller@diku.dk 2 Sidst så vi hvordan man starter den første proces KCurProc = KWaitQ.Get(); KFirst(KCurProc->sp);

Læs mere

Eksamens spørgsmål Software Construction. Objekter. Spørgsmål 1: Januar Giv en beskrivelse af Objekt-begrebet og deres brug

Eksamens spørgsmål Software Construction. Objekter. Spørgsmål 1: Januar Giv en beskrivelse af Objekt-begrebet og deres brug Spørgsmål 1: Objekter Giv en beskrivelse af Objekt-begrebet og deres brug Under eksaminationen forventes du at forklare: Hvad er en type og en variabel? Hvordan erklæres en variabel? Hvad forstås ved en

Læs mere

Undervisningsbeskrivelse

Undervisningsbeskrivelse Undervisningsbeskrivelse Stamoplysninger til brug ved prøver til gymnasiale uddannelser Termin Skoleåret 2016/17 Institution Hansenberg Gymnasium Uddannelse Fag og niveau Lærer Hold htx Programmering,

Læs mere

Programmering i C. Kursusintroduktion. Lektion september Målgruppe 2 Indhold 3 Form 4 Materiale. Målgruppe Indhold Form Materiale

Programmering i C. Kursusintroduktion. Lektion september Målgruppe 2 Indhold 3 Form 4 Materiale. Målgruppe Indhold Form Materiale Programmering i C Lektion 1 16. september 2008 Målgruppe Indhold Form Materiale Kursusintroduktion 1 Målgruppe 2 Indhold 3 Form 4 Materiale 2 / 21 Målgruppe Indhold Form Materiale Folk der har styr på

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

Programmering i C. Lektion september 2009

Programmering i C. Lektion september 2009 Programmering i C Lektion 4 18. september 2009 Pointers Referenceparametre 2 / 19 Pointers 1 Pointers 2 Referenceparametre Pointers Referenceparametre 3 / 19 Husk: En variabel er en navngiven plads i computerens

Læs mere

Sproget Rascal (v. 2)

Sproget Rascal (v. 2) Sproget Rascal (v. 2) Til brug i K1 på kurset Oversættere Opdateret 29/11 2004 Abstract Rascal er et simpelt Pascal-lignende imperativt sprog. Dette dokument beskriver uformelt Rascals syntaks og semantik

Læs mere

DM507 Algoritmer og datastrukturer

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

Lektion 4. Grundlæggende programmering i VR

Lektion 4. Grundlæggende programmering i VR Lektion 4 Grundlæggende programmering i VR Plan for i dag Simpelt FPS C# og objekt orienteret programmering Metoder Loops / løkker Random Vi koder 3D uden modeller Simpelt FPS Træk kuglen fra hierarkiet

Læs mere

Forelæsning Uge 4 Mandag

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

Læs mere

Sproget Six. Til brug i rapportopgaven på kurset Oversættere. Vinter 2006. Abstract

Sproget Six. Til brug i rapportopgaven på kurset Oversættere. Vinter 2006. Abstract Sproget Six Til brug i rapportopgaven på kurset Oversættere Vinter 2006 Abstract Six er baseret på det sprog, der vises i figur 6.2 og 6.4 i Basics of Compiler Design. Den herværende tekst beskriver basissproget

Læs mere

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

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

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

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

Læs mere

Divide-and-Conquer algoritmer

Divide-and-Conquer algoritmer Divide-and-Conquer algoritmer Divide-and-Conquer algoritmer Det samme som rekursive algoritmer. Divide-and-Conquer algoritmer Det samme som rekursive algoritmer. 1. Opdel problem i mindre delproblemer

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

Datalogi OB, Efterår 2002 OH er, forelæsning 10/ Klasser og nedarvning

Datalogi OB, Efterår 2002 OH er, forelæsning 10/ Klasser og nedarvning Datalogi OB, Efterår 2002 OH er, forelæsning 10/9-2002 Klasser og nedarvning Hvad er formålet? Typer, generisk kode, typeparameterisering Kritisk kig på, hvordan man gør i Java. Eftermiddagens opgave:

Læs mere

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

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

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

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

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 Torsdag

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

Læs mere

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

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

Læs mere

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

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

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

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

Undervisningsbeskrivelse

Undervisningsbeskrivelse Undervisningsbeskrivelse Stamoplysninger til brug ved prøver til gymnasiale uddannelser Termin Skoleåret 2015/16 Institution Hansenberg Gymnasium Uddannelse Fag og niveau Lærer Hold htx Programmering,

Læs mere

Divide-and-Conquer algoritmer

Divide-and-Conquer algoritmer Divide-and-Conquer algoritmer Divide-and-Conquer algoritmer Det samme som rekursive algoritmer. Divide-and-Conquer algoritmer Det samme som rekursive algoritmer. 1. Opdel problem i mindre delproblemer

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

BlogReader 1.0.0 Af Jonas F. Jensen.

BlogReader 1.0.0 Af Jonas F. Jensen. BlogReader 1.0.0 Af Jonas F. Jensen. Indholdsfortegnelse Forord.....3 Hvad er BlogReader?......4 RSS, XML og sematic web......4 Klasse struktur i UML......4 Overordnet opbygning......5 UML diagram over

Læs mere

Modern Concurrency Abstractions for C#

Modern Concurrency Abstractions for C# Modern Concurrency Abstractions for C# Nick Benton Luca Cardelli Cédric Fournet Presenter: Henrik Kragh-Hansen September 27, 2007 Motivation for concurrency Forbedring af concurrency Baggrundsinformation

Læs mere

Introduktion til funktioner, moduler og scopes i Python

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

Læs mere

Michael Jokil 11-05-2012

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

Læs mere

Web of Science Vejledning

Web of Science Vejledning Web of Science Vejledning Der er adgang til Web of Science fra databaselisten på Fagbibliotekets hjemmeside, eller hvis du er udenfor hospitalets netværk via fjernadgang til DEFF (www.tidsskrifter.deff.dk)

Læs mere

Programmering i C. Lektion oktober 2008

Programmering i C. Lektion oktober 2008 Programmering i C Lektion 2 20 oktober 2008 Historie Processen At kompilere 2 / 23 Fra sidst 1 Historie 2 Processen 3 At kompilere Historie Processen At kompilere 3 / 23 ALGOL 60 1963 CPL 1966 BCPL 1969

Læs mere

Sortering af information er en fundamental og central opgave.

Sortering af information er en fundamental og central opgave. Sortering Sortering Input: Output: Eksempel: n tal De n tal i sorteret orden 6, 2, 9, 4, 5, 1, 4, 3 1, 2, 3, 4, 4, 5, 9 Mange opgaver er hurtigere i sorteret information (tænk på ordbøger, telefonbøger,

Læs mere

Sortering. Eksempel: De n tal i sorteret orden

Sortering. Eksempel: De n tal i sorteret orden Sortering 1 / 32 Sortering Input: Output: Eksempel: n tal De n tal i sorteret orden 6, 2, 9, 4, 5, 1, 4, 3 1, 2, 3, 4, 4, 5, 9 2 / 32 Sortering Input: Output: Eksempel: n tal De n tal i sorteret orden

Læs mere

Lageradministration Paging og segmentering

Lageradministration Paging og segmentering Lageradministration Paging og segmentering 1 Re: Logiske/fysiske adresser... Proces-struktur = kode og data for en proces 4G En proces tilgår sin proces-struktur via et logisk/virtuelt adresserum, fx 0,

Læs mere

Crash Course i Programmering. HumTek, RUC

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

Læs mere

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

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

Læs mere

SPSS introduktion Om at komme igang 1

SPSS introduktion Om at komme igang 1 SPSS introduktion Om at komme igang 1 af Henrik Lolle, oktober 2003 Indhold Indledning 1 Indgang til SPSS 2 Frekvenstabeller 3 Deskriptive statistikker gennemsnit, standardafvigelse, median osv. 4 Søjlediagrammer

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

Generel projektbeskrivelse

Generel projektbeskrivelse 02121 Ingeniørarbejde Softwareteknologi Januar 2010 1 Introduktion Generel projektbeskrivelse Formålet med programmeringsprojektet er at give deltagerne erfaring med at designe og konstruere et simpelt

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

Divide-and-Conquer algoritmer

Divide-and-Conquer algoritmer Divide-and-Conquer algoritmer Divide-and-Conquer algoritmer Det samme som rekursive algoritmer. Divide-and-Conquer algoritmer Det samme som rekursive algoritmer. 1. Opdel problem i mindre delproblemer

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

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

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 4 DM502 Forelæsning 4 Flere kontrolstrukturer for-løkke switch-case Metoder Indhold Arrays og sortering af arrays String-funktioner for-løkke Ofte har man brug for at udføre det samme kode, for en sekvens

Læs mere

Forelæsning Uge 2 Torsdag

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

Læs mere

Undervisningsbeskrivelse

Undervisningsbeskrivelse Undervisningsbeskrivelse Programmering C ved mst Termin Juni 117 Institution Uddannelse Fag og niveau Lærer Hold Erhvervsskolerne Aars hhx Programmering C Michael Stenner (mst) 2-3g16 pro Forløbsoversigt

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

Undervisningsbeskrivelse

Undervisningsbeskrivelse Undervisningsbeskrivelse Termin Juni 119 Institution Uddannelse Fag og niveau Lærer Hold Erhvervsskolerne Aars hhx Programmering B Patrick Bøgsted Sørensen (pbs) 2k18 Forløbsoversigt (4) Forløb 1 Forløb

Læs mere

AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007

AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007 AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007 Opgavebesvarelsen skal afleveres som enten en printerudskrift eller som et passende dokument sendt via email til fjj@noea.dk. Besvarelsen skal

Læs mere

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

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

Læs mere

Udvikling af DOTNET applikationer til MicroStation i C#

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

Læs mere

Under 'Microsoft Block Editor', klik 'New project' for at åbne block editor-værktøjet.

Under 'Microsoft Block Editor', klik 'New project' for at åbne block editor-værktøjet. 8 3. Nedtælling Nu skal du lave en nedtæller. Det er en god måde at lære variabler på og hvordan du skal kode micro:bit til at gøre dét, du vil have, at den skal vise. Du skal bruge: 1 x BBC micro:bit

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

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

Exceptions i Delphi. Try except

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

Læs mere

Forelæsning Uge 2 Torsdag

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

Læs mere

Programmering C Eksamensprojekt. Lavet af Suayb Köse & Nikolaj Egholk Jakobsen

Programmering C Eksamensprojekt. Lavet af Suayb Köse & Nikolaj Egholk Jakobsen Programmering C Eksamensprojekt Lavet af Suayb Köse & Nikolaj Egholk Jakobsen Indledning Analyse Læring er en svær størrelse. Der er hele tiden fokus fra politikerne på, hvordan de danske skoleelever kan

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

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

4 Basal Objekt-orienteret Programmering I.

4 Basal Objekt-orienteret Programmering I. 4 Basal Objekt-orienteret Programmering I. Klasser i forhold til abstrakte datatyper og record-typer. Variable og operationer. Klasse-interfaces. Klasser og typer. Klasse-instantiering og initialisering.

Læs mere

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

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

Grafer og graf-gennemløb

Grafer og graf-gennemløb Grafer og graf-gennemløb Grafer En mængde V af knuder (vertices). En mængde E V V af kanter (edges). Dvs. ordnede par af knuder. Grafer En mængde V af knuder (vertices). En mængde E V V af kanter (edges).

Læs mere

Divide-and-Conquer algoritmer

Divide-and-Conquer algoritmer Divide-and-Conquer algoritmer Divide-and-Conquer algoritmer Det samme som rekursive algoritmer. 1. Opdel problem i mindre delproblemer (af samme type). 2. Løs delproblemerne ved rekursion (dvs. kald algoritmen

Læs mere

Lektion 6. Grundlæggende programmering i VR

Lektion 6. Grundlæggende programmering i VR Lektion 6 Grundlæggende programmering i VR Plan for i dag Simpelt FPS Triggerzones og animationer C# og objekt orienteret programmering Interfaces Generics Google Cardboard Video om VRs fremtid App til

Læs mere

Sortering. Eksempel: De n tal i sorteret orden

Sortering. Eksempel: De n tal i sorteret orden Sortering 1 / 34 Sortering Input: Output: Eksempel: n tal De n tal i sorteret orden 6, 2, 9, 4, 5, 1, 4, 3 1, 2, 3, 4, 4, 5, 9 2 / 34 Sortering Input: Output: Eksempel: n tal De n tal i sorteret orden

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

Brugermanual til Assignment hand in

Brugermanual til Assignment hand in Brugermanual til Assignment hand in Indhold: Undervisere:...2 Hvor finder jeg Assignment hand in?...2 Opret en opgave...4 Slet en opgave...5 Rediger en opgave...5 Hvor finder jeg de afleverede filer?...5

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

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

Ghostbusters. Introduktion. Scratch. Du skal lave et fangelegsspil med spøgelser! Arbejdsliste. Test dit Projekt. Gem dit Projekt

Ghostbusters. Introduktion. Scratch. Du skal lave et fangelegsspil med spøgelser! Arbejdsliste. Test dit Projekt. Gem dit Projekt Scratch 1 Ghostbusters 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

Forelæsning Uge 3 Mandag

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

Læs mere

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

Test af It-komponent

Test af It-komponent Test af It-komponent I programmeringssproget Java Programmet Login service Elev: Mads Funch Klasse 2.4 Mat, It, Programmering Skole: Roskilde Tekniske Gymnasium HTX Underviser: Karl Dato: 31-08-2016 Side

Læs mere