Lösningsförslag till tentamen i EDA011/EDA017 Programmeringsteknik för F, E, I, π och N 27 maj 2008

Save this PDF as:
 WORD  PNG  TXT  JPG

Storlek: px
Starta visningen från sidan:

Download "Lösningsförslag till tentamen i EDA011/EDA017 Programmeringsteknik för F, E, I, π och N 27 maj 2008"

Transkript

1 Lösningsförslag till tentamen i EDA011/EDA017 Programmeringsteknik för F, E, I, π och N 27 maj 2008 Christian 27 maj 2008 Uppgift 1 Flera av dem jag talade med efter tentan hade blivit förskräckta när de såg att man kunde få 64 poäng på uppgift 1 anledningen till det höga poängantalet är att det blir enklare att vara rättvis med en fingranulär skala. Vi sätter alltså poäng på nästan allt man kan göra (som framgår av poängsättningarna nedan). Klassen Room Vi börjar med klassen Room. Enligt uppgiftsformuleringen skulle vi använda minst två attribut: usedcomputers och requests. I båda fallen kunde vi välja mellan listor eller vektorer, det blir som vanligt enklare om vi använder listor. I denna uppgift blir det faktiskt betydligt enkare klasserna Computer och HelpRequest överskuggade båda equals(object)- operationen, och vi kan därför använda Collection-klassernas contains(object)- och remove(object)-operationer. Utöver dessa attribut behöver vi hålla reda på rummets namn, dess kapacitet, och dessutom namnet på den övningsledare som kan vara i rummet. Det var ganska många som frågade varför det inte fanns någon close-operation i klassen Room, och förklaringen är att det från början fanns en, men att jag tog bort den för att ni skulle få lite mindre att skriva på tentan. Ytterligare ett attribut kan kännas naturligt, och det är ett boolean-värde som håller reda på om rummet är öppet för övning eller inte. Om vi använder Session-klassen som det är tänkt kommer vi aldrig att anropa någon Room-operation annat än open på ett rum som inte är öppet, men det var naturligtvis långt ifrån självklart när ni skrev klassen Room. class Room { private String roomid; private int capacity; private List<HelpRequest> requests; private List<Computer> usedcomputers; private String assistant; private boolean isopen; // om man v i l l public Room (String roomid, int capacity) { this.roomid = roomid; this.capacity = capacity; requests = new LinkedList<HelpRequest>(); usedcomputers = new LinkedList<Computer>(); public String getid() { return roomid; public int getcapacity() { return capacity; Faktum är att det hade gått ändå, eftersom vi aldrig har några kopior av våra datorer eller förfrågningar, så == fungerar utmärkt (den equals som vi ärver från Object testar med ==). I efterhand är jag inte säker på att det var så smart av mig att plocka bort denna operation, kanske hade det varit lite enklare att förstå klassen Room om man även hade skrivit en close-operation. 1

2 ... Den som använder vektorer behöver som vanligt även heltalsräknare som håller reda på antalet element som verkligen används i de båda vektorerna. Vi skulle ha kunnat deklarera requests som en Queue, men förfrågningarna tas inte nödvändigtvis ut ur denna kö i turordning, eftersom en student kan ta bort sig själv ur kön om hon lyckas lösa sitt problem innan övningsledaren hinner komma dit så en vanlig lista känns naturligare (även om vi faktiskt kan anropa remove(object)- operationen även på en kö). open I operationen open kan vi antingen tömma redan befintliga listor (som kan skapas i konstruktorn), eller skapa nya dessutom är det rätt plats att sätta isopen till true (om vi nu använder isopen man får inget poängavdrag om man inte gör det): public void open(string assistant) { this.assistant = assistant; requests.clear(); usedcomputers.clear(); isopen = true; // om man v i l l... Poäng (max 3 p): 1 p Sparar assistentens namn. 1 p Skapar eller tömmer kö med frågor. 1 p Skapar eller tömmer lista med datorer. participate Att testa om datorn står i rätt rum ger en bonuspoäng (även om det faktiskt är lite onödigt i vårt program om vi skriver operationen login i klassen Session på rätt sätt): public boolean participate(computer computer) { if (computer.getroom() == this // bonus &&!usedcomputers.contains(computer)) { usedcomputers.add(computer); Här skulle vi även kunna testa om isopen är true innan vi lät någon delta i övningen. Om vi inte använder list-paketets contains-operation (som vi alltså kan anropa, eftersom klassen Computer överskuggade equals(object)), så kan vi istället själva skriva en hjälpoperation isused(computer): private boolean isused(computer computer) { for (Computer c : usedcomputers) { if (c.equals(computer)) { Poäng (max 6 p): 2 p Testar att vi är i rätt rum (bonus). 2 p Testar att datorn inte redan används. 1 p Lägger in datorn bland använda datorer. 1 p Rätt returvärde. leave Operationen leave skall plocka bort datorn ur både hjälp-kö och listan med använda datorer. Om vi använder listpaketet blir det väldigt enkelt: public void leave(computer computer) { hasbeenhelped(computer); usedcomputers.remove(computer); Det går alldeles utmärkt att skriva en egen hjälpoperation remove som tar bort datorn ur listan med använda datorer, eller att göra en sökning och borttagning inuti leave. Poäng (max 4): 2 p Tar bort student ur kö. 2 p Tar bort dator ur lista. Bonuspoäng innebär att vi sänker gränsen för godkänt med motsvarande antal poäng. 2

3 askforhelp Operationen askforhelp skulle kontrollera att datorn verkligen deltog i övningen, och att datorn inte redan stod i kö. Det enklaste sättet att testa om datorn redan står i kö är att anropa en hjälpoperation: public boolean askforhelp(computer computer) { if (!usedcomputers.contains(computer) isaskingforhelp(computer)) { requests.add(new HelpRequest(computer, Time.now())); Här kan vi skriva isaskingforhelp så här: private boolean isaskingforhelp(computer computer) { return findrequest(computer)!= null; och denna behöver i sin tur hjälpoperationen findrequest: private HelpRequest findrequest(computer computer) { for (HelpRequest request : requests) { if (request.getcomputer().equals(computer)) { return request; return null; Den som gör sökningen efter förfrågningen direkt i asforhelp får inget poängavdrag (men måste skriva lite mer programkod strax...). Poäng (max 8): 1 p Testar att datorn används. 3 p Testar att datorn inte redan i kö. 2 p Skapar ny förfrågan. 1 p Lägger frågan i kö. 1 p Rätt returvärde. hasbeenhelped När vi skriver hasbeenhelped kan vi återanvända den findrequest som vi skrev nyss: public boolean hasbeenhelped(computer computer) { return requests.remove(findrequest(computer)); Det går naturligtvis utmärkt även att göra en sökning inuti hasbeenhelped. Vi kan även ta bort en HelpRequest ur en vektor, men måste vara lite försiktiga när vi gör det. För att frågekön inte skall komma i oordning måste vi flytta elementen i vektorn så att deras inbördes ordning inte kastas om. Om vi har en vektor för att lagra fråge-kön kan vi skriva hasbeenhelped-operationen ungefär så här: public boolean hasbeenhelped(computer computer) { int index = findrequestindex(requests, computer); if (index < 0) { for (int i = index; i < nbrofrequests-1; i++) { requests[i] = requests[i+1]; nbrofrequests--; requests[nbrofrequests] = null; // inte nödvändigt där vi återigen har använt en hjälpoperation: Poäng (max 6): private int findrequestindex(helprequest[] requests, Computer computer) { for (int i = 0; i < nbrofrequests; i++) { if (requests[i].getcomputer().equals(computer)) { return i; return -1; 3 p Letar upp förfrågan. 2 p Tar bort förfrågan så att de fortfarande ligger i rätt ordning. 1 p Rätt returvärde. 3

4 showstatus Operationen showstatus kräver två loopar, i den första loopen går vi igenom usedcomputers, och skriver ut namnen på de användare som är inloggade i den andra skriver vi ut de datorer som står i kö för hjälp: public void showstatus() { System.out.printf("Övningssal %s\n", roomid); System.out.printf("Övningsledare: %s\n", assistant); System.out.printf("%d inloggade (%d lediga platser)\n", usedcomputers.size(), capacity-usedcomputers.size()); for (Computer computer : usedcomputers) { System.out.println(" " + computer.getuser().getname()); if (requests.size() == 0) { System.out.println("Ingen kö"); else { System.out.println("Kö:"); for (HelpRequest request : requests) { System.out.printf(" %s (%s)\n", request.getcomputer().getname(), request.gettime().tostring()); Poäng (max 11): 1 p Skriver ut rums-id/namn. 1 p Skriver ut övningsledare. 2 p Skriver ut antal inloggade/lediga platser. 3 p Skriver ut namn på samtliga inloggade (1 + 2 för loop/namn). 1 p Kollar om det finns någon kö. 3 p Skriver ut alla köande ( för loop, id och tid). Klassen Session I klassen Session behöver vi en referens till aktuell byggnad och grupp, och dessutom en lista eller vektor med öppnade rum enklast är att använda en lista, men ni får lika många poäng om ni istället har valt en vektor och ett heltal som håller räkning på antalet rum. Attribut och konstruktor kan skrivas som: class Session { private Campus campus; private Group group; private List<Room> openedrooms; public Session (Campus campus, Group group) { this.campus = campus; this.group = group; openedrooms = new LinkedList<Room>();... Vi behöver inte någon lista eller vektor med samtliga rum eller datorer, eftersom campus-objektet håller reda på dem. Eftersom attributen var givna delas inga poäng ut här. openroom I operationen openroom måste vi leta upp det aktuella rummet (med hjälp av dess namn/identitet), och därefter uppdatera både rum och openedrooms: Poäng (max 6): public boolean openroom(string roomid, String assistant) { Room room = campus.findroom(roomid); if (room == null) { System.out.println("Det finns inget sådant rum"); if (openedrooms.contains(room)) { System.out.println("Rummet är redan öppet"); room.open(assistant); openedrooms.add(room); 1 p Letar upp rum på rätt sätt. 1 p Testar om rummet finns. 1 p Ser om rummet redan öppet. 1 p Öppnar rummet. 4

5 1 p Lägger in rummet bland öppna rum 1 p Rätt returvärden. login Operationen login skall göra flera saker och ger därför lite fler poäng. Det var inte alldeles självklart i vilka fall operationen showstatus skulle anropas, så vi kommer att vara snälla vid bedömningen. public boolean login(string studentid, String computername) { Computer computer = campus.findcomputer(computername); if (computer == null) { System.out.println("Det finns ingen sådan dator!"); Student student = group.findstudent(studentid); if (student == null) { System.out.println("Du tillhör inte denna kursomgång."); if (!computer.login(student)) { System.out.println("Datorn är redan upptagen"); Room room = computer.getroom(); if (openedrooms.contains(room)) { room.participate(computer); showstatus(); else { System.out.println("Vi har inte övning i din sal nu."); showstatus(); Den som inte vill testa returvärdet på login-operationen i klassen Computer får gärna istället skriva något i stil med: if (!computer.getuser()!= null) { System.out.println("Datorn är redan upptagen"); computer.login(student); Flera av er ville lägga till en operation isopen() i klassen Room, och det är naturligtvis en god idé vi skulle i så fall kunna kontrollera om rummet var öppet utan att göra en sökning i openedrooms. Ni får full poäng oavsett om ni söker i openedrooms, eller om ni anropar en isopen()-operation. Poäng (max 10): 1 p Letar upp rätt dator. 1 p Testar om datorn finns. 1 p Testar om datorn är upptagen. 1 p Letar upp rätt student. 1 p Testar att studenten finns. 1 p Plockar fram rätt rum. 1 p Testar att rummet är öppet. 1 p Loggar in i rummet. 1 p Skriver ut status om ingen övning i rummet. 1 p Rätt returvärden. logout I logout kan man testa om datorn finns, och om någon är inloggad på datorn. Poäng (max 5): public void logout(string computername) { Computer computer = campus.findcomputer(computername); if (computer == null) { System.out.println("Felaktigt rumsnamn!"); return; if (computer.getuser() == null) { System.out.println("Ingen är inloggad på denna dator"); return; computer.getroom().leave(computer); computer.logout(); 1 p Letar upp rätt dator. Som jag egentligen hade tänkt att ni skulle göra inte för att det är smart, utan för att det kräver att ni implementerar en sökning. 5

6 1 p Testar om datorn finns. 1 p Plockar fram rätt rum. 1 p Gör logout i rum. 1 p Gör logout på dator. showstatus Operationen showstatus kan delegera det mesta av sitt arbete till showstatusoperationen i klassen Room: public void showstatus() { System.out.printf("Klockan är %s\n", Time.now()); if (openedrooms.size() == 0) { System.out.println("Just nu har vi ingen öppen sal"); Poäng (max 5): else { System.out.println("Vi har övning i följande salar:"); for (Room room : openedrooms) { room.showstatus(); 1 p Skriver ut rätt tid. 1 p Testar om det finns någon öppen sal. 3 p Skriver ut status för samtliga öppna salar Uppgift 2 Man kan lösa denna uppgift på otroligt många sätt (vilket gör att den antagligen blir rätt jobbig att rätta...). Det kanske mest grundläggande problemet är att plocka ut enstaka siffror ur ett tal, och man kan tänka sig många olika lösningar enklast är heltalsdivision och %- operatorn, men man kan exempelvis omvandla till en sträng och plocka ut enstaka tecken, som i sin tur kan omvandlas till ett ensiffrigt tal. Som ofta är det en god idé att skriva en funktion som löser problemet åt oss: int digit(int value, int digitnbr) { // plocka ut s i f f r a digitnbr (från höger) ur t a let value En lösning som baseras på heltalsdivision kan utnyttja att vi får den n:te siffran bakifrån i talet v om vi dividerar v med 10 n 1, och därefter tar resten vid division med 10: int digit(int value, int digitnbr) { return (value/tenraisedto(digitnbr-1)) % 10; där vi behöver ytterligare en hjälpoperation: int tenraisedto(int n) { return (int) Math.round(Math.exp(n*Math.log(10))); Vi kan för övrigt inte skriva 10^n för att få 10 n det går visserligen att kompilera, men ^ betyder inte upphöjt i i Java (detta ger dock inga avdrag). Om vi istället vill gå omvägen via strängar när vi skall plocka ut en siffra i vårt tal kan vi skriva: int digit(integer value, int digitnbr) { String str = value.tostring(); int pos = str.length() - digitnbr; if (pos < 0) { return 0; return str.charat(pos) - 0 ; Här måste vi deklarera parametern som ett Integer-objekt om vi vill kunna anropa tostring-operationen (dock inga poängavdrag för den som gör tostring på ett int-värde, eftersom man faktiskt får göra det i exempelvis Ruby, och det inte ingår i kursen att veta precis när autoboxingen gör att man slipper typa om sina värden). Ett alternativ är att låta value vara deklarerad som ett int, och sätta: String str = "" + value; I lösningsförslaget nedan använder jag inte någon funktion som plockar ut en enstaka siffra, istället bygger jag upp en faktor som växer med en faktor 10 för varje ny omgång vi kör, och dividerar ner talen direkt med detta värde. Detta är lite mer effektivt, men spelar ingen roll för poängsättningen på uppgiften. Ett annat problem är att välja datastruktur för att hålla reda på det som jag i upp- 6

7 giften kallar l-listorna. I problemtexten visar jag hur man kan skapa en vektor med köer (det är tyvärr ganska knepigt, eftersom vektorer med generiska typer är något av ett hack i Java) man kan även använda en lista av köer. Deklarationen av en vektor med köer fanns i texten, om vi vill ha en lista med köer istället kan vi skriva: List<Queue<Integer>> queues = new ArrayList<Queue<Integer>>(); Egentligen är det rent numeriskt inte särskilt smart att använda basen 10 när vi implementerar RADIX-SORT men det gör det mycket enklare att illustrera algoritmen. En bättre bas är 16, eller kanske 256 (vi får göra en avvägning mellan antalet iterationer och antalet listor som krävs). class RadixSorter { private final int base = 10; private Queue<Integer>[] queues = (LinkedList<Integer>[]) new LinkedList[base]; public RadixSorter () { for (int i = 0; i < base; i++) { queues[i] = new LinkedList<Integer>(); public void sort(list<integer> values) { int biggest = findbiggest(values); int factor = 1; while (biggest > 0) { orderbydigit(values, factor); factor *= base; biggest /= base; private int findbiggest(list<integer> values) { int biggest = Integer.MIN_VALUE; for (int value : values) { biggest = Math.max(value, biggest); return biggest; Jag trodde att det kanske skulle vara enklare för er att förstå idén med en vektor med köer. Om vi inte möjligen får tal med fler siffror att sortera. Som våra Comparator-objekt gör. private void orderbydigit(list<integer> values, int factor) { while (!values.isempty()) { int value = values.remove(0); // se kommentar nedan queues[(value/factor) % base].add(value); for (int i = 0; i < base; i++) { while (!queues[i].isempty()) { values.add(queues[i].remove()); En sak som är lurig är att vi här använder remove(int)-operationen på en List<Integer> det finns ibland risk att autoboxingen gör att vi tar bort fel värden av misstag (den skulle här ha kunnat få för sig att plocka bort värdet 0 istället för värdet på plats 0). I detta fall fungerar det precis som vi vill (det är värdet på plats 0 som tas bort). Man får poäng för följande (max 30): 2 p Korrekt yttre loop. 3 p Går inte fler varv än nödvändigt. 6 p Bestämmer index för rätt l-lista i varje varv. 4 p Flyttar värden till rätt l-lista i varje varv. 7 p Slår samman l-listorna till en ny lista på rätt sätt. 8 p Har förstått algoritmen/lämplig nedbrytning i underprogram/ snygg kod. Det är intressant att räkna på tidsåtgången för RADIX-SORT, om vi ökar antalet värden som vi skall sortera så ökar tidsåtgången linjärt (tiden att ta ut ur och sätta in i våra listor är direkt proportionellt mot antalet element i listorna, men vi behöver inte köra fler varv i den yttre loopen ) den är alltså en O(n)-operation. Detta kan jämföras med insättningssortering och urvalssortering, som båda är O(n 2 ). I själva verket finns det en teoretisk undre gräns för hur snabb en vanlig sorteringsalgoritm kan bli, och man kan intuitivt få en känsla för denna gräns genom följande resonemang. Vanliga sorteringsalgoritmer bygger på att vi jämför värden med varandra. Om vi har en samling med n värden a 1, a 2,..., a n, så kan de ordnas på n! olika sätt i 7

8 hälften av dessa permutationer kommer värdet a 1 att hamna före a 2. Om vi testar om a 1 > a 2 och upptäcker att det är sant så kan vi i princip utesluta alla de permutationer i vilka a 1 ligger före a 2 om vi vill sortera talen i växande ordning. På samma sätt kan vi efter varje ny test mellan två värden utesluta ungefär hälften av återstående permutationer. Detta är ingen praktiskt genomförbar sorteringsalgoritm, men den antyder att en jämförelse mellan två värden inte kan elminiera mer än ungefär hälften av de möjliga permutationer som finns. Det minsta antalet jämförelser vi måste göra innan vi har den permutation som innehåller våra värden i rätt ordning blir log 2 n! (detta motsvarar antalet jämförelser vi måste göra vid binärsökning, med skillnaden att vi nu har n! olika permutationer att söka bland). Stirlings formel säger att n! n n 2πn, e och om vi logaritmerar detta uttryck ser vi att det minsta antalet jämförelser vi måste göra är ungefär log( 2πn n n e n ). Den dominerande faktorn inuti logaritm-uttrycket är n n, och antalet jämförelser blir därför O(n log n). Detta är en teoretisk undre gräns för sorteringsalgorimer som baseras på jämförelse, och det finns flera algoritmer som faktiskt når ner till denna gräns (bland andra HEAP-SORT som vi hade på föregående tenta, och QUICK-SORT, som beskrivs i kompendiet). Det kan därför verka egendomligt att RADIX-SORT är O(n), vilket är bättre än den teoretiska undre gränsen för sorteringsalgoritmer men det beror på att den faktiskt inte gör några jämförelser alls! Istället utnyttjar den annan information om de värden som skall sorteras, vilket gör att den inte är lika generell som exempelvis HEAP-SORT och QUICK-SORT (vi kan dock använda den till att sortera exempelvis strängar, vilket flera av er som skrev tentan insåg). Det visar sig dessutom att konstanterna framför n log n-uttrycken i både HEAP-SORT och QUICK-SORT är så små att de i praktiken är snabbare än RADIX-SORT i de flesta fall. 8

Objektorienterad programmering D2

Objektorienterad programmering D2 Objektorienterad programmering D2 Laboration nr 2. Syfte Att få förståelse för de grundläggande objektorienterade begreppen. Redovisning Källkoden för uppgifterna skall skickas in via Fire. För senaste

Läs mer

Programmering för språkteknologer II, HT2014. evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.ling.uu.se/~evelina/uv/uv14/pst2/

Programmering för språkteknologer II, HT2014. evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.ling.uu.se/~evelina/uv/uv14/pst2/ Programmering för språkteknologer II, HT2014 Avancerad programmering för språkteknologer, HT2014 evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.ling.uu.se/~evelina/uv/uv14/pst2/ Idag - Hashtabeller

Läs mer

Tentamen OOP 2015-03-14

Tentamen OOP 2015-03-14 Tentamen OOP 2015-03-14 Anvisningar Fråga 1 och 2 besvaras på det särskilt utdelade formuläret. Du får gärna skriva på bägge sidorna av svarsbladen, men påbörja varje uppgift på ett nytt blad. Vid inlämning

Läs mer

Tentamen Programmeringsteknik II och NV2 (alla varianter) 2008-12-10. Skriv bara på framsidan av varje papper.

Tentamen Programmeringsteknik II och NV2 (alla varianter) 2008-12-10. Skriv bara på framsidan av varje papper. Tentamen Programmeringsteknik II och NV2 (alla varianter) 2008-12-10 Skrivtid: 0800-1300 Inga hjälpmedel. Tänk på följande Maximal poäng är 40. För betygen 3 krävs 18 poäng. För betygen 4, 5 kommer något

Läs mer

Föreläsning 1 & 2 INTRODUKTION

Föreläsning 1 & 2 INTRODUKTION Föreläsning 1 & 2 INTRODUKTION Denna föreläsning Vad händer under kursen? praktisk information Kursens mål vad är programmering? Skriva små program i programspråket Java Skriva program som använder färdiga

Läs mer

Tentamen DE12, IMIT12, SYST12, ITEK11 (även öppen för övriga)

Tentamen DE12, IMIT12, SYST12, ITEK11 (även öppen för övriga) Grundläggande programmering med C# Provmoment: Ladokkod: Tentamen ges för: 7,5 högskolepoäng TEN1 NGC011 Tentamen DE12, IMIT12, SYST12, ITEK11 (även öppen för övriga) (Ifylles av student) (Ifylles av student)

Läs mer

Examination i. PROGRAMMERINGSTEKNIK F1/TM1 TIN212 (Dugga) Dag: Onsdag Datum: 2014-12-17 Tid: 9.00-12.00 (OBS 3 tim) Rum: V

Examination i. PROGRAMMERINGSTEKNIK F1/TM1 TIN212 (Dugga) Dag: Onsdag Datum: 2014-12-17 Tid: 9.00-12.00 (OBS 3 tim) Rum: V Data och Informationsteknik / Computer Science and Engineering Chalmers University of Technology and University of Gothenburg Erland Holmström Göteborg 16 dec 2014 Examination i PROGRAMMERINGSTEKNIK F1/TM1

Läs mer

Objektorienterad programmering i Java

Objektorienterad programmering i Java Objektorienterad programmering i Java Föreläsning 4 Täcker i stort sett kapitel 6 i kursboken Java Software Solutions 1 Läsanvisningar Den här föreläsningen är uppbyggd som en fortsättning av exemplet

Läs mer

Grundläggande programmering med C# 7,5 högskolepoäng

Grundläggande programmering med C# 7,5 högskolepoäng Grundläggande programmering med C# 7,5 högskolepoäng Provmoment: TEN1 Ladokkod: NGC011 Tentamen ges för: Omtentamen DE13, IMIT13 och SYST13 samt öppen för alla (Ifylles av student) (Ifylles av student)

Läs mer

Dugga Datastrukturer (DAT036)

Dugga Datastrukturer (DAT036) Dugga Datastrukturer (DAT036) Duggans datum: 2012-11-21. Författare: Nils Anders Danielsson. För att en uppgift ska räknas som löst så måste en i princip helt korrekt lösning lämnas in. Enstaka mindre

Läs mer

Programmering för Språkteknologer II. Innehåll. Associativa datastrukturer. Associativa datastrukturer. Binär sökning.

Programmering för Språkteknologer II. Innehåll. Associativa datastrukturer. Associativa datastrukturer. Binär sökning. Programmering för Språkteknologer II Markus Saers markus.saers@lingfil.uu.se Rum -040 stp.lingfil.uu.se/~markuss/ht0/pst Innehåll Associativa datastrukturer Hashtabeller Sökträd Implementationsdetaljer

Läs mer

Sätt att skriva ut binärträd

Sätt att skriva ut binärträd Tilpro Övning 3 På programmet idag: Genomgång av Hemtalet samt rättning Begreppet Stabil sortering Hur man kodar olika sorteringsvilkor Inkapsling av data Länkade listor Användning av stackar och köer

Läs mer

Lösningsförslag till tentamen i EDA011, lördagen den 16 december 2006

Lösningsförslag till tentamen i EDA011, lördagen den 16 december 2006 Lösningsförslag till tentamen i EDA011, lördagen den 16 december 2006 Detta lösningsförslag är skrivet i stor hast, så det är möjligt att det innehåller en del slarvfel jag ber i så fall om ursäkt för

Läs mer

Föreläsning 6: Introduktion av listor

Föreläsning 6: Introduktion av listor Föreläsning 6: Introduktion av listor Med hjälp av pekare kan man bygga upp datastrukturer på olika sätt. Bland annat kan man bygga upp listor bestående av någon typ av data. Begreppet lista bör förklaras.

Läs mer

Tentamen TEN1 HI1029 2014-05-22

Tentamen TEN1 HI1029 2014-05-22 Tentamen TEN1 HI1029 2014-05-22 Skrivtid: 8.15-13.00 Hjälpmedel: Referensblad (utdelas), papper (tomma), penna Logga in med tentamenskontot ni får av skrivvakten. Det kommer att ta tid att logga in ha

Läs mer

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken. Tentamen Programmeringsteknik I 2014-10-17 Skrivtid: 0800-1300 Hjälpmedel: Java-bok Tänk på följande Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till

Läs mer

Tentamen, EDAA20/EDA501 Programmering

Tentamen, EDAA20/EDA501 Programmering LUNDS TEKNISKA HÖGSKOLA 1(4) Institutionen för datavetenskap Tentamen, EDAA20/EDA501 Programmering 2011 10 19, 8.00 13.00 Anvisningar: Denna tentamen består av fem uppgifter. Preliminärt ger uppgifterna

Läs mer

Föreläsning 7. Träd och binära sökträd

Föreläsning 7. Träd och binära sökträd Föreläsning 7 Träd och binära sökträd Föreläsning 7 Träd Binära träd Binärt sökträd som ADT Implementering av binärt sökträd Travestera binärt sökträd Sökning Insättning/borttagning Läsanvisningar och

Läs mer

Algoritmanalys. Genomsnittligen behövs n/2 jämförelser vilket är proportionellt mot n, vi säger att vi har en O(n) algoritm.

Algoritmanalys. Genomsnittligen behövs n/2 jämförelser vilket är proportionellt mot n, vi säger att vi har en O(n) algoritm. Algoritmanalys Analys av algoritmer används för att uppskatta effektivitet. Om vi t. ex. har n stycken tal lagrat i en array och vi vill linjärsöka i denna. Det betyder att vi måste leta i arrayen tills

Läs mer

Lösningsförslag till tentamen i EDA011/EDA017 Programmeringsteknik för F, E, I, π och N 25 maj 2009

Lösningsförslag till tentamen i EDA011/EDA017 Programmeringsteknik för F, E, I, π och N 25 maj 2009 Lösningsförslag till tentamen i EDA011/EDA017 Programmeringsteknik för F, E, I, π och N 25 maj 2009 Christian 5 mars 2010 Observera att poängen nedan är preliminära det är möjligt att vi korrigerar något

Läs mer

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Försättsblad till skriftlig tentamen vid Linköpings Universitet Försättsblad till skriftlig tentamen vid Linköpings Universitet Datum för tentamen 2016-03-21 Sal Tid 08:00 12:00 Kurskod Provkod Kursnamn/benämning Institution Antal uppgifter som ingår i tentamen Antal

Läs mer

Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl 9.00 14.

Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl 9.00 14. Tentamen 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl 9.00 14.00, sal E33 Tentan har en teoridel och en problemdel. På teoridelen är inga hjälpmedel

Läs mer

Lösningar till tentauppgifterna sätts ut på kurssidan på nätet idag kl 19. Omtentamen i Programmering C, 5p, fristående, kväll, 040110.

Lösningar till tentauppgifterna sätts ut på kurssidan på nätet idag kl 19. Omtentamen i Programmering C, 5p, fristående, kväll, 040110. 1(8) ÖREBRO UNIVERSITET INSTITUTIONEN FÖR TEKNIK Lösningar till tentauppgifterna sätts ut på kurssidan på nätet idag kl 19. Denna tenta kommer att vara färdigrättad On 14/1-04 och kan då hämtas på mitt

Läs mer

Tentamen, EDA501 Programmering M L TM W K V

Tentamen, EDA501 Programmering M L TM W K V LUNDS TEKNISKA HÖGSKOLA 1(0) Institutionen för datavetenskap Tentamen, EDA501 Programmering M L TM W K V 2010 05 31, 8.00 13.00 Anvisningar: Denna tentamen består av 4 uppgifter. Preliminärt ger uppgifterna

Läs mer

Objektsamlingar i Java

Objektsamlingar i Java 1 (6) Objektsamlingar i Java Objektorienterad programmering 3 Syfte Att ge träning i att använda objektsamlingar i Java. Mål Efter övningen skall du kunna använda objektsamlingsklasserna ArrayList och

Läs mer

Föreläsning 4 Innehåll. Abstrakta datatypen lista. Implementering av listor. Abstrakt datatypen lista. Abstrakt datatyp

Föreläsning 4 Innehåll. Abstrakta datatypen lista. Implementering av listor. Abstrakt datatypen lista. Abstrakt datatyp Föreläsning 4 Innehåll Abstrakta datatypen lista Definition Abstrakta datatypen lista egen implementering Datastrukturen enkellänkad lista Nästlade klasser statiska nästlade klasser inre klasser Listklasser

Läs mer

Föreläsning REPETITION & EXTENTA

Föreläsning REPETITION & EXTENTA Föreläsning 18 19 REPETITION & EXTENTA Programmeringsteknik på 45 minuter Klasser och objekt Variabler: attribut, lokala variabler, parametrar Datastrukturer Algoritmer Dessa bilder är inte repetitionsbilder

Läs mer

SMD 134 Objektorienterad programmering

SMD 134 Objektorienterad programmering SMD 134 Objektorienterad programmering Dagens agenda: Typer i Java: primitiva datatyperna, referenstyper Variabler och variabeltilldelningar med primitiva typer Konstanter av de olika typerna. Heltalsräkning

Läs mer

Föreläsning 10. ADT:er och datastrukturer

Föreläsning 10. ADT:er och datastrukturer Föreläsning 10 ADT:er och datastrukturer ADT:er och datastrukturer Dessa två begrepp är kopplade till varandra men de står för olika saker. En ADT (abstrakt datatyp) är just abstrakt och är inte kopplad

Läs mer

Tentamen i Algoritmer & Datastrukturer i Java

Tentamen i Algoritmer & Datastrukturer i Java Tentamen i Algoritmer & Datastrukturer i Java Hjälpmedel: Skrivhjälpmedel, miniräknare. Ort / Datum: Halmstad / 2008-05-27 Skrivtid: 4 timmar Kontakt person: Nicolina Månsson, tel. 035-167487 Poäng / Betyg:

Läs mer

OOP Objekt-orienterad programmering

OOP Objekt-orienterad programmering OOP F6:1 OOP Objekt-orienterad programmering Föreläsning 6 Mer om klasser och objekt Hantera många objekt ArrayList tostring() metoden this Vi vill ofta hantera många objekt i ett program: OOP F6:2 public

Läs mer

Tentamen Datastrukturer D DAT 036/DIT960

Tentamen Datastrukturer D DAT 036/DIT960 Tentamen Datastrukturer D DAT 036/DIT960 17 december 2010 Tid: 8.30-12.30 Ansvarig: Peter Dybjer, tel 0736-341480 eller ankn 1035 Max poäng på tentamen: 60. Betygsgränser, CTH: 3 = 24 p, 4 = 36 p, 5 =

Läs mer

Hitta k största bland n element. Föreläsning 13 Innehåll. Histogramproblemet

Hitta k största bland n element. Föreläsning 13 Innehåll. Histogramproblemet Föreläsning 13 Innehåll Algoritm 1: Sortera Exempel på problem där materialet i kursen används Histogramproblemet Schemaläggning Abstrakta datatyper Datastrukturer Att jämföra objekt Om tentamen Skriftlig

Läs mer

Lösningsförslag, tentamen FYTA11 Javaprogrammering

Lösningsförslag, tentamen FYTA11 Javaprogrammering Lunds universitet FYTA11 Institutionen för Astronomi och Teoretisk fysik HT 12 Lösningsförslag, tentamen FYTA11 Javaprogrammering Onsdag 9 januari 2013, 10:15 14:15 Instruktioner Hjälpmedel: Papper och

Läs mer

Programmering A. Johan Eliasson johane@cs.umu.se

Programmering A. Johan Eliasson johane@cs.umu.se Programmering A Johan Eliasson johane@cs.umu.se 1 Jag Undervisar mest grundläggande programmering på Institutionen för datavetensakap Applikationsutveckling för iphone Applikationsutveckling i Java Datastrukturer

Läs mer

Redovisning av inlämningsuppgifter

Redovisning av inlämningsuppgifter Bilaga B Redovisning av inlämningsuppgifter 1 Rapportens innehåll Varje inlämningsuppgift ska redovisas med en skriftlig rapport. Rapporten ska vara häftad och försedd med ett försättsblad med uppgiftens

Läs mer

Programmeringsteknik med C och Matlab

Programmeringsteknik med C och Matlab Programmeringsteknik med C och Matlab Kapitel 2: C-programmeringens grunder Henrik Björklund Umeå universitet Björklund (UmU) Programmeringsteknik 1 / 32 Mer organisatoriskt Imorgon: Datorintro i lab Logga

Läs mer

Uppgift (poäng) 1 (2) 2 (3) 3 (4) 4 (4) 5 (3) 6 (4) 7 (6) 8 (6) 9 (8) Summa

Uppgift (poäng) 1 (2) 2 (3) 3 (4) 4 (4) 5 (3) 6 (4) 7 (6) 8 (6) 9 (8) Summa Lena Kallin Westin 2005-08-22 Institutionen för datavetenskap Umeå universitet TENTAMEN Uppgift (poäng) 1 (2) 2 (3) 3 (4) 4 (4) 5 (3) 6 (4) 7 (6) 8 (6) 9 (8) Summa Inlämnad Poäng Kurs : Programmeringsteknisk

Läs mer

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010) Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010) Tid: Onsdagen 15 december 2004, 8:30 till 13:30 Plats: M Ansvarig lärare: Katarina Blom, tel 772 10 60. Läraren besöker tentamen kl

Läs mer

Föreläsning 4: Poster

Föreläsning 4: Poster Föreläsning 4: Poster Följande är genomgånget: type Person_Type is Namn : String(30); Skonr : Float; Kon : Boolean; Diskussion runt detta med olika typer m.m. Har tagit upp vilka operationer man kan göra

Läs mer

Föreläsning 13 och 14: Binära träd

Föreläsning 13 och 14: Binära träd Föreläsning 13 och 14: Binära träd o Binärträd och allmänna träd o Rekursiva tankar för binärträd o Binära sökträd Binärträd och allmänna träd Stack och kö är två viktiga datastrukturer man kan bygga av

Läs mer

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition. Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Vem är vem på kursen Objektorienterad programvaruutveckling GU (DIT011) Kursansvarig : Katarina Blom, tel 772 10 60 Rum: 6126 (E-huset)

Läs mer

Föreläsning 3.1: Datastrukturer, en översikt

Föreläsning 3.1: Datastrukturer, en översikt Föreläsning.: Datastrukturer, en översikt Hittills har vi i kursen lagt mycket fokus på algoritmiskt tänkande. Vi har inte egentligen ägna så mycket uppmärksamhet åt det andra som datorprogram också består,

Läs mer

Saker du ska kunna Föreläsning 13 & 14

Saker du ska kunna Föreläsning 13 & 14 Saker du ska kunna Föreläsning 13 & 14 LISTOR Ta bort element från en vektor Både sorterad och osorterad Söka upp element i en vektor Linjärsökning räcker (jag har även visat binärsökning) Registrering

Läs mer

TENTAMEN. Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg. VT-13 Datum: 13-06-05 Tid: kl 16.00-20.

TENTAMEN. Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg. VT-13 Datum: 13-06-05 Tid: kl 16.00-20. Umeå Universitet Datavetenskap Anders Broberg 130605 TENTAMEN Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg VT-13 Datum: 13-06-05 Tid: kl 16.00-20.00 Namn: Personnummer:

Läs mer

Tentamen i Objektorienterad programmering

Tentamen i Objektorienterad programmering CHALMERS TEKNISKA HÖGSKOLA Datavetenskap TDA547 Tentamen i Objektorienterad programmering Lördagen 12 mars 2011, 8.30 12.30. Jourhavande lärare: Björn von Sydow, tel 0762/981014. Inga hjälpmedel. Lösningar

Läs mer

Övningar Dag 2 En första klass

Övningar Dag 2 En första klass Kurs i C++ Sid 1 (5) Övningar Dag 2 En första klass Denna övning går ut på att steg för steg bygga upp en klass och skapa objekt. Vi kommer att utgå från en sammansatt datatyp i en struct och parallellt

Läs mer

Tänk på följande: Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Tänk på följande: Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken. Tentamen Programmeringsteknik I 2015-01-10 Skrivtid: 8.00 13.00 Hjälpmedel: Java-bok Tänk på följande: Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till

Läs mer

Föreläsning 4 Innehåll

Föreläsning 4 Innehåll Föreläsning 4 Innehåll Abstrakta datatypen lista Datastrukturen enkellänkad lista Nästlade klasser statiskt nästlade klasser inre klasser Listklasser i Java Implementera abstrakta datatyperna stack och

Läs mer

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod Föreläsning 3-4 Innehåll Diskutera Vad gör programmet programmet? Föreslå vilka satser vi kan bryta ut till en egen metod. Skriva egna metoder Logiska uttryck Algoritm för att beräkna min och max Vektorer

Läs mer

Tentamen på kursen DA7351, Programmering 1. 051102, kl 08.15-12.15. Malmö högskola Teknik och samhälle. DA7351, Programmering 1 1 051102

Tentamen på kursen DA7351, Programmering 1. 051102, kl 08.15-12.15. Malmö högskola Teknik och samhälle. DA7351, Programmering 1 1 051102 Tentamen på kursen DA7351, Programmering 1 051102, kl 08.15-12.15 Tillåtna hjälpmedel: Valfri bok om Java. Vid bedömning av lösningarna tas hänsyn till om dessa uppfyller de krav på programkvalitet (strukturering,

Läs mer

Föreläsning 3-4 Innehåll

Föreläsning 3-4 Innehåll Föreläsning 3-4 Innehåll Skriva egna metoder Logiska uttryck Algoritm för att beräkna min och max Vektorer Datavetenskap (LTH) Föreläsning 3-4 HT 2017 1 / 36 Diskutera Vad gör programmet programmet? Föreslå

Läs mer

Att deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1)

Att deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1) Föreläsning 10 STRING OCH STRINGBUILDER; VARIABLERS SYNLIGHET Att deklarera och att använda variabler När vi deklarerar en variabel, t ex int x; inför vi en ny variabel med ett namn och en typ. När namnet

Läs mer

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag 2001 - maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag 2001 - maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag 2001 - maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h Antalet uppgifter : 2 (20p + 20p = 40 p) ) Lärare, jourhavande lärare :

Läs mer

6 Rekursion. 6.1 Rekursionens fyra principer. 6.2 Några vanliga användningsområden för rekursion. Problem löses genom:

6 Rekursion. 6.1 Rekursionens fyra principer. 6.2 Några vanliga användningsområden för rekursion. Problem löses genom: 6 Rekursion 6.1 Rekursionens fyra principer Problem löses genom: 1. förenkling med hjälp av "sig själv". 2. att varje rekursionssteg löser ett identiskt men mindre problem. 3. att det finns ett speciellt

Läs mer

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P UME UNIVERSITET Datavetenskap 981212 TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P Datum : 981212 Tid : 9-15 HjŠlpmedel : Inga Antal uppgifter : 9 TotalpoŠng : 60 (halva pošngtalet kršvs normalt fšr

Läs mer

Programmering A C# VT 2010. Ett kompendie över Programmering A (50p) i c# Stefan Fredriksson 2010 02 08

Programmering A C# VT 2010. Ett kompendie över Programmering A (50p) i c# Stefan Fredriksson 2010 02 08 Programmering A C# VT 2010 Ett kompendie över Programmering A (50p) i c# Stefan Fredriksson 2010 02 08 Innehåll Hjälp och referenser... 3 Kap 1 Introduktion... 3 Steg för steg... 3 Kapitel 2 Variabler...

Läs mer

EDAA20 Föreläsning Klassen ArrayList. Viktiga operationer på ArrayList. Generisk klass

EDAA20 Föreläsning Klassen ArrayList. Viktiga operationer på ArrayList. Generisk klass EDAA20 Föreläsning 11-12 Klassen ArrayList Klassen ArrayList Skriva program som läser data från en textfil och skriver data till en textfil Repetition inför delmålskontroll 2 är en standardklass (i paketet

Läs mer

SI-pass 4. Johan Brook och Jesper Persson. 25 september 2012. Diskutera och svara på om påståendena nedan är äkta sanningar eller listiga lögner.

SI-pass 4. Johan Brook och Jesper Persson. 25 september 2012. Diskutera och svara på om påståendena nedan är äkta sanningar eller listiga lögner. SI-pass 4 Johan Brook och Jesper Persson 25 september 2012 1. Sant eller falskt? Diskutera och svara på om påståendena nedan är äkta sanningar eller listiga lögner. Interfaces i Java kan innehålla privata

Läs mer

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten? Programmeringsteknik och Matlab Övning 4 Dagens program Övningsgrupp 2 (Sal Q22/E32) Johannes Hjorth hjorth@nada.kth.se Rum 4538 på plan 5 i D-huset 08-790 69 02 Kurshemsida: http://www.nada.kth.se/kurser/kth/2d1312

Läs mer

Lektion 1 - Programmeringsteknik F1, ht 2003

Lektion 1 - Programmeringsteknik F1, ht 2003 Lektion 1 - Programmeringsteknik F1, ht 2003 Daniel Deogun danield@it.uu.se 8 september 2003 Innehåll 1 När är ICA öppet? 3 1.1 Problem................................ 3 1.2 Lösning................................

Läs mer

Föreläsning 8 SLUMPTAL, SIMULERING + INTRODUKTION TILL VEKTORER

Föreläsning 8 SLUMPTAL, SIMULERING + INTRODUKTION TILL VEKTORER Föreläsning 8 SLUMPTAL, SIMULERING + INTRODUKTION TILL VEKTORER Från laboration 3 till 4 I laboration 3 har du implementerat klasser implementerat metoder i klasserna I laboration 4 kommer du att implementera

Läs mer

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling metoder Föreläsning 2 Objektorienterad programmering DD1332 Array [modifierare] String metodnamn (String parameter) Returtyp (utdata typ) i detta fall String Indata typ i detta fall String 1 De får man

Läs mer

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p UMEÅ UNIVERSITET Datavetenskap 010530 LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p Betygsgränser 3 21,5-27 4 27,5-33,5 5 34-43 Uppgift 1. (4p) Hitta de fel som finns i nedanstående klass (det

Läs mer

Repetition av OOP- och Javabegrepp

Repetition av OOP- och Javabegrepp ArrayList Repetition av OOP- och Javabegrepp En lista i vilken man kan lagra objekt Implementerar List-interfacet Skiljer sig från ett vanligt endimensionellt fält: Dynamisk expanderar när den blir

Läs mer

Översikt. Installation av EasyPHP 1. Ladda ner från http://www.easyphp.org/ Jag använder Release 5.3.4.0 2. Installera EasyPHP.

Översikt. Installation av EasyPHP 1. Ladda ner från http://www.easyphp.org/ Jag använder Release 5.3.4.0 2. Installera EasyPHP. Laboration 1 Översikt 1. Att komma igång med laborationsmiljön a. installera Aptana Studio 3 b. Installera EasyPHP 2. Testa lite programmering a. Testa enkla uppgifter b. Testa automatiskt 3. Skapa inloggningsformulär

Läs mer

Repetition av OOP- och Javabegrepp

Repetition av OOP- och Javabegrepp ArrayList Repetition av OOP- och Javabegrepp En lista i vilken man kan lagra objekt Implementerar List-interfacet Skiljer sig från ett vanligt endimensionellt fält: Dynamisk expanderar när den blir

Läs mer

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program Dagens föreläsning Programmeringsteknik för Ingenjörer VT05 Föreläsning 3-4 Repetition Datatyper Uttryck Operatorer Satser Algoritmer Programmeringsteknik VT05 2 Repetition Repetition - Programmering i

Läs mer

Textsträngar från/till skärm eller fil

Textsträngar från/till skärm eller fil Textsträngar från/till skärm eller fil Textsträngar [Kapitel 8.1] In- och utmatning till skärm [Kapitel 8.2] Rekursion Gränssnitt Felhantering In- och utmatning till fil Histogram 2010-10-25 Datorlära,

Läs mer

Föreläsning 9: Arv och UML

Föreläsning 9: Arv och UML TDA 545: Objektorienterad programmering Föreläsning 9: Arv och UML Magnus Myréen Chalmers, läsperiod 1, 2015-2016 Quiz Vad betyder static? Varför skriver man get-metoder? public int getpos() { return pos;

Läs mer

Objektorienterad Programkonstruktion, DD1346 FACIT. Tentamen 20150613, kl. 9.00-12.00

Objektorienterad Programkonstruktion, DD1346 FACIT. Tentamen 20150613, kl. 9.00-12.00 Skolan för datavetenskap och kommunikation Objektorienterad Programkonstruktion, DD1346 FACIT Tentamen 20150613, kl. 9.00-12.00 Tillåtna hjälpmedel: Papper, penna och radergummi. Notera: Frågorna i del

Läs mer

Föreläsning 5 Innehåll

Föreläsning 5 Innehåll Föreläsning 5 Innehåll Algoritmer och effektivitet Att bedöma och jämföra effektivitet för algoritmer Begreppet tidskomplexitet Datavetenskap (LTH) Föreläsning 5 VT 2019 1 / 39 Val av algoritm och datastruktur

Läs mer

Datalogi I, grundkurs med Java 10p, 2D4112, Fiktiv tentamen, svar och lösningar och extra kommentarer till vissa uppgifter 1a) Dividera förs

Datalogi I, grundkurs med Java 10p, 2D4112, Fiktiv tentamen, svar och lösningar och extra kommentarer till vissa uppgifter 1a) Dividera förs Datalogi I, grundkurs med Java 10p, 2D4112, 2002-2003 Fiktiv tentamen, svar och lösningar och extra kommentarer till vissa uppgifter 1a) Dividera först talet 37 med 2. Använd heltalsdivision. Det ger kvoten

Läs mer

ADT Kö. Seminarium 4 Köer och Stackar Innehåll. Operationer. ADT Stack. Definition. Definition

ADT Kö. Seminarium 4 Köer och Stackar Innehåll. Operationer. ADT Stack. Definition. Definition Seminarium 4 Köer och Stackar Innehåll ADT:erna Kö och Stack Definitioner Operationer Exempel på användning Givna klasser i Java Interfacet Queue Klassen Stack Klassen LinkedList Klassen PriorityQueue

Läs mer

Omtentamen (del 1, 6 högskolepoäng) i Programkonstruktion och datastrukturer (1DL201)

Omtentamen (del 1, 6 högskolepoäng) i Programkonstruktion och datastrukturer (1DL201) Omtentamen (del 1, 6 högskolepoäng) i Programkonstruktion och datastrukturer (1DL201) Lars-Henrik Eriksson Fredag 5 april 2013, kl 14:00 17:00, i Polacksbackens skrivsal Hjälpmedel: Inga. Inte heller elektronisk

Läs mer

Exempel på listor (klassen ArrayList). Ett exempel med fält. Avbildning är en speciell typ av lista HashMap.

Exempel på listor (klassen ArrayList). Ett exempel med fält. Avbildning är en speciell typ av lista HashMap. Institutionen för Datavetenskap Göteborgs universitet HT2008 DIT011 Objektorienterad programvaruutveckling GU (DIT011) Innehåll Föreläsning 4 Exempel på listor (klassen ArrayList). Ett exempel med fält.

Läs mer

LEGO Robot programmering och felsökning Hur svårt ska det vara att följa den svarta linjen?

LEGO Robot programmering och felsökning Hur svårt ska det vara att följa den svarta linjen? ICT LEGO Robot programmering och felsökning Hur svårt ska det vara att följa den svarta linjen? Daniel Lindfors 12/9/07 dlindf@kth.se Introduktionskurs i datateknik II1310 Sammanfattning Denna laboration

Läs mer

Detta dokument är ett exempel, cirka hälften av en tentamen för TDA545 Objektorienterad programvaruutveckling

Detta dokument är ett exempel, cirka hälften av en tentamen för TDA545 Objektorienterad programvaruutveckling Göteborg, Magnus Myréen, 2014-10- 15 Detta dokument är ett exempel, cirka hälften av en tentamen för TDA545 Objektorienterad programvaruutveckling Fulltentamen vitsord: 3=28p, 4=38p, 5= 48p, max 60p. Max

Läs mer

Föreläsning 9 Innehåll

Föreläsning 9 Innehåll Föreläsning 9 Innehåll Binära sökträd algoritmer för sökning, insättning och borttagning, implementering effektivitet balanserade binära sökträd, AVL-träd Abstrakta datatyperna mängd (eng. Set) och lexikon

Läs mer

Seminarium 3 Introduktion till Java Collections Framework Innehåll. Generik Bakgrund. Exempel på en generisk klass java.util.arraylist.

Seminarium 3 Introduktion till Java Collections Framework Innehåll. Generik Bakgrund. Exempel på en generisk klass java.util.arraylist. Seminarium 3 Introduktion till Java Collections Framework Innehåll Generik Bakgrund Java Collections Framework interface och klasser för samlingar av element interfacen Iterator och Iterable och foreach-sats

Läs mer

Fält av referenser. Konstruktorerna används för att skapa Bilar och Trafikljus.

Fält av referenser. Konstruktorerna används för att skapa Bilar och Trafikljus. Fält av referenser Tanken med objekt är man kan bygga ihop olika sorts objekt till nya saker. Sålunda kan man exempelvis använda Bil och Trafikljus att konstruera ett Väg-objekt. Om Bil och Trafikljus

Läs mer

Tentaupplägg denna gång

Tentaupplägg denna gång Några tips på vägen kanske kan vara bra. Tentaupplägg denna gång TIPS 1: Läs igenom ALLA uppgifterna och välj den du känner att det är den lättaste först. Det kan gärna ta 10-20 minuter. Försök skriva

Läs mer

OOP Objekt-orienterad programmering

OOP Objekt-orienterad programmering OOP F9:1 OOP Objekt-orienterad programmering Föreläsning 9 Arv och klasshierarkier Polymorfism OOP F9:2 Djur - String namn - int vikt + String getnamn() + int getvikt() + void ökavikt(int x) Ko - int mjölkvolym

Läs mer

2. Betrakta följande program, där fyra heltal läses från tangentbordet och några (ointressanta) beräkningar görs:

2. Betrakta följande program, där fyra heltal läses från tangentbordet och några (ointressanta) beräkningar görs: Övningsuppgifter I kursen ingår 10 övningar (det är ingen övning vecka 7 i läsperiod ht2). Under övningarna ska du självständigt eller tillsammans med en kamrat lösa övningsuppgifterna. Övningsledaren

Läs mer

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken. Tentamen Programmeringsteknik I 2015-03-19 Skrivtid: 14:00 19:00 Hjälpmedel: Java-bok Tänk på följande Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Läs mer

Föreläsning 14 Innehåll

Föreläsning 14 Innehåll Föreläsning 14 Innehåll Abstrakta datatyper, datastrukturer Att jämföra objekt övriga moment i kursen Om tentamen Skriftlig tentamen både programmeringsuppgifter och teoriuppgifter Hitta fel i fingerade

Läs mer

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2 AID-nummer: Datum: 2014-12-18 Kurskod: 725G61 Provkod: LAB1 Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2 Skrivningstid: 2014-12-18 klockan 8.00-10.00. Hjälpmedel: Inga. För varje fråga

Läs mer

Dagens program. Programmeringsteknik och Matlab. Vad är arv? Vi ärver från GregorianCalendar. Kan vi bygga vidare på existerande klasser?

Dagens program. Programmeringsteknik och Matlab. Vad är arv? Vi ärver från GregorianCalendar. Kan vi bygga vidare på existerande klasser? Programmeringsteknik och Matlab Övning 6 Dagens program Övningsgrupp 2 (Sal Q22/E32) Johannes Hjorth hjorth@nada.kth.se Rum 4538 på plan 5 i D-huset 08-790 69 02 Kurshemsida: http://www.nada.kth.se/kurser/kth/2d1312

Läs mer

Föreläsning 5 (6) Metoder. Metoder Deklarera. Metoder. Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc

Föreläsning 5 (6) Metoder. Metoder Deklarera. Metoder. Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc Föreläsning 5 (6) Metoder Metoder Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc Metoder Deklarera public void setnamn(string n) Åtkomstmodifierare Returtyp

Läs mer

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan. Bankkonto - övning Övningar att göra efter lärardemostration. Filen bankkonto.zip innehåller ett projekt med klassen Bankkonto. Zippa upp denna fil och öppna projektet i BlueJ och skriv vidare på klassen

Läs mer

Abstrakt datatyp. -Algoritmer och Datastrukturer- För utveckling av verksamhet, produkter och livskvalitet.

Abstrakt datatyp. -Algoritmer och Datastrukturer- För utveckling av verksamhet, produkter och livskvalitet. -Algoritmer och Datastrukturer- Abstrakt datatyp Datatyp för en variabel Betecknar i ett programmeringsspråk den mängd värden variabeln får anta. T ex kan en variabel av typ boolean anta värdena true och

Läs mer

Tentamen: Programutveckling ht 2015

Tentamen: Programutveckling ht 2015 Tentamen: Programutveckling ht 2015 Datum: 2015-11-04 Tid: 09:00-13:00 Sal: Ansvarig: Resultat: Hjälpmedel: Maxpoäng: Betygsgränser: Anslås inom 3 veckor. Inga 40 p 20 p för G, 32 p för VG. Iakttag följande:

Läs mer

OOP Omtenta 2011-03-05 10.00 15.00

OOP Omtenta 2011-03-05 10.00 15.00 Stockholms universitet 1 (6) OOP OOP Omtenta 2011-03-05 10.00 15.00 Avser kurserna: DSK1:OOP GES:OOP ID1013 Anvisningar Påbörja varje ny uppgift på nytt blad. Skriv endast på ena sidan av bladen. Skriv

Läs mer

Lösningsförslag till tentamen i EDA690 Algoritmer och Datastrukturer, Helsingborg

Lösningsförslag till tentamen i EDA690 Algoritmer och Datastrukturer, Helsingborg LUNDS TEKNISKA HÖGSKOLA 1(5) Institutionen för datavetenskap Lösningsförslag till tentamen i EDA690 Algoritmer och Datastrukturer, Helsingborg 2013 12 19 1. a) En samling element där insättning och borttagning

Läs mer

F5 Selektion och iteration. ID1004 Objektorienterad programmering Fredrik Kilander

F5 Selektion och iteration. ID1004 Objektorienterad programmering Fredrik Kilander F5 Selektion och iteration ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se Boolska uttryck Boolska uttryck använder sig av jämförelseoperatorer < > = ==!= Resultatets datatyp är boolean

Läs mer

Det är principer och idéer som är viktiga. Skriv så att du övertygar rättaren att du har förstått dessa även om detaljer kan vara felaktiga.

Det är principer och idéer som är viktiga. Skriv så att du övertygar rättaren att du har förstått dessa även om detaljer kan vara felaktiga. Tentamen Programmeringsteknik II 2013-06-05 Skrivtid: 1400-1700 Hjälpmedel: Java-bok (vilken som helst) Tänk på följande Skriv läsligt! Använd inte rödpenna! Skriv bara på framsidan av varje papper. Börja

Läs mer

Tentamen ID1004 Objektorienterad programmering October 29, 2013

Tentamen ID1004 Objektorienterad programmering October 29, 2013 Tentamen för ID1004 Objektorienterad programmering (vilande kurs), 29 oktober 2013, 9-13 Denna tentamen examinerar 3.5 högskolepoäng av kursen. Inga hjälpmedel är tillåtna. Tentamen består av tre sektioner.

Läs mer

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken. Tentamen Programmeringsteknik I 2012-03-14 Skrivtid: 0800-1100 Hjälpmedel: Java-bok Tänk på följande Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till

Läs mer

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper Tentamen Programmeringsteknik I 2016-03-17 Skrivtid: 1400 1900 Tänk på följande Skriv läsligt. Använd inte rödpenna. Skriv bara på framsidan av varje papper. Lägg uppgifterna i ordning. Skriv uppgiftsnummer

Läs mer

Dagens text. Programmeringsteknik. Mer om Scanner-klassen. Dialogrutor (klassen JOptionPane) Bubbelsortering. Omslagsklasser.

Dagens text. Programmeringsteknik. Mer om Scanner-klassen. Dialogrutor (klassen JOptionPane) Bubbelsortering. Omslagsklasser. (16 februari 2016 F5.1 ) Dagens text Programmeringsteknik Mer om Scanner-klassen Dialogrutor (klassen JOptionPane) Bubbelsortering ArrayList Omslagsklasser Arbetsexempel (16 februari 2016 F5.2 ) Pokertärningar

Läs mer