Skriftlig eksamen i Datalogi



Relaterede dokumenter
Skriftlig eksamen i Datalogi

Skriftlig eksamen i Datalogi

Skriftlig eksamen i Datalogi

Skriftlig eksamen i Datalogi

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

Vejledende løsninger

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

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

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer

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

DM507 Algoritmer og datastrukturer

Træer. Datastrukturer & Algoritmer, Datalogi C Forelæsning 9/

Søgetræer: Generel repræsentation af (sorterede) mængder og funktioner Databasesystemer...

Om binære søgetræer i Java

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer

Civilingeniøreksamen januar Skriftelig prøve den 12. januar 2001 Kursusnummer 49104

Ugeseddel 4 1. marts - 8. marts

DANMARKS TEKNISKE UNIVERSITET

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

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

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

Danmarks Tekniske Universitet

BRP Tal. Om computer-repræsentation og -manipulation. Logaritmer

DM507 Algoritmer og datastrukturer

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

Danmarks Tekniske Universitet

Introduktion til datastrukturer. Introduktion til datastrukturer. Introduktion til datastrukturer. Datastrukturer

Introduktion til datastrukturer. Introduktion til datastrukturer. Introduktion til datastrukturer. Datastrukturer

Danmarks Tekniske Universitet

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

Introduktion til datastrukturer. Philip Bille

Introduktion til datastrukturer

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer

I denne artikel vil vi bruge en User klasse som vi så vil gruppere på forskellige måder.

Tree klassen fra sidste forelæsning

Danmarks Tekniske Universitet

DATALOGISK INSTITUT, AARHUS UNIVERSITET

Danmarks Tekniske Universitet

Kursus navn: Indledende programmering Kursus nr

Danmarks Tekniske Universitet

Løsning af møntproblemet

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

Prioritetskøer ved»heap«, simulering

DATALOGI 0GB. Skriftlig eksamen tirsdag den 6. januar 2004

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

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

Danmarks Tekniske Universitet

DRONNINGER (QUEENS) Opgave 1

DM507 Algoritmer og datastrukturer

Danmarks Tekniske Universitet

DATALOGI 0GB. Skriftlig eksamen mandag den 7. juni 2004

Danmarks Tekniske Universitet

DM507 Algoritmer og datastrukturer

Danmarks Tekniske Universitet

Intervalsøgning. Algoritmisk geometri. Motivation for intervaltræer. Intervalsøgning. Lad der være givet en database over ansatte i en virksomhed

Algoritmisk geometri

DM507 Algoritmer og datastrukturer

Danmarks Tekniske Universitet

Skriftlig Eksamen Diskret Matematik (DM528)

Danmarks Tekniske Universitet

Kursus i OOP og Java. Kursus i Objektorienteret programmering i Java

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET. Science and Technology EKSAMEN. Grundkurser i Datalogi. Algoritmer og Datastrukturer 1 (2003-ordning)

Hassansalem.dk/delpin User: admin Pass: admin BACKEND

Programmeringscamp. Implementer funktionerne én for én og test hele tiden.

16 Træer. Noter. Definition af et træ. Definitioner i tilknytning til træer. Repræsentation af træer. Binære træer. Den abstrakte datatype.

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

Systemvalg. Oversigt og teknikker. Kapitel 2

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

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

Forelæsning Uge 2 Mandag

Skriftlig eksamen, Programmer som Data januar 2014

Lær Python - Dag 4, modul 2 Objektorienteret programmering

DATALOGISK INSTITUT, AARHUS UNIVERSITET

DM13-1. Obligatoriske Opgave - Kredsløbs design

Fornyelsesteori med anvendelser: Punktprøve

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

Binære søgetræer. Binære søgetræer. Nærmeste naboer. Nærmeste nabo

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

Abstrakte datatyper C#-version

Prioritetskøer. Prioritetskøer. Prioritetskøer. Prioritetskøer

DATALOGI 1F. Skriftlig eksamen tirsdag den 10. juni % 2 10 % 3 25 % 4 10 % 5 30 %

Prioritetskøer. Prioritetskøer Træer og hobe Repræsentation af hobe Algoritmer på hobe Hobkonstruktion Hobsortering. Philip Bille

Videregående Programmering for Diplom-E Noter

Skriftlig Eksamen Algoritmer og sandsynlighed (DM538)

Induktive og rekursive definitioner

3 Algebraisk Specifikation af Abstrakte Datatyper.

Sortering. Eksempel: De n tal i sorteret orden

Hvordan organiseres et programs grafik-elementer? OOP e uge kursusgang. Advarsel! Component-objekter

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET EKSAMEN. Grundkurser i Datalogi. Algoritmer og Datastrukturer 1 (2003-ordning)

Algoritmer og datastrukturer Course No Cheat Sheet May 15, 2012

Efterslægtstavlen kan også udskrives som ren tekst med indrykning: Tonnes ~Ursula ina ~Morten Ferdinand Ida Diderich Oluf ~Pia Grethe Jonna Hedvig Rud

DATALOGISK INSTITUT, AARHUS UNIVERSITET

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

Transkript:

Roskilde Universitetscenter Skriftlig eksamen i Datalogi Modul 1 Sommer 1999 Opgavesættet består af 5 opgaver, der ved bedømmelsen tillægges følgende vægte: Opgave 1 15% Opgave 2 15% Opgave 3 8% Opgave 4 37% Opgave 5 25% Alle sædvanlige hjælpemidler er tilladt. I tilfælde af unøjagtigheder i opgaveteksterne forventes det, at deltagerne selv præciserer besvarelsernes forudsætninger. Opgavesættet består af en forside og 7 paginerede sider. Kontroller at din kopi er fuldstændig.

Roskilde Universitetscenter side 1 af 7 sider Opgave 1: Træer (15%) Nedenfor er en binær hob repræsenteret ved hjælp af et array. T S R M O G I A H L Spørgsmål 1.1 Tegn hoben som et binært træ. Lad der være givet følgende klasseerklæring class Node { char key; Node left, right; Node(char k, Node l, Node r) { key = k; left = l; right = r; Klassen kan benyttes til at repræsentere en binær hob ved hjælp af et binært træ. Spørgsmål 1.2 Programmér en kodestump, der opretter et binært træ svarende til hoben ovenfor. Lad root betegne træets rod. Spørgsmål 1.3 Antag at en binær hob med N nøgler er repræsenteret i array-elementerne a[1], a[2],, a[n]. Programmér en generel metode Node maketree(char a[], int N) som opretter det binære træ, der svarer til hoben. Metoden skal returnere roden i træet. Vink: Benyt en rekursiv hjælpemetode Node makesubtree(char a[], int i, int N) der returnerer roden i det binære træ, der har a[i] som nøgle i roden.

Roskilde Universitetscenter side 2 af 7 sider Opgave 2: Stakke og køer (15%) Nedenfor ses et udkast til en Java-klasse, Stack, der implementerer en stak af objekter. class Stack { public void push(object item) {... public Object pop() {... public boolean isempty() {... Klassen har tre offentlige metoder. push(item) lægger objektet item øverst på stakken pop() fjerner og returnerer stakkens øverste element isempty() returner true, hvis stakken er tom; ellers false Lad der være givet en stak s. Spørgsmål 2.1 Skriv en kodestump, der ved hjælp af klassen Stack vender objekternes rækkefølge i s. Vink: Benyt en eller flere hjælpestakke. Spørgsmål 2.2 Skriv en kodestump, der ved hjælp af klassen Stack danner en kopi t af s. Efter udførelse af kodestumpen skal indholdet af s være som før udførelsen. Nedenfor ses et udkast til en Java-klasse, Queue, der implementerer en kø af objekter. class Queue { public void insert(object item) {... public Object remove() {... public boolean isempty() {... Klassen har tre offentlige metoder. insert(item) sætter objektet item bagerst i køen remove() fjerner og returnerer køens forreste element isempty() returner true, hvis køen er tom; ellers false Lad der være givet en kø q. Spørgsmål 2.3 Skriv en kodestump, der ved hjælp af klassen Queue danner en kopi r af q. Efter udførelse af kodestumpen skal indholdet af q være som før udførelsen.

Roskilde Universitetscenter side 3 af 7 sider Opgave 3: Rekursion (8%) Lader der være givet følgende metode int f(int a, int b) { return a >= b? a+b : f(f(a+2,b-1),f(a+1,b-2)); Spørgsmål 3.1: Hvad bliver værdien af f(1,7)? Begrund svaret.

Roskilde Universitetscenter side 4 af 7 sider Opgave 4: Objektorienteret programmering (37%) I Studienævnets database over studieaktiviteter registreres kurser og projekter. Et Kursus eller Projekt skal som minimum være knyttet til et modul. Vi bruger derfor følgende udgangspunkt for et klassehierarki. abstract class Studieaktivitet{ class Kursus extends Studieaktivitet{ String modul; class Projekt extends Studieaktivitet{ String modul; Spørgsmål 4.1: Skriv konstruktorer for klasserne Kursus og Projekt således at feltet "modul" initialiseres. Et objekt kan så f.eks. oprettes med linien: Studieaktivitet s = new Kursus("Modul 1"); Spørgsmål 4.2: Tilføj til klasserne Kursus og Projekt ekstra konstruktorer som kaldes med modulnummer som heltal. Et objekt kan så f.eks. oprettes med linien: Studieaktivitet s = new Kursus(1); Spørgsmål 4.3: Hvorledes kan feltet "modul" beskyttes så det ikke kan ændres uden for den klasse hvori den er erklæret? Spørgsmål 4.4: Tilføj metoder "hentmodul" til klasserne Kursus og Projekt. Metoderne skal returnere værdien af feltet "modul". Spørgsmål 4.5: Alle studieaktiviteter skal være knyttet til et modul. Gør det derfor muligt at kalde en metode "hentmodul" i vilkårlige objekter nedarvet fra den abstrakte klasse "Studieaktivitet". F.eks. med erklæringen Studieaktivitet s = new Kursus(1); skal kaldet s.hentmodul() være tilladt.

Roskilde Universitetscenter side 5 af 7 sider Spørgsmål 4.6: Projekter skal have en vejleder. Der skal derfor være et felt "vejleder" i klassen "Projekt". Skriv erklæring af feltet samt metoder der kan sætte feltet og returnere dets værdi. Spørgsmål 4.7: Studienævnet ser ikke gerne at man skifter vejleder. Forslå derfor en måde at sikre at feltet ikke kan ændres når det først er sat. Yderligere kald til metoden, der skal sætte dets værdi, skal derfor ikke have nogen effekt.

Roskilde Universitetscenter side 6 af 7 sider Opgave 5: OOA (25%) Forestil dig at du skal lave et system til et autoværksted, der reparerer personbiler, lastvogne og motorcykler. Autoværkstedet er organiseret med et kontor, hvor der arbejder tre kontormedarbejdere, og et værksted, hvor ti mekanikere arbejder. Autoværkstedet tilbyder den service, at indkalde køretøjerne til eftersyn. For hver af de tre køretøjstyper er der forskellige intervaller for indkaldelse og forskellige opgaver, der skal udføres. Hver mekaniker har som speciale at reparere en eller flere af de tre køretøjstyper. Når en kunde bestiller tid til en reparation, skal en kontormedarbejder kunne gøre følgende: Hvis det er en ny kunde, skal firmaet have kundens stamdata (navn, adresse, telefonnummer) samt vide hvilken slags køretøj der er tale om og dets registreringsnummer. Hvis det er en gammel kunde, skal det undersøges, om de oplysninger, værkstedet allerede har på kunden, stadig er gældende. Når køretøjet er afleveret, skal kunden kunne få oplysninger om, hvor langt det er i processen og om det forventede afleveringstidspunkt. Erfaringsmæssigt har det vist sig at være en god ide, at kunne spørge kunden, hvis det under reparationen viser sig, at der er tale om en større skade end først antaget, eller hvis det viser sig, at være en god ide at reparere noget, der ikke var aftalt på forhånd. Kunden har så mulighed for at sige fra eller til i forhold til de yderligere reparationer. Kunden skal desuden på et hvilket som helst tidspunkt i processen kunne forlange reparationen stoppet. Systemet skal fra starten endvidere bruges til at holde styr på hvilken mekaniker, der har repareret hvilke køretøjer. Og mekanikeren skal kunne rapportere hvilke reparationer han har foretaget. Din opgave er nu at gennemføre en analyse ved hjælp af OOA, og vi forestiller os, at du sammen med ejeren er kommet frem til følgende systemdefinition udtrykt i BATOFF: Betingelser: Edb-systemet skal benyttes både på kontoret og på værkstedet, og det skal udvikles i samarbejde med ejeren, en kontormedarbejder og en mekaniker. Skulle der opstå modstridende krav til systemet, er det ejeren der bestemmer. Anvendelsesområde: Administration af tilmelding og reparation af køretøjer. Teknologi: Det skal være tre PC'er på kontoret, en til ejeren og en på værkstedet. De skal forbindes i et lokalnetværk. Objektsystem: Kunde, køretøj, mekaniker.

Roskilde Universitetscenter side 7 af 7 sider Funktionalitet: Støtte til kontorarbejdet og til rapportering af foretagne reparationer. På sigt skal det også bruges til at fordele køretøjerne på mekanikerne, i forhold til deres speciale og i forhold til en effektiv udnyttelse af den samlede gruppe af mekanikere. Filosofi: Et værktøj til administration samt til støtte for kommunikation med kunderne. Spørgsmål 5.1: Lav og begrund et klassediagram for objektsystemet. Spørgsmål 5.2: Lav og begrund et tilstandsdiagram for køretøj. NB! Hvis du foretager afgrænsninger eller gør dig yderligere forudsætninger end de beskrevne, skal du gøre rede for disse i besvarelsen.