ΗΓλώσσαΠρογραµµατισµού C++ (The C++ Programming Language) Ιστοσελίδα του µαθήµατος. Περιεχόµενα. ηµήτριος Κατσαρός, Ph.D. Ελένη Τουσίδου, Ph.D.

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "ΗΓλώσσαΠρογραµµατισµού C++ (The C++ Programming Language) Ιστοσελίδα του µαθήµατος. Περιεχόµενα. ηµήτριος Κατσαρός, Ph.D. Ελένη Τουσίδου, Ph.D."

Transcript

1 1 ΗΓλώσσαΠρογραµµατισµού C++ (The C++ Programming Language) ηµήτριος Κατσαρός, Ph.D. Ελένη Τουσίδου, Ph.D. Χειµώνας 2006 ιάλεξη 8η Ιστοσελίδα του µαθήµατος 2 Θα τοποθετούνται οι διαφάνειες του επόµενου µαθήµατος Επικοινωνία: dimitris@skyblue.csd.auth.gr etousido@uth.gr Περιεχόµενα 3 Ρεύµατα Εισόδου/Εξόδου 1

2 Στόχοι εκµάθησης 4 Ρεύµατα I/O I/Oαρχείων I/Oχαρακτήρων Εργαλεία για I/O ρευµάτων Ονόµατα αρχείων ως είσοδος Μορφοποίηση εξόδου, ρυθµίσεις των flags Ιεραρχίες ρευµάτων Πρώτη γνωριµία µε την κληρονοµικότητα Τυχαία προσπέλαση σε αρχεία Εισαγωγικά 5 Ρεύµατα Ειδικά αντικείµενα ιανέµουν την είσοδο/έξοδο του προγράµµατος I/Oαρχείων Χρησιµοποιεί κληρονοµικότητα (στην επόµενη διάλεξη) I/O αρχείων εξαιρετικά χρήσιµη Ρεύµατα (streams) 6 Ροή χαρακτήρων Ρεύµα εισόδου Ρέει µέσα στο πρόγραµµα Προέρχεται από το πληκτρολόγιο Προέρχεται από αρχείο Ρεύµαεξόδου Ρέει έξω από το πρόγραµµα Πηγαίνει στην οθόνη Πηγαίνει σε αρχείο 2

3 Χρήση των ρευµάτων 7 Έχουµε ήδηχρησιµοποιήσει ρεύµατα cin Ρεύµα εισόδου συνδεδεµένο στο πληκτρολόγιο cout Ρεύµα εξόδου συνδεδεµένο στην οθόνη Μπορούµεναορίσουµε νέαρεύµατα Προς ή από αρχεία Χρησιµοποιούνται παρόµοια µε ταcin, cout Χρήση ρευµάτων όπως των cin, cout 8 Θεωρήστε το: εδοµένο πρόγραµµαορίζειτορεύµα instream που προέρχεται από κάποιο αρχείο: int thenumber; instream >> thenumber; ιαβάζει τιµή απότορεύµα και την αναθέτει στη µεταβλητή thenumber Το πρόγραµµα ορίζειτορεύµα outstream που πηγαίνει σε κάποιο αρχείο outstream << "thenumber is " << thenumber; Γράφει τιµή στορεύµα, που πηγαίνει σε ένα αρχείο Αρχεία 9 Θα χρησιµοποιήσουµε αρχεία κειµένου (text files) Ανάγνωση από αρχείο Όταν το πρόγραµµα δέχεται είσοδο Εγγραφή σε αρχείο Όταν το πρόγραµµα στέλνει έξοδο Επεξεργασία από την αρχή µέχρι το τέλος του αρχείου Άλλες διαθέσιµες µέθοδοι θα ασχοληθούµε µε την προσπέλαση σε αυτό το απλό αρχείο 3

4 Σύνδεση σε αρχείο 10 Πρέπει πρώτα να συνδέσουµε τοαντικείµενο ρεύµατος (stream object) σε ένα αρχείο (file) Για είσοδο: File αντικείµενο ifstream Για έξοδο: File αντικείµενο ofstream Οι κλάσεις ifstream και ofstream Ορίζονται στη βιβλιοθήκη <fstream> Στο namespace std Βιβλιοθήκες I/O αρχείων 11 Για να επιτρέψουµε είσοδο και έξοδο από/προς αρχεία στο πρόγραµµά µας: #include <fstream> using namespace std; Ή #include <fstream> using std::ifstream; using std::ofstream; ήλωση ρευµάτων 12 Το ρεύµαπρέπειναδηλωθείόπωςκάθεάλλη µεταβλητή τύπου κλάσης: ifstream instream; ofstream outstream; Κατόπιν, πρέπει να συνδεθεί σε ένα αρχείο: instream.open("infile.txt"); Αποκαλείται άνοιγµα τουαρχείου Χρησιµοποιεί τη συνάρτηση-µέλος open Μπορούµενακαθορίσουµεόνοµα πλήρους διαδροµής (full pathname) 4

5 Χρήση ρευµάτων 13 Αφού δηλωθεί χρησιµοποιείται κανονικά! int onenumber, anothernumber; instream >> onenumber >> anothernumber; Όµοια για την έξοδο του ρεύµατος: ofstream outstream; outstream.open("outfile.txt"); outstream << "onenumber = " << onenumber << " anothernumber = " << anothernumber; Στέλνει τα items στοαρχείοεξόδου Ονόµατα αρχείων 14 Προγράµµατα και αρχεία Τα αρχεία έχουν δυο ονόµατα στα προγράµµατά µας Εξωτερικό όνοµα αρχείου Αποκαλείται επίσης φυσικό όνοµα αρχείου Όπως το "infile.txt" Μερικές φορές θεωρείται το πραγµατικό όνοµα αρχείου" Χρησιµοποιείται µόνο µια φορά στο πρόγραµµα (για να ανοιχτεί το αρχείο) Όνοµα ρεύµατος Αποκαλείται επίσης λογικό όνοµα αρχείου Το πρόγραµµα χρησιµοποιεί αυτό το όνοµαγιατιςλειτουργίες του Κλείσιµοαρχείων 15 Τα αρχεία πρέπει να κλείνουν When program completed getting input or sending output Disconnects stream from file Στην πράξη: instream.close(); outstream.close(); Σηµειώστε ότι δεν υπάρχουν ορίσµατα Τα αρχεία κλείνουν αυτόµατα όταν τερµατιστεί το πρόγραµµά µας 5

6 Άδειασµα (Flush) αρχείου 16 Συχνά η έξοδος είναι "buffered" Αποθηκεύεται προσωρινά πριν σταλεί στο αρχείο Γράφεται σε οµάδες Περιστασιακά, ίσως χρειαστεί να εξαναγκάσουµε την εγγραφή στο αρχείο, δηλ., το άδειασµατων buffers: outstream.flush(); Συνάρτηση-µέλος flush, για όλα τα ρεύµατα εξόδου Όλη η buffered output γράφεται στο αρχείο Το κλείσιµο του αρχείου καλεί αυτόµατα την flush() Παράδειγµα I/O αρχείου (1/2) 17 Παράδειγµα I/O αρχείου (2/2) 18 6

7 19 Προσθήκη στο τέλος (append) αρχείου Ητυπικήλειτουργίαopen ξεκινά µε άδειο αρχείο Ακόµα και εάν το αρχείο υπάρχει τα περιεχόµενα χάνονται (overwritten) Λειτουργία open για προσθήκη στο τέλος (append): ofstream outstream; outstream.open("important.txt", ios::app); Εάντοαρχείοδενυπάρχει το δηµιουργεί Εάντοαρχείουπάρχει προσθέτει στο τέλος Το 2 ο όρισµα είναιµια σταθερά ορισµένη στην κλάση ios Στη βιβλιοθήκη <iostream>, και στο namespace std Άλλη σύνταξη για άνοιγµα αρχείου 20 Μπορούµενακαθορίσουµε τοόνοµατουαρχείου στη δήλωση Περνάει ως όρισµα στονconstructor ifstream instream; instream.open("infile.txt"); ΙΣΟ ΥΝΑΜΟ ΜΕ ΤΟ: ifstream instream("infile.txt"); Έλεγχος για επιτυχές άνοιγµα αρχείου File opens θα µπορούσαν να αποτύχουν Εάντοαρχείοεισόδουδενυπάρχει εν έχουµεδικαίωµα εγγραφής στο αρχείο εξόδου Απρόβλεπτες καταστάσεις Συνάρτηση-µέλος fail() Κάνουµε κλήση στη fail() για να ελέγξουµε την επιτυχία της λειτουργίας στο ρεύµα instream.open("stuff.txt"); if (instream.fail()) { cout << "File open failed.\n"; exit(1); } 21 7

8 I/O χαρακτήρων µε αρχεία 22 Όλες οι λειτουργίες I/O χαρακτήρων µε cin και cout ίδιες και µε τααρχεία! Οι συναρτήσεις-µέλη δουλεύουν το ίδιο: get, getline put, putback, peek, ignore Έλεγχος τέλους αρχείου: Τρόπος 1 ος 23 Χρήση βρόχου για επεξεργασία του αρχείου µέχρι να τελειώσει Τυπική προσέγγιση υο τρόποι για να ελέγξουµε γιατέλοςαρχείου Συνάρτηση-µέλος eof() instream.get(next); while (!instream.eof()) { cout << next; instream.get(next); } ιαβάζει κάθε χαρακτήρα µέχρι να τελειώσει το αρχείο Ησυνάρτηση-µέλος eof() επιστρέφει bool 24 Έλεγχος τέλους αρχείου: Τρόπος 2 ος εύτερη µέθοδος Ηλειτουργίαread επιστρέφει τιµή bool! (instream >> next) Η έκφραση επιστρέφει true εάν η read είναι επιτυχής Επιστρέφει false εάν προσπαθήσει να διαβάσει πέρα απότοτέλοςτουαρχείου Στην πράξη: double next, sum = 0; while (instream >> next) sum = sum + next; cout << "the sum is " << sum << endl; 8

9 Ονόµατα αρχείων ως είσοδος 25 Λειτουργία open για ρεύµα Το όρισµαστηνopen() είναι τύπου string Μπορεί να είναι literal (όπως µέχρι τώρα) ή µεταβλητή char filename[16]; ifstream instream; cout << "Enter file name: "; cin >> filename; instream.open(filename); Παρέχει ευελιξία 26 Μορφοποίηση εξόδου µε συναρτήσεις Έχουµε χρησιµοποιήσει σε παράδειγµατα: cout.setf(ios::fixed); cout.setf(ios::showpoint); cout.precision(2); Τυπώνει τους αριθµούς σε µορφή χρήµατος (12.52) Μπορεί να χρησιµοποιηθεί σε οποιοδήποτε ρεύµα εξόδου Τα ρεύµατα αρχείων (file streams) έχουν τις ίδιες συναρτήσεις-µέλη µετοαντικείµενο cout Συναρτήσεις-µέλη για έξοδο (1/2) 27 Θεωρήστε τα: outstream.setf(ios::fixed); outstream.setf(ios::showpoint); outstream.precision(2); Ησυνάρτηση-µέλος precision(x) Οι δεκαδικοί γράφονται µε "x" ψηφία µετά την υποδιαστολή Ησυνάρτηση-µέλος setf() Επιτρέπει πολλές από τις flags εξόδου να τεθούν σε κάποια τιµή 9

10 Συναρτήσεις-µέλη για έξοδο (2/2) 28 Θεωρήστε το: outstream.width(5); Ησυνάρτηση-µέλος width(x) Θέτει το πλάτος σε "x" για την τιµήεξόδου Επηρεάζει µόνο την επόµενη τιµήστηνέξοδο Πρέπει να θέτουµε τοwidth πριν από κάθε τιµή ώστε να επηρεαστούν όλες Είναι τυπικό να έχουµε µεταβλητά widths Για να φτιάξουµε στήλες Flags 29 Θυµηθείτε: ησυνάρτηση-µέλος setf() Θέτει την κατάσταση των flags εξόδου Όλαταρεύµατα εξόδου έχουν µέλος τη setf() Οι flags είναι σταθερές στην κλάση ios Στη βιβλιοθήκη <iostream>, στο namespace std Παραδείγµατα µε τηsetf() 30 Συνήθεις σταθερές flag: outstream.setf(ios::fixed); Θέτει τον συµβολισµό fixed-point (δεκαδική αναπαράσταση) outstream.setf(ios::showpoint) Να περιλαµβάνεται πάντα η υποδιαστολή outstream.setf(ios::right); Θέτει δεξιά στοίχιση Θέτουµε πολλές flags µε µια κλήση: outstream.setf(ios::fixed ios::showpoint ios::right); 10

11 ιαχειριστές (Manipulators) 31 Ως διαχειριστής (manipulator) ορίζεται: Μια συνάρτηση που καλείται µε µη-παραδοσιακό τρόπο Μπορεί να έχει ορίσµατα Τοποθετείται µετά τον τελεστή εισαγωγής Κάνουν τα ίδια πράγµατα όπως και οι συναρτήσεις-µέλη! Με διαφορετικό τρόπο Είναι σύνηθες να τους χρησιµοποιούµε µαζί Οι setw() και setprecision() βρίσκονται στη βιβλιοθήκη <iomanip>, στο namespace std Παράδειγµα διαχειριστή: setw() 32 Ο διαχειριστής setw(): cout << "Start" << setw(4) << 10 << setw(4) << 20 << setw(6) << 30; Προκύπτει το: Start Σηµειώστε ότι: η setw() επηρεάζει µόνο την επόµενη τιµήεξόδου Πρέπει να περιλαµβάνουµετηνsetw() πριν από κάθε item εξόδου, ώστε να επηρεαστούν όλα Ο διαχειριστής setprecision() 33 Ο διαχειριστής setprecision(): cout.setf(ios::fixed ios::showpoint); cout << "$" << setprecision(2) << 10.3 << " " << "$" << 20.5 << endl; Προκύπτει το: $10.30 $

12 Αποθήκευση των τιµών των Flag 34 Οι τιµές των flags παραµένουν µέχρι να αλλαχτούν Οι flags precision και setf µπορούν να αποθηκευτούν και να ανακτηθούν Ησυνάρτησηprecision() επιστρέφει την τρέχουσα τιµή, εάν κληθεί χωρίς ορίσµατα Ησυνάρτηση-µέλος flags() παρέχει παρόµοια λειτουργικότητα Παράδειγ. αποθήκευσης τιµών flag 35 void outputstuff(ofstream& outstream) { int precisionsetting = outstream.precision(); long flagsettings = outstream.flags(); outstream.setf(ios::fixed ios::showpoint); outstream.precision(2); outstream.precision(precisionsetting); outstream.flags(flagsettings); } Συνάρτηση για αποθήκευση και ανάκτηση τυπικών ρυθµίσεων Κλήση: outputstuff(mystream); Ανακτώντας τις εξ ορισµού τιµές 36 Μπορούµεναανακτήσουµε τιςεξ ορισµού ρυθµίσεις: cout.setf(0, ios::floatfield); εν είναι αναγκαστικά οι τελευταίες ρυθµίσεις! Οι εξ ορισµού ρυθµίσεις εξαρτώνται από την υλοποίηση εν κάνει reset τις ρυθµίσεις της precision Μόνο τις ρυθµίσεις της setf 12

13 Ιεραρχίες ρευµάτων 37 Σχέσεις κλάσεων Παράγεται από Μια κλάση προέρχεται από άλλη κλάση Κατόπιν προστίθονται χαρακτηριστικά Παράδειγµα: ηλ.: το ifstream παράγεται από το istream 38 Κληρονοµικότητα κλάσεων ρευµάτων Θεωρήστε το: Εάν η D είναι παραγόµενη κλάση της B Όλατααντικείµενα τύπου D είναι επίσης αντικείµενα τύπου B Σε ότι αφορά τα ρεύµατα: Ένα αντικείµενο ifstream είναι επίσης ένα αντικείµενο istream Θα πρέπει να χρησιµοποιούµεαντικείµενα istream ως παραµέτρους Έτσι περισσότερα αντικείµενα µπορούν να περαστούν ως παράµετροι! 39 Παράδειγµα κληρονοµικότητας κλάσεων ρευµάτων 13

14 Κληρονοµικότητα κλάσεων ρευµάτων: Παραδείγµατα κλήσεων 40 Θεωρώντας τις προηγούµενες συναρτήσεις: twosumversion1(filein); // Νόµιµο! twosumversion1(cin); // Παράνοµο! Επειδή η cin δεν είναι τύπου ifstream! twosumversion2(filein); // Νόµιµο! twosumversion2(cin); // Νόµιµο! Πιο ευέλικτο Ηπαράµετρος istream δέχεται και τα δυο αντικείµενα Τυχαία προσπέλαση σε αρχεία 41 Σειριακή προσπέλαση Ηπιοσυχνάχρησιµοποιούµενη µέθοδος Τυχαία προσπέλαση Γρήγορηπροσπέλασηστιςεγγραφές Για µεγάλες βάσεις Προσπελάζει τυχαία οποιοδήποτε µέρος του αρχείου Χρήση των αντικειµένων fstream Είσοδος και έξοδος Εργαλεία τυχαίας προσπέλασης 42 Ανοίγει όµοια µε istream ή ostream Έχει δεύτερο όρισµα fstream rwstream; rwstream.open("stuff", ios::in ios:: out); Ανοίγει µε δυνατότηταread και write Μετακίνηση µέσα σε ένα αρχείο rwstream.seekp(1000); Τοποθετεί τον put-pointer στο 1000 th byte rwstream.seekg(1000); Τοποθετεί τον get-pointer στο 1000 th byte 14

15 Μεγέθη για τυχαία προσπέλαση 43 Για να µετακινούµαστε πρέπει να γνωρίζουµε τα µεγέθη Οτελεστήςsizeof() προσδιορίζει τον αριθµό τωνbytes που απαιτούνται για ένα αντικείµενο: sizeof(s) //Where s is string s = "Hello" sizeof(10) sizeof(double) sizeof(myobject) Τοποθετεί τον put-pointer στην 100 th εγγραφή των αντικειµένων: rwstream.seekp(100*sizeof(myobject) 1); Περίληψη 1 44 Τα ρεύµατα συνδέονται σε αρχεία µετη λειτουργία open Ησυνάρτηση-µέλος fail() ελέγχει την επιτυχία ιάφορες συναρτήσεις-µέλη µορφοποιούν την έξοδο π.χ., width, setf, precision Ίδια χρήση της cout (οθόνη) ήαρχεία Οι τύποι ρευµάτων (stream) µπορεί να είναι παράµετροι Πρέπει να περνάνε ως call-by-reference Περίληψη 2 45 istream (χωρίς f ) παράµετροι δέχονται αντικείµενα cin ήαντικείµενα ifstream ως ορίσµατα ostream (χωρίς f ) παράµετροι δέχονται αντικείµενα cout ήαντικείµενα ofstream ως ορίσµατα Συνάρτηση-µέλος eof Χρησιµοποιείται για να ελέγξει για το τέλος του αρχείου εισόδου 15

16 Περιεχόµενα 46 Κληρονοµικότητα (Inheritance) Στόχοι εκµάθησης 47 Τα βασικά της κληρονοµικότητας Παραγόµενες κλάσεις,µε constructors protected: qualifier Ξανα-ορίζοντας συναρτήσεις-µέλη Μη-κληρονοµούµενες συναρτήσεις Προγραµµατισµός µε κληρονοµικότητα Τελεστής ανάθεσης και copy constructors Destructors σε παραγόµενες κλάσεις Πολλαπλή κληρονοµικότητα Εισαγωγή στην κληρονοµικότητα 48 Αντικειµενοστραφής προγραµµατισµός Ισχυρή τεχνική προγραµµατισµού Παρέχει συνιστώσα αφαίρεσης, την κληρονοµικότητα Ορίζεται γενική µορφή µιας κλάσης Εξειδικευµένες εκδόσεις κατόπιν κληρονοµούν ιδιότητες της γενικής κλάσης Και προσθέτουν/τροποποιούν τη λειτουργικότητά της για κατάλληλη χρήση 16

17 Τα βασικά της κληρονοµικότητας 49 Μια νέα κλάση κληρονοµείται από µια άλλη ΒασικήήΜητρικήήΓονικήκλάση(Base class) Γενική κλάση από την οποία γεννιούνται άλλες Παραγόµενη κλάση (Derived class) Νέα κλάση Αυτόµατα έχει από τη βασική κλάση τις: Μεταβλητές-µέλη Συναρτήσεις-µέλη Μπορούµε κατόπιν να προσθέσουµεσυναρτήσεις-µέλη και µεταβλητές-µέλη Παραγόµενες κλάσεις 50 Θεωρήστε το παράδειγµα: Κλάση από "Employees" Αποτελείται από: Salaried employees Hourly employees Κάθε οµάδα είναι υποσύνολο από employees Μια άλλη οµάδα µπορεί να είναι εκείνη που περιλαµβάνει εκείνους που πληρώνονται µε σταθερό µισθό κάθε µήνα ή εβδοµάδα Παραγόµενες κλάσεις 51 εν χρειάζεται τύπο για τον γενικό "employee" Αφού κανένας δεν είναι απλώς "employee" Η γενική ιδέα του employee είναι χρήσιµη! Όλοι έχουν ονόµατα Όλοι έχουν αριθµό ταυτότητας Οι συναρτήσεις οι σχετιζόµενες µεαυτάταβασικά στοιχείαείναιοιίδιεςγιαόλουςτουςemployees Έτσι η γενική κλάση µπορεί να περιέχει όλα αυτά τα στοιχεία για τους employees 17

18 Κλάση Employee 52 Πολλά µέλη της κλάσης "employee" εφαρµόζονται για όλους τους τύπους των employees Συναρτήσεις προσπέλασης (Accessor functions) Συναρτήσεις τροποποίησης (Mutator functions) Τα περισσότερα δεδοµένα: SSN Name Pay Όµως δεν θα έχουµεαντικείµενα αυτής της κλάσης Κλάση Employee 53 Θεωρήστε τη συνάρτηση printcheck(): Πάνταθαξανα-ορίζεται στις παραγόµενες κλάσεις Έτσι διαφορετικoί τύποιεmployees θα έχουν διαφορετικά checks εν έχει νόηµα ναυπάρχει µη-διαφοροποιηµένος Employee Έτσι η συνάρτηση printcheck() στην κλάση Employee απλά λέει ότι Μήνυµα λάθους δηλώνοντας ότι "printcheck called for undifferentiated employee!! Aborting " Παράγοντας από την κλάση Employee 54 Παραγόµενες κλάσεις από την κλάση Employee: Αυτόµατα έχουν όλες τις µεταβλητές-µέλη Αυτόµατα έχουν όλες τις συναρτήσεις-µέλη Θα λέµεότιηπαραγόµενη κλάση κληρονοµεί τα µέλη της βασικής κλάσης Κατόπιν, µπορούµεναξανα-ορίσουµε τα υπάρχοντα µέλη και/ήναπροσθέσουµε νέαµέλη 18

19 ήλωση παραγόµενης κλάσης HourlyEmployee (1/2) 55 ήλωση παραγόµενης κλάσης HourlyEmployee (2/2) 56 Interface της HourlyEmployee 57 Παρατηρήστε ότι ο ορισµόςαρχίζειτοίδιοόπως κάθε άλλη #ifndef δοµή Περιλαµβάνει τις απαιτούµενες βιβλιοθήκες Επίσης, περιλαµβάνει την employee.h! Και, το heading: class HourlyEmployee : public Employee { } Καθορίζει publicly inherited από την κλάση Employee 19

20 Προσθήκες στην HourlyEmployee 58 Το interface της παραγόµενης κλάσης περιλαµβάνει µόνο τα νέα µέληήόποιαµέλη πρόκειται να ξανα-οριστούν Αφού όλα τα άλλα που κληρονοµούνται έχουν ήδη οριστεί δηλ., όλοι οι employees έχουν ssn, name, κ.τ.λ. Η HourlyEmployee προσθέτει: Constructors Τις µεταβλητές: wagerate, hours member Τις συναρτήσεις-µέλη: setrate(), getrate(), sethours(), gethours() Επαν-ορισµοί στη HourlyEmployee 59 Η HourlyEmployee ξανα-ορίζει: Τη συνάρτηση-µέλος printcheck() Αυτή "overrides" την υλοποίηση της συνάρτησης printcheck() της κλάσης Employee Οορισµός της πρέπει να είναι στην υλοποίηση της HourlyEmployee Όπωςκαιοιάλλεςσυναρτήσεις-µέλη που δηλώνονται στο interface της HourlyEmployee Νέες και ξανα-οριζόµενες Ορολογία κληρονοµικότητας 60 Γονική κλάση (Parent class) Αναφέρεται στη βασική κλάση (base class) Κλάση-παιδί (child class) Αναφέρεται στην παραγόµενη κλάση (derived class) Προγονική κλάση (ancestor class) Κλάση που είναι πατέρας του πατέρα της Απογονική κλάση (descendant class) Αντίθετη της ancestor 20

21 61 Constructors παραγόµενων κλάσεων Οι constructors τωνγονικώνκλάσεων ΕΝ κληροδοτούνται στις παραγόµενες κλάσεις! Αλλά µπορούν να εκκινηθούν µέσα στους constructors των παραγόµενων κλάσεων Το οποίο είναι αυτό που επιζητούµε! Ο constructor της γονικής κλάσης πρέπει να εκκινεί όλες τις µεταβλητές-µέλη της γονικής κλάσης Αυτές που κληροδοτούνται Έτσι ο constructor της παραγόµενης κλάσης απλά τον καλεί Το οποίο είναι το πρώτο πράγµαπουκάνειοconstructor constructor παραγόµενης κλάσης Θεωρήστε τη σύνταξη για τον constructor της HourlyEmployee: HourlyEmployee::HourlyEmployee(string thename, string thenumber, double thewagerate, double thehours) : Employee(theName, thenumber), wagerate(thewagerate), hours(thehours) { //Ίσως κενό } Το τµήµα µετά το: είναι το τµήµα εκκίνησης Περιλαµβάνει την invocation του Employee constructor 62 constructor παραγόµενης κλάσης 63 εύτερος constructor: HourlyEmployee::HourlyEmployee() : Employee(), wagerate(0), hours(0) { //Deliberately empty } Καλείται ο εξ ορισµού (default) constructor της γονικής κλάσης Πάνταθαπρέπεινακαλούµε έναναπότους constructors της γονικής κλάσης 21

22 64 Μη κλήση του γονικού constructor Ο constructor της παραγόµενης κλάσης θα πρέπει πάντα να καλεί έναν από τους constructors της γονικής κλάσης Εάνδεντονκαλέσουµε: Καλείται αυτόµατα ο default constructor της γονικής κλάσης Ισοδύναµος ορισµός του constructor: HourlyEmployee::HourlyEmployee() : wagerate(0), hours(0) { } Παγίδα: Ιδιωτικά δεδοµένα της γονικής κλάσης 65 Η παραγόµενη κλάση κληρονοµεί τις ιδιωτικές µεταβλητές-µέλη Αλλά δεν µπορούµε να τις προσπελάσουµε Ούτε διαµέσου των συναρτήσεων-µελών της παραγόµενης κλάσης! Οι ιδιωτικές µεταβλητές-µέλη µπορούν να προσπελαστούν µεόνοµα ΜΟΝΟ από συναρτήσεις-µέλη της κλάσης όπου αυτές ορίζονται Παγίδα: Ιδιωτικές συναρτήσεις-µέλη της γονικής κλάσης 66 Το ίδιο ισχύει για τις συναρτήσεις-µέλη της γονικής κλάσης εν µπορούν να προσπελαστούν εκτός του interface και της υλοποίησης της γονικής κλάσης Ούτε και στους ορισµούς των συναρτήσεων- µελών της παραγόµενης κλάσης 22

23 Παγίδα: Επίδραση των ιδιωτικών συναρτήσεων-µελών γονικής κλάσης 67 Μεγαλύτερη επίδραση εδώ vs. µεταβλητές-µέλη Οι µεταβλητές-µέλη µπορούν να προσπελαστούν έµµεσα διαµέσου των accessor ή mutator συναρτήσεων-µελών Οι συναρτήσεις-µέλη απλά δεν είναι διαθέσιµες Είναι λογικό Οι ιδιωτικές συναρτήσεις-µέληθαπρέπειαπλάναείναι βοηθητικές συναρτήσεις Θα πρέπει να χρησιµοποιούνται µόνο στην κλάση όπου ορίζονται Ο προσδιοριστής protected 68 Νέα κατηγοριοποίηση των µελών µιας συνάρτησης Επιτρέπει προσπέλαση µεόνοµα στην παραγόµενη κλάση Αλλά πουθενά αλλού Όχι προσπέλαση µεόνοµα σε άλλες κλάσεις Στην κλάση όπου ορίζεται ενεργεί ως ιδιωτικό Θεωρούνται "protected" στην παραγόµενη κλάση Για να επιτρέψει µελλοντικές παραγόµενες κλάσεις Με πρώτη µατιά, φαίνεται να παραβιάζει την αρχή της απόκρυψης πληροφορίας Επαν-ορισµοί συναρτήσεων-µελών 69 Θυµηθείτε το interface της παραγόµενης κλάσης: Περιέχει δηλώσεις για νέες συναρτήσεις-µέλη Επίσης, περιέχει δηλώσεις για κληρονοµούµενες συναρτήσεις-µέλη που θα τροποποιηθούν Οι κληρονοµούµενες συναρτήσεις-µέλη που ΕΝ δηλώνονται: Αυτόµατα κληρονοµούνται αµετάβλητες Η υλοποίηση της παραγόµενης κλάσης θα: Ορίσει νέες συναρτήσεις-µέλη Θα ξανα-ορίσει κληρονοµούµενες συναρτήσεις 23

24 Επαν-ορισµός vs. Υπερφόρτωση 70 Εντελώς διαφορετικές έννοιες και µηχανισµοί! Επαν-ορισµός στην παραγόµενη κλάση: Ι ΙΑ λίστα παραµέτρων Ουσιαστικά, ξαναγράφεται ηίδιασυνάρτηση Υπερφόρτωση: ιαφορετική λίστα παραµέτρων Η νέα συνάρτηση παίρνει διαφορετικές παραµέτρους Οι υπερφορτωµένες συναρτήσεις θα πρέπει να έχουν διαφορετικές υπογραφές Υπογραφή συνάρτησης 71 Θυµηθείτε τον ορισµό της υπογραφής µιας συνάρτησης: Όνοµα της συνάρτησης Ακολουθία των τύπων στη λίστα των παραµέτρων Περιλαµβάνοντας τη σειρά, αριθµό, τύπους Ηυπογραφή ΕΝπεριλαµβάνει: Τύπο επιστροφής Τη λέξη-κλειδί const & Προσπελάζοντας τη ξανα-ορισµένη συνάρτηση µιας γονικής κλάσης 72 Όταν µια συνάρτηση ξανα-ορίζεται σε µια παραγόµενη κλάση, ο ορισµός της στη γονική κλάση, δεν χάνεται Μπορούµενακαθορίσουµε τηχρήσητης: Employee JaneE; HourlyEmployee SallyH; JaneE.printCheck(); calls Employee s printcheck function SallyH.printCheck(); calls HourlyEmployee printcheck function SallyH.Employee::printCheck(); Calls Employee s printcheck function! εν είναι σύνηθες, αλλά χρήσιµο µερικές φορές 24

25 73 Συναρτήσεις που δεν κληρονοµούνται Όλες οι κανονικές συναρτήσεις µιας γονικής κλάσης κληροδοτούνται στις παραγόµενες Εξαιρέσεις: Constructors Destructors Copy constructor Αλλά εάν δεν οριστεί, γεννά έναν εξ ορισµού Θυµηθείτεότιπρέπειναορίζουµεένανγιατουςpointers! Assignment operator If not defined default Τελεστές ανάθεσης και copy constructors 74 Θυµηθείτε: οι υπερφορτωµένοι τελεστές ανάθεσης και οι copy constructors ΕΝ κληρονοµούνται Αλλά µπορούν να χρησιµοποιηθούν στον ορισµός της παραγόµενης κλάσης Τυπικά ΠΡΕΠΕΙ να χρησιµοποιηθούν! Όµοια µετοπώςοconstructor µιας παραγόµενης κλάσης εκκινεί τον constructor της γονικής κλάσης Παράδειγµα τελεστή ανάθεσης 75 Έστω ότι η "Derived" κλάση παράγεται από τη "Base": Derived& Derived::operator =(const Derived & rightside) { Base::operator =(rightside); } Προσέξτε τη γραµµή του κώδικα Καλεί τον τελεστής ανάθεσης της γονικής κλάσης Αυτό τακτοποιεί όλες τις κληρονοµούµενες µεταβλητές Κατόπιν, θα θέσει τις νέες µεταβλητές της παραγόµενης κλάσης 25

26 Παράδειγµα copy constructor 76 Θεωρήστε το: Derived::Derived(const Derived& Object) : Base(Object), { } Μετά το : είναι η invocation του γονικού copy constructor Θέτει τις κληρονοµούµενες µεταβλητές-µέλη του αντικειµένου της παραγόµενης κλάσης που δηµιουργείται Παρατηρήστε ότι το Object είναι τύπου Derived; Αλλά είναι επίσης και τύπου Base, έτσι το όρισµα είναι έγκυρο 77 Destructors σε παραγόµενες κλάσεις Εάν ο destructor της βασικής κλάσης λειτουργεί κανονικά Είναι εύκολο να γραφεί ο destructor της παραγόµενης Όταν ενεργοποιηθεί ο destructor της παραγόµενης: Καλεί αυτόµατα τον destructor της βασικής κλάσης! Έτσι, δεν υπάρχει η ανάγκη σαφούς κλήσης Έτσι, οι destructors των παραγόµενων κλάσεων χρειάζεται να ανησυχούν µόνο για τις µεταβλητές της παραγόµενης κλάσης Και για όποια δεδοµένα στα οποία δείχνουν Ο destructor της βασικής κλάσης χειρίζεται αυτόµατα τα κληρονοµούµενα δεδοµένα Σειρά κλήσης των destructors 78 Θεωρήστε το: ηκλάσηb παράγεται από την κλάση A ηκλάσηc παράγεται από την κλάση B A B C Όταν ένα αντικείµενο της κλάσης C βγεί out of scope : Καλείται πρώτα ο destructor της κλάσης C Κατόπιν, καλείται ο destructor της κλάσης B Τελικά, καλείται ο destructor της κλάσης A Αντίθετα από τη σειρά κλήσης των constructors Γενικότερη αρχή: Resource acquisition is Initialization 26

27 Σχέσεις "Is a" vs. "Has a" 79 Κληρονοµικότητα Θεωρείται ως µια σχέση Is a µεταξύ των κλάσεων π.χ., Ένας HourlyEmployee "is a" Employee Μια κλάση περιέχει αντικείµενα άλλης κλάσης ως δικά της µέλη Θεωρείται ως µια σχέση Has a µεταξύ των κλάσεων π.χ., Μια κλάση "has a" αντικείµενο άλλης κλάσης ως δεδοµένα της Protected & private κληρονοµικότ. 80 Νέες µορφές κληρονοµικότητας Χρησιµοποιούνται σπάνια Protected κληρονοµικότητα: class SalariedEmployee : protected Employee { } Τα public µέλη της βασικής κλάσης γίνονται protected µέλη στην παραγόµενη κλάση Private κληρονοµικότητα: class SalariedEmployee : private Employee { } Όλα τα µέλητηςβασικήςκλάσηςγίνονται private στην παραγόµενη κλάση Πολλαπλή κληρονοµικότητα 81 Μια παραγόµενη κλάση µπορεί να έχει περισσότερες από µια βασικές κλάσεις! Η σύνταξη απαιτεί ότι απαριθµούνται όλες οι βασικές κλάσεις διαχωριζόµενες µε κόµµα: class derivedmulti : public base1, base2 { } Πιθανότητες για ambiguity είναι ατελείωτες! Επικίνδυνη η αξιοποίησή της! Αρκετοί πιστεύουν ότι δεν πρέπει να χρησιµοποιείται καθόλου Σίγουρα χρειάζεται αρκετή εµπειρία για τη χρήση της! 27

28 Περίληψη 1 82 Ηκληρονοµικότητα παρέχει επαναχρησιµοποίηση κώδικα Επιτρέπει µια κλάσης να παραχθεί από κάποια άλλη µε την προσθήκη χαρακτηριστικών Τα αντικείµενα παραγόµενων κλάσεων κληρονοµούν τα µέλη της µητρικής κλάσης Και µπορούν να προσθέτουν µέλη Οι ιδιωτικές µεταβλητές της µητρικής κλάσης δεν µπορούν να προσπελαστούν µετοόνοµα από τις παραγόµενές της Οι ιδιωτικές συναρτήσεις-µέλη δεν κληρονοµούνται Περίληψη 2 83 Μπορούµεναξανα-ορίσουµε τις κληρονοµούµενες συναρτήσεις-µέλη Για να εκτελούν διαφορετικές λειτουργίες στη παραγόµενη κλάση Τα protected µέλη στη µητρική κλάση: Μπορούν να προσπελαστούν µετοόνοµα στις συναρτήσεις-µέλη της παραγόµενης κλάσης Ουπερφορτωµένος τελεστής ανάθεσης δεν κληρονοµείται Αλλά µπορεί να εκκινηθεί από την παραγόµενη κλάση Οι constructors δεν κληρονοµούνται Εκκινούνται από τον constructor της παραγόµενης κλάσης 28

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language)

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) 1 Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) ηµήτριος Κατσαρός, Ph.D. Χειµώνας 2005 ιάλεξη 9η 2 Ιστοσελίδα του µαθήµατος http://skyblue.csd.auth.gr/~dimitris/courses/cpp_fall05.htm Θα

Διαβάστε περισσότερα

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) Ιστοσελίδα του µαθήµατος. Περιεχόµενα. ηµήτριος Κατσαρός, Ph.D.

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) Ιστοσελίδα του µαθήµατος. Περιεχόµενα. ηµήτριος Κατσαρός, Ph.D. 1 Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) ηµήτριος Κατσαρός, Ph.D. Χειµώνας 2005 ιάλεξη 9η Ιστοσελίδα του µαθήµατος 2 http://skyblue.csd.auth.gr/~dimitris/courses/cpp_fall05.htm Θα

Διαβάστε περισσότερα

ΗΓλώσσαΠρογραµµατισµού C++ (The C++ Programming Language)

ΗΓλώσσαΠρογραµµατισµού C++ (The C++ Programming Language) 1 ΗΓλώσσαΠρογραµµατισµού C++ (The C++ Programming Language) ηµήτριος Κατσαρός, Ph.D. Ελένη Τουσίδου, Ph.D. Χειµώνας 2006 ιάλεξη 8η 2 Ιστοσελίδα του µαθήµατος http://skyblue.csd.auth.gr/~dimitris/courses/cpp_fall06.htm

Διαβάστε περισσότερα

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) Ιστοσελίδα του µαθήµατος. Περιεχόµενα. ηµήτριος Κατσαρός, Ph.D.

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) Ιστοσελίδα του µαθήµατος. Περιεχόµενα. ηµήτριος Κατσαρός, Ph.D. 1 Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) ηµήτριος Κατσαρός, Ph.D. Χειµώνας 2005 ιάλεξη 8η Ιστοσελίδα του µαθήµατος 2 http://skyblue.csd.auth.gr/~dimitris/courses/cpp_fall05.htm Θα

Διαβάστε περισσότερα

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language)

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) 1 Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) ηµήτριος Κατσαρός, Ph.D. Χειµώνας 2005 ιάλεξη 8η 2 Ιστοσελίδα του µαθήµατος http://skyblue.csd.auth.gr/~dimitris/courses/cpp_fall05.htm Θα

Διαβάστε περισσότερα

Streams Input / Output in C++ George Kastrinis

Streams Input / Output in C++ George Kastrinis Streams Input / Output in C++ George Kastrinis (gkastrinis@di.uoa.gr) Streams What? Η είσοδος και η έξοδος δεδομένων, στη C++ βασίζεται στην έννοια των ρευμάτων - streams Ένα ρεύμα είναι ουσιαστικά μια

Διαβάστε περισσότερα

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language)

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) ηµήτριος Κατσαρός, Ph.D. Χειµώνας 2005 ιάλεξη 5η Ιστοσελίδα του µαθήµατος http://skyblue.csd.auth.gr/~dimitris/courses/cpp_fall05.htm Θα τοποθετούνται

Διαβάστε περισσότερα

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

ΣΤΟΙΧΕΙΑ ΤΗΣ ΓΛΩΣΣΑΣ C++ Constructors, Destructors, Pointers IO Streams, File Streams ΣΤΟΙΧΕΙΑ ΤΗΣ ΓΛΩΣΣΑΣ C++ Constructors, Destructors, Pointers IO Streams, File Streams CONSTRUCTORS DESTRUCTORS Η κλάση mystring class mystring private: char s[100]; public: char *GetString(); void SetString(char

Διαβάστε περισσότερα

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) Ιστοσελίδα του µαθήµατος. Περιεχόµενα. ηµήτριος Κατσαρός, Ph.D. Κλάσεις.

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) Ιστοσελίδα του µαθήµατος. Περιεχόµενα. ηµήτριος Κατσαρός, Ph.D. Κλάσεις. 1 Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) ηµήτριος Κατσαρός, Ph.D. Χειµώνας 2005 ιάλεξη 5η Ιστοσελίδα του µαθήµατος 2 http://skyblue.csd.auth.gr/~dimitris/courses/cpp_fall05.htm Θα

Διαβάστε περισσότερα

S, (5, -3, 34, -23, 7) ( /, @, *, _

S, (5, -3, 34, -23, 7) ( /, @, *, _ 1 Τι είναι αρχείο Οι πληροφορίες που καλείται να διαχειριστεί ο Η/Υ είναι τόσες πολλές που η μνήμη του δεν φτάνει να τις επεξεργαστεί όλες μαζί. Γι αυτό τον λόγο αποθηκεύονται σε μονάδες αποθήκευσης (π.χ

Διαβάστε περισσότερα

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language)

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) 1 Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) ηµήτριος Κατσαρός, Ph.D. Χειµώνας 2005 ιάλεξη 6η: Ερωτήσεις 2 Ιστοσελίδα του µαθήµατος http://skyblue.csd.auth.gr/~dimitris/courses/cpp_fall05.htm

Διαβάστε περισσότερα

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language)

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) 1 Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) ηµήτριος Κατσαρός, Ph.D. Χειµώνας 2005 ιάλεξη 7η 2 Ιστοσελίδα του µαθήµατος http://skyblue.csd.auth.gr/~dimitris/courses/cpp_fall05.htm Θα

Διαβάστε περισσότερα

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) Ιστοσελίδα του µαθήµατος. Περιεχόµενα. ηµήτριος Κατσαρός, Ph.D. Αλφαριθµητικά Κλάση string

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) Ιστοσελίδα του µαθήµατος. Περιεχόµενα. ηµήτριος Κατσαρός, Ph.D. Αλφαριθµητικά Κλάση string 1 Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) ηµήτριος Κατσαρός, Ph.D. Χειµώνας 2005 ιάλεξη 7η Ιστοσελίδα του µαθήµατος 2 http://skyblue.csd.auth.gr/~dimitris/courses/cpp_fall05.htm Θα

Διαβάστε περισσότερα

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language)

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) 1 Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) ηµήτριος Κατσαρός, Ph.D. Χειµώνας 2005 ιάλεξη 4η 2 Ιστοσελίδα του µαθήµατος http://skyblue.csd.auth.gr/~dimitris/courses/cpp_fall05.htm Θα

Διαβάστε περισσότερα

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

Προγραμματισμός Ι. Κλάσεις και Αντικείμενα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Κλάσεις και Αντικείμενα Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Κλάσεις Η γενική μορφή μιας κλάσης είναι η εξής: class class-name { private data and

Διαβάστε περισσότερα

Χωρική Βάση δεδοµένων Autocad

Χωρική Βάση δεδοµένων Autocad Χωρική Βάση δεδοµένων Autocad Όλοι η πληροφορία σας βρίσκεται σε ένα αρχείο µε κατάληξη.dwg το οποίο αντιπροσωπεύει τη βάση δεδοµένων σας. Αυτό το αρχείο µπορούµε να το επεξεργαστούµε µε διάφορους τρόπους

Διαβάστε περισσότερα

Αρχεία & Ρεύματα ΑΡΧΕΙΑ & ΡΕΥΜΑΤΑ. Γεώργιος Παπαϊωάννου (2013-14) gepap@aueb.gr

Αρχεία & Ρεύματα ΑΡΧΕΙΑ & ΡΕΥΜΑΤΑ. Γεώργιος Παπαϊωάννου (2013-14) gepap@aueb.gr ΑΡΧΕΙΑ & ΡΕΥΜΑΤΑ Γεώργιος Παπαϊωάννου (2013-14) gepap@aueb.gr Περιγραφή: Τύποι αρχείων Ρεύματα Άνοιγμα ρευμάτων Εγγραφή και ανάγνωση δεδομένων προς/από ένα ρεύμα Διαχείριση και κλείσιμο ρευμάτων Παραδείγματα

Διαβάστε περισσότερα

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

Οντοκεντρικός Προγραμματισμός Οντοκεντρικός Προγραμματισμός Ενότητα 9: C++ ΕΙΣΟΔΟΣ - ΕΞΟΔΟΣ / ΑΛΦΑΡΙΘΜΗΤΙΚΑ / ΑΡΧΕΙΑ Διαχείριση Αρχείων ΔΙΔΑΣΚΟΝΤΕΣ: Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής

Διαβάστε περισσότερα

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

Προγραμματισμός Ι. Εισαγωγή στην C++ Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Εισαγωγή στην C++ Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Η γλώσσα C++ Σχεδιάστηκε το 1979 από τον Bjarne Stroustrup στα Bell Laboratories Βασίζεται

Διαβάστε περισσότερα

Εισαγωγή στην πληροφορική

Εισαγωγή στην πληροφορική Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Αγρονόµων Τοπογράφων Μηχανικών Εισαγωγή στην πληροφορική Βασίλειος Βεσκούκης ρ. Ηλεκτρολόγος Μηχανικός & Μηχανικός Υπολογιστών ΕΜΠ v.vescoukis@cs.ntua.gr Ρωµύλος Κορακίτης

Διαβάστε περισσότερα

Προγραµµατιστικές Τεχνικές

Προγραµµατιστικές Τεχνικές Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Αγρονόµων Τοπογράφων Μηχανικών Προγραµµατιστικές Τεχνικές Βασίλειος Βεσκούκης ρ. Ηλεκτρολόγος Μηχανικός & Μηχανικός Υπολογιστών ΕΜΠ v.vescoukis@cs.ntua.gr Ρωµύλος Κορακίτης

Διαβάστε περισσότερα

18. ΡΕΥΜΑΤΑ(STREAMS) ΚΑΙ ΑΡΧΕΙΑ (FILES)

18. ΡΕΥΜΑΤΑ(STREAMS) ΚΑΙ ΑΡΧΕΙΑ (FILES) 18. ΡΕΥΜΑΤΑ(STREAMS) ΚΑΙ ΑΡΧΕΙΑ (FILES) ΡΕΥΜΑ (stream) : ροή δεδοµένων Ιεραρχία κλάσεων ρευµάτων Βασική κλάση της ιεραρχίας: ios Έχει πολλές κοινές συναρτήσεις π.χ. showpoint, χωριζόµενες σε 3 ειδών λειτουργίες

Διαβάστε περισσότερα

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

Στοιχειώδης προγραμματισμός σε C++ Στοιχειώδης προγραμματισμός σε C++ Σύντομο Ιστορικό. Το πρόγραμμα Hello World. Ο τελεστής εξόδου. Μεταβλητές και δηλώσεις τους. Αντικείμενα, μεταβλητές, σταθερές. Ο τελεστής εισόδου. Θεμελιώδεις τύποι.

Διαβάστε περισσότερα

ΗΓλώσσαΠρογραµµατισµού C++ (The C++ Programming Language)

ΗΓλώσσαΠρογραµµατισµού C++ (The C++ Programming Language) 1 ΗΓλώσσαΠρογραµµατισµού C++ (The C++ Programming Language) ηµήτριος Κατσαρός, Ph.D. Ελένη Τουσίδου, Ph.D. Χειµώνας 2006 ιάλεξη 9η: Ερωτήσεις 2 Ιστοσελίδα του µαθήµατος http://skyblue.csd.auth.gr/~dimitris/courses/cp

Διαβάστε περισσότερα

Εντολές εισόδου - εξόδου. Εισαγωγή στη C++

Εντολές εισόδου - εξόδου. Εισαγωγή στη C++ Εντολές εισόδου - εξόδου Εισαγωγή στη C++ Το πρώτο πρόγραμμα //my first program #include using namespace std; int main(){ cout

Διαβάστε περισσότερα

Επεξεργασία Αρχείων Κειµένου

Επεξεργασία Αρχείων Κειµένου Επεξεργασία Αρχείων Κειµένου Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Αρχεία Κειµένου Γενικά Συναρτήσεις Επεξεργασίας Αρχείων Κειµένου ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 1 Αρχεία Γενικά

Διαβάστε περισσότερα

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

Αντικειμενοστραφείς Γλώσσες Προγραμματισμού C++ / ROOT = Αντικειμενοστραφείς Γλώσσες Προγραμματισμού Ιωάννης Παπαδόπουλος Τμήμα Φυσικής, Πανεπιστήμιο Ιωαννίνων Δεκέμβριος 2018 1/18 = 2/18 = 1 αντικειμένων Μέθοδοι αντιγράφου (copy constructor) Κατασκευή μέσω

Διαβάστε περισσότερα

υναµική διαχείριση µνήµης στη C++ Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 2 είκτες

υναµική διαχείριση µνήµης στη C++ Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 2 είκτες υναµική διαχείριση µνήµης στη C++ Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: είκτες στη C++ Οι τελεστές new και delete Destructors Ορισµός τελεστών κλάσεων Ο δείκτης this ΕΠΛ 132 Αρχές Προγραµµατισµού

Διαβάστε περισσότερα

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language)

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) 1 Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) ηµήτριος Κατσαρός, Ph.D. Χειµώνας 2005 ιάλεξη 3η 2 Ιστοσελίδα του µαθήµατος http://skyblue.csd.auth.gr/~dimitris/courses/cpp_fall05.htm Θα

Διαβάστε περισσότερα

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) Ιστοσελίδα του µαθήµατος. Περιεχόµενα. ηµήτριος Κατσαρός, Ph.D. Πίνακες.

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) Ιστοσελίδα του µαθήµατος. Περιεχόµενα. ηµήτριος Κατσαρός, Ph.D. Πίνακες. 1 Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) ηµήτριος Κατσαρός, Ph.D. Χειµώνας 2005 ιάλεξη 3η Ιστοσελίδα του µαθήµατος 2 http://skyblue.csd.auth.gr/~dimitris/courses/cpp_fall05.htm Θα

Διαβάστε περισσότερα

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

Κλάσεις και αντικείμενα #include <iostream.h< Κλάσεις και αντικείμενα #include class Person private: char name[30]; int age; public: void readdata() cout > name; cout > age; void

Διαβάστε περισσότερα

Εισαγωγή στη C++ Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα:

Εισαγωγή στη C++ Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Εισαγωγή στη C++ Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Παράδειγµα χρήσης κλάσεων βιβλιοθηκών: Η κλάση string Ι/Ο στη C++ Βιβλιοθήκες της C++ Παράµετροι Αναφοράς, Παράµετροι default

Διαβάστε περισσότερα

ΗΓλώσσαΠρογραµµατισµού C++ (The C++ Programming Language)

ΗΓλώσσαΠρογραµµατισµού C++ (The C++ Programming Language) 1 ΗΓλώσσαΠρογραµµατισµού C++ (The C++ Programming Language) ηµήτριος Κατσαρός, Ph.D. Ελένη Τουσίδου, Ph.D. Χειµώνας 2006 ιάλεξη 4η 2 Ιστοσελίδα του µαθήµατος http://skyblue.csd.auth.gr/~dimitris/courses/cpp_fall06.htm

Διαβάστε περισσότερα

ΗΓλώσσαΠρογραµµατισµού C++ (The C++ Programming Language) Ιστοσελίδα του µαθήµατος. Περιεχόµενα. ηµήτριος Κατσαρός, Ph.D. Ελένη Τουσίδου, Ph.D.

ΗΓλώσσαΠρογραµµατισµού C++ (The C++ Programming Language) Ιστοσελίδα του µαθήµατος. Περιεχόµενα. ηµήτριος Κατσαρός, Ph.D. Ελένη Τουσίδου, Ph.D. 1 ΗΓλώσσαΠρογραµµατισµού C++ (The C++ Programming Language) ηµήτριος Κατσαρός, Ph.D. Ελένη Τουσίδου, Ph.D. Χειµώνας 2006 ιάλεξη 4η Ιστοσελίδα του µαθήµατος 2 http://skyblue.csd.auth.gr/~dimitris/courses/cpp_fall06.htm

Διαβάστε περισσότερα

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C Εισαγωγή στην C Μορφή Προγράµµατος σε γλώσσα C Τµήµα Α Με την εντολή include συµπεριλαµβάνω στο πρόγραµµα τα πρότυπα των συναρτήσεων εισόδου/εξόδου της C.Το αρχείο κεφαλίδας stdio.h είναι ένας κατάλογος

Διαβάστε περισσότερα

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

Προγραμματισμός Υπολογιστών με C++ Προγραμματισμός Υπολογιστών με C++ ( 2012-13 ) 2η διάλεξη Ίων Ανδρουτσόπουλος http://www.aueb.gr/users/ion/ 1 Τι θα ακούσετε σήμερα Βασικοί αριθμητικοί τύποι, μετατροπές τύπων και σταθερές. Πίνακες. Πίνακες

Διαβάστε περισσότερα

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

Οντοκεντρικός Προγραμματισμός Οντοκεντρικός Προγραμματισμός Ενότητα 7: C++ TEMPLATES, ΥΠΕΡΦΟΡΤΩΣΗ ΤΕΛΕΣΤΩΝ, ΕΞΑΙΡΕΣΕΙΣ Υπερφόρτωση Τελεστών ΔΙΔΑΣΚΟΝΤΕΣ: Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ

Διαβάστε περισσότερα

Προγραμματισμός Ι. Είσοδος/Έξοδος. Δημήτρης Μιχαήλ. Ακ. Έτος 2009-2010. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Ι. Είσοδος/Έξοδος. Δημήτρης Μιχαήλ. Ακ. Έτος 2009-2010. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Είσοδος/Έξοδος Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2009-2010 Είσοδος/Έξοδος Μέχρι τώρα όποτε θέλαμε να διαβάσουμε χρησιμοποιούσαμε πάντα

Διαβάστε περισσότερα

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

Εισαγωγή σε αντικειμενοστραφή concepts. Και λίγη C# Εισαγωγή σε αντικειμενοστραφή concepts Και λίγη C# Κλάσεις Κλάση: τύπος δεδομένων που αποτελεί συλλογή πεδίων, ορισμών συναρτήσεων/μεθόδων και ορισμών άλλων τύπων δεδομένων. Αντίστοιχο σκεπτικό με struct

Διαβάστε περισσότερα

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

Εισαγωγή στον Προγραµµατισµό, Αντώνιος Συµβώνης, ΣΕΜΦΕ, ΕΜΠ,, Slide 6 Ανασκόπηση Μια εφαρµογή Java είναι ένα σύνολο από συνεργαζόµενες κλάσεις Εβδοµάδα 2: Αντικείµενα, Κλάσεις και Μέθοδοι Εισαγωγή στον Προγραµµατισµό,,, Slide 1 Εισαγωγή στον Προγραµµατισµό,,, Slide 2 Ανασκόπηση:

Διαβάστε περισσότερα

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

Αντικειμενοστρεφής Προγραμματισμός Αντικειμενοστρεφής Προγραμματισμός Διδάσκουσα: Αναπλ. Καθηγήτρια Ανδριάνα Πρέντζα aprentza@unipi.gr Εργαστηριακός Συνεργάτης: Δρ. Βασιλική Κούφη vassok@unipi.gr Περιεχόμενα Java Classes Java Objects Java

Διαβάστε περισσότερα

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

Οντοκεντρικός Προγραμματισμός Οντοκεντρικός Προγραμματισμός Ενότητα 5: H ΓΛΩΣΣΑ C++ Δομές Ελέγχου ΔΙΔΑΣΚΟΝΤΕΣ: Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής Δομές Ελέγχου Εισαγωγή Πριν

Διαβάστε περισσότερα

ΠΡΟΤΥΠΑ. ΠΑΡΑ ΕΙΓΜΑ ηµιουργία πρότυπου στοίβας (stack) και στη συνέχεια δηµιουργία µιας στοίβας σηµείων.

ΠΡΟΤΥΠΑ. ΠΑΡΑ ΕΙΓΜΑ ηµιουργία πρότυπου στοίβας (stack) και στη συνέχεια δηµιουργία µιας στοίβας σηµείων. ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ Α.Π.Θ. ΕΡΓΑΣΤΗΡΙΟ C++ ΕΞΑΜΗΝΟ Γ Ακαδηµαϊκό Έτος 2006-2007 ΠΡΟΤΥΠΑ ΠΑΡΑ ΕΙΓΜΑ ηµιουργία πρότυπου στοίβας (stack) και στη συνέχεια δηµιουργία µιας στοίβας σηµείων. // point.h #ifndef POINT_H

Διαβάστε περισσότερα

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

Αντικειμενοστραφής Προγραμματισμός Κλάσεις Αντικειμενοστραφής Προγραμματισμός Κλάσεις-Αντικείμενα Ένα παράδειγμα Συναρτήσεις κατασκευής (Constructors) Συνάρτηση καταστροφής (Destructor) Συναρτήσεις πρόσβασης (Access Functions) Συνάρτηση

Διαβάστε περισσότερα

Δομή Προγράμματος C++, Χειρισμός Μεταβλητών και Συναρτήσεις Εισόδου - Εξόδου

Δομή Προγράμματος C++, Χειρισμός Μεταβλητών και Συναρτήσεις Εισόδου - Εξόδου Εργαστήριο 2: Δομή Προγράμματος C++, Χειρισμός Μεταβλητών και Συναρτήσεις Εισόδου - Εξόδου Ο σκοπός αυτής της εργαστηριακής άσκησης είναι η ανάλυση των βασικών χαρακτηριστικών της Γλώσσας Προγραμματισμού

Διαβάστε περισσότερα

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

Οντοκεντρικός Προγραμματισμός Οντοκεντρικός Προγραμματισμός Ενότητα 9: C++ ΕΙΣΟΔΟΣ - ΕΞΟΔΟΣ / ΑΛΦΑΡΙΘΜΗΤΙΚΑ / ΑΡΧΕΙΑ Κανάλια Εισόδου - Εξόδου ΔΙΔΑΣΚΟΝΤΕΣ: Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ

Διαβάστε περισσότερα

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

Αντικειμενοστραφείς Γλώσσες Προγραμματισμού C++ / ROOT Αντικειμενοστραφείς Γλώσσες Προγραμματισμού Ιωάννης Παπαδόπουλος Τμήμα Φυσικής, Πανεπιστήμιο Ιωαννίνων Οκτώβριος 2018 1/28 1 (implicit) μετατροπές 2 (Functions) 3 (Pointers) 4 (Arrays) 2/28 (implicit)

Διαβάστε περισσότερα

Προγραµµατιστικές Τεχνικές

Προγραµµατιστικές Τεχνικές Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Αγρονόµων Τοπογράφων Μηχανικών Προγραµµατιστικές Τεχνικές Βασίλειος Βεσκούκης ρ. Ηλεκτρολόγος Μηχανικός & Μηχανικός Υπολογιστών ΕΜΠ v.vescoukis@cs.ntua.gr Ρωµύλος Κορακίτης

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κληρονομικότητα

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

Διαβάστε περισσότερα

Λογισµικό (Software SW) Γλώσσες

Λογισµικό (Software SW) Γλώσσες Λογισµικό (Software SW) Γλώσσες Προγραµµατισµού Οι γενιές των γλωσσών προγραµµατισµού Προβλήµατα που επιλύονται σε ένα περιβάλλον στο οποίο ο άνθρωπος πρέπει να προσαρµόζεται στα χαρακτηριστικά της µηχανής

Διαβάστε περισσότερα

Συμβολοσειρές ΣΥΜΒΟΛΟΣΕΙΡΕΣ. Γεώργιος Παπαϊωάννου ( )

Συμβολοσειρές ΣΥΜΒΟΛΟΣΕΙΡΕΣ. Γεώργιος Παπαϊωάννου ( ) ΣΥΜΒΟΛΟΣΕΙΡΕΣ Γεώργιος Παπαϊωάννου (2013-14) gepap@aueb.gr Περιγραφή: Ο τύπος string Μετατροπή από και προς τον τύπο string Βασικές μέθοδοι Χρήση Ελληνικών Συναρτήσεις C εκτύπωσης και ανάγνωσης Τελευταία

Διαβάστε περισσότερα

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

Αντικειµενοστρεφής Προγραµµατισµός 16 η διάλεξη Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 Προηγούµενη ιάλεξη

Διαβάστε περισσότερα

Η πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης

Η πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης Η συνάρτηση printf() Η συνάρτηση printf() χρησιμοποιείται για την εμφάνιση δεδομένων στο αρχείο εξόδου stdout (standard output stream), το οποίο εξ ορισμού συνδέεται με την οθόνη Η συνάρτηση printf() δέχεται

Διαβάστε περισσότερα

Κλάσεις και Αντικείµενα

Κλάσεις και Αντικείµενα Κλάσεις και Αντικείµενα Γρηγόρης Τσουµάκας Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης Κλάσεις και Αντικείµενα 2 Τα αντικείµενα σε µια αντικειµενοστρεφή γλώσσα προγραµµατισµού, µοντελοποιούν

Διαβάστε περισσότερα

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

Προγραμματισμός Υπολογιστών με C++ Προγραμματισμός Υπολογιστών με C++ ( 2012-13 ) 10η διάλεξη Ίων Ανδρουτσόπουλος http://www.aueb.gr/users/ion/ 1 Τι θα ακούσετε σήμερα Υπερφόρτωση των τελεστών εισόδου και εξόδου. Τάξεις και δυναμική καταχώριση

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κληρονομικότητα

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

Διαβάστε περισσότερα

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

17TimeThis.h function returns reference pointer to same object { return *this; } Προαπαιτούµενη Κάθε οµάδα θα πρέπει να εµπλουτίσει το ίδιο πρόγραµµα, που έκανε την προηγούµενη φορά, προσθέτοντας στην κλάση του έναν ή περισσότερους υπερφορτωµένους τελεστές (όπως , ++, +,-,+=..)

Διαβάστε περισσότερα

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

Αναφορές, είκτες και Αλφαριθμητικά Αναφορές, είκτες και Αλφαριθμητικά Ο τελεστής αναφοροποίησης Αναφορές είκτες Πίνακες και δείκτες Ο τελεστής new και delete υναμικοί πίνακες είκτες προς συναρτήσεις Αλφαριθμητικά της C Πίνακες Αλφαριθμητικών

Διαβάστε περισσότερα

Προγραμματιστικές τεχνικές

Προγραμματιστικές τεχνικές Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Αγρονόμων Τοπογράφων Μηχανικών Προγραμματιστικές τεχνικές Βασίλειος Βεσκούκης Δρ. Ηλεκτρολόγος Μηχανικός & Μηχανικός Υπολογιστών ΕΜΠ v.vescoukis@cs.ntua.gr Ανασκόπηση

Διαβάστε περισσότερα

Προγραµµατιστικές τεχνικές

Προγραµµατιστικές τεχνικές Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Αγρονόµων Τοπογράφων Μηχανικών Προγραµµατιστικές τεχνικές Βασίλειος Βεσκούκης ρ. Ηλεκτρολόγος Μηχανικός & Μηχανικός Υπολογιστών ΕΜΠ v.vescoukis@cs.ntua.gr Ρωµύλος Κορακίτης

Διαβάστε περισσότερα

ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ. Τι περιλαμβάνει μια μεταβλητή; ΔΕΙΚΤΕΣ. Διεύθυνση μεταβλητής. Δείκτης

ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ. Τι περιλαμβάνει μια μεταβλητή; ΔΕΙΚΤΕΣ. Διεύθυνση μεταβλητής. Δείκτης ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ Τι περιλαμβάνει μια μεταβλητή; ΔΕΙΚΤΕΣ Πρώτα να δούμε τι ακριβώς συμπεριλαμβάνει μια μεταβλητή τύπος Καθορίζει το μέγεθος στην μνήμη σε Bytes τιμή Η αριθμητική τιμή που αποθηκεύεται στην

Διαβάστε περισσότερα

Αρχεία Ένα αρχείο αποτελείται από μία σειρά ομοειδών δεδομένων που ονομάζονται λογικές εγγραφές (logical record)

Αρχεία Ένα αρχείο αποτελείται από μία σειρά ομοειδών δεδομένων που ονομάζονται λογικές εγγραφές (logical record) Διαχείριση Αρχείων Αρχεία Για να είναι δυνατή η επεξεργασία μεγάλου αριθμού δεδομένων τα δεδομένα είναι αποθηκευμένα σε ψηφιακά μέσα κατάλληλα οργανωμένα. Η αποθήκευση γίνεται σε αρχεία. Πολλά προγράμματα

Διαβάστε περισσότερα

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2)

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2) Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Οργάνωση Προγράµµατος Header Files Μετάφραση και σύνδεση αρχείων προγράµµατος ΕΠΛ 132 Αρχές Προγραµµατισµού

Διαβάστε περισσότερα

Γλώσσα Προγραμματισμού C++ Εισαγωγή - Μια πρώτη ματιά

Γλώσσα Προγραμματισμού C++ Εισαγωγή - Μια πρώτη ματιά Γλώσσα Προγραμματισμού C++ Εισαγωγή - Μια πρώτη ματιά Βασικά χαρακτηριστικά αναπτύχθηκε ως επέκταση της C το 1979 υπερσύνολο της C γλώσσα γενικού σκοπού, γρήγορη, Αντικειμενοστραφής προγραμματισμός (Object

Διαβάστε περισσότερα

Γ7.1 Επανάληψη ύλης Β Λυκείου. Γ Λυκείου Κατεύθυνσης

Γ7.1 Επανάληψη ύλης Β Λυκείου. Γ Λυκείου Κατεύθυνσης Γ7.1 Επανάληψη ύλης Β Λυκείου Γ Λυκείου Κατεύθυνσης Απλά προγράμματα Ένα πρόγραμμα στη C++ που υπολογίζει το άθροισμα 2 ακέραιων αριθμών. // simple program #include using namespace std; int main(){

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κληρονομικότητα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κληρονομικότητα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κληρονομικότητα Παράδειγμα Στο παράδειγμα με το τμήμα πανεπιστημίου οι φοιτητές και οι καθηγητές είχαν κάποια κοινά στοιχεία Και οι δύο είχαν όνομα Και οι δύο

Διαβάστε περισσότερα

Διάλεξη 2. Μεταβλητές - Δομές Δεδομένων - Eίσοδος δεδομένων - Έξοδος: Μορφοποίηση - Συναρτήσεις. Διοργάνωση : ΚΕΛ ΣΑΤΜ

Διάλεξη 2. Μεταβλητές - Δομές Δεδομένων - Eίσοδος δεδομένων - Έξοδος: Μορφοποίηση - Συναρτήσεις. Διοργάνωση : ΚΕΛ ΣΑΤΜ Διάλεξη 2 Μεταβλητές - Δομές Δεδομένων - Eίσοδος δεδομένων - Έξοδος: Μορφοποίηση - Συναρτήσεις Διοργάνωση : ΚΕΛ ΣΑΤΜ Διαφάνειες: Skaros, MadAGu Παρουσίαση: MadAGu Άδεια: Creative Commons 3.0 2 Internal

Διαβάστε περισσότερα

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

Προγραμματισμός Ι. Προχωρημένα Θέματα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Προχωρημένα Θέματα Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ανακατεύθυνση Εισόδου/Εξόδου Συνήθως η τυπική είσοδος ενός προγράμματος (stdin) προέρχεται

Διαβάστε περισσότερα

ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡ/ΣΜΟΣ C++

ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡ/ΣΜΟΣ C++ Πέρασμα μεταβλητών, Templates, Συσχετίσεις μεταξύ κλάσεων ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡ/ΣΜΟΣ C++ Μ. Ρήγκου (rigou@ceid.upatras.gr) Τι θα συζητήσουμε σήμερα Πέρασμα με τιμή και με αναφορά Template functions και classes

Διαβάστε περισσότερα

Γ7.2 Συμβολοσειρές (Strings) Γ Λυκείου Κατεύθυνσης

Γ7.2 Συμβολοσειρές (Strings) Γ Λυκείου Κατεύθυνσης Γ7.2 Συμβολοσειρές (Strings) Γ Λυκείου Κατεύθυνσης Εισαγωγή Στη C++ υπάρχει η δυνατότητα να δηλώσουμε μία συμβολοσειρά ως αντικείμενο, χρησιμοποιώντας τη βιβλιοθήκη . Επειδή οι συμβολοσειρές είναι

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα Μαθήματα από το πρώτο εργαστήριο Δημιουργία αντικειμένου Scanner Scanner input = new Scanner(System.in); Το

Διαβάστε περισσότερα

ΠΟΛΥΜΟΡΦΙΣΜΟΣ. 4.1 Κληρονομικότητα και Αρχή της Υποκατάστασης

ΠΟΛΥΜΟΡΦΙΣΜΟΣ. 4.1 Κληρονομικότητα και Αρχή της Υποκατάστασης ΠΟΛΥΜΟΡΦΙΣΜΟΣ Λόγω της θεμελιώδους σημασίας της έννοιας του πολυμορφισμού (polymorphism) στην αντικειμενοστρεφή σχεδίαση, κρίνεται σκόπιμο στο σημείο αυτό του βιβλίου να αναλυθεί εκτενέστερα. Ο πολυμορφισμός

Διαβάστε περισσότερα

Βασικά της γλώσσας JAVA

Βασικά της γλώσσας JAVA 17 η διάλεξη Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 Προηγούµενη ιάλεξη

Διαβάστε περισσότερα

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

Εργαστήριο Java. Διδάσκουσα: Εργαστηριακοί Συνεργάτες: Εργαστήριο Java Διδάσκουσα: Πρέντζα Ανδριάνα aprentza@unipi.gr Εργαστηριακοί Συνεργάτες: Γεωργιοπούλου Ρούλα Λύβας Χρήστος roulageorio@ssl-unipi.gr clyvas@unipi.gr Εργαστήριο 3 Java Classes Java Objects

Διαβάστε περισσότερα

Ενδεικτική περιγραφή μαθήματος

Ενδεικτική περιγραφή μαθήματος ΜΑΘΗΜΑ: ΔΙΔΑΣΚΩΝ: ΤΜΗΜΑ: Αντικειμενοστρεφής Προγραμματισμός Συνδουκάς Δημήτριος Διοίκησης Επιχειρήσεων (Γρεβενά) Ενδεικτική περιγραφή μαθήματος 1. Εισαγωγή. Ο Bjarne Stroustrup, εργαζόμενος στα εργαστήρια

Διαβάστε περισσότερα

scanf() scanf() stdin scanf() printf() int float double %lf float

scanf() scanf() stdin scanf() printf() int float double %lf float Εισαγωγή Στον Προγραµµατισµό «C» Είσοδος Δεδοµένων Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Δ. Τσελίκας Νικόλαος Προγραµµατισµός Δ. Τσελίκας Ι Η συνάρτηση scanf() Η συνάρτηση

Διαβάστε περισσότερα

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

2.1 Αντικειµενοστρεφής προγραµµατισµός 2.1 Αντικειµενοστρεφής προγραµµατισµός Στον αντικειµενοστρεφή προγραµµατισµό (object oriented programming, OOP) ένα πρόγραµµα υπολογιστή είναι ένα σύνολο αλληλεπιδρώντων αντικειµένων. Μπορεί να ειπωθεί

Διαβάστε περισσότερα

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

ΚΑΤΑΣΚΕΥΑΣΤΕΣ ΑΝΤΙΓΡΑΦΗΣ ΚΑΤΑΣΚΕΥΑΣΤΕΣ ΑΝΤΙΓΡΑΦΗΣ Γεώργιος Παπαϊωάννου (2013-16) gepap@aueb.gr Περιγραφή: Deep/Shallow copies H αναγκαιότητα των κατασκευαστών αντιγραφής Ορισμός και χρήση κατασκευαστών αντιγραφής Τελευταία ενημέρωση:

Διαβάστε περισσότερα

Περιεχόμενα. Λίγα λόγια για αυτή την έκδοση... 23

Περιεχόμενα. Λίγα λόγια για αυτή την έκδοση... 23 Περιεχόμενα Λίγα λόγια για αυτή την έκδοση...... 23 Κεφάλαιο 1 Εισαγωγή... 25 O στόχος του βιβλίου και σε ποιους απευθύνεται... 27 Πώς να διαβάσετε αυτό το βιβλίο... 27 Εκπαίδευση από απόσταση... 29 Ιστορική

Διαβάστε περισσότερα

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (Programming in the large)

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (Programming in the large) Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (Programming in the large) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Συναρτήσεις Εξωτερικές µεταβλητές Κανόνες εµβέλειας ιάρκεια µεταβλητών Αρχικοποίηση

Διαβάστε περισσότερα

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal 1 ο Μέρος σηµειώσεων (Ενότητες 8.1 & 8.2 σχολικού βιβλίου)

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal 1 ο Μέρος σηµειώσεων (Ενότητες 8.1 & 8.2 σχολικού βιβλίου) ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal 1 ο Μέρος σηµειώσεων (Ενότητες 8.1 & 8.2 σχολικού βιβλίου) 1. Εισαγωγή Χαρακτηριστικά της γλώσσας Τύποι δεδοµένων Γλώσσα προγραµµατισµού

Διαβάστε περισσότερα

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

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #2 Ανασκόπηση Μια εφαρμογή Java είναι ένα σύνολο από συνεργαζόμενες κλάσεις Διάλεξη #2: Αντικείμενα, Κλάσεις και Μέθοδοι Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 1 Εισαγωγή στον Αντικειμενοστρεφή

Διαβάστε περισσότερα

Κεφάλαιο 8.7. Πίνακες & Συναρτήσεις ( ιάλεξη 17) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Κεφάλαιο 8.7. Πίνακες & Συναρτήσεις ( ιάλεξη 17) ιδάσκων: ηµήτρης Ζεϊναλιπούρ Κεφάλαιο 8.7 Πίνακες & Συναρτήσεις ( ιάλεξη 17) ιδάσκων: ηµήτρης Ζεϊναλιπούρ 17-1 Εισαγωγή Στις προηγούµενες διαλέξεις µάθαµε πώς να δηλώνουµε, αρχικοποιούµε και να επεξεργαζόµαστε πίνακες. Σήµερα θα µελετήσουµε

Διαβάστε περισσότερα

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

Κλήση Συναρτήσεων ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ. Γεώργιος Παπαϊωάννου ( ) ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ Γεώργιος Παπαϊωάννου (2013-16) gepap@aueb.gr Περιγραφή: Μορφές μεταβίβασης ορισμάτων σε συναρτήσεις (και μεθόδους) και οι επιπτώσεις τους Επιστροφή τιμών από κλήση συναρτήσεων Υπερφόρτωση

Διαβάστε περισσότερα

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) Μεταβλητές,

Διαβάστε περισσότερα

(Κεφάλαιο 2.7 και 12) Αρχεία στην C. (Διάλεξη 15)

(Κεφάλαιο 2.7 και 12) Αρχεία στην C. (Διάλεξη 15) (Κεφάλαιο 2.7 και 12) Αρχεία στην C (Διάλεξη 15) 14-1 Επανάληψη στην Αποθήκευση (Storage) Για να αποθηκεύσουμε δεδομένα από ένα πρόγραμμα, πρέπει να χρησιμοποιήσουμε την Δευτερεύουσα Μνήμη 14-2 Επανάληψη

Διαβάστε περισσότερα

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι Εισαγωγή Στον Προγραµµατισµό «C» Πίνακες Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Δ. Τσελίκας Νικόλαος Προγραµµατισµός Δ. Τσελίκας Ι Πίνακες στη C Ένας πίνακας στη C είναι

Διαβάστε περισσότερα

Προγραµµατιστικές Τεχνικές

Προγραµµατιστικές Τεχνικές Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Αγρονόµων Τοπογράφων Μηχανικών Προγραµµατιστικές Τεχνικές Βασίλειος Βεσκούκης ρ. Ηλεκτρολόγος Μηχανικός & Μηχανικός Υπολογιστών ΕΜΠ v.vescoukis@cs.ntua.gr Ρωµύλος Κορακίτης

Διαβάστε περισσότερα

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

12. ΑΛΦΑΡΙΘΜΗΤΙΚΑ. υο είδη αλφαριθµητικών Τα αλφαριθµητικά της C πίνακες τύπου char Ta αντικείµενα της κλάσης string 12. ΑΛΦΑΡΙΘΜΗΤΙΚΑ υο είδη αλφαριθµητικών Τα αλφαριθµητικά της C πίνακες τύπου char Ta αντικείµενα της κλάσης string Aλφαριθµητικά της C int main() const int max=80; char str[max); //κάθε char δεσµεύει

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Μέθοδοι Παράδειγμα 1 Θέλουμε ένα πρόγραμμα που να προσομοιώνει την κίνηση ενός αυτοκινήτου, το οποίο κινείται και τυπώνει τη θέση του.

Διαβάστε περισσότερα

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

Η εντολή if-else. Η απλή μορφή της εντολής if είναι η ακόλουθη: if (συνθήκη) { Η γενική μορφή της εντολής ifelse. εντολή_1; εντολή_2;.. Επιλογή - Επανάληψη Η εντολή if-else Ο τελεστής παράστασης συνθήκης H εντολή switch Η εντολές for και while Η εντολή do-while Η εντολές break - continue - goto Μαθηματικές συναρτήσεις Λέξεις κλειδιά στη

Διαβάστε περισσότερα

Κεφάλαιο 2.6: Είσοδος / Έξοδος εδοµένων, Μορφοποίηση εδοµένων Εξόδου. ( ιάλεξη 7) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Κεφάλαιο 2.6: Είσοδος / Έξοδος εδοµένων, Μορφοποίηση εδοµένων Εξόδου. ( ιάλεξη 7) ιδάσκων: ηµήτρης Ζεϊναλιπούρ Κεφάλαιο 2.6: Είσοδος / Έξοδος εδοµένων, Μορφοποίηση εδοµένων Εξόδου ( ιάλεξη 7) ιδάσκων: ηµήτρης Ζεϊναλιπούρ 1 Είσοδος/ Έξοδος Σε σχεδόν όλα τα προγράµµατα πρέπει να πάρουµε κάποια δεδοµένα και να δώσουµε

Διαβάστε περισσότερα

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

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΚΑΙ ΠΙΝΑΚΕΣ ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΚΑΙ ΠΙΝΑΚΕΣ Γεώργιος Παπαϊωάννου (2013-16) gepap@aueb.gr Περιγραφή: Βασικοί Τύποι Πίνακες (μέρος 1) Συμβολοσειρές Ο Προεπεξεργαστής Τελευταία ενημέρωση: Σεπτέμβριος 2016 Εισαγωγή - 2 short:

Διαβάστε περισσότερα

Συναρτήσεις και Πίνακες

Συναρτήσεις και Πίνακες Συναρτήσεις και Πίνακες Συναρτήσεις καθιερωμένης βιβλιοθήκης της C++ Συναρτήσεις οριζόμενες από τον χρήστη Μεταβίβαση κατ αξία Συναρτήσεις void και λογικές συναρτήσεις Μεταβίβαση κατ αναφορά Επιστροφή

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Μέθοδοι Παράδειγμα Θέλουμε ένα πρόγραμμα που να προσομοιώνει την κίνηση ενός αυτοκινήτου, το οποίο κινείται και τυπώνει τη θέση του.

Διαβάστε περισσότερα

343 Ειςαγωγι ςτον Ρρογραμματιςμό

343 Ειςαγωγι ςτον Ρρογραμματιςμό 343 Ειςαγωγι ςτον Ρρογραμματιςμό Τμιμα Μακθματικϊν Ρανεπιςτιμιο Ιωαννίνων Ακαδθμαϊκό Ζτοσ 2016-2017 Χάρθσ Ραπαδόπουλοσ 207δ, B όροφοσ e-mail: charis@cs.uoi.gr Ωρεσ Γραφείου: Ρζμπτθ 11-13 Θ: διάλεξη (θεωρία)

Διαβάστε περισσότερα

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

Οντοκεντρικός Προγραμματισμός Οντοκεντρικός Προγραμματισμός Ενότητα 7: C++ TEMPLATES, ΥΠΕΡΦΟΡΤΩΣΗ ΤΕΛΕΣΤΩΝ, ΕΞΑΙΡΕΣΕΙΣ Χειρισμός Εξαιρέσεων ΔΙΔΑΣΚΟΝΤΕΣ: Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ

Διαβάστε περισσότερα

5. ΣΥΝΑΡΤΗΣΕΙΣ. (Πρόχειρο σχέδιο - Μαθήµατος 3) p23-29. 5.1 Συναρτήσεις, που δεν επιστρέφουν κάποια τιµή

5. ΣΥΝΑΡΤΗΣΕΙΣ. (Πρόχειρο σχέδιο - Μαθήµατος 3) p23-29. 5.1 Συναρτήσεις, που δεν επιστρέφουν κάποια τιµή (Πρόχειρο σχέδιο - Μαθήµατος 3) p23-29 5. ΣΥΝΑΡΤΗΣΕΙΣ 5.1 Συναρτήσεις, που δεν επιστρέφουν κάποια τιµή Η συνάρτηση είναι void, δεν επιστρέφει κάποια τιµή. //Oρισµός συνάρτησης χωρίς παραµέτρους // 12.

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Οντοκεντρικός Προγραμματισμός Οντοκεντρικός Προγραμματισμός Ενότητα 6: C++ ΚΛΑΣΕΙΣ, ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ, ΠΟΛΥΜΟΡΦΙΣΜΟΣ Κληρονομικότητα ΔΙΔΑΣΚΟΝΤΕΣ: Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής

Διαβάστε περισσότερα