C++ programmeermethoden Bachelor Kunstmatige Intelligentie

Vergelijkbare documenten
C++ programmeermethoden Bachelor Kunstmatige Intelligentie

Academie voor ICT en Media 2013/2014

HOGESCHOOL VAN AMSTERDAM Informatica Opleiding. CPP 1 van 10

Introductie in C++ Jan van Rijn. September 2013

Datastructuren Werkcollege Intro

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

Datastructuren: stapels, rijen en binaire bomen

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

Datastructuren: stapels, rijen en binaire bomen

Aanvullende toets Gameprogrammeren (INFOB1GP) Woensdag 24 december 2014, uur

Advanced C ++ Programming Datastructuren 2018

Technology, Innovation & Society Delft

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

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

Examen Software Ontwikkeling I 2e Bachelor Informatica Academiejaar Januari, **BELANGRIJK** : Schrijf je naam onderaan dit blad

VOORBLAD SCHRIFTELIJKE TOETSEN

Teamhandleiding DOMjudge (versie 2.2.0muKP) 31 mei 2008

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

Universiteit van Amsterdam FNWI. Voorbeeld van tussentoets Inleiding programmeren

VOORBLAD SCHRIFTELIJKE TOETSEN

DOMjudge teamhandleiding

Inleiding C++ Coding Conventions

DOMjudge teamhandleiding

Online c++ leren programmeren:

Real-Time Systems (RTSYST)

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

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

Aanvullende toets Gameprogrammeren Woensdag 5 januari 2011, uur

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

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

Studiewijzer BACHELOR KUNSTMATIGE INTELLIGENTIE EXTRA KEUZENVAK VAK: C++ PROGRAMMEERMETHODEN

Dit document bevat informatie over make bij het eerstejaars college Programmeermethoden, Universiteit Leiden, najaar 2010, zie

Veel succes! 1. Gegeven is de volgende klasse:

Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 7 november 2014, uur

Faculteit Economie en Bedrijfskunde

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

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

Tweede deeltentamen Gameprogrammeren Vrijdag 17 oktober 2014, uur

Derde deeltentamen Gameprogrammeren Vrijdag 7 november 2014, uur

Inleiding Software Engineering! Unit Testing, Contracten, Debugger! 13 Februari 2014!

DIAGNOSTISCHE TOETS Softwaresystemen UITWERKING

De Leidsche Flesch Studievereniging voor Natuurkunde, Sterrenkunde, Wiskunde en Informatica sinds DLF Pointerworkshop

Programmeermethoden. Controle-structuren. Walter Kosters. week 3: september kosterswa/pm/

Werkvormen 84 SBU. Inhoud. !OOP = Object Oriënted Programming N C++ (niet volledig)

DOMjudge teamhandleiding

Technology, Innovation & Society Delft

Veel succes! 1. Deze opgave bestaat uit een aantal deelvragen. Houd het antwoord kort: één of twee zinnen per onderdeel kan al genoeg zijn.

Faculteit der Geneeskunde

Verslag Opdracht 4: Magische Vierkanten

Bachelor Kunstmatige Intelligentie

NAAM: Programmeren 1 Examen 31/08/2011

Zelftest Programmeren in Java

Modelleren en Programmeren

Uitwerking Aanvullend tentamen Imperatief programmeren Woensdag 24 december 2014, uur

NAAM: Programmeren 1 Examen 21/01/2011

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

Modelleren en Programmeren

Tentamen Objectgeorienteerd Programmeren TI februari Afdeling ST Faculteit EWI TU Delft

Computerspellen in soorten en maten

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

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

3 e jaars GameTech student C++ voor hobby, eerste programmeertaal Assistent bij een heleboel vakken

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

Modelleren en Programmeren

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

Programmeren in C++ (deel 1)

Programmeermethoden. Arrays (vervolg 2) Walter Kosters. week 9: 6 10 november kosterswa/pm/

Programmeren in Java 3

Modelleren en Programmeren

Vraag 1: HashTable [op 2 punten van de 20] Gegeven de header file HashTable.h van een hashtabel die pointers naar strings bijhoudt (in bijlage).

Programmeermethoden. Arrays (vervolg 2) Walter Kosters. week 9: 5 9 november kosterswa/pm/

Gertjan Laan Aan de slag met C++ Vijfde editie

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

Inleiding programmeren

Deeltentamen Grammatica s en ontleden 22 december 2005

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

Elementary Data Structures 3

Uitwerkingen Tweede deeltentamen Imperatief programmeren Vrijdag 15 oktober 2010, uur

Tweede college algoritmiek. 12 februari Grafen en bomen

Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 9 november 2018, uur

public Bier ( string N, double P, Brouwerij B) { Naam = N; AlcoholPerc = P; Brouwer = B;


Kwis (3) class X { public void a() { System.out.println("x"); public static void main(string[] args) { X x = new X();

Vakgroep CW KAHO Sint-Lieven

9 Meer over datatypen

4EE11 Project Programmeren voor W. College 2, , Blok D Tom Verhoeff, Software Engineering & Technology, TU/e

Ingebouwde klassen & methodes

Opgave 2. De rivier. Je programma s lezen de informatie over de rivier van standard input.

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

Objectgeoriënteerd Programmeren in C++

Programmeermethoden. Types. Walter Kosters. week 2: september kosterswa/pm/

Instructies en blokken

Veel succes! 1. Deze opgave bestaat uit een aantal vragen. Houd het antwoord kort: één of twee zinnen per onderdeel kan al genoeg zijn.

Aanvullende toets Gameprogrammeren (INFOB1GP) Vrijdag 3 januari 2014, uur

Algoritmiek. 15 februari Grafen en bomen

b.text = "Rol!"; b.location = new Point(100, 0); b.click += this.rol; this.paint += this.teken;

Examen Programmeren I 2e Bachelor Elektrotechniek en Computerwetenschappen Faculteit Ingenieurswetenschappen Academiejaar juni 2011

Inhoud. Les 13 Les 16 Les 19 Les 2 Les 5 Les 8 Les 11 Les 14 Les 17 Les 20 Les 3. Les 1. Les 7. Les 4. Les 10. Les 12 Les 15. Les 6.

Veel succes! 1. Deze opgave bestaat uit een aantal deelvragen. Houd het antwoord kort: één of twee zinnen per onderdeel kan al genoeg zijn.

Transcriptie:

C++ programmeermethoden Bachelor Kunstmatige Intelligentie laatste (2e) Deeltentamen Datum: 1 juni 2017 Tijd: 17.00-19.00 Aantal pagina s: 12 (inclusief voorblad) Aantal vragen: 5 Maximaal aantal te behalen punten: 10 VOORDAT U BEGINT Wacht tot u de instructie krijgt het tentamen te openen. Controleer of uw versie van het tentamen compleet is. Schrijf uw naam en studentnummer en indien van toepassing versienummer op elk vel papier dat u inlevert en nummer de pagina s. U dient uw mobiele telefoon uit te schakelen en te bewaren in uw jas of tas. Uw jas en tas moeten onder uw tafel liggen. Toegestane hulpmiddelen: boek & notities & laptop (alleen voor lezen van ebook niet voor compileren!).

HUISHOUDELIJKE MEDEDELINGEN De eerste 30 minuten en de laatste 15 minuten mag u de zaal niet verlaten, ook niet voor het bezoeken van het toilet. Op verzoek van de examinator (of diens vertegenwoordiger) moet u zich kunnen legitimeren met een bewijs van inschrijving of een geldig legitimatiebewijs. Tijdens het tentamen is toiletbezoek niet toegestaan, tenzij de surveillant hier toestemming voor geeft. 15 minuten voor het eind wordt u gewaarschuwd dat het inlevertijdstip nadert. Vul indien van toepassing na afloop van het tentamen alstublieft het evaluatieformulier in. Succes! 2

C++ programmeermethoden Deeltoets 2 Donderdag 1 Juni, 17:00-19:00, Science Park zaal C0.05 Bas Terwijn Schakel de Wifi en eventuele andere communicatie-mogelijkheden (bluetooth, telefonie, mobiel internet, etc.) van uw mobiel, laptop, tablet, e-reader, etc. uit. Gebruik uw laptop, tablet of e-reader alleen voor het lezen van uw ebook. Andere windows (bv. een command prompt of IDE) kunnen worden aangezien als fraude zoals beschreven in de UvA Fraude- en plagiaatsregeling. Fraude kan leiden tot uitsluiting van deelname aan dit vak of in het uiterste geval tot beindiging van de inschijving bij opleidingen van de UvA. Kom dus niet in de verleiding en houd ook de schijn tegen. Als een vraag onduidelijk mochten zijn, dan bent u vrij in het maken van een redelijke aanname. Vermeldt deze aanname bij uw antwoord. 3

Vraag 1 (2 punten) Wat is de uitvoer van het onderstaande programma? #include <iostream> using namespace std; void swapa(int a, int b) int temp=a; a=b; b=temp; void swapb(int& a, int& b) int temp=a; a=b; b=temp; void swapc(int* a, int* b) int* temp=a; a=b; b=temp; void swapd(int* a, int* b) int temp=*a; *a=*b; *b=temp; void swape(int*& a, int*& b) int temp=*a; *a=*b; *b=temp; void swapf(int** a, int** b) int* temp=*a; *a=*b; *b=temp; int main() int a,b; a=100; b=200; swapa( a, b ); a=100; b=200; swapb( a, b ); a=100; b=200; swapc( &a, &b ); a=100; b=200; swapd( &a, &b ); cout<<"a: "<<a<<","<<b<<endl; cout<<"b: "<<a<<","<<b<<endl; cout<<"c: "<<a<<","<<b<<endl; cout<<"d: "<<a<<","<<b<<endl; 4

int *ap,*bp; // introducing pointer a=100; b=200; ap=&a; bp=&b; swape( ap, bp ); cout<<"e: "<<a<<","<<b<<endl; a=100; b=200; ap=&a; bp=&b; swapf( &ap, &bp ); cout<<"f: "<<a<<","<<b<<endl; return 0; 5

Vraag 2 (2 punten) A. Wat is de uitvoer van het onderstaande programma? B. Verklaar de verschillen in de uitvoer aan de hand van de termen deep copy en shallow copy. C. Leg uit welke problemen je waar en wanneer in deze code verwacht als je aan class A de destructor toe voegt om het geheugen van pointer data weer vrij te geven? #include <iostream> using namespace std; class A public: A() data=new int; *data=0; // A() delete data; // destructor is commented out int get() return *data; void set(int i) *data=i; protected: int* data; ; 6

class B : public A public: B() ; void operator=(const B& b) // assignment operator data=new int; *data=*(b.data); class C : public A public: C() ; void operator=(const C& c) // assignment operator data=c.data; int main() B b1,b2; b2=b1; // calls the assignment operator b1.set(100); cout<<"b: "<<b2.get()<<endl; C c1,c2; c2=c1; // calls the assignment operator c1.set(100); cout<<"c: "<<c2.get()<<endl; return 0; 7

Vraag 3 (2 punten) Wat is de uitvoer van het onderstaande programma? #include <iostream> using namespace std; class Animal public: virtual string says() const return "generic-animal-sound"; ; class Cat : public Animal public: string says() const return "meow"; ; 8

void peta(animal animal) cout<< animal.says() <<endl; void petb(animal* animal) cout<< animal->says() <<endl; void petc(const Animal* animal) cout<< animal->says() <<endl; void petd(animal animal) Animal* temp=&animal; cout<< temp->says() <<endl; void pete(animal* animal) Animal temp=*animal; cout<< temp.says() <<endl; int main() Animal *animal=new Cat(); cout<<"a: ";peta( *animal ); cout<<"b: ";petb( animal ); cout<<"c: ";petc( animal ); cout<<"d: ";petd( *animal ); cout<<"e: ";pete( animal ); delete animal; return 0; 9

Vraag 4 (2 punten) Het onderstaande programma dient een 3-dimensionale array te implementeren. Alleen de methodes get(...) (welke een array element leest) en set(...) (welke een array element schrijft) zijn nog niet gedefinieerd. A. Geeft een correcte definitie voor deze methodes zodat de 3-dimensionale array goed werkt. Het is niet nodig om source-code over te schrijven. B. Verschillende definities zijn mogelijk bij vraag A. Geef 1 van de termen die in het boek worden gebruikt om te beschrijven dat een gebruiker niet op de hoogte hoeft te zijn van de precieze implementatie van een class om deze te kunnen gebruiken? #include <iostream> #include <iomanip> // for setw using namespace std; class My3DArray public: My3DArray(int width,int height,int depth) : width(width), height(height), depth(depth) data=new int[width*height*depth]; // allocate memory int i=0; for (int z=0;z<depth;z++) for (int y=0;y<height;y++) for (int x=0;x<width;x++) set(x,y,z,i++); // set initial values My3DArray() delete[] data; // free allocated memory 10

void print() for (int z=0;z<depth;z++) for (int y=0;y<height;y++) for (int x=0;x<width;x++) cout<<setw(3)<<get(x,y,z); // get values cout<<endl; cout<<"--------------------"<<endl; int get(int x,int y,int z) /*** add your code here ***/ void set(int x,int y,int z,int value) /*** add your code here ***/ private: int width, height, depth; int *data; ; int main() My3DArray my3darray(2,3,4); my3darray.print(); 11

Vraag 5 (2 punten) A. Welke problemen kun je voorkomen door gebruik te maken van een namespace? B. Noem 2 belangrijke voordelen van een vector boven een dynamisch array. C. Wat stelt het keyword friend je in staat om te doen? en geef een voorbeeld waaruit blijkt dat dat ook echt nuttig is. Hier is niet noodzakelijk (werkende) source-code voor nodig. D. Wat stelt het keyword const je in staat om te doen met een methode en parameter? en geef een voorbeeld waaruit blijkt dat dat ook echt nuttig is. Hier is niet noodzakelijk (werkende) source-code voor nodig. The End! 12