ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ201:

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ201:
Advertisements

ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
Διαφάνειες παρουσίασης #5
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Φροντιστήρια Εισηγητής: Σπύρος Αργυρόπουλος Μέλος ΕΤΕΠ Εργαστήριο Προγραμματισμού & Τεχνολογίας Ευφυών Συστημάτων.
Μήτρες (templates)  Μία μήτρα είναι ένα κομμάτι κώδικα που περιέχει παραμέτρους οι οποίες δέχονται ως τιμές τύπους δεδομένων.  Είναι ένας μηχανισμός.
ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ201:
ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ201:
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
Άσκηση 1. Θεωρούμε το ακόλουθο κομμάτι κώδικα int i,j; double result, a[110][4]; for(i=0; i
ΜΑΘΗΜΑ: ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C++ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Πέμπτη, 2 Απριλίου 2015Πέμπτη, 2 Απριλίου 2015Πέμπτη, 2 Απριλίου 2015Πέμπτη, 2 Απριλίου 2015Τμ.
Templates Standard Template Library (STL) Exceptions Μεταπτυχιακό Πρόγραμμα Σπουδών, Τμήμα Εφαρμοσμένης Πληροφορικής.
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
Έλεγχος Ονομάτων (Name Control) Για ένα πρόγραμμα που αποτελείται από πολλά τμήματα κάποια από τα οποία έχουν πιθανώς γραφτεί από άλλους προγραμματιστές.
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ201:
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
Διαφάνειες παρουσίασης #2
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ201:
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ201:
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ201:
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΜΑΚΙΓΙΑΖ.
ΣΥΜΜΟΡΦΩΣΗ ΣΕ ΔΙΚΑΣΤΙΚΕΣ ΑΠΟΦΑΣΕΙΣ Εισηγητές: - Κωνσταντίνος Μπλάγας, Δ/νων Σύμβουλος ΔήμοςΝΕΤ - Καλλιόπη Παπαδοπούλου, Νομική Σύμβουλος ΔήμοςΝΕΤ.
«Διγλωσσία και Εκπαίδευση» Διδάσκων: Γογωνάς Ν. Φοιτήτρια: Πέτρου Μαρία (Α.Μ )
Π.Γ.Ε.Σ.Σ ΚΑΡΝΑΡΟΥ ΧΡΙΣΤΙΝΑ Β2ΘΡΗΣΚΕΥΤΙΚΑ ΚΕΦΑΛΑΙΟ 5 ΣΕΛΙΔΕΣ ΕΡΓΑΣΙΕΣ Α-Δ.
ΛΟΓΙΣΤΙΚΗ ΚΟΣΤΟΥΣ ΤΕΧΝΙΚΕΣ ΚΟΣΤΟΛΟΓΗΣΗΣ Αποφάσεις Βάσει Οριακής & Πλήρους Κοστολόγησης Α.Τ.Ε.Ι. ΚΡΗΤΗΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ ΑΠΟΦΑΣΕΙΣ ΒΑΣΕΙ ΟΡΙΑΚΗΣ.
ΨΥΧΟΠΑΙΔΑΓΩΓΙΚΟ ΥΛΙΚΟ ΒΡΕΦΟΝΗΠΙΑΚΟΥ ΣΤΑΘΜΟΥ
Nacionalno računovodstvo
«Ο ΔΗΜΟΤΙΚΟΣ ΚΗΠΟΣ ΤΟΥ ΤΑΞΙΜΙΟΥ»
RADAR ZA PLOVILO ESMO Laboratorij za Sevanje in Optiko
ΜΑΘΗΜΑ 2.  Εργασία (άνθρωπος)  Φύση/Έδαφος (γη)  Κεφάλαιο (χρήμα)  Επιχειρηματικότητα (ιδέα, διοίκηση)
הסקה על פרופורציה באוכלוסייה
Υπεύθυνη καθηγήτρια: Ε. Γκόνου Μαθητές: Ρωμανός Πετρίδης, Βαγγέλης Πίπης Π.Γ.Ε.Σ.Σ ….Θανέειν πέπρωται άπασι.
ΧΡΗΣΤΟΓΛΟΥ ΙΩΑΝΝΗΣ ΓΕΝ
Επανάληψη.
ΑΡΙΘΜΟΔΕΙΚΤΕΣ ΔΡΑΣΤΗΡΙΟΤΗΤΑΣ
Εισαγωγή στη Ρομποτική
Λέκτορας Κώστας Κορδάς Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης
Κάνε κλικ σε κάθε λέξη για να δεις τη σημασία
Σχεδιασμός και Οργάνωση του μαθήματος
Διαφορές και Ομοιότητες Κερδοσκοπικών και Μη Κερδοσκοπικών Οργανισμών
Απέκκριση Οι δυο κύριες οδοί απομάκρυνσης των φαρμάκων από τον οργανισμό, είναι αφ ενός ο μεταβολισμός τους στο ήπαρ, που μόλις εξετάσαμε, και αφ ετέρου.
ΦΟΡΟΛΟΓΙΚΟ ΔΙΚΑΙΟ Ι Συνυπολογισμός προηγούμενων δωρεών ή γονικών παροχών για σκοπούς φόρου κληρονομίας Διδάσκων καθηγητής: Α. Τσουρουφλής Εξηνταβελώνη.
ΑΘΛΗΤΙΣΜΟΣ ΚΑΙ ΜΥΙΚΟ ΣΥΣΤΗΜΑ
ΟΙ ΑΡΓΥΡΟΙ ΚΑΙ ΧΡΥΣΟΙ ΚΑΝΟΝΕΣ ΤΗΣ ΛΥΣΗΣ
Οι Αριθμοί … 5.
Το ερώτημα "τι είναι επιστήμη;" δεν έχει νόημα χωρίς κάποιο χρονικό προσδιορισμό Όταν τις δεκαετίες του 80 και του 90 κατέρρεε το αποκαλούμενο ανατολικό.
ΜΑΘΗΜΑΤΙΚΑ Γ΄ ΓΥΜΝΑΣΙΟΥ ΠΕΡΙΕΧΟΜΕΝΑ Βασίλης Γκιμίσης ΔΙΑΦΑΝΕΙΕΣ
Σύστημα πρόσβασης στην Τριτοβάθμια Εκπαίδευση
اعداد الأستاذ/ عبدالرؤوف أحمد يوسف
АНТИБИОТИКЛАРНИНГ ФАРМАКОЛОГИЯСИ т.ф.д., проф. Алиев Х.У Тошкент 2014
Μεταγράφημα παρουσίασης:

ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Διαφάνειες παρουσίασης #7 4 Templates συναρτήσεων 4 Templates κλάσεων 4 Templates και κληρονομικότητα 4 Templates και φίλες συναρτήσεις 4 Χειρισμός εξαιρέσεων

2Νίκος ΠαπασπύρουΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Templates συναρτήσεων(i) u Ανάγκη αποφυγής περιττού κώδικα int i1 = 3, i2 = 5; int i = min(i1, i2); int min (int i1, int i2) { return (i1 < i2) ? i1 : i2; } double d1 = 1.4, d2 = 3.6; double d = min(d1, d2); Name n1("Antonius"), n2("Cleopatra"); Name n = min(n1, n2);

3Νίκος ΠαπασπύρουΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Templates συναρτήσεων(ii) u Ορισμός template συνάρτησης template T min (T t1, T t2) { return (t1 < t2) ? t1 : t2; } u Ερμηνεία l Για κάθε τύπο T ορίζεται μια συνάρτηση T min (T t1, T t2) l Ο ορισμός της συνάρτησης γίνεται όταν αυτή χρησιμοποιηθεί για πρώτη φορά (instantiation)

4Νίκος ΠαπασπύρουΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Templates συναρτήσεων(iii) u Υπερφόρτωση template template T min (int size, const T array[]) { T result = array[0]; for (int i=1; i<size; i++) if (array[i] < result) result = array[i]; return result; }

5Νίκος ΠαπασπύρουΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Templates συναρτήσεων(iv) u Εξειδίκευση template template T min (T t1, T t2) { return (t1 < t2) ? t1 : t2; } char * min (char * s1, char * s2) { return (strcmp(s1, s2) < 0) ? s1 : s2; }

6Νίκος ΠαπασπύρουΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Templates κλάσεων(i) u Ανάγκη αποφυγής περιττού κώδικα PairOfInt si(1, 5); cout << si.fst() << "\n"; PairOfDouble sd(3.5, -2.9); cout << sd.fst() << "\n"; PairOfName sn( Name("Antony"), Name("Cleopatra") ); cout << sn.fst() << "\n";

7Νίκος ΠαπασπύρουΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Templates κλάσεων(ii) u Ορισμός template κλάσης template class Pair { // definition } u Ερμηνεία l Για κάθε τύπο T ορίζεται μια κλάση Pair l Ο ορισμός της κλάσης γίνεται όταν αυτή χρησιμοποιηθεί για πρώτη φορά (instantiation)

8Νίκος ΠαπασπύρουΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Templates κλάσεων(iii) u Παράδειγμα: ζεύγη ομοίων template class Pair { private: T eFirst, eSecond; public: Pair (const T & a, const T & b); T fst () const; T snd () const; };

9Νίκος ΠαπασπύρουΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Templates κλάσεων(iv) u Παράδειγμα (συνέχεια) template Pair ::Pair (const T & a, const T & b) : eFirst(a), eSecond(b) { /* nothing */ } template T Pair ::fst () const { return eFirst; } template T Pair ::snd () const { return eSecond; }

10Νίκος ΠαπασπύρουΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Templates κλάσεων(v) u Παράδειγμα: ζεύγη ανομοίων template class Pair { private: T1 eFirst; T2 eSecond; public: Pair (const T1 & a, const T2 & b); T1 fst () const; T2 snd () const; };

11Νίκος ΠαπασπύρουΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Templates κλάσεων(vi) u Παράδειγμα (συνέχεια) template Pair ::Pair (const T1 & a, const T2 & b) : eFirst(a), eSecond(b) { /* nothing */ } template T1 Pair ::fst () const { return eFirst; } template T2 Pair ::snd () const { return eSecond; }

12Νίκος ΠαπασπύρουΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Templates και κληρονομικότητα(i) u Παράδειγμα: τριάδες ανομοίων template class Triple : public Pair > { public: Triple (const T1 & a, const T2 & b, const T3 & c); T2 snd () const; // hides old snd T3 trd () const; };

13Νίκος ΠαπασπύρουΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Templates και κληρονομικότητα(ii) u Παράδειγμα (συνέχεια) template Triple ::Triple ( const T1 & a, const T2 & b, const T3 & c) : Pair >( a, Pair (b, c)) { // nothing }

14Νίκος ΠαπασπύρουΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Templates και κληρονομικότητα(iii) u Παράδειγμα (συνέχεια) template T2 Triple ::snd () const { return eSecond.fst(); } template T3 Triple ::trd () const { return eSecond.snd(); }

15Νίκος ΠαπασπύρουΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Templates και κληρονομικότητα(iv) u Παράδειγμα (κύριο πρόγραμμα) Pair p(42, 1.7); cout << p.fst() << ", " << p.snd() << ".\n"; Triple t(42, 1.7, "hello"); cout << t.fst() << ", " << t.snd() << ", " << t.trd() << ".\n";

16Νίκος ΠαπασπύρουΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Templates και φίλες συναρτήσεις(i) u Παράδειγμα template class Pair { //... friend Pair operator + ( const Pair & p1, const Pair & p2); };

17Νίκος ΠαπασπύρουΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Templates και φίλες συναρτήσεις(ii) u Παράδειγμα template Pair operator + ( const Pair & p1, const Pair & p2) { return Pair ( p1.eFirst + p2.eFirst, p1.eSecond + p2.eSecond); }

18Νίκος ΠαπασπύρουΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Χειρισμός εξαιρέσεων(i) u Τί είναι εξαιρέσεις l Κάθε είδους ανωμαλίες ή σφάλματα που προκύπτουν κατά την εκτέλεση του προγράμματος και πρέπει να ξεπερασθούν με ειδικό τρόπο l Π.χ. διαίρεση με το μηδέν, εξάντληση μνήμης u Χειρισμός εξαιρέσεων στη C++ l Μηχανισμός: try - throw - catch

19Νίκος ΠαπασπύρουΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ try { } Χειρισμός εξαιρέσεων(ii)... f ()... // something catch (Exc e) { // do something } void f () throw(Exc) {... if (wrong) { Exc e(...); throw e; }... } class Exc {... };

20Νίκος ΠαπασπύρουΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Χειρισμός εξαιρέσεων(iii) u Παράδειγμα int min (int size, const int array[]) throw (const char *) { if (size <= 0) throw "ERROR: size <= 0"; if (array == NULL) throw "ERROR: array == NULL"; int result = array[0]; for (int i=1; i < size; i++) if (array[i] < result) result = array[i]; return result; }

21Νίκος ΠαπασπύρουΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Χειρισμός εξαιρέσεων(iv) u Παράδειγμα (συνέχεια) int a [] = {42, 34, 5, 99, 37, 2, 21}; try { cout << "min(7, a) = " << min(7, a) << "\n"; cout << "min(4, a) = " << min(4, a) << "\n"; cout << "min(0, a) = " << min(0, a) << "\n"; // !!! } catch (const char * msg) { cout << "\nCaught exception:\n" << msg << "\n"; }