Kursus navn: Indledende programmering Kursus nr. 02101



Relaterede dokumenter
Fundamentale sprogbegreber

Forelæsning Uge 2 Torsdag

Forelæsning Uge 2 Torsdag

Forelæsning Uge 2 Torsdag

Forelæsning Uge 3 Mandag

Forelæsning Uge 2 Torsdag

Skriftlig eksamen i Datalogi

DM01 DM Obl. Afl. Jacob Christiansen, , D12, Elias 18/ Side 1 af 11

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

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

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

BRP Kursusintroduktion og Java-oversigt

Eksempel: Skat i år 2000

DANMARKS TEKNISKE UNIVERSITET

Tree klassen fra sidste forelæsning

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

Løsning af skyline-problemet

University of Southern Denmark Syddansk Universitet. DM503 Forelæsning 11

SWC eksamens-spørgsmål. Oversigt

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

Løsning af møntproblemet

Forelæsning Uge 6 torsdag repetition

Forelæsning Uge 6 torsdag repetition

Programmering i C. Lektion december 2008

Forelæsning Uge 3 Torsdag

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

Java Programmering. En bog for begyndere. Skrevet af Henrik Kressner

Skriftlig eksamen i Datalogi

dintprog Manual Revision: 1241 August 24, 2010 I Introduktion 3 1 Notation 3 II Begreber 4 2 Grundbegreber om programmering 4

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

Vejledende løsninger

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

PROGRAM. using System; using System.Collections.Generic; using System.Text; using System.Collections;

O l e \n I b \n. Ole Ib TT_EOF. Ole Ib Overview Tekstfiler, tegn og brikker

Videregående programmering i Java

Billedbehandling. Processering af digitale billeder

Tabelbegrebet. Klassediagrammer (III) Oversigt. Anvendelse af Tabeller. Tabeller og qualified associations

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

Forelæsning Uge 3 Torsdag

Abstrakte datatyper C#-version

DM34-1. Obligatorisk opgave Dilemma spillet. Jacob Aae Mikkelsen kok04

BOSK F2011, 1. del: Udsagnslogik

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

Videregående Programmering Obligatorisk opgave - 3. semester, efterår 2004

Skriftlig eksamen i Datalogi

Design by Contract. Design and Programming by Contract. Oversigt. Prædikater

Forelæsning Uge 3 Torsdag

Undtagelseshåndtering i C#

9.8 Kildekode. side 88. Pakke Klasse Sidenummer. fortsætter..

Hashing og hashtabeller

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

Forelæsning 17, tirsdag 2. november 1999 Søgning efter en given værdi i en tabel. Programmering 1999

Tilfældige tal. Denne artikel introducerer generering af tilfældige tal og viser lidt om hvad man kan og ikke mindst hvad man ikke bør bruge.

Java Klasse nedarvninger

Forelæsning Uge 3 Mandag

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.

Forelæsning Uge 3 Mandag

Singleton pattern i Java

Eksempel på en database: studenter, kurser, eksamener

Forelæsning Uge 3 Torsdag

Bilag 1 Rige billeder Ordremodtagelse

public Set(int size) { this.listelement = new LinkedList<Integer>(); }

Tabeller (I) Tabeller

Rekursion og dynamisk programmering

Klienten. import java.util.*;

A Profile for Safety Critical Java

Offset til terminalskærm i Java

Videregående Programmering for Diplom-E Noter

Mircobit Kursus Lektion 2

Opgaven fortsat. Opfølgning på Opgave 2 og Use Cases. Opgaven. Trin 1: Væsentlige begreber. Resultatliste: 100 bryst, herrer

Studiepraktik. Thomas Bøgholm Mikkel Hansen Jacob Elefsen

Forelæsning Uge 3 Torsdag

Databaseadgang fra Java

Virkefeltsregler i Java

Hvad er Objekter - Programmering

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

Skriftlig eksamen i Datalogi

Test af It-komponent

Jacob Christiansen, Institut for MAtematik og DAtalogi, Syddansk Universitet, Odense

Hvordan vælger jeg dokumentprofilen?

Designmønstre. Grundbegreber fra objektorienteret design

Kursusarbejde 2 Grundlæggende Programmering

Forelæsning Uge 4 Torsdag

Webserverprogrammering

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

Ugeseddel 4 1. marts - 8. marts

SWC Elementer i klassedefinition

Forelæsning Uge 4 Torsdag

Adgangsgivende eksamen (udeladt kategori: Matematisk student med matematik på niveau A)

Forelæsning Uge 2 Mandag

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

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

Der er fejl i programmer. Ikke-trivielle programmer er næsten altid fejlbehæftede.

DM01 DM Obl. Afl. Jacob Christiansen, , D12, Elias 13/ Side 1 af 7

Sekvenser af længde mellem 1 og 4 ord repræsenteres ved en klasse Segment, som uden grundlæggende ser således ud:

Noter og opgaver. Programmering A IMADA. Niels Kjeldsen & Jacob Aae Mikkelsen. Med grundig korrektur og rettelser af Edmund Christiansen

Anvendelse af metoder - Programmering

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

Integrationsmanual. Anvendelse af webservice til kursusoversigt i Campus. Brugervejledning til udviklere

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

Transkript:

Danmarks Tekniske Universitet Side 1 af 8 sider Skriftlig prøve, den 15. december 2007 Kursus navn: Indledende programmering Kursus nr. 02101 Tilladte hjælpemidler: Alle skriftlige hjælpemidler Vægtning Opgave 1: 15% Opgave 3: 10% Opgave 5: 35% Opgave 2: 10% Opgave 4: 10% Opgave 6: 20% Opgave 1 For en række DTU-kurser der afholdes over flere semestre ønskes foretaget et kursusudtræk. Oplysningerne om kurserne stammer fra en fil med én linie pr. kursus. Her er vist fire linier fra filen: 01005 E F 02121 E Januar 02122 F Juni 41205 F E Der er givet følgende erklæringer: HashSet<String> kurser = new HashSet<String>(); HashSet<String> semestre; Iterator<String> it; String nr; boolean tagmed; Nedenfor er vist en stump Java-kode svarende til behandlingen af en linie. Det kan antages, at iteratoren it er blevet initialiseret svarende til samlingen af ord (String) i den aktuelle linie: it =... ; nr = it.next(); semestre = new HashSet<String>(); while (it.hasnext()) semestre.add(it.next()); tagmed =!semestre.contains("januar") &&!semestre.contains("juni"); if (tagmed) kurser.add(nr); Kodestumpen tænkes udført fire gange svarende til at de fire linier i filen behandles én ad gangen i den rækkefølge hvori de står.

Angiv efter hver udførelse værdierne for de variable på tabelform (se nedenfor). Side 2 af 8 sider Elementerne i et HashSet<String> skrives i tabellen som en mængde. Fx skrives et HashSet<String> med elementerne "A" og "B" som mængden {A, B nr semestre tagmed kurser 01005 Opgave 2 Der er givet følgende to klasser: public class Biler { ArrayList<Bil> samling; public Biler() { samling = new ArrayList<Bil>(); samling.add(new Bil(Color.blue, "XL 53 418")); samling.add(new Bil(Color.red, "TA 45 917")); public class Bil { Color farve; String nummer; public Bil(Color farve, String nummer) { this.farve = farve; this.nummer = nummer; Beskriv hvad begrebet en tilstand - state - er og angiv så tilstanden for minebiler, idet Biler minebiler = new Biler();

Side 3 af 8 sider Opgave 3 Der er givet klassen CalcTest, her vist med konstruktoren udeladt: public class CalcTest { private int s = 20; private double[] a; public double average(int number) { double d = 0; for(int i=0; i < number; i++) d+= a[i]; return d/number; For hver af størrelserne s, a, number, d og i ønskes angivet om de er lokale størrelser, felter eller parametre. Angiv signaturen for metoden average() Opgave 4 Forklar og ret fejlene i nedenstående tostring()-metode: public class ClockDisplay { private NumberDisplay hours; private NumberDisplay minutes; public ClockDisplay(NumberDisplay h, NumberDisplay m) { hours = h; minutes = m; public String tostring() { return h + "." + m; hvor klassen NumberDisplay i uddrag ser sådan ud: public class NumberDisplay { private int value;... public String tostring() {...

Side 4 af 8 sider Opgave 5 Denne opgave drejer sig om ur-eksemplet fra lærebogens kapitel 3. På denne og den næste side er vist klasserne fra lærebogens Code 3.4 og Code 3.3 i forkortet form og uden kommentarer: public class ClockDisplay { private NumberDisplay hours; private NumberDisplay minutes; private String displaystring; public ClockDisplay(int hour, int minute) { hours = new NumberDisplay(24); minutes = new NumberDisplay(60); settime(hour, minute); public void timetick() { minutes.increment(); if(minutes.getvalue() == 0) hours.increment(); updatedisplay(); public void settime(int hour, int minute) { hours.setvalue(hour); minutes.setvalue(minute); updatedisplay(); public String gettime() { return displaystring; private void updatedisplay() { displaystring = hours.getdisplayvalue() + ":" + minutes.getdisplayvalue();

Side 5 af 8 sider public class NumberDisplay { private int limit; private int value; public NumberDisplay(int rolloverlimit) { limit = rolloverlimit; value = 0; public int getvalue() { return value; public String getdisplayvalue() { if(value < 10) return "0" + value; else return "" + value; public void setvalue(int replacementvalue) { if((replacementvalue >= 0) && (replacementvalue < limit)) value = replacementvalue; public void increment() { value = (value + 1) % limit; Til klassen ClockDisplay vil vi nu tilføje metoden: /** * Advance the clock by m minutes */ public void advance(int m) { for(int i=0; i<m; i++) timetick();

Side 6 af 8 sider Besvar følgende spørgsmål: 5.A: Hvilken værdi udskrives efter udførelsen af følgende tre sætninger: ClockDisplay clock = new ClockDisplay(15,59); clock.advance(3); System.out.println(clock.getTime()); 5.B: Erklær til brug i klassen NumberDisplay en public-metode med følgende signatur: public void increment(int i) sådan at value tælles frem med i modulo limit Hvad kalder man en metode der som increment findes i to (eller flere) forskellige udgaver? 5.C: Hvad kalder man størrelsen limit, hvis erklæringen i klassen NumberDisplay ændres til public final int limit; 5.D: Begrund om det med erklæringen fra spørgsmål 5.C er tilladt eller ej i klassen NumberDisplay at erklære følgende metode: public void setlimit(int rollover) { limit = rollover; 5.E: Hvordan ville det påvirke koblingen mellem klasserne NumberDisplay og ClockDisplay hvis der som i spørgsmål 5.C benyttes et public felt i stedet for at indføre en metode public int getlimit() { return limit; Altså argumentér for om koblingen herved bliver looser, the same, eller stronger sammenlignet med brug af en get-metode.

Side 7 af 8 sider Klassen ClockDisplay skal nu have to nye metoder til at stille uret frem. Disse metoder må ikke benytte timetick(), men gerne løsningerne fra spørgsmålene ovenfor. 5.F: Skriv de to metoder: /** * Advance the clock by m minutes */ public void myadvance(int m) {... /** * Advance the clock by h hours and m minutes */ public void myadvance(int h, int m) {... Opgave 6 I denne opgave ønskes foretaget en exception håndtering (exception handling). Den exception der ønskes fanget (catched) er RunTimeException en ArithmeticException. Udførelse af en division som fx 17/0 giver fejlmeldingen: Arithmetic Exception: / by zero fordi der divideres med nul.

Side 8 af 8 sider Der er givet følgende to klasser: public class Aritmetik { public Aritmetik() { public double kvotient(int t, int n) { return t/n; public class BrugAritmetik { public static void main(string[] args) { int t=17, n=0; Aritmetik a = new Aritmetik(); System.out.println(a.kvotient(t, n)); Besvar følgende spørgsmål: 6.A: Er en ArithmeticException en checked eller unchecked exception? 6.B: En repræsentation af indenfor klassen Double er værdien Double.MAX_VALUE (af størrelsesordenen 2 1023 ). I klassen Double er ovennævnte værdi erklæret som public static final double MAX_VALUE Hvad betegnes en størrelse der er specificeret som static final? 6.C: Exceptionen ArithmeticException ønskes fanget på to måder. Den første måde er at fange den i klassen Aritmetik ved udførelse af sætningen return t/n; Hvis divisionen t/n kaster en exception ønskes givet en fejlmelding og returneret værdien eller afhængigt af om t er positiv eller negativ, jfr. spørgsmål 6.B Indfør denne fejlhåndtering. 6.D: Samme spørgsmål som i 6.C men exceptionen ønskes i stedet fanget i klassen BrugAritmetik dér hvor metoden kvotient() bliver kaldt. Men til forskel for spørgsmål 6.C skal der her kun gives en passende fejlmelding.