HOGESCHOOL VAN AMSTERDAM Informatica Opleiding. CPP 1 van 10



Vergelijkbare documenten
Universiteit van Amsterdam FNWI. Voorbeeld van tussentoets Inleiding programmeren

Programmeermethoden. Pointers. Walter Kosters. week 10: november kosterswa/pm/

Datastructuren: stapels, rijen en binaire bomen

Overerving & Polymorfisme

Datatypes Een datatype is de sort van van een waarde van een variabele, veel gebruikte datatypes zijn: String, int, Bool, char en double.

Tentamen Object Georiënteerd Programmeren TI oktober 2014, Afdeling SCT, Faculteit EWI, TU Delft

int getaantalpassagiers{): void setaantalpassagiers(int aantalpassagiers);

Hoofdstuk 1: Inleiding. Hoofdstuk 2: Klassen en objecten Datahiding: afschermen van implementatiedetails. Naar de buitenwereld toe enkel interfaces.

Examen Programmeren 2e Bachelor Elektrotechniek en Computerwetenschappen Faculteit Ingenieurswetenschappen Academiejaar juni, 2010

C++ programmeermethoden Bachelor Kunstmatige Intelligentie

Modeleren. Modelleren. Together UML. Waarvan maken we een model? overzicht les 14 t/m 18. ControlCenter 6.2

Datastructuren Werkcollege Intro

Introductie in C++ Jan van Rijn. September 2013

Datastructuren: stapels, rijen en binaire bomen

Tentamen Imperatief en Object-georiënteerd programmeren in Java voor CKI

Tweede deeltentamen Mobiel programmeren - versie 1 Vrijdag 2 februari 2018, uur

/20. richtlijnen. Lees deze richtlijnen! Log in op de pc met. login: paswoord: examen i examen001. Log in op. x.toledo.ucll.be

Oefententamen 2. Tijd: 2 uur. Maximaal aantal punten: 30. Naam: Studentnummer:

Scala. Korte introductie. Sylvia Stuurman

9 Meer over datatypen

Zelftest Programmeren in Java

IMP Uitwerking week 13

Vakgroep CW KAHO Sint-Lieven

Voorbeeldtentamen Inleiding programmeren (IN1608WI), Oktober 2003, , Technische Universiteit Delft, Faculteit EWI, Afdeling 2.

Tentamen Object Georiënteerd Programmeren TI januari 2013, Afdeling SCT, Faculteit EWI, TU Delft

Inleiding C++ Coding Conventions

voegtoe: eerst methode bevat gebruiken, alleen toevoegen als bevat() false is

Kleine cursus PHP5. Auteur: Raymond Moesker

EE1400: Programmeren in C BSc. EE, 1e jaar, , 3e college

Uitwerkingen Tweede deeltentamen Imperatief programmeren Vrijdag 15 oktober 2010, uur

Modelleren en Programmeren

Ingebouwde klassen & methodes

Uitwerkingen derde deeltentamen Gameprogrammeren Vrijdag 6 november 2015, uur

Een typisch programma in C en C++ bestaat uit een aantal onderdelen:

Programmeermethoden. Functies vervolg. Walter Kosters. week 5: 1 5 oktober kosterswa/pm/

Programmeren in Java 3

Dynamisch geheugen beheer

Objectgeoriënteerd programmeren in Java 1

Uitwerking Tweede deeltentamen Imperatief programmeren - versie 1 Vrijdag 21 oktober 2016, uur

Programmeermethoden. Recursie. week 11: november kosterswa/pm/


HOOFDSTUK 3. Imperatief programmeren. 3.1 Stapsgewijs programmeren. 3.2 If Then Else. Module 4 Programmeren

Een gelinkte lijst in C#

VI. Klassen en objecten

Uitwerking Tentamen Modelleren en Programmeren - versie 1 Woensdag 1 februari 2017, uur

Programmeren in C++ Efficiënte zoekfunctie in een boek

Informatica. Objectgeörienteerd leren programmeren. Van de theorie met BlueJ tot een spelletje met Greenfoot... Bert Van den Abbeele

Modelleren en Programmeren

Programmeren in Java les 3

DOMjudge teamhandleiding

Uitwerking Tentamen Modelleren en Programmeren - versie 1 Woensdag 1 februari 2017, uur

Tentamen Objectgeorienteerd Programmeren TI februari Afdeling ST Faculteit EWI TU Delft

Voorbeeld: Simulatie van bewegende deeltjes

Datastructuren en algoritmen

colleges recursieve datastructuren college 9 prioriteit van operatoren prioriteit in recursive descent parser

Modulewijzer Tirdat01

Gertjan Laan Aan de slag met C++ Vijfde editie

Tentamen Programmeren in C (EE1400)

APPLICATIEBOUW 3E COLLEGE: OBJECT GEORIËNTEERD PROGRAMMEREN, METHODEN, PARAMETERS, SCOPE VAN VARIABELEN. Onderdeel van SmartProducts

Teamhandleiding DOMjudge (versie 2.2.0muKP) 31 mei 2008

import java.io.*; één klasse public class Hallo { public static void main (String[] a) ...met één functie System.out.println("Hallo!

Versie 2: B C D D A C D A C C. Versie 3: C D A A B D A B D D. Versie 4: A D C C B D C B D D. Versie 5: B A D D C A D C A A

Tentamen Objectgeorienteerd Programmeren IN1205 Voorbeeld

Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 6 november 2015, uur

Uitwerking Aanvullend tentamen Imperatief programmeren Woensdag 24 december 2014, uur

Verslag Opdracht 4: Magische Vierkanten

Visual Basic.NET. Visual Basic.NET. M. den Besten 0.3 VB. NET

Ontwerp van Informatiesystemen

Een fragment wordt afgeleid van de basis klasse "Fragment".

Als een PSD selecties bevat, deelt de lijn van het programma zich op met de verschillende antwoorden op het vraagstuk.

Instructies en blokken

Lineaire data structuren. Doorlopen van een lijst

Objectgeorïenteerd werken is gebaseerd op de objecten die door het systeem gemanipuleerd worden.

Lessen Java: Reeks pag. 1

Deel 1: Arduino kennismaking. Wat is een microcontroller, structuur van een programma, syntax,

Tentamen Imperatief Programmeren

EE1400: Programmeren in C BSc. EE, 1e jaar, , 4e college

Transcriptie:

CPP 1 van 10 ADSdt 1-2009 TENTAMENVOORBLAD Voor aanvang van het tentamen s.v.p. de tentamengegevens goed doorlezen om eventuele misverstanden te voorkomen!! Naam student : Studentnummer : Groep : Studieonderdeel : C++ voor Java Programmeurs (CPP) Datum : 26-01-10 Tijd : 8:30-10:10 Propedeuse/Hoofdfase : Afstudeerfase Studiejaar : 2009/2010 Docent : Eric Ravestein Aantal bladz. (incl.voorblad) : 10 Toegestane hulpmiddelen : geen Normering tentamen : Elke vraag scoort 1 punt tenzij anders aangegeven. Het cijfer is de (2+totaalscore)/2 Bijzonderheden : Vul het antwoord bij de betreffende tentamenopgave in. Tenzij anders aangegeven zijn bij de multiple choice vragen één of meerdere antwoorden mogelijk. Onduidelijke markeringen of onleesbare tekst wordt fout gerekend. Dit tentamen dient na afloop te worden ingeleverd! Veel succes!

CPP 2 van 10 Vraag 1 Wat is het resultaat van het volgende programma? ADSdt 2-2009 class Hoofd { protected: int x,y; virtual int berekening() {return x*y; ; class Afgeleid: public Hoofd { Afgeleid(int x, int y) {this->x = x; this->y=y; int berekening() {return 2*x; ; void fie1(hoofd h) {cout <<"resultaat : "<< h.berekening() << endl; void fie2(hoofd* h) {cout <<"resultaat : "<< h->berekening() << endl; { Afgeleid a(3,4); fie1(a); fie2(&a); Vraag 2 /******************************* * argument.cpp * aanroep: * d:\argument Jan code=4 * *******************************/ { cout << argc << endl; for (int i=0;i<argc;i++) cout << argv[i] << endl;

CPP 3 van 10 ADSdt 3-2009 Vraag 3 Is het volgende programma correct? /********** * Punt.h **********/ class Punt { double x,y; Punt(); void setpunt(double,double ); string tostring(); ; /************** * Punt.cpp **************/ #include "Punt.h" #include <sstream> Punt::Punt(){x=0.0;y=0.0; void Punt::setPunt(double x,double y){ this->x=x; this->y=y; string Punt::toString(){ ostringstream ss(ostringstream::out); ss << "("<<x<<","<<y<<")"; return ss.str(); /********** * Driehoek.h **********/ #include "Punt.h" class DrieHoek { Punt pa, pb, pc; void seta(double, double ); void setb(double, double ); void setc(double, double ); string tostring(); ; /******************* * DrieHoek.cpp *******************/ #include "DrieHoek.h" #include <sstream> void DrieHoek::setA(double x, double y) {pa.setpunt(x,y); void DrieHoek::setB(double x, double y) {pb.setpunt(x,y); void DrieHoek::setC(double x, double y) {pc.setpunt(x,y); string DrieHoek::toString() { string s; s = "("+ pa.tostring()+";" + pb.tostring()+";" + pc.tostring()+")"; return s;

CPP 4 van 10 ADSdt 4-2009 /********************** * Main.cpp **********************/ #include "Punt.h" #include "DrieHoek.h" { Punt p,q; DrieHoek d; q.setpunt(2.0,0.0); cout << p.tostring()<< endl; d.seta(2.0,0.0);d.setb(0.0,2.0);d.setc(0.0,0.0); cout << "Driekhoek "<< d.tostring() << endl; De definitie van de klasse Driehoek moet tussen #ifndef... #endif compiler direcives. #include Punt.h moet uit Main.cpp worden verwijderd. De definitie van de klasse Punt moet tussen #ifndef... #endif compiler directives. Zowel de definities van de klassen Punt en Driehoek moeten tussen #ifndef... #endif compiler directives. De klasse Driehoek heeft geen constructor De member variabelen van de klassen Punt en Driehoek zijn niet private gedeclareerd Vraag 4 Is in het volgende programma sprake van memory leakage? class Klasse { int *pi; Klasse(int i) {pi = new int(i); ~Klasse(){delete pi; int getpi() {return *pi; ; { Klasse *v[5]; for (int i=0; i<5; i++) v[i]=new Klasse(i); delete v[i]; delete v; Nee, de array v wordt netjes vrijgegeven d.m.v. delete v; Ja, want delete is is niet correct. Het moet delete [] v zijn om een array vrij te geven. Nee, want er is een destructor gedefinieerd die pi delete. Ja, want de inhoud van de array wordt niet expliciet vrijgegeven. Nee, want v[i] wordt keurig vrijgegeven met delete v[i] Nee, want door het delete v wordt ook de gehele inhoud van v vrijgegeven.

CPP 5 van 10 Vraag 5 Is het volgende programma correct? ADSdt 5-2009 class Klasse { int mi; Klasse(int i) {mi=i; ; { Klasse k; Ja, geen probleem Nee, er is geen instantie van Klasse gemaakt. Dit is op te lossen door: k = new Klasse(); Nee, er is geen instantie van Klasse gemaakt. Dit is op te lossen door: k = new Klasse(5); Nee, de variabele k kan geen waarde krijgen omdat er geen default constructor is gedefinieerd, terwijl er wel een integer constructor is gedefinieerd. Nee, de default constructor is standaard aangemaakt en kent geen expliciete waarde toe aan mi. Vraag 6 Bekijk het volgende programma. Bij compileren geeft de compiler de volgende foutmelding: 8 D:\docs\HvA\Cpp\fout.cpp new types may not be defined in a return type 8 D:\docs\HvA\Cpp\fout.cpp extraneous `int' ignored 8 D:\docs\HvA\Cpp\fout.cpp `main' must return `int' Wat is er mis? class Klasse { int waarde ; int main(int c, char* v[]) { Klasse w; c=5; w.waarde=c; cout << w.waarde; De parameters van main moeten argc en argv[] zijn in plaats van c en v[]. De functie main mag geen int waarde terug geven. de parameter c van main is read only en mag dus niet worden veranderd werkt alleen als main wordt gestart met twee parameters b.v. main 5, "test" ";" vergeten na de klasse definitie. cin.get() levert geen int, zodat de return waarde van main niet correct is.

CPP 6 van 10 Vraag 7 ADSdt 6-2009 class Klasse { virtual void fie01(){cout << "Klasse ::fie01 "; void fie02(){cout << "Klasse ::fie02\n"; ; class Derived : public Klasse { virtual void fie01(){cout << "Derived::fie01 "; void fie02(){cout << "Derived::fie02\n"; ; { Klasse *pk= new Derived(); Derived d, *pd= new Derived(); d.fie01();d.fie02(); pk->fie01();pk->fie02(); pd->fie01();pd->fie02(); Vraag 8 void telop3(int i) {i++ ; void telop2(int &i) {i++ ; void telop4(int *pi){(*pi)++; int telop1(int i) {return (++i); { int x ; x = 10; cout << "start x = " << x << endl ; x=telop1(x+3);cout << "after telop3 x = " << x << endl ; telop2(++x);cout << "after telop2 x = " << x << endl ; telop3(x++);cout << "after telop1 x = " << x << endl ; telop4(&(x+=2));cout << "after telop4 x = " << x << endl ;

CPP 7 van 10 ADSdt 7-2009 Vraag 9 Het volgende programma geeft een compile error doordat de variabelen x en y uit de klasse Box private zijn en gebruikt worden in de globale functie foo. Wat moet je op de aangegeven regel toevoegen om het programma werken te krijgen? class Box { int x,y; Box(int xi,int yi) {x=xi;y=yi; // ******** Hier de regel code invullen //... // ; bool foo(box l,box r) {return (l.x*l.y)>(r.x*r.y); { Box b1(3,4),b2(1,2); if (foo(b1,b2)) cout <<"b1>b2\n Vraag 10 (één antwoord mogelijk) Bekijk het volgende programma; Wat is de output? class Box { int x,y; ; void typeprint(box *v[]){ cout << "type : "<< typeid(v).name() ; cout << " : "<< typeid(v[0]).name(); cout << " : "<< typeid(*v[0]).name(); cout << " : "<< typeid((*v[0]).x).name() << endl; { Box *v[5]; v[0]= new Box(); typeprint(v); type: 3Box[5] : P3Box : 3Box: null type: 3Box : P3Box : PP3Box: i type: PP3Box : 3Box : P3Box: pi type: PP3Box : P3Box : 3Box: i type: 3Box[] : 3Box : null: null

CPP 8 van 10 Vraag 11 Wat is de output van het volgende statement: ADSdt 8-2009 cout << ((5&9)^(5 9)) << endl; Vraag 12 (één antwoord mogelijk) class K { int a,b; void set(int ia, int ib) {a=ia;b=ib; K(int ia,int ib) {a=ia;b=ib; bool operator >(K r) {return ((a*b)>(r.a*r.b)); void print() {cout <<"["<<a<<","<<b<<"]"; ; template <class T> T * maximaal(t *t1,t *t2) {if((*t1)>(*t2))return(t1); else return(t2); { K k1(1,2),k2(3,4); K *pk = maximaal(&k1,&k2); K k3 = * maximaal(&k1,&k2); pk->set(5,6); k1.print();k2.print();k3.print();pk->print(); [1,2][5,6][3,4][5,6] [1,2][3,4][3,4][5,6] [1,2][3,4][5,6][5,6] [1,2][5,6][5,6][3,4] Vraag 13 Wat is het verschil tussen een struct en een class? Een class kan variabelen en functies bevatten, een struct alleen variabelen. Een class kent een verschil tussen public en private functies en variabelen; een struct niet Bij een class zijn functies en variabelen bij default private, bij een struct bij default public Bij een class zijn functies en variabelen bij default public, bij een struct bij default private Een class kan afgeleid worden; een struct niet Van een class kan dynamisch een instantie worden gemaakt met de new operator; van een struct niet.

CPP 9 van 10 Vraag 14 ADSdt 9-2009 union UnionPrice { int yen; int dollar; ; struct StructPrice { int yen; int dollar; ; { UnionPrice up; StructPrice sp; sp.yen = 100; sp.dollar = 200; cout << "Struct: yen:"<< sp.yen << " dollar : "<< sp.dollar << endl;; up.yen = 100; up.dollar = 200; cout << "Union : yen:"<< up.yen << " dollar : "<< up.dollar << endl; Vraag 15 Wat is een Dangling Pointer? Een pointer, waar nog geen object aan is toegewezen. Een pointer nadat het betrokken object is vrijgegeven met delete Een pointer die wijst naar een object dat reeds is vrijgegeven. Een kopie van een andere pointer Vraag 16 (één antwoord mogelijk) { int a=4,b=2; int &c=b; c=4; cout << (c==b?"true, ":"false, "); cout << (&c==&b?"true, ":"false, "); cout << (a==b?"true, ":"false, "); cout << (&a==&b?"true ":"false "); false, true, false, true true, true, true, true true, true, true, false false, true, false, false

CPP 10 van 10 Vraag 17 ADSdt 10-2009 { int a=5; cout << (a?"true":"false"); Vraag 18 (één antwoord mogelijk) Wat is overloading? Het definieren van twee functies in dezelfde klasse met dezelfde naam, maar met een verschillend prototype. Het definieren van twee functies met dezelfde prototype in een klasse en de daarvan afgeleide klasse.