Tentamen i DD2387 Programsystemkonstruktion med C++

Relevanta dokument
Tentamen i DD2387 Programsystemkonstruktion med C++

Tentamen i DD2387 Programsystemkonstruktion med C++

DD2387 Programsystemkonstruktion med C++ Tentamen 3 Onsdagen 7 januari, 14:00-18:00

DD2387 Programsystemkonstruktion med C++ Tentamen 1 Tisdagen den 28 oktober 2014, 08:00-12:00

DD2387 Programsystemkonstruktion med C++ Tentamen 1 Tisdagen den 28 oktober 2014, 08:00-12:00

DD2387 Programsystemkonstruktion med C++ Tentamen 2

DD2387 Programsystemkonstruktion med C++ Tentamen 1 Torsdag 7 januari 2016, 14:00-18:00

Kapitel 3. Synlighet. Kapitel 3 - Klassanvändning, operatorer och pekare. Synlighet

Synlighet. Namespace Scope-operatorn Klasser Vänner

Programsystem konstruktion med C++ (2D1387) Innehåll. övning 2 klasser och arv

Det finns många flaggor till g++,

Innehåll. Pekare Exempel

Innehåll. Pekare Exempel

Kapitel 6 - Undantag

Objektorientering - Arv och polymorfi. Eric Elfving Institutionen för datavetenskap

TDDC76 - Programmering och Datastrukturer

Tentamen i TDP004 Objektorienterad Programmering Lösningsförslag

Övriga byggstenar. Övriga byggstenar. Några tips under programutveckling. Beroenden Pekare till funktioner Typkonvertering

Innehåll. Pekaren this Självreferens. Klasser Resurshantering, representation. Överlagring av operatorer. Överlagring av operatorer

Tillämpad programmering

Programsystemkonstruktion med C++

grundläggande C++, funktioner m.m.

Programsystemkonstruktion med C++: Övning 2. Karl Palmskog september 2010

Innehåll. 1 Kort om dynamisk polymorfism. 2 Arv i C++ 3 Multipelt arv. 4 Något om statisk polymorfism. class Container {

Programmering för språkteknologer II, HT2011. Rum

Tentamen C++-programmering

Programmering i C++ EDA623 Arv. EDA623 (Föreläsning 6) HT / 42

Tentamen EDAF30 Programmering i C++

HI1024 Programmering, grundkurs TEN

Innehåll. Typomvandlingar (casting) Implicita Typomvandlingar. Typomvandlingar (casting) Implicita Typomvandlingar

Tentamen EDAF30 Programmering i C++

HI1024 Programmering, grundkurs TEN

Att använda pekare i. C-kod

2 b) Följande finns definierat: public class Käk String titel = "Chili con carne"; Krydda[] kryddor = new Krydda[10]; kryddor[0] = new Krydda("Svartpe

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

Klasser. Kapitel 2. Kapitel 2 - Klasser, medlemmar och arv. Klasser. Klasser Medlemmar Arv

TENTAMEN CD5250. Objektorienterad programutveckling med C++, 5p. Datum: , Tid: 14:00-19:00

Programsystemkonstruktion med C++: Övning 1. Karl Palmskog september 2010

Ett enkelt program i C++, hello.cpp. #include <iostream> int main() { std::cout << "Hello World\n"; return 0; } C++, Övning 1

DAT043 Objektorienterad Programmering

Tentamen i Grundläggande programmering STS, åk 1 fredag

Objektorienterad Programmering (TDDC77)

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

Innehåll. Resurshantering. Resource handles. Minnesallokering. Minnesallokering Exempel: allokering på stacken. 6. Resurshantering

För alla uppgifter på tentan gäller: Man får använda både standard-c++ (som till exempel har pekare som anges med * och objekt som skapas med new) och

Dynamisk bindning och polymorfism

Tentamen, EDAA10 Programmering i Java

Del3 Klassanvändning, operatorer och pekare Ämnesområden denna föreläsning:

HI1024, Programmering, grundkurs, 8hp KTH STH TENTAMEN. HI1024:TEN2 - Praktisk tentamen Tid: Fredagen den 21 oktober 2011,

Innehåll. Användardefinierade typer. Användardefinierade typer Kategorier. Konstruktorer. Konstruktorer Två sätt att skriva initiering av medlemmar

Innehåll. Konstruktorer vid arv Regler för basklassens konstruktor. Konstruktorer vid arv. Konstruktorer vid arv. Konstruktorer vid arv

OOP Tenta

TDIU01 Programmering i C++

TDDC76 - Programmering och Datastrukturer

Tentamen i Objektorienterad Programmering 5p, Au, D, Fri, Pr,

KTH STH TENTAMEN. HI1024:TEN2 - Praktisk tentamen Tid: 8-13, den 18 februari 2012

Tentamen i Grundläggande programmering STS, åk

TDDC76 Programmering och datastrukturer

HI1024 Programmering, grundkurs TEN

OOP Tentamen

Del2 Klasser, medlemmar och arv Ämnesområden denna föreläsning:

TDIU01 - Programmering i C++, grundkurs

Polymorfi. Objektorienterad och komponentbaserad programmering

1 Klasser och objektorientering Vad är objektorientering?

Lösningar till uppgifterna sätts ut på kurssidan och på WebCT (Gamla Tentor) i dag kl 19. Tentamen i Programmering C, 5p, Distans, övriga,

Tentamen i Programmering

Dynamiskt minne. Vad är dynamiskt minne Motivering Hur gör man i C Övningar

Minneshantering. Minneshantering. Minneshantering. Undvik pekare

tentaplugg.nu av studenter för studenter

Tentamen i Grundläggande programmering STS, åk 1 lördag

Tentamen i TDP004 Objektorienterad Programmering Teoretisk del

Objektorienterad programmering

Introduktion. Klasser. TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder

Lösningar till uppgifterna sätts ut på kurssidan på nätet idag kl Omtentamen i Programmering C, 5p, A1, D1, E1, Fri, Pr1, Te/Ek1,

Generell (template) programmering. Effektiv C++ Slutliga tips Genomgång av gammal tenta. Daniel Aarno Allt som fungerar som x ÄR x

2D1387, Programsystemkonstruktion med C++ Johnny Bigert, Kursens hemsida:

Programsystemkonstruktion med C++

2D1311 Programmeringsteknik för Bio1 och Bio2, vt 2003 Fiktivt prov På flervalsfrågorna är endast ett svar rätt om inget annat anges i frågan! Det rik

HI1024, Programmering, grundkurs, 8hp KTH STH TENTAMEN. HI1024:TEN1 - Teoretisk tentamen Tid: Torsdagen den 20 oktober 2011,

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

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

LÖSNINGSFÖRSLAG TILL Tentamen i objektorienterad programmering i C++ I

C++ Objektorientering - Klasser. Eric Elfving

Övningar Dag 2 En första klass

Tentamen i. Programmering i språket C

TDIU01 - Programmering i C++, grundkurs

Byggstenar. C++-programmets beståndsdelar. C++-programmets beståndsdelar. Grundläggande datatyper

PROGRAMMERINGSTEKNIK TIN212

Objektorienterad Programkonstruktion, DD1346 FACIT. Tentamen , kl

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

Tentamen i. för D1 m fl, även distanskursen. lördag 28 maj 2011

TDDC77 Objektorienterad Programmering

Sortering. Om du följt dessa steg korrekt så ska böckerna nu vara sorterade.

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

Arv. Objektorienterad och komponentbaserad programmering

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

Tentamen i TDP004 Objektorienterad Programmering Lösningsförslag

Classes och Interfaces, Objects och References, Initialization

Introduktion till arv

OBS! Vi har nya rutiner.

Transkript:

Tentamen i DD2387 Programsystemkonstruktion med C++ Resultat: Datum: Tisdag 19 oktober 2010, 14-18 (rättning 18-19) sal: id: Hjälpmedel: En eller två valfria läroböcker om C++ Tid: 4 timmar Skriv inte ditt namn på tentan. Under tentan kommer ett id-nummer att delas ut och skrivas på tentan. Anteckna ditt id-nummer på separat papper. När du lämnar in tentan ska du säga vad du heter och prickas av. Tentan rättas i en första omgång två och två av er själva en timme efter tentans slut. Du måste komma tillbaka för att rätta! Skriv svaren direkt på tentan. Om du inte avser få tentan rättad kan du lämna in blankt. Grova fel ger underkänt. Gör ett försök på alla uppgifter. Tentaresultat anslås inte längre på anslagstavla i enlighet med ny policy från KTH centralt. Lycka till! 1. Häxjakten Byråkratiska Studiestödsbyrån BSB vill veta hur mycket studenter avser studera per termin. Byråkraterna anser det fullt rimligt att kräva tillbaka 25%från den som klarat 99%av terminen men endast avsåg att läsa 99%medan den som enbart klarat 62%fast avsåg läsa 100%kan få full (100%) ersättning. För att parera bristerna i denna inte helt glasklara logik så tänker skolan tvångsinskriva studenter på en obligatorisk kurs i BSB-byråkrati, en kurs som man inte kan examineras i och som man omregistreras på år efter år. (a) Skriv en typparametriserad funktion fix som tar en mängd studenter, definerade av två iteratorer, och lägger till en typparametriserad kurs k till deras valbara kurser. Du får själv bestämma vad funktionen ska returnera. Funktionen ska kunna anropas så här: //... fix(v.begin(), v.end(), k); // v en mängd av något slag, k en kurs av något slag (b) Vad ställer din funktion fix för krav på typparametrarna? Var noga med detaljerna. 1

2. Verkligheten Byråkratiska studiestödsbyrån har problem med examensarbeten som tar längre tid än därtill avsedda 20 veckor. Frågan är om dessa extra veckor finns på riktigt och om de verkligen kan användas till att söka studiemedel. I den overkliga overkligheten på BSB är detta ett reellt problem även om det för oss andra ter sig virtuellt. Vad som är virtuellt är väsentligt i C++ studera följande program. #include <string> #include <iostream> struct A { A() : a(this) {} virtual void foo() { std::cout << "a "; } A * a; }; struct B : public A { B() : b(this) {} virtual void foo() { std::cout << "b "; } B * b; }; struct C : public B { virtual void foo() { std::cout << "c "; } }; int main() { C c; B b = c; B & b1 = c; B & b2 = b; A & a1 = b1; A & a2 = b2; // copy a1.foo(); a2.foo(); std::cout << std::endl; a1.a->foo(); a2.a->foo(); std::cout << std::endl; b1.b->foo(); b2.b->foo(); std::cout << std::endl; } (a) Vad skriver programmet ut när man kör det? 2

(b) Illustrera med en minnesbild hur minnet ser ut efter kopieringen (se // copy). (c) När man kompilerar koden kommer det att skapas en icke-virtuell destruktor som kommer att generera en varning. Varför bör destruktorn vara virtuell i klasser med virtuella metoder? (d) Vilka två andra metoder kommer att (rule of three) automatiskt skapas åt dig vid behov? (e) Polymorfi är inte detsamma som arv. Förklara kort vad polymorfi är, exemplifiera med koden i (a). 3

3. Generaldirektör sökes Ny generaldirektör för Byråkratiska Studiestödsbyrån har utlysts. Explicit goda referenser krävs för att söka. Det är ett svårt jobb att leda en organisation med sådan konstig struktur. Ringa in och förklara vilka rader som inte kompilerar på structerna nedan, var noga med const och referenser. 01 struct Act { 02 float calc(int a) { 03 return 1.1 * a; 04 } 05 }; 06 struct Bureau { 07 // Members variables 08 int x; 09 int & y; // reference 10 11 // Constructors 12 Bureau() { 13 x = 1; 14 y = x; 15 } 16 17 18 Bureau(int & a) : x(1), y(a) { 19 } 20 21 22 Bureau(int a, const int & b) : x(a), y(b) { 23 } 24 25 26 // Member methods 27 float foo(bureau b, const Act & a) const { 28 return a.calc(*this + b); 29 } 30 31 32 33 float bar(act & a) { 34 return a.calc(*this + x); // implicit constructor call 35 } 36 37 38 39 int operator+(bureau b) const { 40 return x + b.x; 41 } 42 43 44 }; 45 int main() { 46 return 0; 47 } 4

4. Vänner Egentligen är det ganska fånigt när två myndigheter bråkar med varandra och läser varandras webbsidor för att hitta motåtgärder mot andra myndighetens motåtgärder. Kan vi inte alla vara vänner med varandra? (a) Hur deklarerar man en vän? Skriv två minimala klasser varav den ena är vän med den andra. (b) Syntaxen för att deklarera vänner till typparametriserade klasser är inte helt intuitiv. Gör ett försök att deklarera en sådan vän (rättas snällt). (c) Varför bör man vara restriktiv att deklarera vänklasser? 5

Fyll i felkoder i tabellen nedan för varje fel på varje uppgift. Felkoden är fyra siffror Xx-YY där X är frågenummer, x delfråga och YY ett löpnummer (01, 02...). Markera felet på tentan i marginalen (samma fel kan härledas till två ställen ibland) och skriv utförlig kommentar i tabellen nedan samt, om lämpligt, kort kommentar på tentan (använd annan färg t.ex. blå eller rött bläck som finns att låna). Underlåtelse att rätta små som allvarliga fel kan påverka resultatet på rättarens egen tenta. Om du är osäker på om felet är allvarligt, ringa in felkoden. Om det saknas plats, använd kringliggande rutor som är utan anmärkningar. Fråga allvarlig felkod övriga fel kommentar 1 2 3 4 Rättat av id Rättat av id 6