• No results found

Structuur van Computerprogrammas 2 2010 2011

N/A
N/A
Protected

Academic year: 2021

Share "Structuur van Computerprogrammas 2 2010 2011"

Copied!
4
0
0

Bezig met laden.... (Bekijk nu de volledige tekst)

Hele tekst

(1)

Schriftelijk Examen:

“Structuur van Computerprogramma’s II”

Eerste zittijd eerste semester, academiejaar 2011-2012

Coen De Roover, Vrije Universiteit Brussel

20 januari 2011

Het examen bestaat uit 5 vragen. Lees alle vragen

aan-dachtig. Zet je naam, studierichting en rolnummer op elke

pagina die je afgeeft. Veel succes!

Vraag 1: Geheugenbeheer Bespreek bondig volgende termen aan de hand van

C++ code:

a) memory leak

b) dangling pointer

Vraag 2: Functies Bespreek bondig volgende termen aan de hand van C++ code:

a) function overloading

b) function overriding

Vraag 3: Objectgericht programmeren Bespreek de omstandigheden waarin

volgende vormen van overerving aangewezen zijn:

a) virtual inheritance

b) private inheritance

Vraag 4: Generisch programmeren Vervolledig volgend programma met

a) een template function

foreach

b) een template class

Printer

(2)

zodanig dat zowel de elementen van de array

a

als de elementen van de

vector

v

geprint worden op

cout

:

1 # include <iostream > // voor cout 2 # include <vector >

3

4 using namespace std ; 5

6 // h i e r te v e r v o l l e d i ge n met d e f i n i t i e s voor a ) P r i n t e r en b ) foreach 7 8 i n t main ( ) { 9 Pr i nt e r <int> p ; 10 11 vector <int> v ; 12 v . push_back ( 1 0 ) ; 13 v . push_back ( 2 0 ) ;

14 foreach ( v . begin ( ) , v . end ( ) ,p) ; 15

16 i n t a [ ] = { 1 0 , 2 0 } ; 17 foreach ( a , a+2 ,p) ; 18 return 0 ;

19 }

Vraag 5: Programmabegrip Voorspel de uitvoer van de volgende programma’s:

a) Betreffende controlestructuren:

1 # include <iostream > 2 using namespace std ; 3 4 i n t main ( ) { 5 f o r (i n t j = 0 ; j < 5 ; ++ j ) { 6 i f( j % 2) continue; 7 i n t i =0; 8 f o r ( ; i < 2 ; ++ i ) 9 i f ( i > 0) break; 10 cout << " j =" << j << " i =" << i << endl ; 11 } 12 return 0 ; 13 }

2

(3)

b) Betreffende exception handling en virtual functions:

1 # include <iostream > 2 using namespace std ; 3 4 s t r u c t Error { 5 v i r t u a l i n t l e v e l ( ) { return 1 ; } 6 } ; 7

8 s t r u c t SeriousError : public Error { 9 v i r t u a l i n t l e v e l ( ) { return 2 ; } 10 } ;

11

12 void g ( ) { cout << "ga"; throw SeriousError ( ) ; cout << "gb"; } 13

14 void f ( ) { cout << " f a "; g ( ) ; cout << " fb "; } 15 16 i n t main ( ) { 17 t r y { 18 cout << "ma"; 19 t r y { 20 f ( ) ; 21 cout << "mb"; 22 } //end of inner t r y

23 catch( Error e ) { cout << e . l e v e l ( ) ; throw; } 24 } //end of outer t r y

25 catch( SeriousError& e ) { cout << e . l e v e l ( ) ; } 26 catch( . . . ) { cout << 4 2 ; }

27 cout << endl ; 28 return 0 ; 29 }

(4)

c) Betreffende arrays en pointers:

1 # include <iostream > 2 using namespace std ; 3 4 void f (i n t* p , i n t* q , i n t* * r ) { 5 * r = q++; 6 *p = *q ; 7 } 8 9 main ( ) { 10 i n t a ( 5 ) ; 11 i n t b [ ] = { 2 , 3 } ; 12 i n t* c ; 13 f (&a , b , &c ) ;

14 cout << "a=" << a << " *c=" << *c << endl ; 15 return 0 ;

16 }

d) Betreffende constructoren en destructoren:

1 # include <iostream > 2 using namespace std ; 3 4 s t r u c t B { 5 B ( ) { cout << "cB" << endl ; } 6 ~B ( ) { cout << "dB" << endl ; } 7 } ; 8 9 s t r u c t A {

10 A ( ) { cout << "cA" << endl ; } 11 ~A ( ) { cout << "dA" << endl ; } 12 B b ; 13 } ; 14 15 i n t main ( ) { 16 A a ; 17 return 0 ; 18 }

4

Referenties

GERELATEERDE DOCUMENTEN

Beschikbaar gesteld door de Universiteit Leiden en Stichting Studiebegeleiding Leiden (SSL).. Voor meer examens,

Het uiteindelijk niet kunnen tonen van het legitimatiebewijs zal vrijwel zeker strafbaar gesteld moeten worden en consequenties voor de dader moeten hebben om te voorkomen dat

[r]

[r]

[r]

[r]

In dit alles werkten we naar een driehoeksvorm toe om de inverteerbaarheid van P te kunnen garanderen: de determinant is op teken na het product van de elementen op de

Tussentijdse Toets Bewijzen en Redeneren 1ste fase Fysica en Wiskunde.. woensdag 6 november 2013, 8:30–10:15 uur auditorium 200C Aud A en 200 C Aud