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



Relevanta dokument
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 3 Onsdagen 7 januari, 14:00-18:00

Tentamen i DD2387 Programsystemkonstruktion med C++

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

Tentamen i DD2387 Programsystemkonstruktion med C++

Tentamen i DD2387 Programsystemkonstruktion med C++

Tentamen i TDP004 Objektorienterad Programmering Lösningsförslag

Tentamen i TDP004 Objektorienterad Programmering Lösningsförslag

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

Tentamen EDAF30 Programmering i C++

Tentamen EDAF30 Programmering i C++

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

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.

TDDC76 - Programmering och Datastrukturer

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

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

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

DAT043 Objektorienterad Programmering

Tentamen i Grundläggande programmering STS, åk

SP:PROG3 HT12 Tenta

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

Innehåll. Pekare Exempel

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

Innehåll. Pekare Exempel

Programsystemkonstruktion med C++

Tentamen EDAF30 Programmering i C++

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

Tommy Färnqvist, IDA, Linköpings universitet

Tentamen C++-programmering

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

Skriv i mån av plats dina lösningar direkt i tentamen. Skriv ditt kodnummer längst upp på varje blad.

C++ Objektorientering - Klasser. Eric Elfving

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

TDIU01 Programmering i C++

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

Föreläsning 3-4 Innehåll

Tentamen *:58/ID100V Programmering i C Exempel 3

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.

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

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

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

Tentamen *:85/2I4123 C

Tentamen i TDP004 Objektorienterad Programmering Teoretisk del

Tentamen i Programmeringsteknik I, ES,

2 b) Följande finns definierat: public class Spel String titel = "Spel"; Dice[] tärningar = new Dice[10]; tärningar[0] = new Dice("Röd"); tärningar[1]

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

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

Kapitel 6 - Undantag

TDDC76 - Programmering och Datastrukturer

Introduktion till arv

Tentamen i Grundläggande Programvaruutveckling, TDA548

Tillämpad programmering

C++ Objektorientering - Klasser. Eric Elfving Institutionen för datavetenskap

Programmering B med Visual C

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

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

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

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

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

Att använda pekare i. C-kod

TDDC74 Programmering: Abstraktion och modellering Dugga 3, kl 14 16, 25 mars 2015

Tentamen i Programmeringsteknik I

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

Föreläsning 6: Introduktion av listor

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

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

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

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 i Programmeringsteknik I

Johan Karlsson Datavetenskap för teknisk kemi, 10p, moment 1 Datavetenskap Umeå Universitet. Tentamen

Namn: Personnr: 1 2D1310 Programmeringsteknik i Java för B,V (1p) 13 januari 2001, kl Hjälpmedel: En Javabok. För betyget godkänt krävs at

Högskolan Dalarna sid 1 av 5 Data-avdelningen Hans-Edy Mårtensson

TENTAMEN I DATAVETENSKAP

Tentamen OOP

TDIU01 - Programmering i C++, grundkurs

Övningar Dag 2 En första klass

TDDC76 - Programmering och Datastrukturer

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

Tentamen på kursen DA7351, Programmering , kl Malmö högskola Teknik och samhälle. DA7351, Programmering

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

Programmering i C++ EDA623 Mer om klasser. EDA623 (Föreläsning 6) HT / 26

TDIU01 - Programmering i C++, grundkurs

Lösningsförslag tentamen FYTA11 Java

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

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

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

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

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

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

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

Synlighet. Namespace Scope-operatorn Klasser Vänner

HI1024 Programmering, grundkurs TEN

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

HI1024 Programmering, grundkurs TEN

Tentamen Programmeringsteknik II Skrivtid: Hjälpmedel: Java-bok (vilken som helst) Skriv läsligt! Använd inte rödpenna!

TDDC76 Programmering och datastrukturer

Tentamen, EDAA10 Programmering i Java

Omtentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-16, TDA540. Dag: , Tid:

Transkript:

DD2387 Programsystemkonstruktion med C++ Tentamen 1 Tisdagen den 28 oktober 2014, 08:00-12:00 Introduktion Skriv dina svar på separata papper, dessa scannas in efter inlämning. Du kan skriva på båda sidor. Skriv namn och uppgiftsnummer på varje sida Grova fel ger underkänt, men gör ett försök på alla uppgifter Det är ingen självrättning efter tentan Hjälpmedel En, eller två, valfria läroböcker om C++. 1

1 Sådana där grejer som åker under vatten Det jagas en ubåt. Eller snarare, det efterfrågas information om ett oidentifierat dykande föremål, som det finns en bild på, fast den bilden var på en annan ubåt som man kan hyra för fester. Det finns dock en annan bild, fast den var tagen på en annan plats, eller det beror på, jag kommer inte ihåg. Det är inte lätt att ha koll på den virtuella verkligheten som beskrivs i media men virtual och minneshantering måste man ha koll på i C++. // - - - - - - - - - - - - - - - - - - - - - - - - - - - // Unidentified Diving Object struct UDO { UDO() : origin(this) { virtual void dive() { std::cout << "blubb, blubb" << std::endl; ; UDO * origin; struct MiniUboat : UDO { virtual void dive() { std::cout << "swoosh, swoosh" << std::endl; ; // - - - - - - - - - - - - - - - - - - - - - - - - - - - int main() { MiniUboat boat; UDO & udo1 = boat; UDO udo2 = udo1; udo1.dive(); udo2.dive(); udo1.origin -> dive(); udo2.origin -> dive(); a) Vad skriver ovanstående program ut? b) Rita minnesbild över hur variablerna boat, udo1, och udo2, ser ut. 2

2 Generisk signalspaning Det är inte lätt att jaga ubåtar. Man lyssnar efter sonarsignaler och avgör på något fiffigt sätt om det är minkar, ubåtar, eller något helt annat som låter. a) Skriv en generisk funktion som givet en mängd signaler (definerat av två iteratorer till en godtycklig signaltyp) returnerar första förekomsten av en signal som är minst dubbelt så stor som både den föregående och efterföljande signalen. Gör inget off-by-one fel och kolla så att programmet inte kraschar om man skickar in en för liten (t.ex. tom) mängd. Vad som ska hända om inget element som tillfredställer tidigare beskrivning påträffas är upp till dig, men implementationen är inte godkänd om den krashar vid sådant tillfälle. b) Vad ställer din kod för krav på iteratorerna (parametrarna)? c) Vad ställer din kod för krav på signaltypen? 3 Konsten att använda const a) Varför bör man sträva efter att använda const där så är möjligt i C++? 4 Att bilda sin egen uppfattning Vad fyller alla de här skriverierna för funktion, objektivt sett? Kan man inte skapa sig en egen bild av situationen igenom att lägga ihop ett och två? Bild f; // a function object double x = f (1, 2); a) Skriv klassen Bild så att ovanstående kod kompilerar. Koden behöver inte göra något vettigt. 3

5 Kampen mellan journalister Det råder visst en febril verksamhet i media. Mängder med infallsvinklar produceras. En kreativ journalist ger sig ut på spaning med helikopter för att spana på de svenska båtarna som spanar efter det oidentifierade dykande föremålet. En annan skribent spekulerar om den förmodade ubåten kan vara en gigantisk rysk Typhoon som är i sjönöd. Ett rykte som nästan är fakta pekar ut en rysk oljetanker som möjligt moderfartyg efter observationen att fartyget vänt på sig (vilket fartyg som ligger löst för ankar brukar göra). Men kanske ligger tankern därute på internationellt vatten enbart för att slippa hamnavgift. Ja det är många konstiga historier och referenser som cirklar runt. Även om det är svårt att hålla koll på medial fakta, så måste man ha koll på const och referenser när man skriver C++. struct Journalist { Journalist() { Journalist(const Journalist &) = delete; bool investigate (const Journalist & j, Rumor fact); ; //... bool Journalist::investigate(const Journalist & j, Rumor fact) { if (fact.as_told_by(j)!= 0 ) { Rumor more_facts = this->drink_beverage_with(j); this->write(story, more_facts, j.get_story()); return true; // TODO: // // as_told_by // get_story // drink_beverage_with // write a) Skriv den implementation som saknas (så att ovanstående kod kompilerar). Observera att man inte kan kopiera journalister. Koden behöver inte göra något vettigt. 4

6 En destruktiv jakt En del tycker att den pågående jakten efter oidentifierade undervattensfarkoster är rent destruktiv. En cprog-student observerar att destruktorn är helt åt fanders. struct Hunt { std::vector<udo *> * v; Hunt() { v = new std::vector<udo *>(); void seek(water w) { while (w.suspicous()) { Sound s = w.listen(); if (s!= w.normal()) v -> push_back(new UDO(s)); ; ~Hunt() { delete [] v; a) Vad är problemet/problemen med destruktorn i Hunt? b) Hur borde destruktorn skrivas? c) Vilka automatiskt genererade medlemsfunktioner brukar ingå i det som tidigare (c++98) kallades för "Rule Of Three"? 5