C++ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. P. J. Deitel. H. M. Deitel. Εκδόσεις: Μ. Γκιούρδας ΕΚΤΗ ΕΚ ΟΣΗ. Deitel & Associates, Inc. Deitel & Associates, Inc.

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

Download "C++ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. P. J. Deitel. H. M. Deitel. Εκδόσεις: Μ. Γκιούρδας ΕΚΤΗ ΕΚ ΟΣΗ. Deitel & Associates, Inc. Deitel & Associates, Inc."

Transcript

1 C++ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΕΚΤΗ ΕΚ ΟΣΗ P. J. Deitel Deitel & Associates, Inc. H. M. Deitel Deitel & Associates, Inc. Απόδοση: Ε. Γκαγκάτσιου Ηλεκτρονικός Μηχανικός Εκδόσεις: Μ. Γκιούρδας Ζωοδόχου Πηγής Τηλ.: Αθήνα,

2 Τίτλος Πρωτοτύπου: C++ How to Program Sixth Edition ISBN Copyright 2008 by Pearson Education, Inc. Upper Saddle River, New Jersey Αποκλειστικότητα για την Ελληνική Γλώσσα Εκδόσεις: Μόσχος Γκιούρδας Ζωοδόχου Πηγής Τηλ.: Αθήνα, ISBN: Επιμέλεια κειμένων: Ελένη Γκαγκάτσιου Desktop Publishing: Κ. Καλαϊτζής, τηλ.: Εκτύπωση: ΜΗΤΡΟΠΟΛΙΣ Γραφικές Τέχνες Α.Ε., τηλ.: Βιβλιοδεσία: ΣΤΑΜΟΥ Γραφικές Τέχνες - Εκδόσεις Αναδημοσίευση του βιβλίου σε οποιαδήποτε μορ φή, ολόκληρου ή μέ ρους, καθώς και των περιεχομένων προ γραμ μά των, δεν επιτρέπεται χωρίς την έγγραφη εξου σιο δό τη ση του εκδότη.

3 Aφιερώνεται στα θύματα της τραγωδίας στο Virginia Tech, στις οικογένειές τους, στους φίλους τους και σε όλη την κοινότητα του Virginia Tech. Paul και Harvey Deitel

4 Περιεχόμενα Πρόλογος Πριν Ξεκινήσετε 1 Εισαγωγή στους Υπολογιστές, το Internet και το World Wide Web Εισαγωγή Τι Είναι Ένας Υπολογιστής; Η Οργάνωση του Υπολογιστή Τα Πρώτα Λειτουργικά Συστήματα Προσωπικοί Υπολογιστές, Κατανεμημένα και Client/Server Περιβάλλοντα Υπολογιστών Το Internet και το World Wide Web Το Web Γλώσσες Μηχανής, Assembly και Υψηλού Επιπέδου Ιστορικό της C και της C Η Στάνταρ Βιβλιοθήκη της C Ιστορικό της Java Fortran, COBOL, Pascal και Ada BASIC, Visual Basic, Visual C++, C# και.net Μία Σημαντική Τάση του Λογισμικού: Η Τεχνολογία των Αντικειμένων Ένα Τυπικό Περιβάλλον Ανάπτυξης Εφαρμογών C Σημειώσεις για την C++ και Αυτό το Βιβλίο οκιμή μιας Εφαρμογής C Τεχνολογίες Λογισμικού Προγραμματισμός Παιχνιδιών με τις Βιβλιοθήκες Ogre Το Μέλλον της C++: Οι Βιβλιοθήκες Ανοιχτού Κώδικα Boost, η Έκθεση TR1 και η C++0x Μελέτη Υπόθεσης για Κατασκευή Λογισμικού: Εισαγωγή στην Τεχνολογία των Αντικειμένων και την UML Σύνοψη Πηγές Πληροφοριών στο Web 31 2 Εισαγωγή στον Προγραμματισμό με την C Εισαγωγή Το Πρώτο μας Πρόγραμμα σε C++: Εκτύπωση Μιας Γραμμής Κειμένου Τροποποίηση του Πρώτου μας Προγράμματος C Ένα Επόμενο Πρόγραμμα C++: Πρόσθεση Ακέραιων Βασικές Έννοιες για τη Μνήμη Αριθμητική Λήψη Αποφάσεων: Ισότητα και Σχεσιακοί Τελεστές (Προαιρετική) Μελέτη Υπόθεσης για Κατασκευή Λογισμικού: Εξέταση της Προδιαγραφής Απαιτήσεων για το Σύστημα ATM Σύνοψη 72 3 Εισαγωγή στις Κλάσεις και τα Αντικείμενα Εισαγωγή Κλάσεις, Αντικείμενα, Συναρτήσεις-Μέλη και Μέλη εδομένων Συνοπτική Παρουσίαση των Παραδειγμάτων του Κεφαλαίου Ορισμός μιας Κλάσης με μία Συνάρτηση-Μέλος Ορισμός μιας Συνάρτησης-Μέλους με μία Παράμετρο 88 xviii xlvi

5 viii ΠΕΡΙΕΧΟΜΕΝΑ 3.6 Μέλη εδομένων και Συναρτήσεις Ορισμού (set) και Ανάκτησης (get) Τιμής Αρχικοποίηση Αντικειμένων με Συναρτήσεις Constructor Τοποθέτηση μιας Κλάσης σε Ξεχωριστό Αρχείο για Αυξημένες υνατότητες Επαναχρησιμοποίησης ιαχωρισμός της ιεπιφάνειας από την Υλοποίηση Επικύρωση εδομένων με Συναρτήσεις set (Προαιρετική) Μελέτη Υπόθεσης για Κατασκευή Λογισμικού: Προσδιορισμός των Κλάσεων στην Προδιαγραφή Απαιτήσεων του Συστήματος ATM Σύνοψη Εντολές Ελέγχου Μέρος Εισαγωγή Αλγόριθμοι Ψευδοκώδικας ομές Ελέγχου Η εντολή Επιλογής if Η Εντολή ύο Εναλλακτικών Επιλογών if else Η Εντολή Επανάληψης while ιατύπωση Αλγορίθμων: Επανάληψη Βασιζόμενη σε Μετρητή ιατύπωση Αλγορίθμων: Επανάληψη Βασιζόμενη σε Τιμή Οριοθέτησης ιατύπωση Αλγορίθμων: Ένθετες Εντολές Ελέγχου Τελεστές Εκχώρησης Τελεστές Αύξησης και Μείωσης Τιμής (Προαιρετική) Μελέτη Υπόθεσης για Κατασκευή Λογισμικού: Προσδιορισμός των Ιδιοτήτων των Κλάσεων στο Σύστημα ATM Σύνοψη Εντολές Ελέγχου Μέρος Εισαγωγή Βασικά Στοιχεία της Ελεγχόμενης με Μετρητή Επανάληψης Η Εντολή Επανάληψης for Παραδείγματα Χρήσης της Εντολής for Η Εντολή Επανάληψης do...while Η Εντολή Πολλαπλών Επιλογών switch Οι Εντολές break και continue Λογικοί Τελεστές Σύγχυση Μεταξύ των Τελεστών Ισότητας (==) και Εκχώρησης (=) Σύνοψη του ομημένου Προγραμματισμού (Προαιρετική) Μελέτη Υπόθεσης για Κατασκευή Λογισμικού: Προσδιορισμός των Καταστάσεων και ραστηριοτήτων των Αντικειμένων στο Σύστημα ATM Σύνοψη Συναρτήσεις και Εισαγωγή στην Αναδρομή Εισαγωγή Τα Συστατικά Ενός Προγράμματος C Η Βιβλιοθήκη Μαθηματικών Συναρτήσεων Ορισμοί Συναρτήσεων με Πολλαπλές Παραμέτρους Πρωτότυπα Συναρτήσεων και Συμμόρφωση Ορισμάτων Τα Header Αρχεία της Στάνταρ Βιβλιοθήκης της C Μελέτη Υπόθεσης: Παραγωγή Τυχαίων Αριθμών Μελέτη Υπόθεσης: Παιχνίδι Τύχης, Παρουσίαση του Τύπου Απαρίθμησης (enum) Κατηγορίες Αποθήκευσης Κανόνες Εμβέλειας 271

6 ΠΕΡΙΕΧΟΜΕΝΑ ix 6.11 Στοίβα Κλήσεων Συναρτήσεων και Εγγραφές Ενεργοποίησης Συναρτήσεις με Κενές Λίστες Παραμέτρων inline (Επιτόπου) Συναρτήσεις Αναφορές και Παράμετροι Αναφορών Προεπιλεγμένα Ορίσματα Ο Μοναδιαίος Τελεστής Επίλυσης Εμβέλειας Υπερφόρτωση Συναρτήσεων Πρότυπα Συναρτήσεων Εισαγωγή στην Αναδρομή Παράδειγμα Χρήσης της Αναδρομής: Σειρά Fibonacci Αναδρομή Έναντι Επανάληψης (Προαιρετική) Μελέτη Υπόθεσης για Κατασκευή Λογισμικού: Προσδιορισμός των Λειτουργιών των Κλάσεων στο Σύστημα ΑΤΜ Σύνοψη Πίνακες και Ανύσματα Εισαγωγή Πίνακες (Arrays) ήλωση Πινάκων Παραδείγματα Χρήσης Πινάκων ήλωση Ενός Πίνακα και Χρήση Ενός Βρόχου για την Αρχικοποίηση των Στοιχείων του Αρχικοποίηση Ενός Πίνακα σε Μία ήλωση, με τη Χρήση Μιας Λίστας Αρχικοποίησης Καθορισμός του Μεγέθους Ενός Πίνακα με Χρήση Μιας Σταθεράς και Ορισμός Τιμών στα Στοιχεία του με Χρήση Υπολογισμών Άθροιση των Στοιχείων Ενός Πίνακα Χρήση Ενός Γραφήματος Ράβδων για την Απεικόνιση των εδομένων Ενός Πίνακα Χρήση των Στοιχείων Ενός Πίνακα σαν Μετρητές Χρήση Πινάκων για τη Σύνοψη των Αποτελεσμάτων μιας Έρευνας Χρήση Πινάκων Χαρακτήρων για την Αποθήκευση και ιαχείριση Αλφαριθμητικών Στατικοί Τοπικοί Πίνακες και Αυτόματοι Τοπικοί Πίνακες Πέρασμα Πινάκων σε Συναρτήσεις Μελέτη Υπόθεσης: Χρήση Ενός Πίνακα για την Αποθήκευση των Βαθμών στην Κλάση GradeBook ιεξαγωγή Γραμμικών Αναζητήσεων σε Πίνακες Ταξινόμηση Πινάκων Πολυδιάστατοι Πίνακες Μελέτη Υπόθεσης: Χρήση ισδιάστατου Πίνακα στην Κλάση GradeBook Εισαγωγή στο Πρότυπο Κλάσης vector από τη Στάνταρ Βιβλιοθήκη της C (Προαιρετική) Μελέτη Υπόθεσης για Κατασκευή Λογισμικού: Συνεργασία Μεταξύ Αντικειμένων στο Σύστημα ATM Σύνοψη είκτες και Αλφαριθμητικά Βασιζόμενα σε είκτες Εισαγωγή ηλώσεις και Αρχικοποίηση Μεταβλητών είκτη Τελεστές που Χρησιμοποιούνται με είκτες Χρήση εικτών για το Πέρασμα Ορισμάτων ι Αναφοράς σε Συναρτήσεις Χρήση του const με είκτες Υλοποίηση του Αλγόριθμου Ταξινόμησης με Επιλογή, Χρησιμοποιώντας Πέρασμα ι Αναφοράς Ο Τελεστής sizeof Εκφράσεις και Αριθμητική με είκτες Η Σχέση Μεταξύ εικτών και Πινάκων 434

7 x ΠΕΡΙΕΧΟΜΕΝΑ 8.10 Πίνακες εικτών Μελέτη Υπόθεσης: Προσομοιώνοντας το Ανακάτεμα και το Μοίρασμα της Τράπουλας είκτες προς Συναρτήσεις Εισαγωγή στις Βασιζόμενες σε είκτες Τεχνικές Επεξεργασίας Αλφαριθμητικών Χαρακτήρες και Βασιζόμενα σε είκτες Αλφαριθμητικά Εισαγωγή Συναρτήσεις Χειρισμού Αλφαριθμητικών Σύνοψη Ενδελεχής Εξέταση των Κλάσεων Μέρος Εισαγωγή Μελέτη Υπόθεσης: Η Κλάση Time Εμβέλεια Κλάσης και Προσπέλαση των Μελών μιας Κλάσης ιαχωρισμός της ιεπιφάνειας από την Υλοποίηση Συναρτήσεις Προσπέλασης και Βοηθητικές Συναρτήσεις Μελέτη Υπόθεσης για την Κλάση Time: Συναρτήσεις Constructor με Προεπιλεγμένα Ορίσματα Συναρτήσεις Destructor Πότε Καλούνται οι Συναρτήσεις Constructor και Destructor Μελέτη Υπόθεσης για την Κλάση Time: Μία Ύπουλη Παγίδα Επιστροφή Αναφοράς προς Ένα Ιδιωτικό Μέλος εδομένων Προκαθορισμένη Εκχώρηση Μέλους Προς Μέλος (Προαιρετική) Μελέτη Υπόθεσης για Κατασκευή Λογισμικού: Ξεκινώντας την Συγγραφή Κώδικα για τις Κλάσεις του Συστήματος ΑΤΜ Σύνοψη Ενδελεχής Εξέταση των Κλάσεων Μέρος Εισαγωγή const Αντικείμενα και const Συναρτήσεις-Μέλη Σύνθεση: Αντικείμενα σαν Μέλη Κλάσεων Φιλικές (friend) Συναρτήσεις και Κλάσεις Χρήση του είκτη this υναμική ιαχείριση Μνήμης με τους Τελεστές new και delete Στατικά (static) Μέλη Κλάσεων Αφαιρετικότητα εδομένων και Απόκρυψη Πληροφοριών Παράδειγμα: Αφηρημένος Τύπος εδομένων Array Παράδειγμα: Αφηρημένος Τύπος εδομένων String Παράδειγμα: Αφηρημένος Τύπος εδομένων Queue Κλάσεις Container και Iterator Κλάσεις Μεσολάβησης Σύνοψη Υπερφόρτωση Τελεστών: Αντικείμενα String και Array Εισαγωγή Τα Βασικά της Υπερφόρτωσης Τελεστών Οι Περιορισμοί της Υπερφόρτωσης Τελεστών Συναρτήσεις Τελεστών ως Μέλη Κλάσεων Έναντι Γενικών Συναρτήσεων Υπερφόρτωση Τελεστών Εισαγωγής/Εξαγωγής Stream Υπερφόρτωση Μοναδιαίων Τελεστών Υπερφόρτωση υαδικών Τελεστών Μελέτη Εφαρμογής: Η Κλάση Array Μετατροπές Μεταξύ Τύπων Μελέτη Εφαρμογής: Η Κλάση String Υπερφόρτωση των Τελεστών ++ και

8 ΠΕΡΙΕΧΟΜΕΝΑ xi Μελέτη Εφαρμογής: Μια Κλάση Date Η Κλάση string της Στάνταρ Βιβλιοθήκης Ρητές (explicit) Συναρτήσεις Constructor Σύνοψη Αντικειμενοστραφής Προγραμματισμός: Κληρονομικότητα Εισαγωγή Κλάσεις Βάσης και Παραγόμενες Κλάσεις protected Μέλη Σχέση μεταξύ Κλάσεων Βάσης και Παραγόμενων Κλάσεων ημιουργία και Χρήση Κλάσης CommissionEmployee ημιουργία της Κλάσης BasePlusCommissionEmployee Χωρίς τη Χρήση Κληρονομικότητας ημιουργία των Κλάσεων CommissionEmployee & BasePlusCommissionEmployee με Χρήση Ιεραρχίας Κληρονομικότητας Χρήση protected εδομένων στην Ιεραρχία Κληρονομικότητας των Κλάσεων CommissionEmployee & BasePlusCommissionEmployee Χρήση private εδομένων στην Ιεραρχία Κληρονομικότητας των Κλάσεων CommissionEmployee & BasePlusCommissionEmployee Συναρτήσεις Constructor και Destructor σε Παραγόμενες Κλάσεις public, protected και private Κληρονομικότητα Κατασκευή Λογισμικού και Κληρονομικότητα Σύνοψη Αντικειμενοστραφής Προγραμματισμός: Πολυμορφισμός Εισαγωγή Παραδείγματα Πολυμορφισμού Σχέσεις Μεταξύ Αντικειμένων σε μια Ιεραρχία Κληρονομικότητας Κλήση Συναρτήσεων της Κλάσης Βάσης από Αντικείμενα της Παραγόμενης Κλάσης Στόχευση εικτών της Παραγόμενης Κλάσης σε Αντικείμενα της Κλάσης Βάσης Κλήσεις Συναρτήσεων-Μελών της Παραγόμενης Κλάσης μέσω εικτών της Κλάσης Βάσης Εικονικές (Virtual) Συναρτήσεις Επιτρεπτές Ενέργειες Εκχώρησης Αντικειμένων & εικτών Μεταξύ Κλάσης Βάσης και Παραγόμενης Κλάσης Πεδία Τύπου και Εντολές switch Αφηρημένες Κλάσεις και Αμιγώς Εικονικές Συναρτήσεις Μελέτη Υπόθεσης: Σύστημα Μισθοδοσίας με Χρήση Πολυμορφισμού ημιουργία Αφηρημένης Κλάσης Βάσης Employee ημιουργία Απτής Παραγόμενης Κλάσης SalariedEmployee ημιουργία Απτής Παραγόμενης Κλάσης HourlyEmployee ημιουργία Απτής Παραγόμενης Κλάσης CommissionEmployee ημιουργία Έμμεσης Απτής Παραγόμενης Κλάσης BasePlusCommissionEmployee Επίδειξη Πολυμορφικής Επεξεργασίας (Προαιρετική) Πολυμορφισμός, Εικονικές Συναρτήσεις και υναμική Σύνδεση στα Παρασκήνια Μελέτη Υπόθεσης: Σύστημα Μισθοδοσίας με Χρήση Πολυμορφισμού, Πληροφοριών Τύπου Χρόνου Εκτέλεσης, και Μετατροπής Τύπων με τους Τελεστές dynamic_cast, typeid και type_info Εικονικές Συναρτήσεις Destructor 742

9 xii ΠΕΡΙΕΧΟΜΕΝΑ (Προαιρετική) Μελέτη Υπόθεσης για Κατασκευή Λογισμικού: Ενσωμάτωση της Κληρονομικότητας στο Σύστημα ATM Σύνοψη Πρότυπα Εισαγωγή Πρότυπα Συναρτήσεων Υπερφόρτωσης Προτύπων Συναρτήσεων Πρότυπα Κλάσεων Παράμετροι Άνευ Τύπου και Προκαθορισμένοι Τύποι για Πρότυπα Κλάσεων Σημειώσεις για τα Πρότυπα και την Κληρονομικότητα Σημειώσεις για τα Πρότυπα και τις Φιλικές Συναρτήσεις Σημειώσεις για τα Πρότυπα και τα static Μέλη Σύνοψη Είσοδος και Έξοδος: Streams Εισαγωγή Streams Γενική Παρουσίαση Σύγκριση Μεταξύ Κλασικών και Στάνταρ Streams Header Αρχεία της Βιβλιοθήκης iostream Κλάσεις και Αντικείμενα για Streams Εισόδου/Εξόδου Έξοδος εδομένων μέσω Streams Έξοδος Μεταβλητών char * Έξοδος Χαρακτήρων με τη Συνάρτηση-Μέλος put Είσοδος εδομένων μέσω Streams Οι Συναρτήσεις-Μέλη get και getline Οι Συναρτήσεις-Μέλη istream peek, putback και ignore Είσοδος/Έξοδος με Ασφάλεια ως προς τους Τύπους εδομένων Μη Μορφοποιημένη Είσοδος/Έξοδος με τις read, write και gcount Εισαγωγή στους Χειριστές Stream Καθορισμός Αριθμητικής Βάσης: dec, oct, hex και setbase Ακρίβεια Τιμών Κινητής Υποδιαστολής: precision, setprecision Πλάτος Πεδίων: width, setw Καθοριζόμενοι από το Χρήστη Χειριστές Stream Καταστάσεις Μορφοποίησης Stream και Χειριστές Stream Τελικά Μηδενικά και εκαδικά Σύμβολα: showpoint Στοίχιση: left, right και internal Συμπλήρωση: fill, setfill Αριθμητική Βάση: dec, oct, hex, showbase Εκθετική και Σταθερή Σύνταξη Αριθμών Κινητής Υποδιαστολής: scientific, fixed Έλεγχος Κεφαλαίων/Πεζών Καθορισμός Μορφής Λογικών Τιμών: boolalpha Ορισμός και Ανάκτηση Κατάστασης Μορφοποίησης Μέσω της Συνάρτησης-Μέλους flags Καταστάσεις του Stream Σφαλμάτων Σύνδεση Ενός Stream Εξόδου με Ένα Stream Εισόδου Σύνοψη Χειρισμός Εξαιρέσεων Εισαγωγή Εισαγωγή στο Χειρισμό Εξαιρέσεων Ένα Απλό Παράδειγμα Χειρισμού Εξαίρεσης: ιαίρεση με το 0 819

10 ΠΕΡΙΕΧΟΜΕΝΑ xiii 16.4 Πότε Πρέπει να Χρησιμοποιείτε Χειρισμό Εξαιρέσεων Επανενεργοποίηση μιας Εξαίρεσης Προδιαγραφές Εξαιρέσεων Χειρισμός μη Αναμενόμενων Εξαιρέσεων «Ξετύλιγμα» της Στοίβας Κλήσεων Συναρτήσεις Constructor/Destructor και Χειρισμός Εξαιρέσεων Εξαιρέσεις και Κληρονομικότητα Χειρισμός των Αποτυχιών του Τελεστή new Η Κλάση auto_ptr και υναμική έσμευση Μνήμης Η Ιεραρχία των Κλάσεων Εξαιρέσεων της Στάνταρ Βιβλιοθήκης Άλλες Τεχνικές Χειρισμού Σφαλμάτων Σύνοψη Επεξεργασία Αρχείων Εισαγωγή Η Ιεραρχία των εδομένων Αρχεία και Streams ημιουργία Αρχείων Σειριακής Προσπέλασης Ανάγνωση εδομένων από Αρχεία Σειριακής Προσπέλασης Ενημέρωση Αρχείων Σειριακής Προσπέλασης Αρχεία Τυχαίας Προσπέλασης ημιουργία Αρχείων Τυχαίας Προσπέλασης Τυχαία Εγγραφή εδομένων σε Ένα Αρχείο Τυχαίας Προσπέλασης Σειριακή Ανάγνωση εδομένων από Ένα Αρχείο Τυχαίας Προσπέλασης Παράδειγμα: Εφαρμογή Επεξεργασίας Συναλλαγών Object Serialization: Είσοδος & Έξοδος σε Αντικείμενα Σύνοψη Η Κλάση string και η Επεξεργασία Αλφαριθμητικών Εισαγωγή Εκχώρηση και Συνένωση string Συγκρίσεις Μεταξύ Αλφαριθμητικών Υπο-αλφαριθμητικά Εναλλαγή string Πληροφορίες για ιάφορα Χαρακτηριστικά των Αλφαριθμητικών Εύρεση Αλφαριθμητικών και Χαρακτήρων σ Ένα string Αντικατάσταση Χαρακτήρων σ Ένα string Εισαγωγή Χαρακτήρων σ Ένα string Μετατροπή σε Αλφαριθμητικά Τύπου C char * Iterators Χειρισμός Αλφαριθμητικών Μέσω Stream Σύνοψη Αναζήτηση και Ταξινόμηση Εισαγωγή Αλγόριθμοι Αναζήτησης Αποτελεσματικότητα της Γραμμικής Αναζήτησης υαδική Αναζήτηση Αλγόριθμοι Ταξινόμησης Αποτελεσματικότητα της Ταξινόμησης με Επιλογή Αποτελεσματικότητα της Ταξινόμησης με Παρεμβολή Ταξινόμηση με Συγχώνευση (Υλοποίηση με Χρήση Αναδρομής) Σύνοψη 939

11 xiv ΠΕΡΙΕΧΟΜΕΝΑ 20 ομές εδομένων Εισαγωγή Αυτο-αναφερόμενες κλάσεις υναμική έσμευση Μνήμης και ομές εδομένων Συνδεδεμένες Λίστες Στοίβες Ουρές έντρα Σύνοψη Bits, Χαρακτήρες, Strings της C και ομές (struct) Εισαγωγή Ορισμοί ομών Αρχικοποίηση ομών Χρήση ομών με Συναρτήσεις Η εσμευμένη Λέξη typedef Παράδειγμα: Υψηλής Απόδοσης Προσομοίωση Ανακατέματος και Μοιράσματος Τράπουλας Τελεστές Επιπέδου bit Πεδία Bit Βιβλιοθήκη Συναρτήσεων Χειρισμού Χαρακτήρων Συναρτήσεις Μετατροπής Αλφαριθμητικών Συναρτήσεις Αναζήτησης της Βιβλιοθήκης Χειρισμού Αλφαριθμητικών Βασιζόμενες στη Μνήμη Συναρτήσεις της Βιβλιοθήκης Χειρισμού Αλφαριθμητικών Σύνοψη Η Βιβλιοθήκη STL Εισαγωγή στην STL Εισαγωγή στις Κλάσεις Container Εισαγωγή Κλάσεις Iterator Εισαγωγή στους Αλγόριθμους Container Σειράς To vector Container To list Container To deque Container Συσχετιστικά Containers To Συσχετιστικό Container multiset To Συσχετιστικό Container set To Συσχετιστικό Container multimap To Συσχετιστικό Container map Αντικείμενα Container Adapters Ο Προσαρμογέας stack Ο Προσαρμογέας queue Ο Προσαρμογέας priority_queue Αλγόριθμοι fill, fill_n, generate και generate_n equal, mismatch και lexicographical_compare remove, remove_if, remove_copy και remove_copy_if replace, replace_if, replace_copy και replace_copy_if Μαθηματικοί Αλγόριθμοι Βασικοί Αλγόριθμοι Αναζήτησης και Ταξινόμησης swap, iter_swap και swap_ranges copy_backward, merge, unique και reverse 1116

12 ΠΕΡΙΕΧΟΜΕΝΑ xv inplace_merge, unique_copy και reverse_copy Πράξεις Συνόλων lower_bound, upper_bound και equal_range Heapsort min και max Αλγόριθμοι που δεν Καλύπτονται σ Αυτό το Κεφάλαιο Η Κλάση bitset Αντικείμενα Συνάρτησης Σύνοψη Πόροι για την STL στο Web Προγραμματισμός Παιχνιδιών με το Ogre Εισαγωγή Εγκατάσταση των Ogre, OgreAL και OpenAL Προγραμματισμός Παιχνιδιών Εισαγωγή Το Παιχνίδι Pong: Περιήγηση στον Κώδικα Αρχικοποίηση του Ogre ημιουργία μιας Σκηνής Προσθήκες στη Σκηνή Animation και Χρονόμετρα Είσοδος από το Χρήστη Ανίχνευση Συγκρούσεων Ήχος Πόροι Πρόγραμμα οκιμής για το Pong Σύνοψη Πληροφορίες για το Ogre στο Web Βιβλιοθήκες Boost, Technical Report 1 και C++0x Εισαγωγή Τα Online Κέντρα Πόρων για την C++ και Σχετιζόμενες Πληροφορίες Βιβλιοθήκες Boost Προσθήκη Νέας Βιβλιοθήκης στο Περιβάλλον Boost Εγκατάσταση των Βιβλιοθηκών Boost Βιβλιοθήκες Boost στο Έγγραφο Technical Report 1 (TR1) Υποδειγματικές Εκφράσεις με τη Βιβλιοθήκη Boost.Regex Παράδειγμα Χρήσης Υποδειγματικών Εκφράσεων Επικύρωση της Εισόδου του Χρήστη με Χρήση Υποδειγματικών Εκφράσεων Αντικατάσταση και ιαχωρισμός Αλφαριθμητικών Έξυπνοι είκτες με το Boost.Smart_ptr Μέτρηση Αναφορών με το shared_ptr weak_ptr: shared_ptr Το Έγγραφο Technical Report C++0x Αλλαγές στον Πυρήνα της Γλώσσας Σύνοψη Άλλα Θέματα Εισαγωγή Ο Τελεστής const_cast Χώροι Ονομάτων εσμευμένες Λέξεις που Αντιπροσωπεύουν Τελεστές mutable Μέλη Κλάσεων 1247

13 xvi ΠΕΡΙΕΧΟΜΕΝΑ 25.6 είκτες προς Μέλη Κλάσεων (.* και ->*) Πολλαπλή Κληρονομικότητα Πολλαπλή Κληρονομικότητα και virtual Κλάσεις Βάσης Σύνοψη 1260 A Προτεραιότητα και Προσεταιριστικότητα Τελεστών 1266 A.1 Προτεραιότητα Τελεστών 1266 B Το Σετ Χαρακτήρων ASCII 1269 Γ Πρωταρχικοί Τύποι εδομένων 1270 Αριθμητικά Συστήματα Εισαγωγή Συντόμευση των υαδικών Αριθμούς ως Οκταδικούς και εκαεξαδικούς Μετατροπή Οκταδικών και εκαεξαδικών Αριθμών σε υαδικούς Μετατροπές από υαδικό, Οκταδικό ή εκαεξαδικό σε εκαδικό Μετατροπές από το εκαδικό Σύστημα στο υαδικό, Οκταδικό ή εκαεξαδικό Αρνητικοί υαδικοί Αριθμοί: Σύνταξη Συμπληρωματικού Ως Προς E Θέματα Σχετικά με Απαρχαιωμένο Κώδικα C 1285 E.1 Εισαγωγή 1286 E.2 Ανακατεύθυνση Εισόδου/Εξόδου σε Συστήματα UNIX/Linux/Mac OS X και Windows 1286 E.3 Λίστες Ορισμάτων Μεταβλητου Μεγέθους 1287 E.4 Χρήση Ορισμάτων Γραμμής Εντολής 1290 E.5 Σημειώσεις για τη Μεταγλώττιση Προγραμμάτων με Πολλαπλά Αρχεία Πηγαίου Κώδικα 1291 E.6 Τερματισμός Προγραμμάτων με τις exit και atexit 1293 E.7 Το Προσδιοριστικό Τύπου volatile 1295 E.8 Επιθέματα για Σταθερές Ακέραιων και Τιμών Κινητής Υποδιαστολής 1295 E.9 Χειρισμός Σημάτων 1295 E.10 υναμική έσμευση Μνήμης με τις calloc και realloc 1298 E.11 ιακλάδωση Άνευ Όρων: goto 1299 E.12 Ενώσεις 1300 E.13 Προδιαγραφές ιασύνδεσης 1303 E.14 Σύνοψη 1304 ΣΤ Ο Προεπεξεργαστής 1311 ΣΤ.1 Εισαγωγή 1312 ΣΤ.2 Η Ντιρεκτίβα #include 1312 ΣΤ.3 Η Ντιρεκτίβα #define: Συμβολικές Σταθερές 1313 ΣΤ.4 Η Ντιρεκτίβα #define: Μακροεντολές 1313 ΣΤ.5 Μεταγλώττιση Υπό Όρους 1315 ΣΤ.6 Οι Ντιρεκτίβες #error και #pragma 1316 ΣΤ.7 Οι Τελεστές # και ## 1317 ΣΤ.8 Προκαθορισμένες Συμβολικές Σταθερές 1317 ΣΤ.9 Ισχυρισμοί 1318 ΣΤ.10 Σύνοψη 1318 Ζ Ο Κώδικας για το Σύστημα ATM 1323 Ζ.1 Η Υλοποίηση της Μελέτης Υπόθεσης για το Σύστημα ATM 1323 Ζ.2 Η Κλάση ATM 1324 Ζ.3 Η Κλάση Screen 1331

14 ΠΕΡΙΕΧΟΜΕΝΑ xvii Ζ.4 Η Κλάση Keypad 1332 Ζ.5 Η Κλάση CashDispenser 1333 Ζ.6 Η Κλάση DepositSlot 1335 Ζ.7 Η Κλάση Account 1336 Ζ.8 Η Κλάση BankDatabase 1338 Ζ.9 Η Κλάση Transaction 1342 Ζ.10 Η Κλάση BalanceInquiry 1344 Ζ.11 Η Κλάση Withdrawal 1346 Ζ.12 Η Κλάση Deposit 1351 Ζ.13 οκιμή του ATMCaseStudy.cpp 1354 Ζ.14 Σύνοψη 1354 H Η UML 2: Επιπλέον Τύποι ιαγραμμάτων 1355 H.1 Εισαγωγή 1355 H.2 Επιπλέον Τύποι ιαγραμμάτων 1355 Θ Χρήση του Visual Studio Debugger 1357 Θ.1 Εισαγωγή 1358 Θ.2 Σημεία ιακοπής και η Εντολή Continue 1358 Θ.3 Τα Παράθυρα Locals και Watch 1363 Θ.4 Έλεγχος της Εκτέλεσης με τις Εντολές Step Into, Step Over, Step Out και Continue 1366 Θ.5 Το Παράθυρο Autos 1369 Θ.6 Σύνοψη 1370 Ι Χρήση του GNU C++ Debugger 1373 Ι.1 Εισαγωγή 1374 Ι.2 Σημεία ιακοπής και οι Εντολές run, stop, continue και print 1374 Ι.3 Οι Εντολές print και set 1381 Ι.4 Έλεγχος της Εκτέλεσης με τις Εντολές step, finish και next 1383 Ι.5 Η Εντολή watch 1385 Ι.6 Σύνοψη 1387 Βιβλιογραφία 1390 Ευρετήριο 1396

15 Πρόλογος «Η κύρια αρετή της γλώσσας είναι η σαφήνεια...» Galen Σας καλωσορίζουμε στην C++ και στο βιβλίο C++ Προγραμματισμός, Έκτη Έκδοση! Εμείς και οι συνεργάτες μας στην Deitel & Associates ασχολούμαστε με την συγγραφή εγχειριδίων για γλώσσες προγραμματισμού και άλλων βιβλίων επαγγελματικού επιπέδου τα οποία εκδίδονται από τον οίκο Prentice Hall, με την παροχή εκπαιδευτικών υπηρεσιών σε επιχειρήσεις ανά τον κόσμο, καθώς και με την ανάπτυξη επιχειρηματικών εφαρμογών για το Internet οι οποίες βασίζονται στην πλατφόρμα του Web 2.0. Το βιβλίο που κρατάτε στα χέρια σας αντικατοπτρίζει σημαντικές αλλαγές τόσο στην γλώσσα C++, όσο και στους προτιμώμενους τρόπους διδασκαλίας και εκμάθησης του προγραμματισμού. Όλα τα κεφάλαια του βιβλίου είναι ειδικά σχεδιασμένα ώστε να υπηρετούν αυτό τον στόχο. Η ενότητα Ξενάγηση στο Βιβλίο που περιλαμβάνεται παρακάτω σ αυτό τον πρόλογο παρέχει στους αναγνώστες μία εποπτική θεώρηση όλων των θεμάτων που καλύπτει το βιβλίο τόσο για την γλώσσα C++, όσο και για τον αντικειμενοστραφή προγραμματισμό γενικότερα. Νέα και Ανανεωμένα Χαρακτηριστικά Ακολουθεί μία λίστα των ενημερώσεων που έχουμε κάνει στο υλικό της πέμπτης και έκτης έκδοσης του βιβλίου: Προγραμματισμός Εφαρμογών Παιχνιδιών. Έχουμε προσθέσει ένα νέο κεφάλαιο αφιερωμένο στον προγραμματισμό παιχνιδιών για υπολογιστές. Τα κέρδη της βιομηχανίας κατασκευής παιχνιδιών για υπολογιστές ξεπερνούν πλέον τα κέρδη των κινηματογραφικών ταινιών πρώτης προβολής, γεγονός το οποίο δημιουργεί πολλές ευκαιρίες για τους σπουδαστές που ενδιαφέρονται να κάνουν καριέρα σ αυτό τον τομέα. Το Κεφάλαιο 23 αποτελεί μία εισαγωγή στον προγραμματισμό παιχνιδιών και εφαρμογών γραφικών με την χρήση της μηχανής ανάπτυξης τρισδιάστατων γραφικών Ogre, η οποία κυκλοφορεί σε μορφή ανοιχτού κώδικα. Θα εξετάσουμε τα βασικά ζητήματα που εμπλέκονται στον προγραμματισμό εφαρμογών παιχνιδιών και κατόπιν θα σας δείξουμε πώς μπορείτε να αξιοποιήσετε τη βιβλιοθήκη Ogre για να δημιουργήσετε ένα απλό παιχνίδι παρόμοιο με το κλασικό βιντεοπαιχνίδι Pong, το οποίο αναπτύχθηκε αρχικά από την Atari το Συγκεκριμένα, θα σας παρουσιάσουμε τη δημιουργία μιας σκηνής με έγχρωμα τρισδιάστατα γραφικά, ομαλή κίνηση (animation) αντικειμένων, την χρήση μηχανισμών χρονομέτρησης για τον έλεγχο της ταχύτητας του animation, την ανίχνευση συγκρούσεων μεταξύ των αντικειμένων, την προσθήκη ήχου, την λήψη εισόδου από το πληκτρολόγιο και την εμφάνιση εξόδου σε μορφή κειμένου. Το Μέλλον της C++. Προσθέσαμε επίσης το Κεφάλαιο 24, στο οποίο εξετάζουμε το μέλλον της C++, παρουσιάζοντας τις Βιβλιοθήκες Boost C++, την έκθεση TR1 (Technical Report 1) και την C++0x. Οι δωρεάν βιβλιοθήκες ανοιχτού κώδικα Boost έχουν δημιουργηθεί από μέλη της κοινότητας προγραμματιστών της C++. Η έκθεση Technical Report 1 περιγράφει τις αλλαγές που έχουν προταθεί για την Στάνταρ Βιβλιοθήκη της C++ (C++ Standard Library), πολλές εκ των οποίων βασίζονται στις τρέχουσες βιβλιοθήκες Boost. Ήδη, η Επιτροπή Προτύπων για την C++ βρίσκεται στην φάση της αναθεώρησης του προτύπου για την γλώσσα. Οι κύριοι στόχοι του νέου προτύπου είναι να κάνει την C++ μία πιο εύκολη στην εκμάθηση γλώσσα, να βελτιώσει τις δυνατότητες δημιουργίας βιβλιοθηκών και να αυξήσει την συμβατότητα της C++ με την γλώσσα προγραμματισμού C. Το τελευταίο πρότυπο δημοσιεύτηκε το Οι εργασίες για το νέο πρότυπο, το οποίο επί του παρόντος αναφέρεται σαν C++0x, ξεκίνησαν το Το νέο πρότυπο αναμένεται να δημοσιευτεί εντός του Θα περιλαμβάνει αλλαγές στον πυρήνα της γλώσσας και, κατά πάσα πιθανότητα, πολλές από τις βιβλιοθήκες που αναφέρονται στην έκθεση TR1. Στο συγκεκριμένο κεφάλαιο θα σας παρουσιάσουμε συνοπτικά αυτές τις βιβλιοθήκες, μαζί με παραδείγματα κώδικα που κάνουν χρήση των βιβλιοθηκών για τις υποδειγματικές εκφράσεις (regular expressions) και τους έξυπνους δείκτες (smart pointers). Οι υποδειγματικές εκφράσεις παρέχουν δυνατότητες αναζήτησης και ταύτισης συγκεκριμένων μοτίβων χαρακτήρων σε κείμενο.

16 ΠΡΟΛΟΓΟΣ xix Μπορούν να χρησιμοποιούνται για την επικύρωση δεδομένων (διασφαλίζοντας ότι αυτά έχουν μία συγκεκριμένη μορφή), για την αντικατάσταση τμημάτων ενός αλφαριθμητικού (string) με ένα άλλο αλφαριθμητικό, ή για το διαχωρισμό ενός αλφαριθμητικού. Πολλά κοινά σφάλματα σε κώδικα γραμμένο με τις C και C++ σχετίζονται με τους δείκτες (pointers), μία ισχυρή δυνατότητα προγραμματισμού την οποία θα μελετήσουμε στο Κεφάλαιο 8. Οι έξυπνοι δείκτες σας βοηθούν να αποφεύγετε τα λάθη, παρέχοντας επιπλέον λειτουργικότητα στους στάνταρ δείκτες της γλώσσας. Σημαντικές Ανανεώσεις της Ύλης του Βιβλίου. Όλα τα κεφάλαια έχουν ανανεωθεί και εμπλουτιστεί σε σημαντικό βαθμό. Βελτιώσαμε το στυλ γραφής με στόχο την αύξηση της σαφήνειας και της ακρίβειας του περιεχομένου. Προσαρμόσαμε επίσης την χρήση της ορολογίας της C++, σύμφωνα με το πρότυπο ISO/IEC C++ που ορίζει την γλώσσα. Προσέγγιση των Κλάσεων και των Αντικειμένων από Νωρίς. Οι αναγνώστες εισάγονται στις βασικές έννοιες και την ορολογία των αντικειμένων στο Κεφάλαιο 1, και αρχίζουν να αναπτύσσουν εξειδικευμένες, επαναχρησιμοποιήσιμες κλάσεις και αντικείμενα στο Κεφάλαιο 3. Αυτό το βιβλίο παρουσιάζει τον αντικειμενοστραφή προγραμματισμό σε όλη την έκτασή του. Η ενασχόληση με τις κλάσεις και τα αντικείμενα από νωρίς δίνει στους αναγνώστες τη δυνατότητα να σκέφτονται εξαρχής με αντικειμενοστραφή τρόπο, και να κατανοήσουν αυτές τις έννοιες πλήρως. Ο αντικειμενοστραφής προγραμματισμός δεν μπορεί να θεωρηθεί εύκολη υπόθεση, αλλά η συγγραφή αντικειμενοστραφών προγραμμάτων είναι μία ευχάριστη και ανταποδοτική διαδικασία, και οι αναγνώστες μπορούν να δουν άμεσα τα οφέλη της. Ολοκληρωμένες Μελέτες Υπόθεσης. Το βιβλίο περιλαμβάνει αρκετές μελέτες υπόθεσης που εκτείνονται σε πολλαπλές ενότητες και κεφάλαια. Συχνά βασίζονται σε μία κλάση που παρουσιάστηκε σε κάποιο προηγούμενο σημείο του βιβλίου για να επιδείξουν νέες έννοιες και αρχές προγραμματισμού σε επόμενα σημεία του βιβλίου. Ενδεικτικά αναφέρουμε την ανάπτυξη της κλάσης GradeBook στα Κεφάλαια 3-7, της κλάσης Time σε αρκετές ενότητες των Κεφαλαίων 9-10, της κλάσης Employee στα Κεφάλαια και την προαιρετική, βασιζόμενη σε αντικειμενοστραφή σχεδίαση και στην γλώσσα UML μελέτη υπόθεσης για το σύστημα ATM που παρουσιάζεται στα Κεφάλαια 1-7, 13 και στο Παράρτημα Ζ. Ολοκληρωμένη Μελέτη Υπόθεσης για την Κλάση GradeBook. Η συγκεκριμένη μελέτη έχει σαν στόχο την υποστήριξη και ενίσχυση της εκμάθησης των κλάσεων στα πρώτα κεφάλαια του βιβλίου. Χρησιμοποιεί κλάσεις και αντικείμενα στα Κεφάλαια 3-7 για την σταδιακή κατασκευή μιας κλάσης με όνομα GradeBook, η οποία αναπαριστά το βαθμολόγιο ενός καθηγητή και εκτελεί διάφορους υπολογισμούς σ ένα σύνολο βαθμών μαθητών, όπως ο υπολογισμός του μέσου όρου της βαθμολογίας κάθε μαθητή, η εύρεση του ελάχιστου και μέγιστου βαθμού και η εκτύπωση ενός διαγράμματος. Παρουσίαση της Γλώσσας UML 2 (Unified Modeling Language 2). Η UML έχει γίνει η προτιμώμενη γλώσσα οπτικής μοντελοποίησης για τους σχεδιαστές αντικειμενοστραφών συστημάτων. Όλα τα διαγράμματα UML που παρουσιάζονται σ αυτό το βιβλίο συμμορφώνονται με την προδιαγραφή UML 2. Χρησιμοποιούμε διαγράμματα κλάσεων UML για την οπτική αναπαράσταση ιεραρχιών κλάσεων και των σχέσεων που υφίστανται μεταξύ τους βάσει της κληρονομικότητας. Επίσης, χρησιμοποιούμε διαγράμματα δραστηριοτήτων UML για να παρουσιάσουμε την ροή του ελέγχου στις εντολές ελέγχου της C++. Τέλος, χρησιμοποιούμε εκτενώς την UML στην προαιρετική μελέτη υπόθεσης για την ανάπτυξη ενός συστήματος ATM. Προαιρετική Μελέτη Υπόθεσης για την Ανάπτυξη Συστήματος ΑΤΜ, με Αντικειμενοστραφή Σχεδίαση και UML. H προαιρετική μελέτη για την ανάπτυξη ενός συστήματος αυτόματων τραπεζικών συναλλαγών (ΑΤΜ) που παρουσιάζεται στα Κεφάλαια 1-7, 9 και 13 είναι κατάλληλη για τον πρώτο και δεύτερο κύκλο σπουδών στον προγραμματισμό. Αναλύεται σταδιακά, σε εννέα ενότητες, και αποτελεί μία ολοκληρωμένη εισαγωγή στην αντικειμενοστραφή σχεδίαση με την χρήση της UML. Παρουσιάζοντας ένα συνοπτικό, απλοποιημένο υποσύνολο της UML 2, καθοδηγεί τον αναγνώστη στην πρώτη του εμπειρία πάνω στην αντικειμενοστραφή σχεδίαση. Απευθύνεται σε αρχάριους προγραμματιστές/σχεδιαστές αντικειμενοστραφών συστημάτων και συμπληρώνει με τον καλύτερο τρόπο τις βασικές έννοιες και αρχές του αντικειμενοστραφούς προγραμματισμού που αρχίζουν να μαθαίνουν στο Κεφάλαιο 1 και να υλοποιούν στο Κεφάλαιο 3.

17 xx ΠΡΟΛΟΓΟΣ Η συγκεκριμένη μελέτη έχει εξεταστεί από μία διακεκριμένη ομάδα ακαδημαϊκών και επαγγελματιών που ασχολούνται με την αντικειμενοστραφή σχεδίαση και την UML. εν είναι μία απλή άσκηση, αλλά μία πλήρης εκπαιδευτική εμπειρία η οποία ολοκληρώνεται με μία αναλυτική περιήγηση στις 877 γραμμές κώδικα C++ που αποτελούν την υλοποίησή της. Θα βρείτε μία λεπτομερέστερη παρουσίαση αυτής της μελέτης παρακάτω σ αυτό τον πρόλογο. ιαδικασία Μεταγλώττισης και ιασύνδεσης για Προγράμματα με Πολλαπλά Αρχεία Πηγαίου Κώδικα. Το Κεφάλαιο 3 περιλαμβάνει ένα λεπτομερές διάγραμμα και μία εκτενή αναφορά στη διαδικασία μεταγλώττισης και διασύνδεσης η οποία παράγει μία εκτελέσιμη εφαρμογή. Επεξήγηση της Στοίβας Κλήσεων Συναρτήσεων. Το Κεφάλαιο 6 περιλαμβάνει μία λεπτομερή αναφορά (σε συνδυασμό με εικόνες και σχηματικές αναπαραστάσεις) στην στοίβα κλήσεων συναρτήσεων (function call stack) και τις εγγραφές ενεργοποίησης (activation records), εξηγώντας πώς μπορεί η C++ να παρακολουθεί ποια συνάρτηση εκτελείται ανά πάσα στιγμή, πώς διατηρούνται στη μνήμη οι αυτόματες μεταβλητές των συναρτήσεων, και πώς ξέρει μία συνάρτηση πού πρέπει να επιστρέψει αφού ολοκληρώσει την εκτέλεσή της. Οι Κλάσεις string και vector της Στάνταρ Βιβλιοθήκης της C++. Οι κλάσεις string (αλφαριθμητικό) και vector (άνυσμα) χρησιμοποιούνται για να κάνουν πιο «αντικειμενοστραφή» παραδείγματα που παρουσιάστηκαν σε προηγούμενα σημεία του βιβλίου. Η Κλάση string. Χρησιμοποιούμε την κλάση string αντί των βασιζόμενων-σε-δείκτες αλφαριθμητικών char * (το στυλ της C) για τις περισσότερες εργασίες χειρισμού αλφαριθμητικών σε όλη την έκταση του βιβλίου. Ταυτόχρονα όμως περιλαμβάνουμε συζητήσεις για τα αλφαριθμητικά τύπου char * στα Κεφάλαια 8, 10, 11 και 21, ώστε να δώσουμε στους αναγνώστες την ευκαιρία να εξασκηθούν στην πράξη με τις τεχνικές χειρισμού των δεικτών, για να παρουσιάσουμε το θέμα της δυναμικής δέσμευσης μνήμης με τους τελεστές new και delete, για να δημιουργήσουμε μία δική μας κλάση String, καθώς και για να προετοιμάσουμε κατάλληλα τους αναγνώστες που καλούνται να δουλέψουν με αλφαριθμητικά char * σε παλαιότερο κώδικα C/C++. To Πρότυπο Κλάσης vector. Σε όλη την έκταση του βιβλίου χρησιμοποιούμε το πρότυπο κλάσης vector (άνυσμα) αντί τεχνικών χειρισμού πινάκων που βασίζονται σε δείκτες (το στυλ της C). Ωστόσο, περιγράφουμε επίσης τους βασιζόμενους σε δείκτες πίνακες (pointer-based arrays) στο Κεφάλαιο 7, αφενός για να προετοιμάσουμε κατάλληλα τους αναγνώστες που καλούνται να δουλέψουν με παλαιότερο κώδικα C/C++, και αφετέρου για να χρησιμοποιήσουμε αυτό το χαρακτηριστικό σαν βάση για την κατασκευή μιας εξειδικευμένης κλάσης Array στο Κεφάλαιο 11. Βελτιωμένη Κάλυψη των Θεμάτων Κληρονομικότητας και Πολυμορφισμού. Το υλικό των Κεφαλαίων 12 και 13 είναι ειδικά σχεδιασμένο ώστε να παρουσιάζει τα θέματα της κληρονομικότητας και του πολυμορφισμού με περισσότερη σαφήνεια και πιο ευκολονόητο τρόπο, για τους αναγνώστες που τώρα ξεκινούν την ενασχόλησή τους με τον αντικειμενοστραφή προγραμματισμό. Επεξήγηση και Οπτική Αναπαράσταση του Τρόπου Λειτουργίας του Πολυμορφισμού στο «Παρασκήνιο». Το Κεφάλαιο 13 περιλαμβάνει ένα λεπτομερές διάγραμμα και μία αναλυτική επεξήγηση του τρόπου με τον οποίο μπορεί η C++ να υλοποιεί εσωτερικά τον πολυμορφισμό, τις εικονικές (virtual) συναρτήσεις και τη δυναμική αντιστοίχιση. Το υλικό αυτό δίνει στους αναγνώστες τη δυνατότητα να κατανοήσουν πλήρως το πώς δουλεύουν πραγματικά αυτές οι δυνατότητες. Ακόμη πιο σημαντικό είναι το γεγονός ότι βοηθά τους αναγνώστες να εκτιμήσουν τον αυξημένο φόρτο που συνεπάγεται ο πολυμορφισμός τόσο σε κατανάλωση επιπλέον μνήμης, όσο και σε χρόνο του επεξεργαστή. Έτσι, οι αναγνώστες θα είναι σε θέση να αποφασίσουν πότε μπορούν να χρησιμοποιούν τον πολυμορφισμό και πότε πρέπει να τον αποφεύγουν. Βιβλιοθήκη STL (Standard Template Library, Στάνταρ Βιβλιοθήκη Προτύπων). Αυτό είναι πιθανώς ένα από τα πιο ενδιαφέροντα θέματα του βιβλίου, υπό το πρίσμα της δυνατότητας επαναχρησιμοποίησης κώδικα και των πλεονεκτημάτων που αυτή παρέχει. Η βιβλιοθήκη STL ορίζει ισχυρά, βασιζόμενα σε πρότυπα (templates), επαναχρησιμοποιήσιμα συστατικά, τα οποία υλοποιούν πολλές κοινές δομές δεδομένων και αλγόριθμους που χρησιμοποιούνται για την επεξεργασία και τον χειρισμό αυτών των δομών δεδομένων. Το Κεφάλαιο 22 παρουσιάζει την βιβλιοθήκη

18 ΠΡΟΛΟΓΟΣ xxi STL και εξετάζει τρία βασικά συστατικά της containers, iterators και αλγόριθμους. Όπως θα δείτε σ αυτό το κεφάλαιο, η χρήση των συστατικών της βιβλιοθήκης STL σας παρέχει τεράστια εκφραστική ισχύ, συχνά επιτρέποντάς σας να αντικαταστήσετε πολλές γραμμές κώδικα με μία και μόνο εντολή. Συμμόρφωση με το Πρότυπο ISO/IEC C++. Έχουμε ελέγξει σχολαστικά την πληρότητα και την ακρίβεια της ύλης του βιβλίου έναντι του πιο πρόσφατου προτύπου για την C++ που έχει δημοσιευτεί από τους φορείς ISO/IEC. [Σημείωση: Εάν χρειάζεστε επιπλέον τεχνικές λεπτομέρειες για την C++, μπορείτε να διαβάσετε το έγγραφο που περιλαμβάνει το πρότυπο για την γλώσσα. Μπορείτε να αγοράσετε ένα αντίγραφο του προτύπου για την C++ σε μορφή αρχείου PDF (αριθμός εγγράφου INCITS/ISO/IEC ) από τη διεύθυνση webstore.ansi.org/ ansidocstore/default.asp.] Παραρτήματα για Εργαλεία Αποσφαλμάτωσης. ύο παραρτήματα παρουσιάζουν την χρήση δύο εργαλείων αποσφαλμάτωσης το Παράρτημα Θ για το Visual Studio Debugger και το Παράρτημα Ι για το GNU C++ Debugger. οκιμή Κώδικα σε Πολλαπλές Πλατφόρμες. Έχουμε ελέγξει τα παραδείγματα κώδικα σε διάφορες δημοφιλείς πλατφόρμες για την C++. Στο μεγαλύτερο μέρος τους, όλα τα παραδείγματα του βιβλίου μεταφέρονται εύκολα σε όλους τους δημοφιλείς μεταγλωττιστές που συμμορφώνονται με το πρότυπο για την γλώσσα. Παρουσίαση Μηνυμάτων Σφάλματος και Προειδοποιήσεων για Πολλαπλές Πλατφόρμες. Για τα προγράμματα που περιέχουν σκόπιμα σφάλματα, με στόχο την παρουσίαση κάποιας βασικής έννοιας, παρουσιάζουμε τα μηνύματα σφάλματος που εμφανίζονται κατά την εκτέλεσή τους σε αρκετές δημοφιλείς πλατφόρμες. Όλα τα παραπάνω έχουν ελεγχθεί σχολαστικά από διακεκριμένους ακαδημαϊκούς και κατασκευαστές λογισμικού, οι οποίοι συνεργάστηκαν μαζί μας κατά την συγγραφή της πέμπτης και της έκτης έκδοσης αυτού του βιβλίου. Πιστεύουμε ότι αυτό το βιβλίο και το επιπλέον υλικό που έχουμε δημιουργήσει για την υποστήριξή του θα παρέχουν στους αναγνώστες ανεξάρτητα από το εάν είναι σπουδαστές ή επαγγελματίες μία άκρως πληροφοριακή, ενδιαφέρουσα και ανταποδοτική εμπειρία. Το βιβλίο συνοδεύεται από εκτενή συλλογή χρήσιμων εργαλείων και υλικού υποστήριξης που βοηθούν τους σπουδαστές να μεγιστοποιήσουν τα οφέλη της εκπαιδευτικής διαδικασίας. Εάν έχετε οποιεσδήποτε ερωτήσεις ή απορίες καθώς διαβάζετε το βιβλίο, στείλτε ένα μήνυμα στη διεύθυνση θα σας απαντήσουμε άμεσα. Για ενημερώσεις σχετικές μ αυτό το βιβλίο, την κατάσταση όλου του λογισμικού που διαθέτουμε για την υποστήριξη της εκμάθησης της C++ και τις τελευταίες ειδήσεις σχετικά με όλες τις εκδόσεις και υπηρεσίες της Deitel, επισκεφτείτε το δικτυακό μας τόπο, Εάν θέλετε να λαμβάνετε μέσω το δωρεάν ενημερωτικό δελτίο μας Deitel Buzz Online, μπορείτε να εγγραφείτε συνδρομητές στην ιστοσελίδα www. deitel.com/newsletter/subscribe.html. Για πληροφορίες σχετικά με τη διαρκώς αυξανόμενη λίστα Κέντρων Πόρων για την C++, επισκεφτείτε την ιστοσελίδα html. Κάθε εβδομάδα ανακοινώνουμε τα νεότερα Κέντρα Πόρων που παρουσιάζουμε στο ενημερωτικό μας δελτίο. Θα θέλαμε επίσης να μας πείτε ποια άλλα Κέντρα Πόρων θα σας ενδιέφεραν. Εκπαιδευτική Προσέγγιση Το βιβλίο C++ Προγραμματισμός, Έκτη Έκδοση περιλαμβάνει πλούσια συλλογή παραδειγμάτων. Επικεντρώνεται στις αρχές της καλής σχεδίασης/ανάπτυξης λογισμικού και δίνει έμφαση στην σαφήνεια. ιδάσκουμε δια παραδείγματος. Είμαστε εκπαιδευτές που διδάσκουν τεχνολογίες αιχμής σε επαγγελματίες απ όλο τον κόσμο. Ο δόκτωρ Harvey M. Deitel έχει εικοσαετή εμπειρία στον τομέα της πανεπιστημιακής εκπαίδευσης, ενώ ασχολείται επίσης με την επιμόρφωση επαγγελματιών για 18 έτη. Ο Paul Deitel έχει 16-ετή εμπειρία στην εκπαίδευση επαγγελματιών. Οι δύο Deitel έχουν παραδώσει σειρές μαθημάτων όλων των επιπέδων σ ένα ευρύτατο φάσμα ατόμων και φορέων που αποτελούν το πελατολόγιο της Deitel & Associates από στελέχη κυβερνήσεων και επιχειρήσεων, μέχρι στρατιωτικούς, ακαδημαϊκούς, κ.α.

19 xxii ΠΡΟΛΟΓΟΣ Η Προσέγγιση «Ζωντανού Κώδικα». Το βιβλίο είναι γεμάτο από παραδείγματα «ζωντανού κώδικα» με τον όρο αυτό εννοούμε ότι κάθε νέα έννοια παρουσιάζεται στο πλαίσιο μιας πλήρως λειτουργικής εφαρμογής C++, η οποία ακολουθείται από ένα ή περισσότερα στιγμιότυπα πραγματικής εκτέλεσής της μαζί με τις εισόδους που δέχεται και τις εξόδους που παράγει. Αυτό το στυλ είναι ενδεικτικό της προσέγγισης που ακολουθούμε τόσο όταν διδάσκουμε, όσο και όταν γράφουμε εγχειρίδια για τον προγραμματισμό. Χρήση Συμβάσεων Μορφοποίησης. Χρησιμοποιούμε ειδικές συμβάσεις μορφοποίησης για να κάνουμε πιο ευανάγνωστο και ευκολονόητο τόσο το κείμενο, όσο και τον κώδικα ένας στόχος ιδιαίτερα σημαντικός, δεδομένου ότι τα προγράμματα των παραδειγμάτων περιέχουν περίπου γραμμές κώδικα! Οι συμβάσεις μορφοποίησης που χρησιμοποιούμε είναι: Παρουσίαση του κώδικα με μη-αναλογική γραμματοσειρά. Παρουσίαση των σχολίων με ειδική γραμματοσειρά. Παρουσίαση των δεσμευμένων λέξεων με μη-αναλογική γραμματοσειρά και έντονο στυλ γραφής. ιαθεσιμότητα Υλικού στο Web. Ο πηγαίος κώδικας όλων των παραδειγμάτων είναι διαθέσιμος για μεταφορά από την ακόλουθη ηλεκτρονική διεύθυνση: Η δήλωση των επισκεπτών στο δικτυακό μας τόπο είναι απλή και γρήγορη υπόθεση. Αφού μεταφέρετε τα προγράμματα, μπορείτε να τα τρέχετε καθώς διαβάζετε το σχετικό υλικό του βιβλίου. Ένας εξαιρετικός τρόπος για να βελτιώσετε και να εμπλουτίσετε την δική σας εμπειρία εκμάθησης είναι κάνοντας αλλαγές σ αυτά τα προγράμματα και βλέποντας την επίδρασή των αλλαγών σας στην έξοδο που παράγουν. Στόχοι. Κάθε κεφάλαιο ξεκινά με μία δήλωση στόχων σας γνωστοποιεί εξαρχής ποιο είναι το επιδιωκόμενο αποτέλεσμα και σας δίνει την ευκαιρία να αποτιμήσετε, αφού ολοκληρώσετε την ανάγνωσή του, κατά πόσον έχετε φτάσει σ αυτό. Αποφθέγματα. Μετά από τους στόχους κάθε κεφαλαίου παρουσιάζουμε ορισμένα αποφθέγματα. Κάποια είναι χιουμοριστικά, άλλα φιλοσοφικά, ενώ άλλα προσφέρουν τροφή για σκέψη. Πιστεύουμε ότι ο συσχετισμός αυτών των αποφθεγμάτων με το υλικό του κεφαλαίου θα είναι μία ευχάριστη εμπειρία. ιάρθρωση. Η διάρθρωση κάθε κεφαλαίου σας βοηθά να προσεγγίσετε το υλικό του με φυσιολογική σειρά, «από πάνω προς τα κάτω», γνωρίζοντας εκ των προτέρων τι σας περιμένει στην συνέχεια και καθορίζοντας έναν άνετο και αποτελεσματικό για εσάς ρυθμό εκμάθησης. Εικόνες/Σχηματικές Αναπαραστάσεις. Το βιβλίο περιλαμβάνει άφθονα γραφήματα, πίνακες, γραμμικά σχέδια, λίστες κώδικα και στιγμιότυπα από την έξοδο προγραμμάτων. Για την απεικόνιση της ροής του ελέγχου στις εντολές ελέγχου χρησιμοποιούμε διαγράμματα δραστηριότητας, δημιουργημένα με την UML. Για την μοντελοποίηση των κλάσεων, των πεδίων τους, των μεθόδων δημιουργίας τους και των συναρτήσεών τους χρησιμοποιούμε διαγράμματα κλάσεων της UML. Χρησιμοποιούμε εκτενώς έξι βασικούς τύπους διαγραμμάτων της UML στην προαιρετική μελέτη υπόθεσης για την ανάπτυξη του συστήματος ΑΤΜ. Υποδείξεις Προγραμματισμού. Περιλαμβάνουμε υποδείξεις και συμβουλές προγραμματισμού για να σας βοηθήσουμε να επικεντρωθείτε σε σημαντικές απόψεις της ανάπτυξης προγραμμάτων. Αυτές οι υποδείξεις και πρακτικές αντιπροσωπεύουν το απόσταγμα έξι δεκαετιών εμπειρίας στην διδασκαλία και τον προγραμματισμό. Ένας από τους μαθητές μας τελειόφοιτος του Τμήματος Μαθηματικών ενός πανεπιστημίου μας είπε κάποτε ότι η προσέγγισή μας μοιάζει μ αυτή που ακολουθείται για την επισήμανση των αξιωμάτων, των θεωρημάτων και των επακόλουθών τους στα εγχειρίδια μαθηματικών παρέχει το υπόβαθρο στο οποίο μπορεί να βασιστεί κάποιος για να κατασκευάσει καλό λογισμικό.

20 ΠΡΟΛΟΓΟΣ xxiii Καλές Πρακτικές Προγραμματισμού Οι Καλές Πρακτικές Προγραμματισμού εστιάζουν την προσοχή σας σε τεχνικές οι οποίες σας βοηθούν να παράγετε προγράμματα τα οποία θα είναι σαφέστερα, πιο ευκολονόητα και πιο εύκολα συντηρήσιμα. Κοινά Λάθη Προγραμματισμού Οι σπουδαστές συνηθίζουν να κάνουν συχνά συγκεκριμένα είδη λαθών. Επισημαίνοντας αυτά τα Κοινά Λάθη Προγραμματισμού μειώνουμε την πιθανότητα να τα κάνετε κι εσείς. Υποδείξεις Αποφυγής Λαθών Συστάσεις και υποδείξεις για την αποκάλυψη σφαλμάτων και την εξάλειψή τους από τα προγράμματά σας πολλές από αυτές περιγράφουν απόψεις της C++ οι οποίες εμποδίζουν εξαρχής τα σφάλματα να παρεισφρήσουν στον κώδικά σας. Υποδείξεις Βελτίωσης Απόδοσης Σε όλους αρέσει να βελτιώνουν την απόδοση των προγραμμάτων τους. Αυτές οι υποδείξεις επισημαίνουν ευκαιρίες για να κάνετε τα προγράμματά σας να τρέχουν ταχύτερα ή να ελαχιστοποιείτε το ποσό της μνήμης που καταναλώνουν. Υποδείξεις για Μεταφερτό Κώδικα Με τις Υποδείξεις για Μεταφερτό Κώδικα σας βοηθάμε να γράφετε κώδικα ο οποίος θα μπορεί να εκτελείται σε πολλές διαφορετικές πλατφόρμες και εξηγούμε σε τι οφείλεται ο υψηλός βαθμός μεταφερτότητας (ή «φορητότητας») που επιδεικνύει η C++. Παρατηρήσεις Μηχανικής Λογισμικού Επισημαίνουν ζητήματα αρχιτεκτονικής και σχεδιασμού τα οποία επηρεάζουν την κατασκευή συστημάτων λογισμικού, και ειδικότερα συστημάτων μεγάλης κλίμακας. Ενότητα Ανακεφαλαίωσης. Κάθε κεφάλαιο τελειώνει με μία σύντομη ενότητα ανακεφαλαίωσης η οποία συνοψίζει το περιεχόμενό του και σας προετοιμάζει για το επόμενο κεφάλαιο. Περιληπτικές Αναφορές. Στο τέλος κάθε κεφαλαίου περιλαμβάνουμε ορισμένα επιπλέον εκπαιδευτικά εργαλεία. Ένα από αυτά είναι η λίστα περιληπτικών αναφορών στα θέματα του κεφαλαίου, ενότητα προς ενότητα. Ορολογία. Μία αλφαβητικά ταξινομημένη λίστα των σημαντικών όρων που περιγράφονται σε κάθε κεφάλαιο. Ασκήσεις και οι Απαντήσεις τους. Στο τέλος κάθε κεφαλαίου περιλαμβάνονται ασκήσεις μαζί με τις απαντήσεις τους, για περαιτέρω μελέτη και πρακτική εξάσκηση. Ασκήσεις προς Επίλυση. Κάθε κεφάλαιο τελειώνει μ ένα ευάριθμο σύνολο ασκήσεων οι οποίες καλύπτουν ένα ευρύ φάσμα γνωστικών δραστηριοτήτων: ανάκληση σημαντικών εννοιών και όρων, εντοπισμό σφαλμάτων σε αποσπάσματα κώδικα, συγγραφή μεμονωμένων εντολών και προτάσεων C++, συγγραφή μικρών τμημάτων κλάσεων και συναρτήσεων, συγγραφή ολοκληρωμένων συναρτήσεων, κλάσεων και προγραμμάτων και συγγραφή κώδικα για μεγαλύτερα έργα. Ο μεγάλος αριθμός ασκήσεων δίνει στους εκπαιδευτές τη δυνατότητα να προσαρμόσουν τη διδασκαλία τους στις ανάγκες των σπουδαστών τους και να διαφοροποιούν τις εργασίες που αναθέτουν κάθε διδακτικό εξάμηνο. Οι εκπαιδευτές μπορούν να χρησιμοποιούν αυτές τις ασκήσεις σαν βάση τόσο για τις εργασίες που αναθέτουν στους σπουδαστές κατά τη διάρκεια της εκπαιδευτικής περιόδου, όσο και για το υλικό των εξετάσεων. Στο Κέντρο Πόρων για Έργα Προγραμματισμού, στη διεύθυνση ProgrammingProjects, θα βρείτε πολύ επιπλέον υλικό για ασκήσεις και άλλα έργα. [ΣΗΜΕΙΩΣΗ: Παρακαλούμε, μην απευθύνεστε σ εμάς ζητώντας πρόσβαση στο Κέντρο Πόρων για Εκπαιδευτές του εκδοτικού οίκου Prentice Hall. Η πρόσβαση σ αυτό περιορίζεται αποκλειστικά και μόνο στους καθηγητές των εκπαιδευτικών ιδρυμάτων που χρησιμοποιούν το βιβλίο για την διδασκαλία της γλώσσας. Οι καθηγητές μπορούν να αποκτήσουν πρόσβαση απευθυνόμενοι στους αντιπροσώπους του εκδοτικού οίκου.]

21 xxiv ΠΡΟΛΟΓΟΣ Ευρετήριο με Χιλιάδες Λήμματα. Το εκτενέστατο ευρετήριο του βιβλίου θα αποδειχτεί ιδιαίτερα χρήσιμο σε όσους χρησιμοποιούν το βιβλίο σαν πηγή αναφοράς. Ξενάγηση στο Βιβλίο Σ αυτή την ενότητα θα σας κάνουμε μία σύντομη ξενάγηση στις δυνατότητες της γλώσσας C++ που θα μελετήσετε σ αυτό το βιβλίο. Η Εικόνα 1 παρουσιάζει τις εξαρτήσεις μεταξύ των κεφαλαίων. Σας συνιστούμε να διαβάσετε τα θέματα με την σειρά που υποδεικνύουν τα βέλη, αν και θα μπορούσατε επίσης να ακολουθήσετε ορισμένες εναλλακτικές πορείες. Αυτό το βιβλίο χρησιμοποιείται ευρέως σε όλα τα επίπεδα προγραμμάτων διδασκαλίας της C++ ψάξτε στο Web για όρους όπως οι syllabus, C++ και Deitel για να βρείτε προγράμματα σπουδών τα οποία βασίζονται σε πρόσφατες εκδόσεις του βιβλίου. Κεφάλαιο 1: Εισαγωγή στους Υπολογιστές, το Internet και το World Wide Web. Εξετάζει τι είναι οι υπολογιστές, πώς δουλεύουν και πώς προγραμματίζονται. Παρουσιάζει ένα σύντομο ιστορικό της εξέλιξης των γλωσσών προγραμματισμού από τις γλώσσες μηχανής, μέχρι τις γλώσσες assembly και τις γλώσσες προγραμματισμού υψηλού επιπέδου. Υπάρχει επίσης μία σύντομη αναφορά στην καταγωγή της C++. Το κεφάλαιο αυτό περιλαμβάνει επίσης μία εισαγωγή σ ένα τυπικό περιβάλλον προγραμματισμού με την C++. Καθοδηγούμε τους αναγνώστες στην πρώτη τους εμπειρία με μία τυπική εφαρμογή C++ στις πλατφόρμες Windows και Linux. Επιπλέον παρουσιάζουμε βασικές έννοιες και όρους της αντικειμενοστραφούς τεχνολογίας και της γλώσσας UML. Κεφάλαιο 2: Εισαγωγή στον Προγραμματισμό με την C++. Μία περιεκτική και ταυτόχρονα φιλική για τον αναγνώστη εισαγωγή στον προγραμματισμό με την γλώσσα C++. Αυτό το κεφάλαιο εισάγει τους αρχάριους προγραμματιστές στις βασικές έννοιες και αρχές του προγραμματισμού. Τα προγράμματα αυτού του κεφαλαίου επιδεικνύουν βασικές εργασίες όπως η εμφάνιση δεδομένων στην οθόνη και η λήψη δεδομένων από τον χρήστη μέσω του πληκτρολογίου. Το κεφάλαιο ολοκληρώνεται με μία αναλυτική αναφορά στη δυνατότητα λήψης αποφάσεων από τα προγράμματα και στην εκτέλεση αριθμητικών πράξεων. Κεφάλαιο 3: Εισαγωγή στις Κλάσεις και τα Αντικείμενα. Ο στόχος αυτού του κεφαλαίου είναι η εξοικείωση των αναγνωστών με τον αντικειμενοστραφή προγραμματισμό από τα πρώτα κιόλας βήματά τους. ημιουργήθηκε με την καθοδήγηση μιας ομάδας διακεκριμένων ακαδημαϊκών και επαγγελματιών του χώρου. Παρουσιάζουμε τα αντικείμενα, τις κλάσεις, τις συναρτήσεις-μέλη, τις συναρτήσεις δημιουργίας αντικειμένων (constructor) και τα δεδομένα-μέλη μιας κλάσης χρησιμοποιώντας μία σειρά απλών αλλά πρακτικών παραδειγμάτων. Αναπτύσσουμε ένα καλοσχεδιασμένο πλαίσιο αναφοράς για την οργάνωση των αντικειμενοστραφών προγραμμάτων που γράφονται με την C++. Κατ αρχήν, επεξηγούμε την έννοια της κλάσης μ ένα απλό παράδειγμα. Κατόπιν παρουσιάζουμε μία σειρά από επτά πλήρως λειτουργικά προγράμματα, μέσω των οποίων επιδεικνύουμε τις διαδικασίες δημιουργίας και χρήσης δικών σας κλάσεων. Τα παραδείγματα ξεκινούν με την μελέτη υπόθεσης για την ανάπτυξη μιας κλάσης με όνομα GradeBook, την οποία μπορούν να χρησιμοποιούν καθηγητές για την αποθήκευση των βαθμών των μαθητών τους. Αυτή η μελέτη υπόθεσης εμπλουτίζεται σε επόμενα κεφάλαια, με την τελική της μορφή να παρουσιάζεται στο Κεφάλαιο 7. Η μελέτη υπόθεσης για την κλάση GradeBook περιγράφει τον τρόπο ορισμού μιας κλάσης και την χρήση της για τη δημιουργία ενός αντικειμένου. Εξετάζει επίσης τη δήλωση και τον ορισμό συναρτήσεων-μελών για την υλοποίηση της συμπεριφοράς της κλάσης, τη δήλωση δεδομένων-μελών για την υλοποίηση των ιδιοτήτων της κλάσης, καθώς και την κλήση των συναρτήσεων-μελών για την εκτέλεση της εργασίας τους. Θα παρουσιάσουμε την κλάση string της Στάνταρ Βιβλιοθήκης της C++ και θα δημιουργήσουμε αντικείμενα string (αλφαριθμητικά) για την αποθήκευση του ονόματος του μαθήματος που αντιπροσωπεύει ένα αντικείμενο GradeBook. Το Κεφάλαιο 3 εξηγεί επίσης τη διαφορά μεταξύ των δεδομένων-μελών μιας κλάσης και των τοπικών μεταβλητών μιας συνάρτησης, καθώς και τον τρόπο με τον οποίο μπορούμε να χρησιμοποιούμε μία συνάρτηση constructor για να διασφαλίζουμε ότι τα δεδομένα ενός αντικειμένου λαμβάνουν αρχικές τιμές (αρχικοποιούνται) κατά τη δημιουργία του αντικειμένου. Θα σας δείξουμε πώς μπορείτε να προάγετε και να επαυξήσετε τις δυνατότητες επαναχρησιμοποίησης λογισμικού διαχωρίζοντας τον ορισμό μιας κλάσης από τον κώδικα που χρησιμοποιεί την

C++ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Paul Deitel. Harvey Deitel. Εκδόσεις: Μ. Γκιούρδας ΕΝΑΤΗ ΕΚ ΟΣΗ. Deitel & Associates, Inc. Deitel & Associates, Inc.

C++ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Paul Deitel. Harvey Deitel. Εκδόσεις: Μ. Γκιούρδας ΕΝΑΤΗ ΕΚ ΟΣΗ. Deitel & Associates, Inc. Deitel & Associates, Inc. C++ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΕΝΑΤΗ ΕΚ ΟΣΗ Paul Deitel Deitel & Associates, Inc. Harvey Deitel Deitel & Associates, Inc. Απόδοση: Αγαμέμνων Μήλιος Μηχανικός Λογισμικού Εκδόσεις: Μ. Γκιούρδας Ζωοδόχου Πηγής 70-74

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

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

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

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

Περιεχόμενα. Πρόλογος... 21

Περιεχόμενα. Πρόλογος... 21 Περιεχόμενα Πρόλογος... 21 Κεφάλαιο 1: Εισαγωγή στον προγραμματισμό... 25 Εισαγωγή...27 Πώς να διαβάσετε αυτό το βιβλίο...27 Η δομή των κεφαλαίων...28 Γιατί να μάθω προγραμματισμό;...31 Γιατί να μάθω C;...31

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

ΕΞΕΤΑΣΤΕΑ ΥΛΗ (SYLLABUS) ADVANCED αντικειμενοστραφής προγραμματισμός ΕΚΔΟΣΗ 1.0. Σόλωνος 108,Τηλ Φαξ

ΕΞΕΤΑΣΤΕΑ ΥΛΗ (SYLLABUS) ADVANCED αντικειμενοστραφής προγραμματισμός ΕΚΔΟΣΗ 1.0. Σόλωνος 108,Τηλ Φαξ ΕΞΕΤΑΣΤΕΑ ΥΛΗ (SYLLABUS) ADVANCED αντικειμενοστραφής προγραμματισμός ΕΚΔΟΣΗ 1.0 ΤΙ ΕΙΝΑΙ ΤΟ ADVANCED Οι Advanced θεματικές ενότητες είναι κατάλληλες για άτομα που επιθυμούν να συνεχίσουν σπουδές στο χώρο

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

ΚΕΦΑΛΑΙΟ 2: Τύποι δεδομένων και εμφάνιση στοιχείων...33

ΚΕΦΑΛΑΙΟ 2: Τύποι δεδομένων και εμφάνιση στοιχείων...33 ΠΕΡΙΕΧΟΜΕΝΑ Πρόλογος του συγγραφέα... 13 Πρόλογος του καθηγητή Τιμολέοντα Σελλή... 15 ΚΕΦΑΛΑΙΟ 1: Εργαλεία γλωσσών προγραμματισμού...17 1.1 Γλώσσες προγραμματισμού τρίτης γεννεάς... 18 τι είναι η γλώσσα

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

Οδηγός των Ελληνικών Microsoft WINDOWS 7

Οδηγός των Ελληνικών Microsoft WINDOWS 7 Οδηγός των Ελληνικών Microsoft WINDOWS 7 Chris Fehily Απόδοση: Αγαμέμνων Μήλιος Μηχανικός Λογισμικού Εκδόσεις: Μ. Γκιούρδας Ζωοδόχου Πηγής 70-74 - Τηλ.: 210 3630219 106 81 Αθήνα, 2010 www.mgiurdas.gr Τίτλος

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

Μέρος Ι: Εγκατάσταση και ιαμόρφωση των MySQL, Apache και PHP

Μέρος Ι: Εγκατάσταση και ιαμόρφωση των MySQL, Apache και PHP Εισαγωγή... 1 Σε Ποιους Απευθύνεται το Βιβλίο... 1 Η Οργάνωση του Βιβλίου... 2 Ο Πηγαίος Κώδικας του Βιβλίου... 3 Συμβάσεις που Χρησιμοποιούνται σε Αυτό το Βιβλίο... 3 Μέρος Ι: Εγκατάσταση και ιαμόρφωση

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

Πρόλογος... xiii ΜΕΡΟΣ 1 1 Εισαγωγή στο Excel Βασικές λειτουργίες του Excel... 21

Πρόλογος... xiii ΜΕΡΟΣ 1 1 Εισαγωγή στο Excel Βασικές λειτουργίες του Excel... 21 Πρόλογος... xiii ΜΕΡΟΣ 1 1 Εισαγωγή στο Excel...3 1.1 Τι νέο υπάρχει στο Excel 2016...4 1.1.1 Νέες λειτουργίες του Excel 2016...4 1.2 Διάφοροι τρόποι εκκίνησης του Excel...6 1.3 Εξοικείωση με το περιβάλλον

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

ΑΕΠΠ Ερωτήσεις θεωρίας

ΑΕΠΠ Ερωτήσεις θεωρίας ΑΕΠΠ Ερωτήσεις θεωρίας Κεφάλαιο 1 1. Τα δεδομένα μπορούν να παρέχουν πληροφορίες όταν υποβάλλονται σε 2. Το πρόβλημα μεγιστοποίησης των κερδών μιας επιχείρησης είναι πρόβλημα 3. Για την επίλυση ενός προβλήματος

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

10. Με πόσους και ποιους τρόπους μπορεί να αναπαρασταθεί ένα πρόβλημα; 11. Περιγράψτε τα τρία στάδια αντιμετώπισης ενός προβλήματος.

10. Με πόσους και ποιους τρόπους μπορεί να αναπαρασταθεί ένα πρόβλημα; 11. Περιγράψτε τα τρία στάδια αντιμετώπισης ενός προβλήματος. 1. Δώστε τον ορισμό του προβλήματος. 2. Σι εννοούμε με τον όρο επίλυση ενός προβλήματος; 3. Σο πρόβλημα του 2000. 4. Σι εννοούμε με τον όρο κατανόηση προβλήματος; 5. Σι ονομάζουμε χώρο προβλήματος; 6.

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

Περιεχόμενα. Περιεχόμενα

Περιεχόμενα. Περιεχόμενα Περιεχόμενα xv Περιεχόμενα 1 Αρχές της Java... 1 1.1 Προκαταρκτικά: Κλάσεις, Τύποι και Αντικείμενα... 2 1.1.1 Βασικοί Τύποι... 5 1.1.2 Αντικείμενα... 7 1.1.3 Τύποι Enum... 14 1.2 Μέθοδοι... 15 1.3 Εκφράσεις...

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

ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗ ΕΠΙΧΕΙΡΗΣΕΩΝ ΕΠΙΠΕΔΟ ΣΠΟΥΔΩΝ Προπτυχιακό ΚΩΔΙΚΟΣ ΜΑΘΗΜΑΤΟΣ GD2520

ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗ ΕΠΙΧΕΙΡΗΣΕΩΝ ΕΠΙΠΕΔΟ ΣΠΟΥΔΩΝ Προπτυχιακό ΚΩΔΙΚΟΣ ΜΑΘΗΜΑΤΟΣ GD2520 ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗ ΕΠΙΧΕΙΡΗΣΕΩΝ ΕΠΙΠΕΔΟ ΣΠΟΥΔΩΝ Προπτυχιακό ΚΩΔΙΚΟΣ ΜΑΘΗΜΑΤΟΣ GD2520 ΕΞΑΜΗΝΟ ΣΠΟΥΔΩΝ Πέμπτο ΤΙΤΛΟΣ ΜΑΘΗΜΑΤΟΣ Αντικειμενοστρεφής Προγραμματισμός ΑΥΤΟΤΕΛΕΙΣ ΔΙΔΑΚΤΙΚΕΣ

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

Περιεχόμενα ΜΕΡΟΣ 1. Πρόλογος... xiii. 1 Εισαγωγή στο Excel Βασικές λειτουργίες του Excel... 23

Περιεχόμενα ΜΕΡΟΣ 1. Πρόλογος... xiii. 1 Εισαγωγή στο Excel Βασικές λειτουργίες του Excel... 23 Περιεχόμενα Πρόλογος... xiii ΜΕΡΟΣ 1 1 Εισαγωγή στο Excel...3 1.1 Τι νέο υπάρχει στο Excel 2016...4 1.1.1 Νέες λειτουργίες του Excel 2016...4 1.2 Διάφοροι τρόποι εκκίνησης του Excel...6 1.3 Εξοικείωση

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

HTML5, CSS και JavaScript

HTML5, CSS και JavaScript Μάθετε HTML5, CSS και JavaScript Όλα σε Ένα 2 Η ΕΚ ΟΣΗ Julie C. Meloni Απόδοση: Γιάννης Β. Σαμαράς Ηλεκτρολόγος Μηχανολόγος Ε.Μ.Π. M.Sc. Computer Science Εκδόσεις: Μ. Γκιούρδας Ζωοδόχου Πηγής 70-74 - Τηλ.:

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΝΑΠΤΥΞΗ ΚΑΙ ΣΧΕΔΙΑΣΗ ΛΟΓΙΣΜΙΚΟΥ Η γλώσσα προγραμματισμού C ΕΡΓΑΣΤΗΡΙΟ 2: Εκφράσεις, πίνακες και βρόχοι 14 Απριλίου 2016 Το σημερινό εργαστήριο

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

ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ

ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ ii ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ 1. Εισαγωγή - Βασικές έννοιες....1 1.1 Εσωτερική παράσταση δεδομένων....2 1.1.1 Παράσταση θέσης....3 1.1.2 Μετατροπές μεταξύ συστημάτων διαφορετικών βάσεων....5 1.1.3 Οι αριθμητικές

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

Ανάπτυξη και Σχεδίαση Λογισμικού

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Βασικά Στοιχεία Το αλφάβητο της C Οι βασικοί τύποι της C Δηλώσεις μεταβλητών Είσοδος/Έξοδος Βασικές εντολές της C Αλφάβητο

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

Περιεχόμενα. Πρόλογος... 17

Περιεχόμενα. Πρόλογος... 17 Περιεχόμενα Πρόλογος... 17 Κεφάλαιο 1: Εισαγωγή... 19 Πώς να διαβάσετε αυτό το βιβλίο... 20 Η γλώσσα C Ιστορική αναδρομή... 22 Τα χαρακτηριστικά της C... 23 C Μια δομημένη γλώσσα... 23 C Μια γλώσσα για

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

Δομές Δεδομένων. Λουκάς Γεωργιάδης. http://www.cs.uoi.gr/~loukas/courses/data_structures/ email: loukas@cs.uoi.gr

Δομές Δεδομένων. Λουκάς Γεωργιάδης. http://www.cs.uoi.gr/~loukas/courses/data_structures/ email: loukas@cs.uoi.gr Δομές Δεδομένων http://www.cs.uoi.gr/~loukas/courses/data_structures/ Λουκάς Γεωργιάδης email: loukas@cs.uoi.gr Αλγόριθμος: Μέθοδος για την επίλυση ενός προβλήματος Δεδομένα: Σύνολο από πληροφορίες που

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

Standard Template Library (STL) C++ library

Standard Template Library (STL) C++ library Τ Μ Η Μ Α Μ Η Χ Α Ν Ι Κ Ω Ν Η / Υ Κ Α Ι Π Λ Η Ρ Ο Φ Ο Ρ Ι Κ Η Σ Standard Template Library (STL) C++ library Δομές Δεδομένων Μάριος Κενδέα kendea@ceid.upatras.gr Εισαγωγή Η Standard Βιβλιοθήκη προτύπων

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

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος http://www.teiser.gr/icd/staff/lantzos lantzos@teiser.gr Κανόνες Ομαλής Λειτουργίας Ερχόμαστε στην ώρα μας Δεν καπνίζουμε και τρώμε εντός της αίθουσας

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

Adobe Dreamweaver CS3

Adobe Dreamweaver CS3 i Adobe Dreamweaver CS3 Βήμα προς Βήμα Απόδοση: Αγαμέμνων Μήλιος Μηχανικός Λογισμικού Εκδόσεις: Μ. Γκιούρδας Ζωοδόχου Πηγής 70-74 - Τηλ.: 210 3630219 106 81 Αθήνα, 2007 www.mgiurdas.gr Τίτλος Πρωτοτύπου:

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

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

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 ΠΕΡΙΕΧΟΜΕΝΟ ΤΟΥ ΜΑΘΗΜΑΤΟΣ Αρχές

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

Πλήρες Εγχειρίδιο. της C++ 8 η ΕΚΔΟΣΗ. Εκδόσεις: Μ. Γκιούρδας. Siddhartha Rao. Απόδοση: Μαίρη Γκλα βά

Πλήρες Εγχειρίδιο. της C++ 8 η ΕΚΔΟΣΗ. Εκδόσεις: Μ. Γκιούρδας. Siddhartha Rao. Απόδοση: Μαίρη Γκλα βά Πλήρες Εγχειρίδιο της C++ 8 η ΕΚΔΟΣΗ Siddhartha Rao Απόδοση: Μαίρη Γκλα βά Μαθηματικός, MSc Computer Sci ence Εκδόσεις: Μ. Γκιούρδας Ζωοδόχου Πηγής 70-74 - Τηλ.: 210 3630219 106 81 Αθήνα, 2017 www.mgiurdas.gr

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

Διδακτική της Πληροφορικής ΙΙ

Διδακτική της Πληροφορικής ΙΙ Διδακτική της Πληροφορικής ΙΙ Ομάδα Γ Βότσης Ευστάθιος Γιαζιτσής Παντελής Σπαής Αλέξανδρος Τάτσης Γεώργιος Προβλήματα που αντιμετωπίζουν οι αρχάριοι προγραμματιστές Εισαγωγή Προβλήματα Δυσκολίες Διδακτικό

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

ΕΙΔΗ,ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙ- ΣΜΟΥ

ΕΙΔΗ,ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙ- ΣΜΟΥ Κεφάλαιο 7 ΕΙΔΗ,ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙ- ΣΜΟΥ Ερωτήσεις 1. Να αναφέρετε διαφορές μεταξύ γλωσσών μηχανής και γλωσσών χαμηλού επιπέδου. Οι γλώσσες μηχανής κωδικοποιούν τις εντολές τους με ομάδες

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

Γενικά (για τις γραπτές εξετάσεις)

Γενικά (για τις γραπτές εξετάσεις) Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Διάλεξη #12 η : Επανάληψη Γαβαλάς Δαμιανός dgavalas@aegean.gr Γενικά (για τις γραπτές εξετάσεις) Δεν υπάρχει αυστηρά ορισμένη «ύλη εξετάσεων» (καθώς δεν έχετε

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

Περιεχόμενα ΜΕΡΟΣ ΠΡΩΤΟ. Πρόλογος... 13

Περιεχόμενα ΜΕΡΟΣ ΠΡΩΤΟ. Πρόλογος... 13 Περιεχόμενα Πρόλογος... 13 ΜΕΡΟΣ ΠΡΩΤΟ Κεφ. 1 Περί προγραμματισμού και γλωσσών προγραμματισμού Προγράμματα και Λειτουργικά Συστήματα... 17 Γλώσσες προγραμματισμού και εργαλεία ανάπτυξης προγραμμάτων...

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

Χρήστος Στασινός. ουλεύοντας με τη. Microsoft Access ΑΘΗΝΑ

Χρήστος Στασινός. ουλεύοντας με τη. Microsoft Access ΑΘΗΝΑ Χρήστος Στασινός ουλεύοντας με τη Microsoft Access ΑΘΗΝΑ Κάθε γνήσιο αντίγραφο έχει την υπογραφή του συγγραφέα Έκδοση 1η, Copyright 1998 Έκδοση 2η, Copyright 2007 ISBN: 978-960-8105-97-3 ΕΚΔΟΣΕΙΣ ΝΕΩΝ

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

Acrobat 9. Adobe. Βήμα προς Βήμα. Εκδόσεις: Μ. Γκιούρδας. Απόδοση: Μαίρη Γκλα βά

Acrobat 9. Adobe. Βήμα προς Βήμα. Εκδόσεις: Μ. Γκιούρδας. Απόδοση: Μαίρη Γκλα βά Adobe Acrobat 9 Βήμα προς Βήμα Απόδοση: Μαίρη Γκλα βά Μαθηματικός, MSc Computer Sci ence Εκδόσεις: Μ. Γκιούρδας Ζωοδόχου Πηγής 70-74 - Τηλ.: 210 3630219 106 81 Αθήνα, 2009 www.mgiurdas.gr Τίτλος Πρωτοτύπου:

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

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

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

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ Π ΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ Π ΕΡΙΒΑΛΛΟΝ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ Π ΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ Π ΕΡΙΒΑΛΛΟΝ ΥΠΟΥΡΓΕΙΟ ΕΘΝΙΚΗΣ ΠΑΙΔΕΙΑΣ ΚΑΙ ΘΡΗΣΚΕΥΜΑΤΩΝ ΠΑΙΔΑΓΩΓΙΚΟ ΙΝΣΤΙΤΟΥΤΟ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ Π ΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ Π ΕΡΙΒΑΛΛΟΝ Κ Υ Κ Λ Ο Υ Π Λ Η Ρ Ο Φ Ο Ρ Ι Κ Η Σ Κ Α Ι Υ Π Η Ρ Ε Σ Ι Ω Ν Τ Ε Χ Ν Ο Λ Ο Γ Ι Κ Η

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

Δομές Δεδομένων. Λουκάς Γεωργιάδης.

Δομές Δεδομένων. Λουκάς Γεωργιάδης. Δομές Δεδομένων http://www.cs.uoi.gr/~loukas/courses/data_structures/ Λουκάς Γεωργιάδης email: loukas@cs.uoi.gr Αλγόριθμος: Μέθοδος για την επίλυση ενός προβλήματος Δομή Δεδομένων: Μέθοδος αποθήκευσης

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

Περιεχόμενα. 2 Αριθμητικά συστήματα

Περιεχόμενα. 2 Αριθμητικά συστήματα Περιεχόμενα Πρόλογος 1 Εισαγωγή 1.1 Το μοντέλο Turing 1.2 Το μοντέλο von Neumann 1.3 Συστατικά στοιχεία υπολογιστών 1.4 Ιστορικό 1.5 Κοινωνικά και ηθικά ζητήματα 1.6 Η επιστήμη των υπολογιστών ως επαγγελματικός

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

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον κεφ.6 Εισαγωγή στον Προγραμματισμό

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον κεφ.6 Εισαγωγή στον Προγραμματισμό Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον κεφ.6 Εισαγωγή στον Προγραμματισμό Μάριος Αραποστάθης Καθηγητής πληροφορικής Βαρβάκειου Λύκειου http://users.sch.gr/mariosarapostathis 6.1 Η έννοια του

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

ΠΕΡΙΕΧΟΜΕΝΑ ΜΕΡΟΣ Α : ΘΕΜΑΤΑ ΒΑΣΗΣ 1. ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ...11 2. ΑΡΙΘΜΗΤΙΚΑ ΣΥΣΤΗΜΑΤΑ...30

ΠΕΡΙΕΧΟΜΕΝΑ ΜΕΡΟΣ Α : ΘΕΜΑΤΑ ΒΑΣΗΣ 1. ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ...11 2. ΑΡΙΘΜΗΤΙΚΑ ΣΥΣΤΗΜΑΤΑ...30 ΠΕΡΙΕΧΟΜΕΝΑ ΜΕΡΟΣ Α : ΘΕΜΑΤΑ ΒΑΣΗΣ 1. ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ...11 1.1 Τι είναι Πληροφορική;...11 1.1.1 Τι είναι η Πληροφορική;...12 1.1.2 Τι είναι ο Υπολογιστής;...14 1.1.3 Τι είναι το Υλικό και το

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

Adobe FLASH Professional CC

Adobe FLASH Professional CC Adobe FLASH Professional CC ΒHΜΑ ΠΡΟΣ ΒHΜΑ Απόδοση: Αγαμέμνων Μήλιος Μηχανικός Λογισμικού Εκδόσεις: Μ. Γκιούρδας Ζωοδόχου Πηγής 70-74 - Τηλ.: 210 3630219 106 81 Αθήνα, 2014 www.mgiurdas.gr Τίτλος Πρωτοτύπου:

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

Δομές Δεδομένων Standard Template Library (STL) 23/3/2017 ΜΠΟΜΠΟΤΑΣ ΑΓΟΡΑΚΗΣ

Δομές Δεδομένων Standard Template Library (STL) 23/3/2017 ΜΠΟΜΠΟΤΑΣ ΑΓΟΡΑΚΗΣ Δομές Δεδομένων Standard Template Library (STL) 23/3/2017 ΜΠΟΜΠΟΤΑΣ ΑΓΟΡΑΚΗΣ mpompotas@ceid.upatras.gr Εισαγωγή - STL Η Standard Βιβλιοθήκη προτύπων (STL) είναι μια βιβλιοθήκη λογισμικού για την C++ Δημιουργήθηκε

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

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

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

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

xvi Προσέγγιση δομεσ δεδομενων και αλγοριθμοι

xvi Προσέγγιση δομεσ δεδομενων και αλγοριθμοι Πρόλογος Το εφαλτήριο για τη συγγραφή αυτού του βιβλίου ήταν η πολύχρονη εμπειρία μου στη διδασκαλία του μαθήματος «Αλγόριθμοι και Δομές Δεδομένων» (κωδ. ECE 250) το οποίο εντάσσεται στο πρόγραμμα σπουδών

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

Μαλούτα Θεανώ Σελίδα 1

Μαλούτα Θεανώ Σελίδα 1 ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΑΡΧΕΣ ΤΗΣ ΕΠΙΣΤΗΜΗΣ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Α. ΕΡΩΤΗΣΕΙΣ ΘΕΩΡΙΑΣ ΦΥΛΛΑΔΙΟ 6 ο ( Ενότητες 2.3 ) 1.Τι είναι πρόγραμμα; 2. Ποια είναι τα πλεονεκτήματα των γλωσσών υψηλού επιπέδου σε σχέση με τις γλώσσες

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

Δομημένος Προγραμματισμός

Δομημένος Προγραμματισμός Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων Δομημένος Προγραμματισμός Ενότητα 2: Τύποι μεταβλητών Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και αν αναφέρεται διαφορετικά

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

Dreamweaver. Adobe ΒHΜΑ ΠΡΟΣ ΒHΜΑ. Εκδόσεις: Μ. Γκιούρδας. Απόδοση: Αγαμέμνων Μήλιος Μηχανικός Λογισμικού

Dreamweaver. Adobe ΒHΜΑ ΠΡΟΣ ΒHΜΑ. Εκδόσεις: Μ. Γκιούρδας. Απόδοση: Αγαμέμνων Μήλιος Μηχανικός Λογισμικού Adobe Dreamweaver CC ΒHΜΑ ΠΡΟΣ ΒHΜΑ Απόδοση: Αγαμέμνων Μήλιος Μηχανικός Λογισμικού Εκδόσεις: Μ. Γκιούρδας Ζωοδόχου Πηγής 70-74 Τηλ.: 210 3630219 106 81 Αθήνα, 2014 www.mgiurdas.gr Τίτλος Πρωτοτύπου: Adobe

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

Προγραμματισμός Χειμερινό Εξάμηνο 2014

Προγραμματισμός Χειμερινό Εξάμηνο 2014 Χειμερινό Εξάμηνο 2014 Εισαγωγή Περιεχόμενο : μέθοδοι προγραμματισμού προγραμματιστικές αρχές δομημένος προγραμματισμός, αφαιρετικότητα, υλοποίηση, έλεγχος, και αποσφαλμάτωση καλές πρακτικές γλώσσα προγραμματισμού:

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

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

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Εισαγωγή Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Βιβλιογραφία "C Προγραμματισμός", Deitel & Deitel, Πέμπτη Έκδοση, Εκδόσεις

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

Κεφάλαιο 2.3: Προγραμματισμός. Επιστήμη ΗΥ Κεφ. 2.3 Καραμαούνας Πολύκαρπος

Κεφάλαιο 2.3: Προγραμματισμός. Επιστήμη ΗΥ Κεφ. 2.3 Καραμαούνας Πολύκαρπος Κεφάλαιο 2.3: Προγραμματισμός 1 2.3.1 Αναφορά σε γλώσσες προγραμματισμού και «Προγραμματιστικά Υποδείγματα» 2.3.1.1 Πρόγραμμα και Γλώσσες Προγραμματισμού Πρόγραμμα: σύνολο εντολών που χρειάζεται να δοθούν

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

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07 ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07 Αλγόριθμος: Βήμα προς βήμα διαδικασία για την επίλυση κάποιου προβλήματος. Το πλήθος των βημάτων πρέπει να είναι πεπερασμένο. Αλλιώς: Πεπερασμένη

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

1 η ΕΝΟΤΗΤΑ ΕΙΣΑΓΩΓΗ (Προγραμματισμός & MATLAB)

1 η ΕΝΟΤΗΤΑ ΕΙΣΑΓΩΓΗ (Προγραμματισμός & MATLAB) ΣΧΟΛΗ ΠΟΛΙΤΙΚΩΝ ΜΗΧΑΝΙΚΩΝ ΕΜΠ ΜΕΘΟΔΟΙ ΕΠΙΛΥΣΗΣ ΜΕ Η/Υ 1 η ΕΝΟΤΗΤΑ ΕΙΣΑΓΩΓΗ (Προγραμματισμός & MATLAB) Ν.Δ. Λαγαρός Μ. Φραγκιαδάκης Α. Στάμος Άδεια Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες

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

3 Αλληλεπίδραση Αντικειμένων

3 Αλληλεπίδραση Αντικειμένων Αφαίρεση και Αρθρωσιμότητα 3 Αλληλεπίδραση Αντικειμένων Πώς συνεργάζονται τα αντικείμενα που δημιουργούμε Αφαίρεση (abstraction) είναι η δυνατότητα να αγνοούμε τις λεπτομέρειες και να εστιάζουμε την προσοχή

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

επιφάνεια πυριτίου Αναφορά στο Εκπαιδευτικό Υλικό : 5. Αναφορά στο Εργαστήριο :

επιφάνεια πυριτίου Αναφορά στο Εκπαιδευτικό Υλικό : 5. Αναφορά στο Εργαστήριο : 2. Α/Α Διάλεξης : 1 1. Τίτλος : Εισαγωγή στην Ψηφιακή Τεχνολογία 2. Μαθησιακοί Στόχοι : Λογικές Πύλες και η υλοποίησή τους με τρανζίστορ. Κατασκευή ολοκληρωμένων κυκλωμάτων. 3. Θέματα που καλύπτει : Λογικές

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

Γλώσσες Προγραμματισμού

Γλώσσες Προγραμματισμού Το έργο υλοποιείται στο πλαίσιο του υποέργου 2 με τίτλο «Ανάπτυξη έντυπου εκπαιδευτικού υλικού για τα νέα Προγράμματα Σπουδών» της Πράξης «Ελληνικό Ανοικτό Πανεπιστήμιο» η οποία έχει ενταχθεί στο Επιχειρησιακό

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

Photoshop CC. Adobe ΒΗΜΑ ΠΡΟΣ ΒΗΜΑ. Εκδόσεις: Μ. Γκιούρδας. Απόδοση: Γιάννης Β. Σαμαράς Ηλεκτρολόγος Μηχανολόγος Ε.Μ.Π. M.Sc.

Photoshop CC. Adobe ΒΗΜΑ ΠΡΟΣ ΒΗΜΑ. Εκδόσεις: Μ. Γκιούρδας. Απόδοση: Γιάννης Β. Σαμαράς Ηλεκτρολόγος Μηχανολόγος Ε.Μ.Π. M.Sc. Adobe Photoshop CC ΒΗΜΑ ΠΡΟΣ ΒΗΜΑ Απόδοση: Γιάννης Β. Σαμαράς Ηλεκτρολόγος Μηχανολόγος Ε.Μ.Π. M.Sc. Computer Science Εκδόσεις: Μ. Γκιούρδας Ζωοδόχου Πηγής 70-74 - Τηλ.: 210 3630219 106 81 Αθήνα, 2014 www.mgiurdas.gr

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

PHP, MySQL. και Apache Όλα σε Ένα. Μάθετε. Εκδόσεις: Μ. Γκιούρδας. Julie C. Meloni. 5 η Έκδοση

PHP, MySQL. και Apache Όλα σε Ένα. Μάθετε. Εκδόσεις: Μ. Γκιούρδας. Julie C. Meloni. 5 η Έκδοση Μάθετε PHP, MySQL και Apache Όλα σε Ένα Julie C. Meloni 5 η Έκδοση Απόδοση: Γιάννης Β. Σαμαράς Ηλεκτρολόγος Μηχανολόγος Ε.Μ.Π. M.Sc. Computer Science Εκδόσεις: Μ. Γκιούρδας Ζωοδόχου Πηγής 70-74 - Τηλ.:

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

Περιεχόμενα. Πρόλογος 15

Περιεχόμενα. Πρόλογος 15 Περιεχόμενα Πρόλογος 15 1 Δημιουργία προγραμμάτων Java 25 Ορισμός βασικής ορολογίας προγραμματισμού 26 Σύγκριση διαδικαστικού και αντικειμενοστρεφούς προγραμματισμού 29 Διαδικαστικός προγραμματισμός 29

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

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

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

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

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

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

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

Κεφ. 2 Θέματα Θεωρητικής Επιστήμης Υπολογιστών. Κοντογιάννης Βασίλειος ΠΕ19

Κεφ. 2 Θέματα Θεωρητικής Επιστήμης Υπολογιστών. Κοντογιάννης Βασίλειος ΠΕ19 Κεφ. 2 Θέματα Θεωρητικής Επιστήμης Υπολογιστών Κεφ. 2 Θεωρητική Επιστήμη Υπολογιστών 2.3.1.1 Έννοια προγράμματος Τι είναι πρόγραμμα και τι προγραμματισμός; Πρόγραμμα είναι το σύνολο εντολών που χρειάζεται

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

Τίτλος Πακέτου Certified Computer Expert-ACTA

Τίτλος Πακέτου Certified Computer Expert-ACTA Κωδικός Πακέτου ACTA - CCE - 002 Τίτλος Πακέτου Certified Computer Expert-ACTA Εκπαιδευτικές Ενότητες Επεξεργασία Κειμένου - Word Δημιουργία Εγγράφου Προχωρημένες τεχνικές επεξεργασίας κειμένου & αρχείων

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

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

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

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

Προγραμματίζετε. Μάθετε να. σε 24 Ώρες. Εκδόσεις: Μ. Γκιούρδας. 3 η ΕΚ ΟΣΗ. Greg Perry Dean Miller. Απόδοση: Γιάννης Β. Σαμαράς

Προγραμματίζετε. Μάθετε να. σε 24 Ώρες. Εκδόσεις: Μ. Γκιούρδας. 3 η ΕΚ ΟΣΗ. Greg Perry Dean Miller. Απόδοση: Γιάννης Β. Σαμαράς Μάθετε να Προγραμματίζετε σε 24 Ώρες 3 η ΕΚ ΟΣΗ Greg Perry Dean Miller Απόδοση: Γιάννης Β. Σαμαράς Ηλεκτρολόγος Μηχανολόγος Ε.Μ.Π. M.Sc. Computer Science Εκδόσεις: Μ. Γκιούρδας Ζωοδόχου Πηγής 70-74 Τηλ.:

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

ΕΡΩΤΗΣΕΙΣ ΑΞΙΟΛΟΓΗΣΗΣ

ΕΡΩΤΗΣΕΙΣ ΑΞΙΟΛΟΓΗΣΗΣ Α) Να γράψετε στο τετράδιό σας τον αριθμό κάθε πρότασης και δίπλα το γράμμα "Σ", αν είναι σωστή, ή το γράμμα "Λ", αν είναι λανθασμένη. (Μονάδες 25) 1. Ένα αδόμητο πρόβλημα είναι ταυτόχρονα και ανοικτό

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

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

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

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

Δομημένος Προγραμματισμός

Δομημένος Προγραμματισμός Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων Δομημένος Προγραμματισμός Ενότητα 1: Εισαγωγή Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και αν αναφέρεται διαφορετικά Το έργο

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

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

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

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

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

Αντικειμενοστραφής Προγραμματισμός 1 Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου Αντικειμενοστραφής Προγραμματισμός Ενότητα 9 : Τα πρότυπα (templates) Ιωάννης Τσούλος 2 Ανοιχτά Ακαδημαϊκά Μαθήματα στο Τμήμα Μηχανικών Πληροφορικής

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

ActionScript 3.0 για το Adobe Flash. CS5 Professional ΒHΜΑ ΠΡΟΣ ΒHΜΑ. Εκδόσεις: Μ. Γκιούρδας. Απόδοση: Χρυσούλα Απ. Κουτρούμπα Ηλεκτρ.

ActionScript 3.0 για το Adobe Flash. CS5 Professional ΒHΜΑ ΠΡΟΣ ΒHΜΑ. Εκδόσεις: Μ. Γκιούρδας. Απόδοση: Χρυσούλα Απ. Κουτρούμπα Ηλεκτρ. ActionScript 3.0 για το Adobe Flash CS5 Professional ΒHΜΑ ΠΡΟΣ ΒHΜΑ Απόδοση: Χρυσούλα Απ. Κουτρούμπα Ηλεκτρ. Μηχανικός Εκδόσεις: Μ. Γκιούρδας Ζωοδόχου Πηγής 70-74 - Τηλ.: 210 3630219 106 81 Αθήνα, 2011

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

ΜΑΘΗΜΑ: Εργαλεία Ανάπτυξης εφαρμογών internet.

ΜΑΘΗΜΑ: Εργαλεία Ανάπτυξης εφαρμογών internet. ΜΑΘΗΜΑ: Εργαλεία Ανάπτυξης εφαρμογών internet. ΩΡΕΣ ΔΙΔΑΣΚΑΛΙΑΣ: ΕΙΔΟΣ ΜΑΘΗΜΑΤΟΣ: Μικτό Γενικός σκοπός είναι να αποκτήσει ο καταρτιζόμενος τις αναγκαίες γνώσεις σχετικά με εργαλεία και τις τεχνικές για

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

Χειµερινό Εξάµηνο 2013

Χειµερινό Εξάµηνο 2013 Προγραµµατισµός Χειµερινό Εξάµηνο 2013 Προγραµµατισµός Εισαγωγή Περιεχόµενο : γλώσσα προγραµµατισµού: C++ µέθοδοι προγραµµατισµού προγραµµατιστικές αρχές δοµηµένος προγραµµατισµός, αφαιρετικότητα, υλοποίηση,

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

Πληροφορική 2. Γλώσσες Προγραμματισμού

Πληροφορική 2. Γλώσσες Προγραμματισμού Πληροφορική 2 Γλώσσες Προγραμματισμού 1 2 Γλώσσες προγραμματσιμού Επιτρέπουν την κωδικοποίηση των αλγορίθμων Η εκτέλεση ενός προγράμματος θα πρέπει να δίνει τα ίδια αποτελέσματα με την νοητική εκτέλεση

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

Πίνακας Περιεχομένων. μέρος A 1 Εισαγωγή στην Τεχνολογία Λογισμικού

Πίνακας Περιεχομένων. μέρος A 1 Εισαγωγή στην Τεχνολογία Λογισμικού Πρόλογος...21 μέρος A Εισαγωγή στην Τεχνολογία Λογισμικού 1 Εισαγωγή στην Τεχνολογία Λογισμικού 1.1 Το λογισμικό...25 1.1.1 Ο ρόλος και η σημασία του λογισμικού...26 1.1.2 Οικονομική σημασία του λογισμικού...28

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

Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα;

Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα; Εισαγωγή Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα; 1. Σελίδα μαθήματος Εγγραφή Ο κάθε φοιτητής πρέπει να κάνει εγγραφή στη σελίδα του μαθήματος στην πλατφόρμα e-class

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

Προγραμματισμός Χειμερινό Εξάμηνο 2017

Προγραμματισμός Χειμερινό Εξάμηνο 2017 Χειμερινό Εξάμηνο 2017 Εισαγωγή Μέθοδοι, αρχές προγραμματισμού δομημένος προγραμματισμός, αφαιρετικότητα, υλοποίηση, έλεγχος, και αποσφαλμάτωση, καλές πρακτικές γλώσσα προγραμματισμού: C++ Αλγοριθμική

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

PHP, MySQL. Μάθετε. και Apache. Όλα σε Ένα. Εκδόσεις: Μ. Γκιούρδας. 4 η Έκδοση. Julie C. Meloni

PHP, MySQL. Μάθετε. και Apache. Όλα σε Ένα. Εκδόσεις: Μ. Γκιούρδας. 4 η Έκδοση. Julie C. Meloni Μάθετε PHP, MySQL και Apache Όλα σε Ένα Julie C. Meloni 4 η Έκδοση Απόδοση: Γιάννης Β. Σαμαράς Ηλεκτρολόγος Μηχανολόγος Ε.Μ.Π. M.Sc. Computer Science Εκδόσεις: Μ. Γκιούρδας Ζωοδόχου Πηγής 70-74 - Τηλ.:

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

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών 44 Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών Διδακτικοί στόχοι Σκοπός του κεφαλαίου είναι οι μαθητές να κατανοήσουν τα βήματα που ακολουθούνται κατά την ανάπτυξη μιας εφαρμογής.

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

Σου προτείνω να τυπώσεις τις επόμενες τέσσερις σελίδες σε ένα φύλο διπλής όψης και να τις έχεις μαζί σου για εύκολη αναφορά.

Σου προτείνω να τυπώσεις τις επόμενες τέσσερις σελίδες σε ένα φύλο διπλής όψης και να τις έχεις μαζί σου για εύκολη αναφορά. AeppAcademy.com facebook.com/aeppacademy Γεια. Σου προτείνω να τυπώσεις τις επόμενες τέσσερις σελίδες σε ένα φύλο διπλής όψης και να τις έχεις μαζί σου για εύκολη αναφορά. Καλή Ανάγνωση & Καλή Επιτυχία

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

ΒΙΒΛΙΑ ΒΙΒΛΙΑ

ΒΙΒΛΙΑ ΒΙΒΛΙΑ ΠΑΡΑΡΤΗΜΑ 05 ΠΛΗΡΟΦΟΡΙΚΗ Σύγκριση της Διδακτέας-εξεταστέας ύλης του πανελλαδικώς εξεταζόμενου μαθήματος «ΠΛΗΡΟΦΟΡΙΚΗ» (πρώην Περιβάλλον), της Γ τάξης ημερήσιου Γενικού Λυκείου, μεταξύ του σχολικού έτους

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

Διαδικασιακός Προγραμματισμός

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 2 η Τύποι Δεδομένων Δήλωση Μεταβλητών Έξοδος Δεδομένων Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα

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

1 Συστήματα Αυτοματισμού Βιβλιοθηκών

1 Συστήματα Αυτοματισμού Βιβλιοθηκών 1 Συστήματα Αυτοματισμού Βιβλιοθηκών Τα Συστήματα Αυτοματισμού Βιβλιοθηκών χρησιμοποιούνται για τη διαχείριση καταχωρήσεων βιβλιοθηκών. Τα περιεχόμενα των βιβλιοθηκών αυτών είναι έντυπα έγγραφα, όπως βιβλία

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

Εισαγωγή στην γλώσσα προγραμματισμού C

Εισαγωγή στην γλώσσα προγραμματισμού C Εισαγωγή στην γλώσσα προγραμματισμού C Χαρακτηριστικά της C Ιδιαίτερα δημοφιλής Έχει χρησιμοποιηθεί για τον προγραμματισμό ευρέος φάσματος συστημάτων και εφαρμογών Γλώσσα μετρίου επιπέδου Φιλοσοφία: Ο

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

Οδηγίες Συγγραφής και Αξιολόγησης Εργασιών του μαθήματος

Οδηγίες Συγγραφής και Αξιολόγησης Εργασιών του μαθήματος ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ Αντικειμενοστρεφής Προγραμματισμός Η/Υ Οδηγίες Συγγραφής και Αξιολόγησης Εργασιών του μαθήματος Το κείμενο αυτό γράφεται με σκοπό να βοηθήσει τους φοιτητές του μαθήματος

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

JOOMLA! Οπτικός Οδηγός τoυ Ελληνικού. Εκδόσεις: Μ. Γκιούρδας MARNI DERR TANYA SYMES. εύτερη έκδοση. Απόδοση: Αγαμέμνων Μήλιος Μηχανικός Λογισμικού

JOOMLA! Οπτικός Οδηγός τoυ Ελληνικού. Εκδόσεις: Μ. Γκιούρδας MARNI DERR TANYA SYMES. εύτερη έκδοση. Απόδοση: Αγαμέμνων Μήλιος Μηχανικός Λογισμικού Οπτικός Οδηγός τoυ Ελληνικού JOOMLA! εύτερη έκδοση MARNI DERR TANYA SYMES Απόδοση: Αγαμέμνων Μήλιος Μηχανικός Λογισμικού Εκδόσεις: Μ. Γκιούρδας Ζωοδόχου Πηγής 70-74 - Τηλ.: 210 3630219 106 81 Αθήνα, 2012

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

Επανάληψη για τις Τελικές εξετάσεις

Επανάληψη για τις Τελικές εξετάσεις Επανάληψη για τις Τελικές εξετάσεις ( ιάλεξη 21) ιδάσκων: ηµήτρης Ζεϊναλιπούρ Εισαγωγή Το µάθηµα EPL032 έχει ως βασικό στόχο την επίλυση προβληµάτων πληροφορικής µε την χρήση της γλώσσας προγραµµατισµού

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

ΔΙΔΑΚΤΙΚΗ της ΠΛΗΡΟΦΟΡΙΚΗΣ

ΔΙΔΑΚΤΙΚΗ της ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΘΝΙΚΟ ΚΑΙ ΚΑΠΟΔΙΣΤΡΙΑΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΔΙΔΑΚΤΙΚΗ της ΠΛΗΡΟΦΟΡΙΚΗΣ Μ. Γρηγοριάδου Ρ. Γόγουλου Ενότητα: Η Διδασκαλία του Προγραμματισμού Περιεχόμενα Παρουσίασης

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

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ Ενότητα 6: Λογισμικό Υπολογιστών Γλώσσες Προγραμματισμού Πασχαλίδης Δημοσθένης Τμήμα Διαχείρισης Εκκλησιαστικών Κειμηλίων Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε

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

ΚΕΦΑΛΑΙΟ 9 ΒΑΣΙΚΕΣ ΕΝΤΟΛΕΣ

ΚΕΦΑΛΑΙΟ 9 ΒΑΣΙΚΕΣ ΕΝΤΟΛΕΣ ΚΕΦΑΛΑΙΟ 9 ΒΑΣΙΚΕΣ ΕΝΤΟΛΕΣ 9.1 Εντολές Εισόδου/εξόδου Στην Pascal, 1. Tα δεδομένα των προγραμμάτων λαμβάνονται: είτε από το πληκτρολόγιο είτε από ένα αρχείο με τη χρήση των διαδικασιών read και readln,

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

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

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Πίνακες Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Πίνακες Πολλές φορές θέλουμε να κρατήσουμε στην μνήμη πολλά αντικείμενα

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ 6 ΟΥ ΚΕΦΑΛΑΙΟΥ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ 6.1 Τι ονοµάζουµε πρόγραµµα υπολογιστή; Ένα πρόγραµµα

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

Διαγράμματα Κλάσεων στη Σχεδίαση

Διαγράμματα Κλάσεων στη Σχεδίαση Διαγράμματα Κλάσεων στη Σχεδίαση περιεχόμενα παρουσίασης Αφηρημένες κλάσεις Ιδιότητες Λειτουργίες Απλοί τύποι Συσχετίσεις Εξάρτηση Διεπαφές αφηρημένες κλάσεις Οι αφηρημένες κλάσεις δεν μπορούν να δημιουργήσουν

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

Photoshop CS6. Adobe ΒHΜΑ ΠΡΟΣ ΒHΜΑ. Εκδόσεις: Μ. Γκιούρδας. Απόδοση: Γιάννης Β. Σαμαράς Ηλεκτρολόγος Μηχανολόγος Ε.Μ.Π. M.Sc.

Photoshop CS6. Adobe ΒHΜΑ ΠΡΟΣ ΒHΜΑ. Εκδόσεις: Μ. Γκιούρδας. Απόδοση: Γιάννης Β. Σαμαράς Ηλεκτρολόγος Μηχανολόγος Ε.Μ.Π. M.Sc. Adobe Photoshop CS6 ΒHΜΑ ΠΡΟΣ ΒHΜΑ Απόδοση: Γιάννης Β. Σαμαράς Ηλεκτρολόγος Μηχανολόγος Ε.Μ.Π. M.Sc. Computer Science Εκδόσεις: Μ. Γκιούρδας Ζωοδόχου Πηγής 70-74 - Τηλ.: 210 3630219 106 81 Αθήνα, 2013

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

Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκή περίοδος

Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκή περίοδος ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ KΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ http://www.cslab.ece.ntua.gr Λειτουργικά

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

Περιεχόμενα. Πρόλογος 15

Περιεχόμενα. Πρόλογος 15 Περιεχόμενα Πρόλογος 15 1 Δημιουργία προγραμμάτων Java 25 Εκμάθηση ορολογίας προγραμματισμού 26 Σύγκριση των εννοιών του διαδικαστικού και του αντικειμενοστραφούς 29 Διαδικαστικός προγραμματισμός 29 Αντικειμενοστραφής

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

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

1 Εισαγωγή στην Πληροφορική ΠΕΡΙΕΧΟΜΕΝΑ Χρήση Ηλεκτρονικού Υπολογιστή 1 Εισαγωγή στην Πληροφορική 1.1 Βασικές Έννοιες της Πληροφορικής Εισαγωγή 17 Τι είναι ο Ηλεκτρονικός Υπολογιστής 18 Υλικό Λογισµικό 19 Ιστορική Εξέλιξη των Η/Υ

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

Δομημένος Προγραμματισμός (ΤΛ1006)

Δομημένος Προγραμματισμός (ΤΛ1006) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής

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

ΚΕΦΑΛΑΙΟ 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. 03/01/09 Χαράλαμπος Τζόκας 1

ΚΕΦΑΛΑΙΟ 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. 03/01/09 Χαράλαμπος Τζόκας 1 ΚΕΦΑΛΑΙΟ 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ 03/01/09 Χαράλαμπος Τζόκας 1 Πρόγραμμα - Προγραμματισμός Πρόγραμμα: Σύνολο εντολών που πρέπει να δοθούν στον Υπολογιστή, ώστε να υλοποιηθεί ο αλγόριθμος της επίλυσης

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

Υπολογιστικά Συστήματα

Υπολογιστικά Συστήματα Υπολογιστικά Συστήματα Ενότητα 3: Βασικά στοιχεία της γλώσσας προγραμματισμού Visual Basic for Applications (VBA) Σαπρίκης Ευάγγελος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά) Άδειες Χρήσης Το παρόν εκπαιδευτικό

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

Οικονόμου Βαγγέλησ Διάλεξη Νο 2. Δομημένοσ Προγραμματιςμόσ - Διάλεξη 2

Οικονόμου Βαγγέλησ Διάλεξη Νο 2. Δομημένοσ Προγραμματιςμόσ - Διάλεξη 2 Οικονόμου Βαγγέλησ Διάλεξη Νο 2 Δομημένοσ Προγραμματιςμόσ - Διάλεξη 2 1 Η έννοια τησ μεταβλητήσ έδωςε λύςη ςτο πρόβλημα τησ αναφοράσ ςτην κύρια μνήμη του υπολογιςτή. Οι γλώςςεσ προγραμματιςμού υποςτηρίζουν

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

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

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ Διδάσκουσα Δρ Β Καβακλή Χειμερινό Εξάμηνο 2001 Στόχοι του Μαθήματος! Ανάπτυξη αναλυτικής

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

Άξονας ανάπτυξης του µαθήµατος 3. Γενικός σκοπός του µαθήµατος. Το µάθηµα της Πληροφορικής στο Γυµνάσιο

Άξονας ανάπτυξης του µαθήµατος 3. Γενικός σκοπός του µαθήµατος. Το µάθηµα της Πληροφορικής στο Γυµνάσιο Το µάθηµα της Πληροφορικής στο Γυµνάσιο Χρήση του ελεύθερου λογισµικού "Γλωσσοµάθεια" για την διδασκαλία εννοιών αλγοριθµικής - προγραµµατισµού στη Γ' Φουστέρης Νικόλαος Μηχανικός Πληροφορικής Τ.Ε. Καθηγητής

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

ιπλωµατική εργασία: Νικόλαος Ματάνας Επιβλέπων Καθηγήτρια: Μπούσιου έσποινα

ιπλωµατική εργασία: Νικόλαος Ματάνας Επιβλέπων Καθηγήτρια: Μπούσιου έσποινα ιπλωµατική εργασία: Νικόλαος Ματάνας Επιβλέπων Καθηγήτρια: Μπούσιου έσποινα ΤµήµαΕφαρµοσµένης Πληροφορικής Πανεπιστήµιο Μακεδονίας Θεσσαλονίκη Ιούνιος 2006 εισαγωγικού µαθήµατος προγραµµατισµού υπολογιστών.

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

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

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

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