Προγραμματισμός Υπολογιστών με C++ Φύλλο Διαγωνίσματος Ακαδημαϊκό εξάμηνο: Χειμερινό

Σχετικά έγγραφα
Προγραμματισμός Υπολογιστών με C++ Φύλλο Διαγωνίσματος Ακαδημαϊκό εξάμηνο: Χειμερινό

Προγραμματισμός Υπολογιστών με C++ Φύλλο Διαγωνίσματος Ακαδημαϊκό εξάμηνο: Χειμερινό

Ενδεικτικές Λύσεις σε Επιλεγμένα Θέματα της C++

ΚΑΤΑΣΚΕΥΑΣΤΕΣ ΑΝΤΙΓΡΑΦΗΣ

Ενδεικτικές Λύσεις σε Επιλεγμένα Θέματα της C++

Ενδεικτικές Λύσεις σε Επιλεγμένα Θέματα της C++

Προγραμματισμός Ι. Κλάσεις και Αντικείμενα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Υπολογιστών με C++

Ονοματεπώνυμο και ΑΜ: Είχα παραδώσει εργασίες τα εξής ακαδημαϊκά έτη: Διάρκεια: 2,5 ώρες, κλειστά βιβλία και σημειώσεις ΚΑΛΗ ΕΠΙΤΥΧΙΑ!

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128]

Αντικειμενοστρεφής Προγραμματισμός

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

Προγραμματισμός Υπολογιστών με C++

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #2

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

Ονοματεπώνυμο και ΑΜ: Είχα παραδώσει εργασίες τα προηγούμενα ακαδημαϊκά έτη: ΚΑΛΗ ΕΠΙΤΥΧΙΑ!

Κλήση Συναρτήσεων ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ. Γεώργιος Παπαϊωάννου ( )

Εισαγωγή σε αντικειμενοστραφή concepts. Και λίγη C#

Τύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( )

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf("%u\n", x); Β. unsigned char

Εισαγωγή στον Προγραµµατισµό, Αντώνιος Συµβώνης, ΣΕΜΦΕ, ΕΜΠ,, Slide 6

Αντικειµενοστρεφής Προγραµµατισµός

12. ΑΛΦΑΡΙΘΜΗΤΙΚΑ. υο είδη αλφαριθµητικών Τα αλφαριθµητικά της C πίνακες τύπου char Ta αντικείµενα της κλάσης string

ΕΠΛ131 Αρχές Προγραμματισμού

Αντικειμενοστραφής Προγραμματισμός

Προγραμματισμός Ι. Εισαγωγή στην C++ Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Υπολογιστών με C++

ΚΑΛΟΥΠΩΜΑΤΑ & ΜΕΤΑΤΡΟΠΕΣ

Προγραμματισμός Ι. Πίνακες, Δείκτες, Αναφορές και Δυναμική Μνήμη. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών

Κλάσεις και αντικείμενα #include <iostream.h<

Ενδεικτικές λύσεις και στατιστικά

Προγραμματισμός Ι. Δείκτες. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Διδάσκων: Παναγιώτης Ανδρέου

Προγραμματισμός Ι. Εγγραφές. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΘΕΩΡΗΤΙΚΗ ΑΣΚΗΣΗ 2 ΛΥΣΕΙΣ Γραμμικές Δομές Δεδομένων, Ταξινόμηση

Προγραμματισμός Υπολογιστών με C++

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ ΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ

Τελεστές ΤΕΛΕΣΤΕΣ. Γεώργιος Παπαϊωάννου ( )

Προγραμματισμός Υπολογιστών με C++

Εισαγωγή στον Προγραμματισμό

Οντοκεντρικός Προγραμματισμός

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΕΠΛ 035: οµές εδοµένων και Αλγόριθµοι για Ηλεκτρολόγους Μηχανικούς και Μηχανικούς Υπολογιστών

POINTERS, AGGREGATION, COMPOSITION

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές

Προαπαιτούμενες Ασκήσεις 5 ου Εργαστηρίου. Dose stoixeio (integer) : 25 Found stoixeio in position 7 Dose stoixeio (integer) :94 Value not found

Εργαστήριο 10 Κλάσεις

ΠΑΝΕΛΛΑΔΙΚΕΣ ΕΞΕΤΑΣΕΙΣ ΗΜΕΡΗΣΙΩΝ ΕΠΑΛ ΤΡΙΤΗ 11 ΙΟΥΝΙΟΥ 2019 ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ

Α Β Γ static; printf("%c\n", putchar( A +1)+2); B DB BD. int i = 0; while (++i); printf("*");

Εργαστήριο Java. Διδάσκουσα: Εργαστηριακοί Συνεργάτες:

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011

Αντικειμενοστραφείς Γλώσσες Προγραμματισμού C++ / ROOT

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Δοµές Δεδοµένων

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Αναφορές-Παράμετροι

Υπερφόρτωση τελεστών

17TimeThis.h function returns reference pointer to same object { return *this; }

Διάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου

Αντικειμενοστρεφής Προγραμματισμός

Αναφορές, είκτες και Αλφαριθμητικά

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 26/2/2008

Προχωρημένα Θέματα ΠΡΟΧΩΡΗΜΕΝΑ ΘΕΜΑΤΑ. Γεώργιος Παπαϊωάννου ( )

ΣΥΝΟΛΟ ΣΕΛΙ ΩΝ: ΕΠΤΑ (7)

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Υπάρχουσες κλάσεις και αντικείμενα στην Java Strings Wrapper Classes Δομές

ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ ΚΑΙ ΠΟΛΥΜΟΡΦΙΣΜΟΣ

Τελικό τεστ - απαντήσεις

Οντοκεντρικός Προγραμματισμός

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Σύνθεση αντικειμένων

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07

Αντικείμενα στη Java. Παύλος Εφραιμίδης. Java Αντικείμενα στη Java 1

Φροντιςτήριο. Linked-List

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Αντικείμενα (Objects) στην Java. Αντικείμενα στη Java. Δημιουργία Αντικειμένων. Δηλώσεις Μεταβλητών (2) Ο τελεστής new (1)

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Κανονική εξέταση, Φεβρουάριος 2005

Απλές Δοµές Δεδοµένων Στην ενότητα αυτή θα γνωρίσουµε ορισµένες απλές Δοµές Δεδοµένων και θα τις χρησιµοποιήσουµε για την αποδοτική επίλυση του προβλή

Αντικειμενοστραφείς Γλώσσες Προγραμματισμού C++ / ROOT

Στοιχειώδης προγραμματισμός σε C++

Αντικειμενοστραφής Προγραμματισμός

Ανακτήθηκε από την ΕΚΠΑΙΔΕΥΤΙΚΗ ΚΛΙΜΑΚΑ

Συλλογές, Στοίβες και Ουρές

Προηγµένα Θέµατα Τεχνολογιών Υλοποίησης Αλγορίθµων

ΓΛΩΣΣΙΚΗ ΤΕΧΝΟΛΟΓΙΑ. Python & NLTK: Εισαγωγή

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java III

Κεφάλαιο 8.7. Πολυδιάστατοι Πίνακες (Διάλεξη 19)

ΣΤΟΙΧΕΙΑ ΤΗΣ ΓΛΩΣΣΑΣ C++ Constructors, Destructors, Pointers IO Streams, File Streams

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

Οντοκεντρικός Προγραμματισμός

Προγραμματισμός Υπολογιστών με C++

παράδοση έως: Παρασκευή 11 Ιανουαρίου 2019

Προγραμματισμός Υπολογιστών με C++

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΚΑΙ ΠΙΝΑΚΕΣ

Προγραμματισμός Υπολογιστών με C++

Εργαστήριο 02: Προγραμματισμός με Γενικούς Τύπους (JAVA Generics) ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Μνήμης Αντικείμενα ως ορίσματα

Η εντολή if-else. Η απλή μορφή της εντολής if είναι η ακόλουθη: if (συνθήκη) { Η γενική μορφή της εντολής ifelse. εντολή_1; εντολή_2;..

Βιβλιοθήκες Αφηρημένοι τύποι δεδομένων. Προγραμματισμός II 1

ιαφάνειες παρουσίασης #6 (β)

Εργαστήριο 5. Εαρινό Εξάμηνο

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Οντοκεντρικός Προγραμματισμός

Transcript:

Προγραμματισμός Υπολογιστών με C++ Φύλλο Διαγωνίσματος Ακαδημαϊκό εξάμηνο: Χειμερινό 2013-14 Διδάσκων: Γεώργιος Παπαϊωάννου Μονογραφή επιτηρητή: Στοιχεία Φοιτητή (συμπληρώνεται από το φοιτητή) Όνομα: Αίθουσα/αμφιθέατρο: Επίθετο: Όνομα πατέρα: Έτος παράδοσης τελευταίων εργασιών: Αριθμός εργασιών: Αριθμός Μητρώου: Έτος σπουδών: Βαθμολογία (συμπληρώνεται από τον διδάσκοντα) Όλα τα πεδία συμπληρώνονται με κεφαλαία γράμματα Γραπτό Ενότητα 1 Ενότητα 2 Ενότητα3 Σύνολο Εργασίες Εργασία 1 Εργασία 2 Εργασία 3 Εργασία 4 * Σύνολο Αναγωγή στις 30 μονάδες (*) αφορά μόνο παλαιότερους φοιτητές. Οι εργασίες προσμετρώνται μόνο αν παραδόθηκαν στο ακαδ. Έτος 2011-12 και μετά. Παρατηρήσεις Επόπτη Συνολικός Βαθμός: Γενικές Οδηγίες Συμπληρώστε τα στοιχεία που σας ζητούνται στην πρώτη σελίδα πριν ξεκινήσετε να απαντάτε στα ερωτήματα. Όλα τα ερωτήματα πρέπει να απαντηθούν στο χώρο που δίνεται στο ερώτημα και μόνο εκεί. Καμία παραπομπή σε άλλο σημείο δε θα γίνει δεκτή. Πρόχειρες σημειώσεις μπορείτε να κρατήσετε μόνο στο χώρο που σας δίνεται στην τελευταία σελίδα του φύλλου εξέτασης το οποίο αποτελεί μέρος του γραπτού και παραδίδεται μαζί με τις απαντήσεις. Οποιαδήποτε σημείωση σε άλλο σημείο του φύλλου εξέτασης επιφέρει μείωση βαθμού. Η διάρκεια του διαγωνίσματος είναι 3 ώρες και η συνολική βαθμολογία του γραπτού είναι 70 μονάδες ( βαθμός 7). Η εργασία προσμετράται μόνο για γραπτά με βαθμό 3,5. Δεν επιτρέπεται η χρήση σημειώσεων, βιβλίων ή άλλων βοηθημάτων. Σύμφωνα με τον κανονισμό του πανεπιστημίου απαγορεύεται ρητά η χρήση κινητών τηλεφώνων και άλλων ηλεκτρονικών συσκευών κατά τη διάρκεια του διαγωνίσματος. Σε περίπτωση που ο επόπτης διαπιστώσει οποιαδήποτε απόπειρα αντιγραφής, συνεννόησης ή επικοινωνίας των θεμάτων, αφαιρεί επί τόπου το φύλλο εξέτασης, σημειώνει την αιτία και ο φοιτητής αποβάλλεται από την αίθουσα.

Ενότητα 1 (20 μονάδες) Απαντήστε στις ακόλουθες ερωτήσεις, συμπληρώνοντας την απάντησή σας στα κενά που παρέχονται. Όπου απαιτείται δικαιολόγηση, συμπληρώστε τη σύντομα στον αντίστοιχο χώρο. string a = Marco Polo ; Ποια είναι η τιμή του *( & ( a.c_str() [2])+1 ) ; H string::c_str() επιστρέφει τον πίνακα χαρακτήρων ενός string. class B{virtual void foo(){ ; class C : public B {; Ποια είναι η τιμή του C * c =(dynamic _cast< C*> (new B()) ); (1 μονάδες) Δικαιολογήστε την απάντησή σας: Συμπληρώστε τον κατάλληλο κώδικα στα κενά (όπου χρειάζεται) ώστε να μην διαρρεύσει στο τέλος του κώδικα μνήμη και να μη διαβαστεί άκυρη μνήμη. Δεν επιτρέπεται να αλλάξετε τη σειρά των γραμμών ή να συμπληρώσετε κώδικα εκτός κενών. char * data1 = new char[50]; data1[1] = a ; ; ; char * data2 = new char[60]; data2[1] = b ; ; ; data1 = data2; ; ; if ( ) { cout << data1[1]; class Integer { public: int value; operator ( ) { ; Ορίστε και υλοποιήστε τον παραπάνω τελεστή ώστε να μπορούμε να εισάγουμε αντικείμενα τύπου Integer σε ένα set<integer>. Θυμηθείτε ότι το set περιέχει μοναδικά και ταξινομημένα στοιχεία. (5 μονάδες)

string *p1 = new string( hello ); string *p2 = new string( world ); string *p3 = new string(!!! ); cout << p1 << << p2 << << p3 << endl; string *m[3] = {p1, p2, p3; // εκτυπώνεται: 0xffa0 0xffb1 0xffd5 // Σημείωση: 32bit αρχιτεκτονική cout << m; // εκτυπώνεται: 0x1000 cout << m[ ]; // εκτυπώνεται: 0xffb1 (1 μονάδα) cout << &m[1]; // εκτυπώνεται: (1 μονάδα) cout << m[ ]; // εκτυπώνεται:!!! (1 μονάδα) cout << m; // εκτυπώνεται: hello (1 μονάδα) cout << &*m[1]; // εκτυπώνεται: (1 μονάδα) Ενότητα 2 (20 μονάδες) Μαρκάρετε μια και μόνο απάντηση σε κάθε ένα από τα ακόλουθα θέματα πολλαπλών επιλογών και δώστε σύντομη αιτιολόγηση της απάντησής σας στο χώρο που παρέχεται ακριβώς από κάτω. char buf[] = { a, b ; Ποιο θα είναι το αποτέλεσμα τις πράξης: cout << *( (long *) ( (void*) buf ) +1); α) Τυπώνει το χαρακτήρα b. β) Τυπώνει τον ASCII κωδικό (αριθμό) που αντιστοιχεί στο χαρακτήρα b. γ) Τυπώνει κάτι απροσδιόριστο δ) Παράγει compilation error Απάντηση: (2 μονάδες) Δικαιολογήστε την απάντησή σας: const int i =0; char buf[] = {10,20,30; cout << buf[i++] << and << buf[i] << end; Τι θα συμβεί; Απάντηση: (2 μονάδες) α) Τυπώνει 10 and 20 β) Τυπώνει 20 and 30 γ) Προκαλεί run-time error δ) Προκαλεί compilation error

Δικαιολογήστε την απάντησή σας: void MyFunc(int * & data) {data++; void main () { int a = 5; MyFunc(&a); cout << a; Τι θα συμβεί; Απάντηση: (2 μονάδες) α) Τυπώνει 6 β) Τυπώνει 5 γ) Τυπώνει κάτι απροσδιόριστο δ) Προκαλεί compilation error Δικαιολογήστε την απάντησή σας: void MyFunc(const int data) {cout << data; void main () { int a = 5; int b = 3; MyFunc(a+b); Τι θα συμβεί; Απάντηση: (1 μονάδες) α) Τυπώνει 5 β) Τυπώνει 3 γ) Τυπώνει 8 δ) Προκαλεί compilation error Δικαιολογήστε την απάντησή σας: (4 μονάδες)

template <typename T> class Array {...; void main(int argc, char* argv[]) { Array<int> * a1 = new Array<int>(); Array<int> a2(); a2 = *a1; Τι θα συμβεί στη σημειωμένη γραμμή ( ); Απάντηση: (2 μονάδες) α) Καλείται ο copy constructor του a2 β) Η διεύθυνση του a2 γίνεται ίση με τον δείκτη a1 γ) Καλείται ο copy assignment operator του a2 δ) Προκαλεί compilation error Δικαιολογήστε την απάντησή σας: Ενότητα 3 (30 μονάδες) Συμπληρώστε στο χώρο που σας παρέχεται τον κώδικα για τα παρακάτω ερωτήματα. Οι απαντήσεις δε θα πρέπει να ξεπερνούν το όριο γραμμών που αναφέρεται σε κάθε περίπτωση. Δεν επιτρέπεται να δώσετε πολλαπλές γραμμές σε μια (π.χ. cout << a ; i++; ) template <typename T> class Number { public: T value; operator++ (int) { (7 μονάδες) // i++ ; Υλοποιήστε τον παραπάνω γενικό μεταθεματικό τελεστή της Number<T>. To T είναι γενικά αριθμός.

template <typename T> class ListNode { public: T data; ListNode<T> * next; ListNode(const ListNode<T> & src) { (8 μονάδες) ; template <typename T> class List { protected: ListNode<T> * start; public: List( const List<T> & src) { ; if (src.start == NULL) start = NULL; else start = new ListNode<T>( src.start ); Δώστε τον κώδικα για τον κατασκευαστή αντιγραφής της παραπάνω κλάσης ListNode έτσι ώστε να δημιουργείται πλήρες αντίγραφο των περιεχομένων που δείχνει ο κόμβος src. Βοήθεια: μπορεί να γίνει αναδρομικά. Η κλάση ListNode χρησιμεύει στην κατασκευή της λίστας List και ο κατασκευαστής αντιγραφής καλείται για να κάνει deep copy μιας λίστας, όπως φαίνεται. class Mystic { (7 μονάδες) private: string label; Mystic(string & newlbl) { setlabel (newlbl); public: void setlabel(string newlbl){label = newlbl; Mystic() : label(){; ; int main(int argc, char *argv[]) {... Αρχικοποιήστε ένα δείκτη σε αντικείμενο τύπου Mystic με τιμή Beep στον παραπάνω χώρο που δίνεται.

Συμπληρώστε τον κώδικα ώστε να δουλεύει το κύριο πρόγραμμα παρακάτω: class Shape { public: virtual void draw () = 0; virtual void print () { ; void main () { Shape *a = new Box(); a->print(); // τυπώνει I am a box (8 μονάδες) Πρόχειρο Χρησιμοποιήστε τον ακόλουθο περιγεγραμμένο χώρο ως πρόχειρο και μόνο αυτόν.

(Πρόχειρο - συνέχεια)