Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

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

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ201:"— Μεταγράφημα παρουσίασης:

1 ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ nickie@softlab.ntua.gr Διδάσκων: Νίκος Παπασπύρου http://www.softlab.ntua.gr/~nickie/TUC/log201/ 1Νίκος ΠαπασπύρουΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Διαφάνειες παρουσίασης #2 4 Εισαγωγή, σχόλια και... hello world 4 Διαφορές μεταξύ C και C++ 4 Αναφορές 4 Υπερφόρτωση συναρτήσεων και τελεστών 4 Δυναμική παραχώρηση μνήμης

2 2Νίκος ΠαπασπύρουΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Εισαγωγή στη C++ u Αναπτύχθηκε: l στις αρχές της δεκαετίας του 1980 l στα AT&T Bell Labs l από τον Bjarne Stroustrup u Βασίζεται στη C, την οποία επεκτείνει υποστηρίζοντας: l δημιουργία και χρήση αφηρημένων τύπων δεδομένων l αντικειμενοστρεφή σχεδίαση και προγραμματισμό l άλλες βελτιώσεις χαρακτηριστικών της C

3 3Νίκος ΠαπασπύρουΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Σχόλια και... hello world! /* My first program in C++ This is an old-style C comment */ #include int main () { cout << "Hello world!\n"; return 0; } // Easy enough, wasn't it? // These are new-style C++ comments

4 4Νίκος ΠαπασπύρουΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Διαφορές μεταξύ C και C++(i) u Μετατροπές τύπων (double) 5double(5) u Δηλώσεις μεταβλητών παντού void f () { int x = 0; cout << x; int y = x + 1; cout << y; for (int i=1; i < y; i++) cout << i; }

5 5Νίκος ΠαπασπύρουΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Διαφορές μεταξύ C και C++(ii) u Ετικέτες (tags) ορίζουν τύπους struct complex { double re, im; }; complex z; u Ελεύθερες ενώσεις union { int i; double d; }; u Στη C++: enum  int

6 6Νίκος ΠαπασπύρουΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Διαφορές μεταξύ C και C++(iii) u Πρωτότυπα συναρτήσεων είναι απαραίτητα l Λάθος: int f () { return g() + 1; } int g () { return 0; } l Σωστό: int g (); int f () { return g() + 1; } int g () { return 0; } u Σύνταξη του main int main (); int main (int argc, char * argv[]);

7 7Νίκος ΠαπασπύρουΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Διαφορές μεταξύ C και C++(iv) u Τελεστής εμβέλειας :: #include int x = 1; int main () { int x = 2; cout << x << ::x; return 0; }

8 8Νίκος ΠαπασπύρουΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Διαφορές μεταξύ C και C++(v) u Default τιμές παραμέτρων void f (int x = 1); void g (int a, int b = 0); int main () { f(5); f(); g(1, 2); g(5); } void h (int a = 1, int b); // wrong!

9 9Νίκος ΠαπασπύρουΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Αναφορές(i) u Αναφορές (references) παρόμοιες με δείκτες (pointers) με τις εξής διαφορές: l χρειάζεται πάντα αρχικοποίηση δε χρειάζεται ο τελεστής * int main () { int x=1; int &z = x; cout << ++z; cout << ++x; return 0; }

10 10Νίκος ΠαπασπύρουΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Αναφορές(ii)  Πέρασμα με αναφορά void toUpper (char & c) { if (c >= 'a' && c <= 'z') c -= 'a' - 'A'; } int main () { char c = 'n'; toUpper(c); cout << c; return 0; }

11 11Νίκος ΠαπασπύρουΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Υπερφόρτωση συναρτήσεων u Συναρτήσεις με το ίδιο όνομα αλλά: l με διαφορετικό αριθμό παραμέτρων l με διαφορετικούς τύπους παραμέτρων u Παράδειγμα int max (int a, int b); int max (int a, int b, int c); int max (int size, const int a[]); double max (double a, double b); double max (int x, int y); // wrong!

12 12Νίκος ΠαπασπύρουΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Υπερφόρτωση τελεστών(i) struct complex { double re, im; }; complex operator + (complex x, complex y) { complex result; result.re = x.re + y.re; result.im = x.im + y.im; return result; } int operator == (complex x, complex y) { return (x.re == y.re) && (x.im == y.im); }

13 13Νίκος ΠαπασπύρουΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Υπερφόρτωση τελεστών(ii) int main () { complex a, b, c; a.re = 1.0; a.im = 2.0; b.re = 4.0; b.im = 1.0; if (a == b) cout << "they are equal\n"; else cout << "they are different\n"; c = a + b; return 0; }

14 14Νίκος ΠαπασπύρουΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Δυναμική παραχώρηση μνήμης u Τελεστές new και delete u Απλά δεδομένα int * p = new int; *p = 1; delete p; u Πίνακες int * p = new int [10]; for (int i = 0 ; i < 10 ; i++) p[i] = i; delete [] p;


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

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google