ΑΛΕΞΑΝ ΡΕΙΟ ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙ ΕΥΤΙΚΟ Ι ΡΥΜΑ ΘΕΣΣΑΛΟΝΙΚΗΣ ΕΡΓΟ: «ΕΝΙΣΧΥΣΗ ΣΠΟΥ ΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ» ΣΤΑ ΠΛΑΙΣΙΑ ΤΟΥ ΜΕΤΡΟ 2.2 «ΑΝΑΜΟΡΦΩΣΗ ΠΡΟΓΡΑΜΜΑΤΩΝ ΣΠΟΥ ΩΝ ΙΕΥΡΥΝΣΗ» ΕΝΕΡΓΕΙΑ 2.2.2 «ΟΛΟΚΛΗΡΩΣΗ ΤΗΣ ΙΕΥΡΥΝΣΗΣ ΚΑΙ ΑΝΑΜΟΡΦΩΣΗΣ ΤΩΝ ΠΡΟΓΡΑΜΜΑΤΩΝ ΣΠΟΥ ΩΝ ΤΗΣ ΤΡΙΤΟΒΑΘΜΙΑΣ ΕΚΠΑΙ ΕΥΣΗΣ» ΚΑΤΗΓΟΡΙΑ ΠΡΑΞΕΩΝ 2.2.2.γ «ΕΝΙΣΧΥΣΗ ΤΩΝ ΤΠΕ ΣΤΗΝ ΤΡΙΤΟΒΑΘΜΙΑ ΕΚΠΑΙ ΕΥΣΗ» ΠΑΚΕΤΟ ΕΡΓΑΣΙΑΣ 07 «Βελτίωση Περιεχοµένου Σπουδών του ΠΠΣ» ΑΥΓΟΥΣΤΟΣ 2006, ΘΕΣΣΑΛΟΝΙΚΗ
ΕΠΙΧΕΙΡΗΣΙΑΚΟ ΠΡΟΓΡΑΜΜΑ ΕΚΠΑΙ ΕΥΣΗΣ ΚΑΙ ΑΡΧΙΚΗΣ ΕΠΑΓΓΕΛΜΑΤΙΚΗΣ ΚΑΤΑΡΤΙΣΗΣ (ΕΠΕΑΕΚ ΙΙ) 2003-06 ΜΕΤΡΟ ΕΝΕΡΓΕΙΑ ΚΑΤΗΓΟΡΙΑ ΠΡΑΞΕΩΝ 2.2 2.2.2 2.2.2.γ ΦΟΡΕΑΣ ΥΛΟΠΟΙΗΣΗΣ ΤΟΥ ΕΡΓΟΥ ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΙΤΛΟΣ ΕΡΓΟΥ ΕΝΙΣΧΥΣΗ ΣΠΟΥ ΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΣΤΟ ΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΠΑΚΕΤΟ ΕΡΓΑΣΙΑΣ Π.Ε. 07 Α. ΣΤΟΙΧΕΙΑ ΤΟΥ ΥΠΕΥΘΥΝΟΥ ΕΡΓΟΥ Α.1 ΟΝΟΜΑΤΕΠΩΝΥΜΟ ΗΜΗΤΡΙΟΣ ΚΛΕΦΤΟΥΡΗΣ Α.2 ΘΕΣΗ ΣΤΟΝ ΦΟΡΕΑ ΚΑΘΗΓΗΤΗΣ ΤΜΗΜΑΤΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΙΕΥΘΥΝΤΗΣ ΣΧΟΛΗΣ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ Α.3 ΤΑΧΥ ΡΟΜΙΚΗ ΙΕΥΘΥΝΣΗ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ, ΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ, 54 01 ΘΕΣΣΑΛΟΝΙΚΗ Α.4 ΤΗΛΕΦΩΝΟ 2310 791299 Α.5 FAX 2310 791290 Α.6 ΗΛΕΚΤΡΟΝΙΚΟ klefturi@it.teithe.gr ΤΑΧΥ ΡΟΜΕΙΟ Β. ΣΤΟΙΧΕΙΑ ΤΟΥ ΥΠΕΥΘΥΝΟΥ ΤΟΥ Π.Ε. Β.1 ΟΝΟΜΑΤΕΠΩΝΥΜΟ ΜΙΧΑΗΛ ΒΑΣΙΛΑΚΟΠΟΥΛΟΣ Β.2 ΕΠΑΓΓΕΛΜΑ ΑΝΑΠΛΗΡΩΤΗΣ ΚΑΘΗΓΗΤΗΣ ΤΜΗΜΑΤΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Β.3 ΤΑΧΥ ΡΟΜΙΚΗ ΙΕΥΘΥΝΣΗ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ, ΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ, 54 01 ΘΕΣΣΑΛΟΝΙΚΗ Β.4 ΤΗΛΕΦΩΝΟ 2310 791595 Β.5 FAX 2310 791290 Β.6 ΗΛΕΚΤΡΟΝΙΚΟ vasilako@it.teithe.gr ΤΑΧΥ ΡΟΜΕΙΟ Γ. ΟΜΑ Α ΕΡΓΑΣΙΑΣ ΤΟΥ Π.Ε. Γ.1 ΟΝΟΜΑΤΕΠΩΝΥΜΑ κ. Βίτσας, κ. Κώστογλου, κα. Ζιώγου, κα. Μουρατίδου, κα. Αδαµίδου, κ. Παρασκευαΐδης, κ.λούρδας, κ. Χατζηµίσιος, κ. Κατωπόδης, κ. Στυλιάδης, κ. Χειµωνίδης, κ. Καµαργιάννης, κ. Αµανατιάδης, κ. Γουλιάνας, κ. Κεραµόπουλος, κ. Ψαρράς, κ. Κατσαβούνης, κ. Γιακουστίδης, κ. Βαλκάνος, κα. Κωνσταντινίδου, κ. Κοµµάτας, κ. Καράµπας, κ. Ηλιούδης, κ. αµιανίδης, κ. Χατζηπαπάς. Ενίσχυση Σπουδών Πληροφορικής - 2 - Πακέτο Εργασίας 07
. ΠΕΡΙΓΡΑΦΗ ΤΩΝ ΡΑΣΤΗΡΙΟΤΗΤΩΝ ΠΟΥ ΕΚΤΕΛΕΣΤΗΚΑΝ ΣΤΟ ΠΛΑΙΣΙΟ ΤΟΥ ΠΑΚΕΤΟΥ ΕΡΓΑΣΙΑΣ, ΣΥΜΦΩΝΑ ΜΕ ΤΟΝ ΧΡΟΝΙΚΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΤΟΥ ΤΕΧΝΙΚΟΥ ΕΛΤΙΟΥ ΕΡΓΟΥ, ΑΛΛΑ ΚΑΙ ΕΠΙΠΛΕΟΝ ΕΡΓΑΣΙΕΣ. 1) ηµιουργία Γραφείου εκπαιδευτικής βοήθειας 2) ηµιουργία 12 εργαστηριών από απόσταση: a. Προγραµµατισµός Ι b. Προγραµµατισµός ΙΙ c. Λειτουργικά Συστήµατα. ΙΙ d. Βάσεις Ι e. Μεθοδολογίες Προγραµµατισµού Ι f. οµές εδοµένων Ι g. Αριθ. Ανάλυση & Προγ. Επιστ. Εφαρµ.Ι h. Στατιστική i. Βάσεις ΙΙ j. Μεθοδολογίες Προγραµµατισµού ΙΙ k. ίκτυα l. Ηλεκτρονικό Εµπόριο 3) ηµιουργία µαθήµατος από απόσταση για την ανάπτυξη Επιχειρηµατικότητας 4) ηµιουργία ιστοτόπου για τη γλωσσοµάθεια Ενίσχυση Σπουδών Πληροφορικής - 3 - Πακέτο Εργασίας 07
Περιεχόµενα 1. Εισαγωγή 5 2. Εργαστηριακές ασκήσεις 6 2.1. 1 η Εργαστηριακή Άσκηση 6 2.2. 2 η Εργαστηριακή Άσκηση 6 2.3. 3 η Εργαστηριακή Άσκηση 7 2.4. 4 η Εργαστηριακή Άσκηση 8 2.5. 5 η Εργαστηριακή Άσκηση 9 2.6. 6 η Εργαστηριακή Άσκηση 10 2.7. 7 η Εργαστηριακή Άσκηση 10 2.8. 8 η Εργαστηριακή Άσκηση 11 2.9. 9η Εργαστηριακή Άσκηση 11 2.10. 10η Εργαστηριακή Άσκηση 12 Ενίσχυση Σπουδών Πληροφορικής - 4 - Πακέτο Εργασίας 07
1. Εισαγωγή Το εργαστήριο από απόσταση «Μεθοδολογίες Προγραµµατισµός Ι» άρχισε τη λειτουργία του από το εαρινό εξάµηνο 2003-2004 µε υπεύθυνο τον καθηγητή Αµανατιάδη ηµήτριο. Στην ενότητα 2 παρουσιάζονται οι εργαστηριακές ασκήσεις που πρέπει να επιλύσουν οι φοιτητές του εργαστηρίου απόσταση για την επιτυχή παρακολούθησή του. Για την διεξαγωγή των εργαστηριακών ασκήσεων είναι απαραίτητος ένας C++ compiler. Ενίσχυση Σπουδών Πληροφορικής - 5 - Πακέτο Εργασίας 07
2. Εργαστηριακές ασκήσεις 2.1. 1 η Εργαστηριακή Άσκηση Η εξοικείωση µε τη δοµή ενός προγράµµατος στη γλώσσα C++ και οι βασικές διαφορές από τη Java. (Να τονιστεί από την αρχή ότι στη C++ είναι δυνατόν να υλοποιήσουµε ρουτίνες χωρίς αυτές να είναι µέλη µιας τάξης. Συχνά γίνεται σύγχυση µε τη Java.) Η εξοικείωση µε τους βασικούς τύπους δεδοµένων. Οι µακροεντολές LINE, FILE, TIME 1. Να κατασκευαστεί πρόγραµµα το οποίο να ελέγχει αν ένα έτος που δίνεται από το πληκτρολόγιο είναι δίσεκτο. Για να υπολογίσουµε αν ένα έτος είναι δίσεκτο ακολουθούµε την παρακάτω διαδικασία: Αν ένα έτος διαιρείται ακριβώς µε το 400 είναι δίσεκτο. Αν το έτος διαιρείται ακριβώς µε το 4 και δεν διαιρείται µε το 100 τότε είναι δίσεκτο. Σε κάθε άλλη περίπτωση το έτος δεν είναι δίσεκτο. 2. Να κατασκευαστεί πρόγραµµα το οποίο να διαβάζει από το πληκτρολόγιο µια ηµεροµηνία στη µορφή dd/mm/yy και να ελέγχει την εγκυρότητα της (π.χ. η ηµεροµηνία 30/04/03 δεν είναι έγκυρη διότι ο Απρίλιος έχει 30 ηµέρες). Σε περίπτωση που η ηµεροµηνία δεν είναι έγκυρη να τυπώνει στην οθόνη την αιτιολογία, τη γραµµή του αρχείου πηγαίου κώδικα και την ώρα που συνέβη το σφάλµα καθώς και το όνοµα του αρχείου του πηγαίου κώδικα που συνέβη το σφάλµα. Στη συνέχεια να τυπώνει στην οθόνη την ηµέρα της εβδοµάδας ( ευτέρα, Τρίτη, ) που αντιστοιχεί στην ηµεροµηνία αυτή. Να ληφθούν υπόψη τα ακόλουθα: Η 01/01/20001 είναι ευτέρα. Οι µήνες 1,3,5,7,8,10,12 έχουν 31 ηµέρες Οι µήνες 4,6,9,11 έχουν 30 ηµέρες Ο Φεβρουάριος έχει 29 ηµέρες για έτη που δεν είναι δίσεκτα και 28 για τα δίσεκτα έτη. 3. Οι παραπάνω διαδικασίες να κατασκευαστούν υπό µορφή συναρτήσεων. Π.χ. bool IsLeapYear(int year=2000); int GetDayOfWeek(int ndayofmonth,int nmonth,int nyear); 2.2. 2 η Εργαστηριακή Άσκηση Ενίσχυση Σπουδών Πληροφορικής - 6 - Πακέτο Εργασίας 07
Η εξοικείωση µε τη διαχείριση αρχείων τα ρεύµατα και µε τους τύπους αρχείων (Αρχεία κειµένου και δυαδικά αρχεία). Οι τρόποι µορφοποίησης της εξόδου για τα ρεύµατα εξόδου. Τυχαία προσπέλαση αρχείων. Τα cin, cout ως ρεύµατα εισόδου δεδοµένων από το πληκτρολόγιο και εξόδου στην οθόνη. 1. Να διαβαστούν από το πληκτρολόγιο 10 αριθµοί κινητής υποδιαστολής και να γραφούν σε δυαδικό αρχείο. - Να υπολογιστεί το µέγεθος του αρχείου και να εκτυπωθεί στην οθόνη. (Μπορεί να υπολογιστεί θεωρητικά;). - Στη συνέχεια από το πληκτρολόγιο να διαβάζονται δύο αύξοντες αριθµοί από το 0 έως το 9. Ακολούθως να διαβάζονται µε τυχαία προσπέλαση από το αρχείο που είναι αποθηκευµένοι οι αριθµοί και τα αποτελέσµατα τους να παρουσιάζονται στην οθόνη. - Να διαβαστούν όλοι οι αριθµοί από το δυαδικό αρχείο και να γραφτούν σε αρχείο κειµένου ένας αριθµός σε κάθε γραµµή µε δεξιά ευθυγράµµιση και µε ακρίβεια δεκαδικών ψηφίων που θα καθορίζεται από το χρήστη (Να δίνεται ως είσοδος από το πληκτρολόγιο). - Οι παραπάνω διαδικασίες να υλοποιηθούν υπό µορφή συναρτήσεων. 2.3. 3 η Εργαστηριακή Άσκηση Ορισµός και χρήση πινάκων µονοδιάστατων δισδιάστατων, πολυδιάστατων. Πέρασµα πίνακα ως όρισµα σε συνάρτηση. είκτες, διαφορά από τους πίνακες δυναµική δέσµευση µνήµης, πέρασµα δεικτών ως παραµέτρους σε συναρτήσεις, δυναµική δέσµευση δισδιάστατων και πολυδιάστατων πινάκων, Αποδέσµευση µνήµης. 1. Να γράψετε συνάρτηση η οποία να διαβάζει από το πληκτρολόγιο ένα πίνακα 3χ3 ακέραιων αριθµών και να υπολογίζει τη µέση τιµή και την τυπική τους απόκλιση. 2. Να κατασκευαστεί συνάρτηση η οποία να παίρνει ως όρισµα ένα δισδιάστατο πίνακα, το πλήθος των γραµµών και των στηλών του και να υπολογίζει τον ανάστροφο του χωρίς να αλλοιώνει τον αρχικό πίνακα. 3. Να κατασκευαστεί συνάρτηση που θα λαµβάνει ως όρισµα ένα δισδιάστατο πίνακα το πλήθος των γραµµών και των στηλών του και Ενίσχυση Σπουδών Πληροφορικής - 7 - Πακέτο Εργασίας 07
θα επιστρέφει ένα πίνακα τύπου int ίδιων διαστάσεων µε τον αρχικό. Ο πίνακας αυτός θα δηµιουργείται µε την ακόλουθη λογική: - Στο στοιχείο του πίνακα όρισµα που υπάρχει 0 θα τίθεται η τιµή 0 στο αντίστοιχο στοιχείο του επιστρεφόµενου πίνακα. - Στο στοιχείο του πίνακα όρισµα που υπάρχει αρνητικός αριθµός θα τίθεται η τιµή 1 στο αντίστοιχο στοιχείο του επιστρεφόµενου πίνακα. - Στο στοιχείο του πίνακα όρισµα που υπάρχει θετικός αριθµός θα τίθεται η τιµή 1 στο αντίστοιχο στοιχείο του επιστρεφόµενου πίνακα 4. Να τροποποιήσετε τις παραπάνω διαδικασίες ώστε να δέχονται ως ορίσµατα δείκτες αντί για στατικά ορισµένους πίνακες, Να γίνει δυναµική δέσµευση µνήµης όπου αυτό κρίνεται απαραίτητο. Να γίνει αποδέσµευση της µνήµης όταν αυτή δεν είναι πλέον απαραίτητη. 2.4. 4 η Εργαστηριακή Άσκηση Ορισµός και χρήση πινάκων µονοδιάστατων δισδιάστατων, πολυδιάστατων. Πέρασµα πίνακα ως όρισµα σε συνάρτηση. είκτες, διαφορά από τους πίνακες δυναµική δέσµευση µνήµης, πέρασµα δεικτών ως παραµέτρους σε συναρτήσεις, δυναµική δέσµευση δισδιάστατων και πολυδιάστατων πινάκων, Αποδέσµευση µνήµης. 1. Να γράψετε συνάρτηση η οποία να διαβάζει από το πληκτρολόγιο ένα πίνακα 3χ3 ακέραιων αριθµών και να υπολογίζει τη µέση τιµή και την τυπική τους απόκλιση. 2. Να κατασκευαστεί συνάρτηση η οποία να παίρνει ως όρισµα ένα δισδιάστατο πίνακα, το πλήθος των γραµµών και των στηλών του και να υπολογίζει τον ανάστροφο του χωρίς να αλλοιώνει τον αρχικό πίνακα. 3. Να κατασκευαστεί συνάρτηση που θα λαµβάνει ως όρισµα ένα δισδιάστατο πίνακα το πλήθος των γραµµών και των στηλών του και θα επιστρέφει ένα πίνακα τύπου int ίδιων διαστάσεων µε τον αρχικό. Ο πίνακας αυτός θα δηµιουργείται µε την ακόλουθη λογική: - Στο στοιχείο του πίνακα όρισµα που υπάρχει 0 θα τίθεται η τιµή 0 στο αντίστοιχο στοιχείο του επιστρεφόµενου πίνακα. - Στο στοιχείο του πίνακα όρισµα που υπάρχει αρνητικός αριθµός θα τίθεται η τιµή 1 στο αντίστοιχο στοιχείο του επιστρεφόµενου πίνακα. - Στο στοιχείο του πίνακα όρισµα που υπάρχει θετικός αριθµός θα τίθεται η τιµή 1 στο αντίστοιχο στοιχείο του επιστρεφόµενου πίνακα Ενίσχυση Σπουδών Πληροφορικής - 8 - Πακέτο Εργασίας 07
4. Να τροποποιήσετε τις παραπάνω διαδικασίες ώστε να δέχονται ως ορίσµατα δείκτες αντί για στατικά ορισµένους πίνακες, Να γίνει δυναµική δέσµευση µνήµης όπου αυτό κρίνεται απαραίτητο. Να γίνει αποδέσµευση της µνήµης όταν αυτή δεν είναι πλέον απαραίτητη. 2.5. 5 η Εργαστηριακή Άσκηση οµή και βασικά στοιχεία µιας τάξης (constructors, destructors κ.τ.λ.). Η διαφορά του (.) και του (->) για την προσπέλαση των µελών µιας τάξης. ηµιουργία αντικειµένων και πίνακες αντικειµένων. Πολυµορφισµός. Κληρονοµικότητα. Εξαιρέσεις 1. Να κατασκευαστεί µία τάξη Point της οποίας τα αντικείµενα να αναπαριστούν σηµεία του επιπέδου µε συντεταγµένες (x,y). Να κατασκευαστεί δοµητής ο οποίος να δέχεται ως όρισµα τις συντεταγµένες (χ,ψ) του σηµείου, δοµητής αντιγραφής και ερήµην δοµητής. Κάθε φορά που καλείται ο αντίστοιχος δοµητής να εκτυπώνεται µήνυµα στην οθόνη µε στοιχεία που αφορούν τον τύπο του δοµητή που χρησιµοποιήθηκε. Να εφοδιάσετε την τάξη µε συναρτήσεις µέλη get,set για το χειρισµό των συντεταγµένων. Να εφοδιάσετε την τάξη µε συνάρτηση µέλος void rotate(double angle); η οποία να περιστρέφει * το σηµείο κατά γωνία angle ως προς την αρχή των αξόνων. Να γίνει υπερφόρτωση της παραπάνω συνάρτησης ώστε να περιστρέφει το σηµείο κατά γωνία angle ως προς σηµείο Point αντί της αρχής των αξόνων. Από την τάξη Point να παραχθεί η τάξη Shape, τα αντικείµενα της οποίας θα αναπαριστούν κλειστά πολύγωνα ως ένα σύνολο σηµείων. Να δηµιουργηθεί ο δοµητής της shape που θα έχει ως όρισµα τον αριθµό των σηµείων του πολυγώνου και ο αποδοµητής. Να γίνει υποσκέλιση των µεθόδων rotate ώστε να επιτελείται περιστροφή του πολυγώνου ως προς την αρχή των αξόνων και ως προς δεδοµένο σηµείο αντίστοιχα. * Αν έχουµε ένα σηµείο και το περιστρέψουµε κατά γωνία ως προς την αρχή των αξόνων θα προκύψει το σηµείο του οποίου οι συντεταγµένες δίνονται από τις σχέσεις. Αν η περιστροφή γίνει ως προς σηµείο αντί ως προς την αρχή των αξόνων οι νέες συντεταγµένες υπολογίζονται από τις σχέσεις. Ενίσχυση Σπουδών Πληροφορικής - 9 - Πακέτο Εργασίας 07
2.6. 6 η Εργαστηριακή Άσκηση οµή και βασικά στοιχεία µιας τάξης (constructors, destructors κ.τ.λ.). Η διαφορά του (.) και του (->) για την προσπέλαση των µελών µιας τάξης. ηµιουργία αντικειµένων και πίνακες αντικειµένων. Πολυµορφισµός. Κληρονοµικότητα. Εξαιρέσεις 1. Να κατασκευαστεί µία τάξη Point της οποίας τα αντικείµενα να αναπαριστούν σηµεία του επιπέδου µε συντεταγµένες (x,y). Να κατασκευαστεί δοµητής ο οποίος να δέχεται ως όρισµα τις συντεταγµένες (χ,ψ) του σηµείου, δοµητής αντιγραφής και ερήµην δοµητής. Κάθε φορά που καλείται ο αντίστοιχος δοµητής να εκτυπώνεται µήνυµα στην οθόνη µε στοιχεία που αφορούν τον τύπο του δοµητή που χρησιµοποιήθηκε. Να εφοδιάσετε την τάξη µε συναρτήσεις µέλη get,set για το χειρισµό των συντεταγµένων. Να εφοδιάσετε την τάξη µε συνάρτηση µέλος void rotate(double angle); η οποία να περιστρέφει * το σηµείο κατά γωνία angle ως προς την αρχή των αξόνων. Να γίνει υπερφόρτωση της παραπάνω συνάρτησης ώστε να περιστρέφει το σηµείο κατά γωνία angle ως προς σηµείο Point αντί της αρχής των αξόνων. Από την τάξη Point να παραχθεί η τάξη Shape, τα αντικείµενα της οποίας θα αναπαριστούν κλειστά πολύγωνα ως ένα σύνολο σηµείων. Να δηµιουργηθεί ο δοµητής της shape που θα έχει ως όρισµα τον αριθµό των σηµείων του πολυγώνου και ο αποδοµητής. Να γίνει υποσκέλιση των µεθόδων rotate ώστε να επιτελείται περιστροφή του πολυγώνου ως προς την αρχή των αξόνων και ως προς δεδοµένο σηµείο αντίστοιχα. * Αν έχουµε ένα σηµείο και το περιστρέψουµε κατά γωνία ως προς την αρχή των αξόνων θα προκύψει το σηµείο του οποίου οι συντεταγµένες δίνονται από τις σχέσεις. Αν η περιστροφή γίνει ως προς σηµείο αντί ως προς την αρχή των αξόνων οι νέες συντεταγµένες υπολογίζονται από τις σχέσεις: 2.7. 7 η Εργαστηριακή Άσκηση Ενίσχυση Σπουδών Πληροφορικής - 10 - Πακέτο Εργασίας 07
οµή και βασικά στοιχεία ενός προτύπου ή περιγράµµατος template (constructors, destructors,τύποι δεδοµένων κ.τ.λ.). Περίγραµµα συνάρτησης. Εξειδίκευση προτύπου. Περιορισµοί. Κληρονοµικότητα. Εξαιρέσεις 1. Να κατασκευαστεί ένα περίγραµµα συνάρτησης το οποίο να αντιµεταθέτει swap, δύο αντικείµενα οποιουδήποτε τύπου. Να εξειδικευτεί για τύπους int, double, Point. 2. Να κατασκευαστεί πρότυπο, το οποίο να υλοποιεί τη δοµή µιας διπλά συνδεδεµένης γραµµικής λίστας, και να εφοδιαστεί µε συναρτήσεις µέλη για προσθήκη στοιχείων στο τέλος και την αρχή της λίστας όπως επίσης και µε συναρτήσεις για την διαγραφή στοιχείων από το τέλος και την αρχή της λίστας. 3. Να γίνει υπερφόρτωση των τελεστών <<, >> για εγγραφή - ανάγνωση των στοιχείων της λίστας σε και από αρχείο κειµένου. 4. από το πρότυπο της λίστας να παραχθεί το πρότυπο µιας στοίβας και µιας ουράς. 2.8. 8 η Εργαστηριακή Άσκηση Επαναλήπτες (iterators) Αντίστροφοι επαναλήπτες Επαναλήπτες τυχαίας προσπέλασης Επαναλήπτες ανάγνωσης-εγγραφής Εξαιρέσεις 1. Τα πρότυπα του προηγούµενου εργαστηρίου να εφοδιαστούν µε µηχανισµό επαναληπτών για την διάσχιση των στοιχείων των αντίστοιχων δοµών. 2. Να γίνει οµαδοποίηση εξαιρέσεων για την σύλληψη σφαλµάτων υπερχείλισης, υποχείλισης, και σφαλµάτων ανάγνωσης εγγραφής από και προς το αρχείο κατά τη υλοποίηση των τελεστών <<, >>. 2.9. 9η Εργαστηριακή Άσκηση Γενικευµένες συναρτήσεις Ενίσχυση Σπουδών Πληροφορικής - 11 - Πακέτο Εργασίας 07
Αξιοποίηση και χρήση των επαναληπτών. 1. Να κατασκευαστεί γενικευµένη συνάρτηση sort η οποία να ταξινοµεί τα στοιχεία µιας ακολουθίας κατά αύξουσα σειρά. 2. Να εφαρµοστεί η παραπάνω συνάρτηση για πίνακες και για τα στοιχεία της λίστας που αναπτύξατε στα προηγούµενα εργαστήρια 3. Να τυπωθούν τα στοιχεία της ακολουθίας κατά αύξουσα και κατά φθίνουσα σειρά χωρίς να γίνει επαναταξινόµιση. 2.10. 10η Εργαστηριακή Άσκηση Περιέχοντες τύποι της STL. Αξιοποίηση και χρήση των επαναληπτών. Περιέχον τύπος string της καθιερωµένης βιβλιοθήκης προτύπων και οι συναρτήσεις µέλη find, find_first_of(), find_last_of(), find_first_not_of(), and find_last_not_of(),substr Ο περιέχον τύπος list της καθιερωµένης βιβλιοθήκης προτύπων. Ο περιέχον τύπος map της καθιερωµένης βιβλιοθήκης προτύπων. Επέκταση της καθιερωµένης βιβλιοθήκης για το χειρισµό πολυδιάστατων πινάκων, αραιών πινάκων και γράφων. 1. Να διαβαστεί ένα κείµενο από αρχείο κειµένου και να γραφτεί πρόγραµµα το οποίο να διασπά το κείµενο σε λέξεις βάσει διαχωριστών που είναι αποθηκευµένα σε ένα δεύτερο όρισµα τύπου string. Το αποτέλεσµα του προγράµµατος είναι µια λίστα που περιέχει τις λέξεις του κειµένου. Παράδειγµα: void split(string & text, string & separators, list<string> & words); 2. Να κατασκευαστεί ένας περιέχον τύπος matrix ο οποίος να υλοποιεί ένα δισδιάστατο πίνακα που ως γνωστό δεν είναι διαθέσιµος στην καθιερωµένη βιβλιοθήκη προτύπων. Το πρότυπο matrix να εφοδιαστεί µε τους τελεστές +,-,*, (αν αυτό είναι απαραίτητο), για την εκτέλεση των βασικών αριθµητικών πράξεων. Επίσης, Να εφοδιαστεί µε τις απαραίτητες εξαιρέσεις. 3. Να κατασκευάσετε ένα περιέχον τύπο SparseArray<class T> µε τη βοήθεια ενός δισδιάστατου map *, το οποίο υλοποιεί ένα δισδιάστατο αραιό πίνακα. Ο αραιός πίνακας µπορεί να υλοποιηθεί µε τη βοήθεια ενός δισδιάστατου map στο οποίο να εισάγονται µόνο τα στοιχεία του πίνακα που είναι µη µηδενικά. Στη συνέχεια να εφοδιαστεί µε τους τελεστές +,-,*, για την υλοποίηση των βασικών αριθµητικών πράξεων µεταξύ πινάκων. Επίσης, Να εφοδιαστεί µε τις απαραίτητες εξαιρέσεις. 4. Η άσκηση 2 να τροποποιηθεί για την δηµιουργία ενός περιέχοντος τύπου graph<class T> ο οποίος θα υλοποιεί ένα ζυγισµένο γράφο που θα αναπαριστά τις χιλιοµετρικές αποστάσεις µεταξύ πόλεων πχ. Ενίσχυση Σπουδών Πληροφορικής - 12 - Πακέτο Εργασίας 07
Graph[ Thess ][ Ath ]=540; Επίσης, Να εφοδιαστεί µε τις απαραίτητες εξαιρέσεις. * Γιατί map και όχι π.χ list? Ενίσχυση Σπουδών Πληροφορικής - 13 - Πακέτο Εργασίας 07