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

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

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

Transcript

1

2

3 Περιεχόμενα Λίγα λόγια για αυτή την έκδοση Κεφάλαιο 1 Εισαγωγή O στόχος του βιβλίου και σε ποιους απευθύνεται Πώς να διαβάσετε αυτό το βιβλίο Εκπαίδευση από απόσταση Ιστορική αναδρομή Τα χαρακτηριστικά της C Η κληρονομιά από τη C C++, μια αντικειμενοστρεφής γλώσσα C++, μια μεταγλωττίσιμη γλώσσα Γιατί να μάθω C++; Βασικές έννοιες του προγραμματισμού Μεταβλητές Σταθερές Παραστάσεις Εντολές Αναγνωριστικά Φιλοσοφίες και τεχνικές προγραμματισμού Μη δομημένος προγραμματισμός Δομημένος διαδικαστικός προγραμματισμός Τμηματικός προγραμματισμός Αντικειμενοστρεφής προγραμματισμός Κλάσεις και αντικείμενα Ενθυλάκωση Αφαιρετικότητα Κληρονομικότητα Πολυμορφισμός Και όμως είναι αντικείμενα! Σχεδιασμός και ανάπτυξη προγραμμάτων Λογικό διάγραμμα Αντικειμενοστρεφής σχεδιασμός UML... 51

4 10 H γλώσσα C++ σε βάθος Κεφάλαιο 2 Μια πρώτη ματιά στη C Η δομή ενός προγράμματος της C Το πρώτο σας πρόγραμμα στη C Ας ξαναγράψουμε το πρώτο μας πρόγραμμα Προγράμματα με περισσότερες συναρτήσεις Σχόλια προγράμματος Τρόπος γραφής Δηλώσεις μεταβλητών Ανάθεση τιμής σε μεταβλητή Αρχικές τιμές μεταβλητών Μεταβλητές μόνο για ανάγνωση Παραστάσεις Παραστάσεις με μέλη διαφορετικού τύπου Λογικές παραστάσεις Αλφαριθμητικές παραστάσεις Είδη προτάσεων Παραδείγματα κώδικα με παραστάσεις Μετατροπή τύπου κατά την ανάθεση τιμής σε μεταβλητή Η C++ και οι αγκύλες της Σύνθετη πρόταση (compound statement) Ο προ-μεταγλωττιστής της C Η οδηγία #include Η οδηγία #define Κεφάλαιο 3 Προετοιμασία για αργότερα Η C++ και η μνήμη Ο τελεστής & Ο τελεστής sizeof Δύο αντικείμενα, μια συνάρτηση και μια εντολή Είσοδος/έξοδος Το αντικείμενο cout Το αντικείμενο cin Η συνάρτηση exit() Ολίγη if παρακαλώ Χώροι ονομάτων Χώροι ονομάτων (namespaces) της C Η καθιερωμένη βιβλιοθήκη της C

5 Περιεχόμενα 11 Κεφάλαιο 4 Οι βασικοί τύποι δεδομένων της C Ο τύπος δεδομένων int Σταθερές τύπου int Μεταβλητές τύπου int Ακέραιοι αριθμοί χωρίς πρόσημο (unsigned) Αριθμητικοί τελεστές Προτεραιότητα τελεστών Οι τύποι δεδομένων float και double Σταθερές τύπου float και double Μεταβλητές τύπου float και double Χρήση δεδομένων τύπου κινητής υποδιαστολής Η χρήση του αντικειμένου cout για μορφοποιημένη έξοδο Οι συναρτήσεις pow() και sqrt() Ο τύπος δεδομένων char Σταθερές τύπου char Μεταβλητές τύπου char Ο πίνακας ASCII Ο τύπος wchar_t Συμβολοσειρές (character strings) Οι συμβολοσειρές έχουν τιμή Μια πρώτη ματιά στη κλάση string Ο τύπος δεδομένων bool Σταθερές τύπου bool Μεταβλητές τύπου bool Σταθερές και αυτόματη μετατροπή τύπου Απόλυτος προσδιορισμός τύπου αριθμητικών σταθερών Αυτόματη μετατροπή τύπου Προσθήκες προτύπου C Αυτόματος τύπος δεδομένων Κεφάλαιο 5 Εντολές συνθήκης Η εντολή if με μια δεύτερη ματιά H απλή πρόταση if Η πρόταση if-else Η πρόταση if-else if Η εντολή switch-case Ο τελεστής συνθήκης?:

6 12 H γλώσσα C++ σε βάθος Κεφάλαιο 6 Δομές επανάληψης Ο βρόχος while O βρόχος do-while Ο βρόχος for Χορεύοντας με τη for! Απλά παραδείγματα Ένθετοι βρόχοι for Κλιμακωτή γραφή Ο τελεστής «κόμμα» (,) Η εντολή break Η εντολή continue Καταμέτρηση και άθροιση σε επαναλαμβανόμενες διαδικασίες Κεφάλαιο 7 Συναρτήσεις Oρισμός μιας συνάρτησης Συναρτήσεις χωρίς παραμέτρους Συναρτήσεις με παραμέτρους Συναρτήσεις που επιστρέφουν τιμή Συναρτήσεις που δεν επιστρέφουν τιμή: Ο τύπος void Η κλήση μιας συνάρτησης Παράμετροι συνάρτησης Ορίσματα και μεταβίβαση παραμέτρων Συναρτήσεις χωρίς παραμέτρους, με ρητή δήλωση Χρήση συναρτήσεων βιβλιοθήκης Πρωτότυπα συναρτήσεων Μετατροπή τύπου (type casting) Αυτόματη μετατροπή τύπου Υπερφόρτωση συναρτήσεων Συναρτήσεις με προκαθορισμένες τιμές παραμέτρων Υπερφόρτωση συναρτήσεων και ασάφεια Κεφάλαιο 8 Εμβέλεια μεταβλητών Τοπικές μεταβλητές (local variables) Δήλωση τοπικών μεταβλητών σε σύνθετη πρόταση Δήλωση τοπικής μεταβλητής σε βρόχο for Καθολικές μεταβλητές (global variables) Χρόνος ζωής καθολικών και τοπικών μεταβλητών Στατικές τοπικές μεταβλητές (static local variables)

7 Περιεχόμενα 13 Κεφάλαιο 9 Δείκτες Η C++ και οι δείκτες Μεταβλητές δείκτη (pointer variables) Δήλωση μιας μεταβλητής δείκτη Οι τελεστές & και * Αριθμητική δεικτών Δείκτες τύπου void Δείκτης NULL Δείκτες και συμβολοσειρές Δείκτες σε δείκτες Κεφάλαιο 10 Προχωρημένα θέματα συναρτήσεων Κλήση συνάρτησης με τιμή, δείκτη και αναφορά Κλήση συνάρτησης με δείκτη Κλήση συνάρτησης με αναφορά Συναρτήσεις που επιστρέφουν ως τιμή έναν δείκτη Συναρτήσεις που επιστρέφουν ως τιμή μια αναφορά Παραστάσεις αριστερής τιμής (lvalue) και δεξιάς τιμής (rvalue) Δείκτες σε συναρτήσεις Δήλωση δείκτη σε συνάρτηση Ανάθεση τιμής σε μεταβλητή δείκτη σε συνάρτηση Κλήση συνάρτησης με δείκτη σε συνάρτηση Έλεγχος των περιεχομένων ενός δείκτη σε συνάρτηση Δείκτες σε συναρτήσεις ως παράμετροι Δείκτες σε συναρτήσεις και αντικείμενα της C Εμβόλιμες συναρτήσεις (inline functions) Προσθήκες προτύπου C Η λέξη-κλειδί nullptr Κεφάλαιο 11 Πίνακες Πίνακες μίας διάστασης Χειρισμός πινάκων μίας διάστασης Πίνακες χαρακτήρων μίας διάστασης και συμβολοσειρές Αρχικές τιμές πίνακα μίας διάστασης Οι πίνακες χαρακτήρων και τα αντικείμενα cin και cout Πίνακες μίας διάστασης και δείκτες Μεταβίβαση πίνακα μίας διάστασης σε συνάρτηση Χειρισμός πινάκων μίας διάστασης μέσω συναρτήσεων

8 14 H γλώσσα C++ σε βάθος Συναρτήσεις και συμβολοσειρές Συναρτήσεις βιβλιοθήκης που εφαρμόζονται σε συμβολοσειρές Μεταβίβαση πινάκων χωρίς δυνατότητα τροποποίησης Αντικείμενα string και πίνακες Η συνάρτηση getline() Πίνακες από αντικείμενα string Πίνακες πολλών διαστάσεων Πίνακες δύο διαστάσεων Χειρισμός πινάκων δύο διαστάσεων Συμπλήρωση πίνακα δύο διαστάσεων με τυχαίους αριθμούς Άθροισμα στοιχείων πίνακα δύο διαστάσεων Εύρεση της μεγαλύτερης και της μικρότερης τιμής σε πίνακα δύο διαστάσεων Επεξεργασία πίνακα δύο διαστάσεων ανά γραμμή και ανά στήλη Αρχικές τιμές πινάκων δύο διαστάσεων Πίνακες δύο διαστάσεων και δείκτες Μεταβίβαση πινάκων δύο διαστάσεων σε συναρτήσεις Πίνακες με περισσότερες διαστάσεις Μεταβίβαση πινάκων πολλών διαστάσεων σε συναρτήσεις Μέγεθος πίνακα Πότε χρησιμοποιούμε πίνακες πολλών διαστάσεων Ειδικοί πίνακες Πίνακες δεικτών Δείκτες σε πίνακες Πίνακες δεικτών σε πίνακες Πίνακες δεικτών σε συναρτήσεις Κεφάλαιο 12 Τύποι δεδομένων οριζόμενοι από τον χρήστη Δομές Αναφορά στα μέλη μιας δομής Απόδοση αρχικών τιμών στα μέλη μιας δομής Πίνακες από δομές Μεταβίβαση δομής σε συνάρτηση Δείκτες σε δομές Σύνθετες δομές Πίνακες ως μέλη δομών Χρήση του τελεστή ανάθεσης τιμής με δομές του ίδιου τύπου Μέλη εύρους ενός ή περισσότερων bit (bit fields) Συναρτήσεις ως μέλη δομής Δομές και κλάσεις (classes)

9 Περιεχόμενα 15 Ενώσεις (unions) Απαριθμήσεις (Enumerations) Η χρήση της typedef Χρήση της typedef για πιο σύντομες και ευανάγνωστες δηλώσεις Κεφάλαιο 13 Κλάσεις και αντικείμενα Παίζοντας με αντικείμενα Τι είναι κλάση και τι αντικείμενο Ορισμός μιας κλάσης Ορισμός και χρήση αντικειμένων Δημόσια και ιδιωτικά μέλη κλάσης Μέθοδοι δόμησης και αποδόμησης Προκαθορισμένες μέθοδοι δόμησης και αποδόμησης Μέθοδοι δόμησης με παραμέτρους Υπερφόρτωση μεθόδων Υπερφόρτωση μεθόδων δόμησης Ανάθεση τιμών σε αντικείμενα Πίνακες από αντικείμενα Μεταβλητές μέλη με αρχικές τιμές Προκαθορισμένες τιμές στις παραμέτρους μεθόδων Κλάσεις και δομές Σκεφτείτε αντικειμενοστρεφώς Διαδικαστική αντιμετώπιση Αντικειμενοστρεφής αντιμετώπιση Απεικόνιση κλάσεων με τη UML Κεφάλαιο 14 Επιπρόσθετα θέματα κλάσεων και αντικειμένων Μεταβίβαση αντικειμένων σε συναρτήσεις Μεταβίβαση κατ' αξία Μεταβίβαση κατ' αναφορά Συναρτήσεις που επιστρέφουν αντικείμενα Φίλιες συναρτήσεις και κλάσεις Φίλιες κλάσεις Δείκτες σε αντικείμενα Ο δείκτης this Μέθοδοι δόμησης αντιγράφου Στατικά μέλη μιας κλάσης Στατικές μεταβλητές-μέλη Στατικές μέθοδοι κλάσης Στατικές μεταβλητές-μέλη μόνο για ανάγνωση (const)

10 16 H γλώσσα C++ σε βάθος Η κλάση string με μια δεύτερη ματιά Διαχείριση αντικειμένων της κλάσης string Σύνθετες κλάσεις Ένθετες κλάσεις Προκαταβολική δήλωση κλάσης Συσχέτιση κλάσεων Απεικόνιση συσχέτισης σύνθεσης με UML Λίστες αρχικοποίησης Πρόσθετα προτύπου C Άμορφες συμβολοσειρές Το προσδιοριστικό constexpr Κεφάλαιο 15 Υπερφόρτωση τελεστών Υπερφόρτωση τελεστών με χρήση μεθόδων της κλάσης Υπερφόρτωση διμελών τελεστών Υπερφόρτωση μονομελών τελεστών Υπερφόρτωση του τελεστή ανάθεσης = Υπερφόρτωση του τελεστή κλήσης συνάρτησης () Υπερφόρτωση του τελεστή πίνακα [] Υπερφόρτωση τελεστών με τη χρήση συναρτήσεων που δεν είναι μέλη κλάσης Υπερφόρτωση μεθόδων και συναρτήσεων υπερφόρτωσης τελεστών Κεφάλαιο 16 Κληρονομικότητα Δημιουργία παράγωγης κλάσης Προστατευμένα μέλη κλάσης Παράδειγμα κληρονομικότητας Δημόσια πρόσβαση σε βασική κλάση Ιδιωτική πρόσβαση σε βασική κλάση Προστατευμένη πρόσβαση σε βασική κλάση Αλλαγή προσδιοριστικού πρόσβασης για συγκεκριμένα μέλη Επίπεδα κληρονομικότητας Υποσκέλιση μεθόδων βασικής κλάσης (method override) Κληρονομικότητα και μέθοδοι δόμησης και αποδόμησης Λίστες αρχικοποίησης στην κληρονομικότητα Πού χρησιμεύει η κληρονομικότητα

11 Περιεχόμενα 17 Κεφάλαιο 17 Προλυμορφισμός και συσχέτιση κλάσεων Πολυμορφισμός Δείκτες σε παράγωγες κλάσεις Αριθμητική δεικτών σε βασικές κλάσεις Εικονικές μέθοδοι Γιατί χρειάζονται οι εικονικές μέθοδοι; Εικονικές και μη εικονικές μέθοδοι Γνήσιες εικονικές μέθοδοι (pure virtual methods) Αφηρημένες κλάσεις (abstract classes) Κληρονομικότητα πολλών επιπέδων και εικονικές μέθοδοι Αναπαράσταση εικονικών μεθόδων και αφηρημένων κλάσεων στη UML 584 Πολλαπλή κληρονομικότητα Εικονικές κλάσεις (virtual classes) Πολλαπλή κληρονομικότητα και μέθοδοι δόμησης Τι γίνεται με τις μεθόδους αποδόμησης; Συσχέτιση κλάσεων Συσχέτιση σύνθεσης Συσχέτιση συνάθροισης Συσχέτιση σύνδεσης Κλάσεις σύνδεσης Προσθήκες προτύπου C Τα προσδιοριστικά override και final Το προσδιοριστικό final Κεφάλαιο 18 Ρεύματα εισόδου και εξόδου της C Προκαθορισμένα αντικείμενα ρευμάτων Οι τελεστές εισαγωγής << και εξαγωγής >> Μνήμη προσωρινής αποθήκευσης Μορφοποιημένη είσοδος/έξοδος (formatted Ι/Ο) Σημαίες μορφοποίησης Χειριστές Μορφοποίηση με χρήση μεθόδων Προσαρμοσμένοι χειριστές Οι μέθοδοι getline() και ignore() Υπερφόρτωση τελεστών εισαγωγής και εξαγωγής Χειρισμός αρχείων Σειριακή και τυχαία προσπέλαση Άνοιγμα και κλείσιμο αρχείων Μορφοποιημένη είσοδος/έξοδος σε αρχεία κειμένου

12 18 H γλώσσα C++ σε βάθος Σφάλματα ρευμάτων Ανάγνωση και εγγραφή αντικειμένων κλάσης string Ανακεφαλαίωση Μη μορφοποιημένη είσοδος/έξοδος σε δυαδικά αρχεία Η μέθοδος put() Η μέθοδος get() Οι μέθοδοι write() και read() Οι μέθοδοι peek(), putback() και flush() Αρχεία και αντικείμενα Υπερφόρτωση των τελεστών << και >> για ρεύματα αρχείων Διαχείριση αρχείων από τις μεθόδους κλάσεων Εγγραφή και ανάγνωση αντικειμένων με χρήση των μεθόδων write() και read() Τυχαία προσπέλαση αρχείων Οι μέθοδοι seekg(), seekp(), tellg() και tellp() Η λογική της τυχαίας προσπέλασης Συμβολοσειρές ως ρεύματα εισόδου/εξόδου Παράμετροι γραμμής εντολών Κεφάλαιο 19 Αναδρομή, αναζήτηση και ταξινόμηση Αναδρομή Αναζήτηση και ταξινόμηση Σειριακή αναζήτηση Δυαδική αναζήτηση Ταξινόμηση φυσαλίδας Ταξινόμηση quick sort Ταξινόμηση πίνακα με αντικείμενα string Αντικειμενοστρεφής προσέγγιση Ταξινόμηση πίνακα αντικειμένων Κεφάλαιο 20 Δυναμική διαχείριση μνήμης Δυναμική κατανομή μνήμης Ο τελεστής new Ο τελεστής delete Αλλαγή στο μέγεθος ενός πίνακα Μέθοδοι δόμησης και αποδόμησης και δυναμική κατανομή μνήμης Εικονικές μέθοδοι αποδόμησης Μέθοδοι δόμησης αντιγράφου Ο παλιός μηχανισμός δυναμικής κατανομής μνήμης

13 Περιεχόμενα 19 Κεφάλαιο 21 Δυναμικές δομές δεδομένων Συνδεδεμένες λίστες Απλά συνδεδεμένη λίστα Κυκλικά συνδεδεμένη λίστα Διπλά συνδεδεμένη λίστα Προσθήκη νέου κόμβου σε λίστα Υλοποίηση συνδεδεμένης λίστας στη C Υλοποίηση της δομής στοίβας Υλοποίηση της δομής ουράς Συνοψίζοντας Δυαδικά δένδρα Δυαδικά δένδρα αναζήτησης Χειρισμός ενός δυαδικού δένδρου αναζήτησης Διάσχιση δυαδικού δέντρου αναζήτησης Διαγραφή κόμβου από δυαδικό δέντρο αναζήτησης Υλοποίηση της δομής δυαδικού δένδρου αναζήτησης Κεφάλαιο 22 Πρότυπα, εξαιρέσεις, και χώροι ονομάτων Πρότυπα συναρτήσεων και κλάσεων Πρότυπα συναρτήσεων Ρητή υπερφόρτωση προτύπου συνάρτησης Υπερφόρτωση πρότυπου συνάρτησης Πρότυπα συναρτήσεων με περισσότερες παραμέτρους Πρότυπα κλάσεων Δημιουργία προτύπου κλάσης στοίβας Πρότυπα κλάσεων με περισσότερες παραμέτρους Άτυπες παράμετροι στον ορισμό πρότυπων κλάσεων Εξαιρέσεις Πώς αντιμετωπίζονταν οι εξαιρέσεις μέχρι τώρα Η φιλοσοφία του χειρισμού εξαιρέσεων Ο χειρισμός εξαιρέσεων της C Εξαιρέσεις που συμβαίνουν στα... βαθιά Κλάσεις εξαιρέσεων Αντικείμενα εξαίρεσης που μεταφέρουν πληροφορίες Εξαιρέσεις με παράγωγες κλάσεις Ενσωματωμένες κλάσεις εξαιρέσεων Επανακατάθεση εξαίρεσης

14 20 H γλώσσα C++ σε βάθος Χώροι ονομάτων Προγράμματα με περισσότερα αρχεία κεφαλίδας Η χρησιμότητα των χώρων ονομάτων Ο χώρος ονομάτων std Ανώνυμοι χώροι ονομάτων Κεφάλαιο 23 Ο μεταγλωτιστής GCC Προγράμματα με πολλά πηγαία αρχεία Μεταγλώττιση και σύνδεση μεμονωμένων αρχείων Μεταγλώττιση και σύνδεση ξεχωριστών αρχείων Δημιουργία δικών μας βιβλιοθηκών Ο προμεταγλωττιστής της C Οι οδηγίες του προμεταγλωττιστή Η οδηγία #include Η οδηγία #define Χρήση της #define για ορισμό μακροεντολών Η οδηγία #undef Οι οδηγίες #if, #else, #elif και #endif Οι οδηγίες #ifdef και #ifndef Η οδηγία #error Αποσφαλμάτωση Η μακροεντολή assert() Κεφάλαιο 24 Μια ματιά στη καθιερωμένη βιβλιοθήκη προτύπων Τι είναι η καθιερωμένη βιβλιοθήκη προτύπων STL; Αποδέκτες, αλγόριθμοι και επαναλήπτες Αποδέκτες Ακολουθιακοί αποδέκτες Συνειρμικοί αποδέκτες Προσαρμογείς αποδεκτών Επαναλήπτες Εμπρόσθιοι επαναλήπτες Επαναλήπτες διπλής κατεύθυνσης Επαναλήπτες τυχαίας προσπέλασης Επαναλήπτες εξόδου Επαναλήπτες εισόδου

15 Περιεχόμενα 21 Αλγόριθμοι Ο αλγόριθμος find() O αλγόριθμος sort() O αλγόριθμος count() Ο αλγόριθμος copy() Αλγόριθμοι και αντικείμενα συναρτήσεων Ο αλγόριθμος count_if Ο αλγόριθμος for_each() Συνδυάζοντας όλα τα προηγούμενα Διανύσματα Ορισμός διανύσματος Χρήση μεθόδων στη διαχείριση διανυσμάτων Πρόσβαση στα στοιχεία ενός διανύσματος Μέγεθος και χωρητικότητα διανύσματος Χρήση επαναληπτών με αποδέκτες της κλάσης vector Εφαρμογή αλγορίθμων σε διανύσματα Διανύσματα με αντικείμενα προσαρμοσμένων κλάσεων Λίστες Μέθοδοι της κλάσης list Χρήση επαναληπτών και αλγορίθμων με αποδέκτες λίστας Αντιστοιχίες Αντιστοιχίες και επαναλήπτες Μέθοδοι και αλγόριθμοι σε αντιστοιχίες Η χρήση του υπερφορτωμένου τελεστή [ ] Χρήση της μεθόδου insert() Αντιστοιχίες με αντικείμενα προσαρμοσμένων κλάσεων Συμβατότητα αλγορίθμων, επαναληπτών και αποδεκτών Για κάτι περισσότερο Πρόσθετα προτύπου C Οι συναρτήσεις begin() και end() Βρόχος for βασισμένος σε εύρος Παράρτημα Α Επιλεγμένες συναρτήσεις βιβλιοθήκης της C Αρχείο κεφαλίδας <cctype> Αρχείο κεφαλίδας <cstdlib> Αρχείο κεφαλίδας <cstring> Αρχείο κεφαλίδας <cmath>

16 22 H γλώσσα C++ σε βάθος Παράρτημα Β Το ολοκληρωμένο περιβάλλον του Code::Blocks Εγκατάσταση του Code::Blocks Οι βασικές λειτουργίες του Code::Blocks Παραμετροποίηση του περιβάλλοντος για χρήση ελληνικών χαρακτήρων 947 Παραμετροποίηση του περιβάλλοντος για χρήση του πρότυπου C Δημιουργία νέου πηγαίου αρχείου ή έργου Σύνταξη του κώδικα Αποθήκευση του πηγαίου αρχείου Μεταγλώττιση και εκτέλεση του πηγαίου αρχείου Μηνύματα μεταγλωττιστή Αντιστοίχιση ελληνικών και αγγλικών όρων Βιβλιογραφία Ευρετήριο

17 Λίγα λόγια για αυτή την έκδοση... Η συγγραφή της πρώτης έκδοσης του βιβλίου ξεκίνησε το 2006, αμέσως μετά από την έκδοση του πρώτου μου βιβλίου Η γλώσσα C σε βάθος που αφορούσε τον διαδικαστικό προγραμματισμό και τη γλώσσα C. Το κίνητρο για τη συγγραφή αυτού του βιβλίου ήταν το ίδιο με αυτό της συγγραφής του πρώτου μου βιβλίου: διδάσκοντας τη γλώσσα C++ δεν μπορούσα να εντοπίσω βιβλία που να δίνουν περισσότερο βάρος στο εκπαιδευτικό έργο αντί να είναι βιβλία αναφοράς και «εγχειρίδια» της γλώσσας. Το 2009 άρχισα να διδάσκω αντικειμενοστρεφή προγραμματισμό στο τμήμα Πολιτισμικής Τεχνολογίας και Επικοινωνίας του Πανεπιστημίου Αιγαίου. Η διαδικασία της διδασκαλίας σε τόσους πολλούς φοιτητές μου έδωσε την ευκαιρία να εντοπίσω τα σημεία που τους δυσκόλευαν περισσότερο και να δοκιμάσω διάφορες εκπαιδευτικές προσεγγίσεις. Η προσπάθεια αυτή αποτυπώνεται στην παρούσα έκδοση του βιβλίου, όπου έχουν γίνει σημαντικές προσθήκες και αλλαγές στα υπάρχοντα κεφάλαια ενώ προστέθηκε α- κόμη ένα. Η δεύτερη αυτή έκδοση δίνει ακόμα μεγαλύτερο βάρος στο εκπαιδευτικό ύφος του βιβλίου και πλαισιώνεται από περισσότερα παραδείγματα και ασκήσεις, προσανατολισμένα στην εμβάθυνση των εννοιών και των ιδιαίτερων χαρακτηριστικών της γλώσσας. Έχει καταβληθεί ιδιαίτερη προσπάθεια ώστε ο αναγνώστης να αποκτήσει «αντικειμενοστρεφή» τρόπο σκέψης, να μάθει να σχεδιάζει τα προγράμματα του με αυτόν τον τρόπο και όχι απλά να χρησιμοποιεί τα αντικειμενοστρεφή χαρακτηριστικά της γλώσσας. Σε αυτή την έκδοση έχουν ενσωματωθεί κάποια από τα στοιχεία που προτείνονται στο τελευταίο πρότυπο της γλώσσας (C++11). Το πρότυπο αυτό εισάγει πολλά νέα στοιχεία και δυνατότητες, τα περισσότερα από τα οποία είναι ιδιαίτερα εξειδικευμένα. Όμως, η ενσωμάτωση όλων των νέων στοιχείων θα ξέφευγε από τον καθαρά εκπαιδευτικό προσανατολισμό του βιβλίου. Η έκδοση αυτή άρχισε να γράφεται τον Σεπτέμβριο του 2012 και, με δεδομένο ότι θα αποτελούσε μια βελτίωση της πρώτης έκδοσης, νόμιζα ότι θα ήταν μια εύκολη και γρήγορη υπόθεση. Όμως ο πήχης ήδη είχε τεθεί πολύ ψηλά και θεώρησα ότι αρκετά πράγματα έπρεπε να αλλάξουν ριζικά. Έτσι, ενώ υπολόγιζα ότι θα ασχοληθώ με τη νέα έκδοση για λίγους μήνες, συμπλήρωσα χωρίς να το καταλάβω δύο ολόκληρα χρόνια καθημερινής δουλειάς. Νίκος Μ. Χατζηγιαννάκης

18

19 Κεφάλαιο Εισαγωγή

20 26 H γλώσσα C++ σε βάθος Εισαγωγή Ξεκίνησα τη "θητεία" μου ως προγραμματιστής όταν ακόμα τα προγράμματα γράφονταν σε διατρητικές μηχανές και όχι με το πληκτρολόγιο. Σε όλα αυτά τα χρόνια ασχολήθηκα με διάφορες γλώσσες προγραμματισμού, ξεκινώντας από τις γλώσσες της εποχής εκείνης, όπως η θρυλική FORTRAN, η ακαδημαϊκή PASCAL, η επαναστατική ALGOL και η συναρπαστική γλώσσα μηχανής ASSEMBLY. Αργότερα, ως μεταπτυχιακός φοιτητής πια, χρησιμοποίησα τη BCPL και την κλασική C για τον προγραμματισμό συστημάτων, ενώ αργότερα ασχολήθηκα με γλώσσες οπτικού προγραμματισμού, όπως η VISUAL BASIC, αλλά και με γλώσσες 4ης γενιάς, όπως η PL-SQL. Δεν πέρασε πολύς καιρός και βρέθηκα αντιμέτωπος με μια νέα πρόκληση: μια γλώσσα αντικειμενοστρεφούς προγραμματισμού η οποία δεν ήταν άλλη από τη C++. Δεν άργησα να καταλάβω ότι θα έπρεπε να ξεχάσω όλα όσα ήξερα, να μπω σε μια διαφορετική λογική και να αλλάξω τη φιλοσοφία του σχεδιασμού και της ανάπτυξης των προγραμμάτων μου. Η πρόκληση ήταν μεγάλη, η προσπάθεια συνεχής, αλλά το αποτέλεσμα πάντα το ίδιο: επέστρεφα πάντα στις «κλασικές» γλώσσες προγραμματισμού αρνούμενος να υιοθετήσω τη νέα αυτή λογική. Τελικά βρήκα τη λύση στη φράση που γνωρίζει πολύ καλά ο κάθε εκπαιδευτικός: "Αν θες να πιστέψεις σε κάτι και να το μάθεις σε βάθος, θα πρέπει πρώτα να το διδάξεις". Έτσι λοιπόν άρχισα να διδάσκω τη C++ και τις αρχές του αντικειμενοστρεφούς προγραμματισμού, χωρίς μέχρι τότε να τις έχω υιοθετήσει ούτε εγώ ο ίδιος. Πολύ γρήγορα συνειδητοποίησα ότι ο αντικειμενοστρεφής προγραμματισμός είναι η πιο συναρπαστική, αλλά και μυστηριώδης, καινοτομία στην ανάπτυξη λογισμικού στην ι- στορία της επιστήμης των υπολογιστών. Παρόλο που διατηρεί αρκετά από τα χαρακτηριστικά των "παραδοσιακών" γλωσσών προγραμματισμού, εισάγει πρωτόγνωρες έννοιες και τεχνικές, οι οποίες όμως τις περισσότερες φορές δύσκολα γίνονται κατανοητές. Ο αρχικός δισταγμός μου και η δυσκολία που αντιμετώπισα στην πρώτη μου επαφή με μια αντικειμενοστρεφή γλώσσα ήταν το βασικό μου κίνητρο για την συγγραφή αυτού του βιβλίου. Το βιβλίο αυτό δεν προϋποθέτει γνώσεις προγραμματισμού. Απευθύνεται τόσο στον αρχάριο σπουδαστή όσο και στον έμπειρο προγραμματιστή που θέλει να γνωρίσει τις αρχές και τη φιλοσοφία του αντικειμενοστρεφούς προγραμματισμού, μέσα από μια ευέλικτη και χωρίς όρια γλώσσα όπως η C++. Αν όμως ο αναγνώστης γνωρίζει μια άλλη γλώσσα προγραμματισμού, και ιδιαίτερα τη C, θα μπορέσει να κατανοήσει γρηγορότερα τις βασικές έννοιες ώστε να επικεντρωθεί στα αντικειμενοστρεφή χαρακτηριστικά της γλώσσας.

21 Κεφάλαιο 1: Εισαγωγή 27 Μεγάλο βάρος έχει δοθεί στη διδακτική σειρά αυτού του βιβλίου ώστε η ανάγνωση και η κατανόηση ενός κεφαλαίου να προϋποθέτει μόνο τις γνώσεις που αποκτήθηκαν στα προηγούμενα κεφάλαια. O στόχος του βιβλίου και σε ποιους απευθύνεται Μέσα από αυτό το βιβλίο προσπαθώ να δώσω στον ανυποψίαστο αναγνώστη αυτό που θα ήθελα να είχα εγώ όταν ήλθα για πρώτη φορά σε επαφή με μια γλώσσα αντικειμενοστρεφούς προγραμματισμού: Ένα βιβλίο το οποίο, χωρίς να πλατειάζει με τις αναμφισβήτητα αμέτρητες δυνατότητες μιας γλώσσας, να εισάγει με απλό και κατανοητό τρόπο τον αναγνώστη στις βασικές αρχές της φιλοσοφίας και της χρήσης του αντικειμενοστρεφούς προγραμματισμού. Το παρόν βιβλίο δεν αποτελεί ένα ακόμη εγχειρίδιο της γλώσσας, αλλά ένα εργαλείο εκπαίδευσης στις αρχές και τη φιλοσοφία του αντικειμενοστρεφούς προγραμματισμού μέσα από την πιο δημοφιλή σήμερα γλώσσα, τη C++. Το βιβλίο απευθύνεται κυρίως σε όσους διδάσκονται τη C++ ως πρώτη ή ως μεταγενέστερη γλώσσα προγραμματισμού σε εκπαιδευτικά ιδρύματα κάθε βαθμίδας, αλλά και σε όσους θα ήθελαν να μάθουν και να κατανοήσουν μόνοι τους τη γλώσσα C++ και τη φιλοσοφία του αντικειμενοστρεφούς προγραμματισμού. Πώς να διαβάσετε αυτό το βιβλίο Αν γνωρίζετε οποιαδήποτε άλλη γλώσσα προγραμματισμού, μπορείτε να ρίξετε μια γρήγορη ματιά σε αυτό το κεφάλαιο και μετά να προχωρήσετε κατευθείαν στο επόμενο. Η C++, όπως υποδηλώνει και το όνομά της αλλά και όπως θα γίνει αντιληπτό και αργότερα, έχει στενή συγγένεια με τη γλώσσα C. Η C++ έχει δανειστεί πολλά από τα χαρακτηριστικά της C, οπότε ένας αναγνώστης που έχει έστω και μικρή γνώση της γλώσσας C ξεκινά με σαφές πλεονέκτημα. Το Κεφάλαιο 2 είναι μια μικρή "περιοδεία" στη γλώσσα. Γίνεται μια πρώτη γνωριμία, ώστε να αποκτήσετε μια σφαιρική εικόνα για τη δομή και τα χαρακτηριστικά της για να μπορέσετε να δημιουργήσετε τα πρώτα σας απλά προγράμματα. Τα Κεφάλαια 3 έως 12 αναλύουν τα μη αντικειμενοστρεφή χαρακτηριστικά της γλώσσας, δίνοντας έμφαση στην παρουσίαση των βασικών, αλλά και των περισσότερο πολύπλοκων, εννοιών, με απλό, εποπτικό και κατανοητό τρόπο. Αν έχετε λίγες γνώσεις της γλώσσας C, μπορείτε να κάνετε μια γρήγορη ανάγνωση των Κεφαλαίων 3-6 και να δώσετε βάρος στα επόμενα κεφάλαια. Αν είστε έμπειρος χρήστης της γλώσσας C, μπορείτε να κάνετε μια γρήγορη ανάγνωση των Κεφαλαίων 3-11 ώστε

22 28 H γλώσσα C++ σε βάθος να γνωρίσετε τα λιγοστά αντικειμενοστρεφή στοιχεία της γλώσσας C++ που χρησιμοποιούνται σε αυτά τα κεφάλαια. Αρκετές ενότητες σε αυτά τα πρώτα κεφάλαια του βιβλίου είναι παρόμοιες με τις αντίστοιχες ενότητες του βιβλίου μου Η γλώσσα C σε βάθος. Αυτό είναι μάλλον αναμενόμενο αφού αναφέρονται σε κοινές δυνατότητες των δύο γλωσσών. Στόχος του παρόντος βιβλίου είναι να ρίξει το βάρος στα αντικειμενοστρεφή χαρακτηριστικά της C++ και στη φιλοσοφία του αντικειμενοστρεφούς προγραμματισμού. Έτσι, σε αρκετά σημεία του βιβλίου όπου απαιτείται περισσότερη εμβάθυνση σε έννοιες και τεχνικές διαδικαστικού προγραμματισμού, παρέχονται παραπομπές προς το βιβλίο Η γλώσσα C σε βάθος. Τα επόμενα κεφάλαια, από το 13 και μετά, είναι μια βαθιά "βουτιά" στα αντικειμενοστρεφή χαρακτηριστικά της γλώσσας, σε τεχνικές προγραμματισμού και σε δομές δεδομένων. Το Παράρτημα Α περιέχει μια συνοπτική αναφορά στις πιο συχνά χρησιμοποιούμενες συναρτήσεις της C++. Στο Παράρτημα Β θα βρείτε λεπτομέρειες για το περιβάλλον α- νάπτυξης Code::Blocks 1. Το Code::Blocks είναι ένα ολοκληρωμένο περιβάλλον ανάπτυξης (Integrated Development Environment IDE) για τις γλώσσες C και C++, το οποίο διατίθεται κάτω από τη γενική άδεια χρήσης GNU 2 GPL v3.0 το οποίο σημαίνει ότι διατίθεται δωρεάν στον οποιονδήποτε. Όλα τα προγράμματα που υπάρχουν σε αυτό το βιβλίο έχουν δοκιμαστεί στο περιβάλλον του Code::Blocks. Στο συνοδευτικό CD θα βρείτε το πρόγραμμα εγκατάστασης για το ολοκληρωμένο περιβάλλον του Code::Blocks, τον κώδικα των περισσοτέρων προγραμμάτων που βρίσκονται σε αυτό το βιβλίο, καθώς και τις απαντήσεις όλων των ασκήσεων. επίσης, αποκλειστικά για το βιβλίο αυτό, έχει δημιουργηθεί ένας δικτυακός τόπος στη διεύθυνση με πλήθος αναφορών για τον αντικειμενοστρεφή προγραμματισμό και τη γλώσσα C++. Σας συνιστώ να εγκαταστήσετε άμεσα το περιβάλλον του Code::Blocks ώστε να μπορείτε να δοκιμάζετε τα παραδείγματα του βιβλίου, αλλά και τα δικά σας προγράμματα. Το σύμβολο δίπλα από τον τίτλο μιας ενότητας σημαίνει ότι η ενότητα αυτή περιγράφει εξειδικευμένα θέματα και μπορεί να παραλειφθεί αρχικά αν δεν επιθυμούμε ιδιαίτερη εμβάθυνση

23 Κεφάλαιο 1: Εισαγωγή 29 Στο μαύρο πλαίσιο που υπάρχει δίπλα από τα περισσότερα παραδείγματα αυτού του βιβλίου, αναφέρεται το όνομα του αρχείου στο οποίο arxeio.cpp υπάρχει ο κώδικας του παραδείγματος. Αν έχετε εγκαταστήσει το Code::Blocks, ένα διπλό κλικ επάνω στο αρχείο του παραδείγματος είναι αρκετό για να ανοίξει το συγκεκριμένο αρχείο μέσα στο ολοκληρωμένο περιβάλλον του Code::Blocks. Στο τέλος μερικών κεφαλαίων υπάρχουν ιδιαίτερες αναφορές σε προσθήκες που έχουν γίνει στο πρότυπο C++11 και αφορούν το συγκεκριμένο κεφάλαιο. Επίσης, στο τέλος του βιβλίου υπάρχει μια λίστα αντιστοίχισης των ελληνικών όρων που χρησιμοποιούνται με τους αγγλικούς. Εκπαίδευση από απόσταση Ακόμα και το πιο καλό βιβλίο δεν αντικαθιστά την δια ζώσης εκπαίδευση. Θα ήταν ευχής έργο κάθε αναγνώστης του βιβλίου να έχει τη δυνατότητα να παρακολουθήσει μαθήματα προγραμματισμού, με την ίδια εκπαιδευτική σειρά και την ίδια φιλοσοφία αυτού του βιβλίου. Αυτό είναι μάλλον ανέφικτο για τους περισσότερους από εσάς, εκτός αν αποφασίσετε να μας επισκεφτείτε στη Μυτιλήνη! Εδώ όμως έρχονται η τεχνολογία, το Internet και οι πλατφόρμες ηλεκτρονικής μάθησης για να γεφυρώσουν αυτή την απόσταση. Έτσι, εδώ και αρκετό καιρό άρχιζε να χτίζεται σιγά-σιγά ένα σύστημα εκπαίδευσης από απόσταση βασισμένο στη πλατφόρμα ηλεκτρονικής μάθησης Moodle. Η πλατφόρμα αυτή είναι ανοιχτού κώδικα, έχει το μεγαλύτερο μερίδιο χρήσης παγκοσμίως και χρησιμοποιείται από τα περισσότερα εκπαιδευτικά ι- δρύματα. Το εκπαιδευτικό υλικό που αναπτύσσεται για την πλατφόρμα περιλαμβάνει μαθήματα με βίντεο, διαφάνειες μαθημάτων, εργαστηριακές ασκήσεις και ερωτήσεις αξιολόγησης. Φιλοδοξεί να αποτελέσει ένα ολοκληρωμένο σύστημα εκπαίδευσης από απόσταση, ακολουθώντας τη διδακτική σειρά του βιβλίου. Τα πλεονεκτήματα της εξ' αποστάσεως εκπαίδευσης είναι προφανή: Δεν χρειάζεται η φυσική παρουσία του εκπαιδευτή. Ο εκπαιδευόμενος μπορεί να παρακολουθεί τα μαθήματα όποτε θέλει και όσες φορές θέλει. Ο εκπαιδευόμενος μπορεί να ελέγχει τις γνώσεις του μέσα από ερωτήσεις αυτοαξιολόγησης. Πολλά πανεπιστήμια διεθνώς, αλλά και στην Ελλάδα, χρησιμοποιούν πλατφόρμες ηλεκτρονικής μάθησης, είτε ως υποστηρικτικό είτε ως αποκλειστικό σύστημα διδασκαλίας. Πληροφορίες για τη πλατφόρμα ηλεκτρονικής μάθησης θα βρείτε στην ιστοσελίδα του βιβλίου στη διεύθυνση

24 30 H γλώσσα C++ σε βάθος Ιστορική αναδρομή Η C++ αναπτύχθηκε με βάση τη C από τον Bjarne Stroustrup στα εργαστήρια Bell, την περίοδο Πριν το 1983, ο Bjarne Stroustrup δανείστηκε τα αντικειμενοστρεφή χαρακτηριστικά της Simula (η οποία θεωρείται η πρώτη αντικειμενοστρεφής γλώσσα προγραμματισμού) και, συνδυάζοντάς τα με την αποδοτικότητα και την ευελιξία της C, δημιούργησε μια έκδοση της C που ονομάστηκε "C with Classes" (C με κλάσεις). Αυτή αποτέλεσε την πρώτη "πειραματική" έκδοση της C++, η οποία πήρε την τελική της ονομασία το Αρχικά, η C++ σχεδιάστηκε για το περιβάλλον του λειτουργικού συστήματος UNIX. Με τη C++ οι προγραμματιστές μπορούσαν να βελτιώσουν την ποιότητα των προγραμμάτων τους και ο κώδικας που παρήγαγαν μπορούσε να επαναχρησιμοποιηθεί πιο εύκολα. Tη δεκαετία του 90 η C++ αποτέλεσε την κυρίαρχη γλώσσα προγραμματισμού σε απαιτητικές εφαρμογές και σε εφαρμογές μεγάλης κλίμακας. Οι συνεχείς βελτιώσεις και προσθήκες στη γλώσσα συνεχίστηκαν μέχρι το 1997, οπότε οριστικοποιήθηκε το πρότυπο της γλώσσας και πιστοποιήθηκε από διεθνείς οργανισμούς (ANSI, ISO κ.λπ.). Σήμερα οι διαφορετικές εκδόσεις της γλώσσας καλύπτουν όλα τα λειτουργικά συστήματα και αποτελούν αναμφίβολα την επιλογή των περισσότερων επαγγελματιών προγραμματιστών για την ανάπτυξη πολύπλοκων εφαρμογών. Τα χαρακτηριστικά της C++ Παρά το γεγονός ότι η C++ θεωρείται μια γλώσσα υψηλού επιπέδου (high-level), έχει αρκετά χαρακτηριστικά που συναντώνται μόνο σε γλώσσες χαμηλού επιπέδου και στη γλώσσα μηχανής. Τα χαρακτηριστικά αυτά της προσδίδουν εκπληκτική ευελιξία και τη δυνατότητα προγραμματισμού σε "χαμηλό επίπεδο". Ο βασικός κορμός της C++, όπως και της προγόνου της C, είναι λιτός. Η γλώσσα διαθέτει λίγες εντολές και μόνο τους βασικούς τύπους δεδομένων. Αξιοσημείωτο είναι ότι η C++ δεν έχει ενσωματωμένες εντολές εισόδου και εξόδου, ούτε και αρκετές εντολές που συναντώνται σε άλλες γλώσσες προγραμματισμού. Για τον λόγο αυτό, η C++ περιλαμβάνει μια καθιερωμένη βιβλιοθήκη (standard library) με κάθε είδους συναρτήσεις και αντικείμενα για είσοδο-έξοδο, χειρισμό χαρακτήρων, χειρισμό αρχείων κ.λπ. Η "προίκα" αυτή την κάνει να θεωρείται μια από τις πιο πλούσιες γλώσσες με μεγάλη ευελιξία και δυνατότητες επέκτασης. Η κληρονομιά από τη C Η C++ ξεκίνησε ως μια επέκταση της C, προσθέτοντας στην πλέον δημοφιλή αυτή γλώσσα αντικειμενοστρεφείς δυνατότητες. Όμως η βάση της γλώσσας και οι «παραδοσιακές» δομές της παραμένουν ίδιες με αυτές της C.

25 Κεφάλαιο 1: Εισαγωγή 31 Μπορούμε λοιπόν να ισχυριστούμε ότι η C αποτελεί ένα υποσύνολο της C++. Ένα πρόγραμμα γραμμένο σε C, με ελάχιστες ή καθόλου αλλαγές, θα μεταγλωττιστεί χωρίς πρόβλημα από οποιονδήποτε μεταγλωττιστή της C++. Η C++, όπως και η C, είναι μια ισχυρά δομημένη γλώσσα που επιτρέπει την αρθρωτή (τμηματική) οργάνωση (modularity) του προγράμματος, με τρόπο τέτοιο ώστε κάθε τμήμα να μπορεί να «κρύβει» τον κώδικα και τις πληροφορίες που περιέχει από το υπόλοιπο πρόγραμμα. Η C++ ενθαρρύνει τη χρήση ξεχωριστών συναρτήσεων (υποπρογραμμάτων) για κάθε συγκεκριμένη λειτουργία του προγράμματος. Κάθε συνάρτηση (function) μπορεί να έχει τα δικά της τοπικά δεδομένα, τα οποία είναι κρυμμένα από το υπόλοιπο πρόγραμμα. Τόσο στη C όσο και στη C++, η έλλειψη περιορισμών και το γεγονός ότι υπάρχει μικρός βαθμός ελέγχου λαθών, αναγκάζουν τον προγραμματιστή να είναι πολύ προσεκτικός και να ελέγχει, μέσα από τον κώδικα του προγράμματος, πράγματα που ελέγχονται αυτόματα από άλλες γλώσσες προγραμματισμού. Όμως, σε αυτή την «αδυναμία» της γλώσσας οφείλεται η ευελιξία, η ελευθερία, και η απόδοση που τη χαρακτηρίζουν. Σχήμα 1.1 Η σχέση των γλωσσών C και C++

26 32 H γλώσσα C++ σε βάθος C++, μια αντικειμενοστρεφής γλώσσα Η C++ μαζί με την Java και τη C# αποτελούν τις πλέον δημοφιλείς και χαρακτηριστικές γλώσσες αντικειμενοστρεφούς προγραμματισμού (Object Oriented Programming OOP). Οι αντικειμενοστρεφείς γλώσσες προγραμματισμού δίνουν περισσότερη έμφαση στα δεδομένα παρά στον κώδικα. Το πρόγραμμα αναπτύσσεται με βάση αντικείμενα που σχετίζονται με ένα πρόβλημα, και διαδικασίες (τον κώδικα) που επενεργούν σε αυτά τα αντικείμενα. Για παράδειγμα, αν θέλαμε να αναπτύξουμε ένα πρόγραμμα διαχείρισης ενοικιαζόμενων αυτοκινήτων, κάθε αυτοκίνητο προς ενοικίαση θα αποτελούσε ένα αντικείμενο. Η ενοικίαση ενός αυτοκινήτου θα γινόταν με την εφαρμογή μιας διαδικασίας (μεθόδου) σε αυτό το αντικείμενο. Αντίστοιχα, η επιστροφή ενός αυτοκινήτου από έναν πελάτη θα γινόταν με την εφαρμογή μιας άλλης μεθόδου κ.ο.κ. Η C++ υποστηρίζει πλήρως τα βασικά χαρακτηριστικά του αντικειμενοστρεφούς προγραμματισμού: την αφαιρετικότητα (abstraction), την ενθυλάκωση (encapsulation), τον πολυμορφισμό (polymorphism) και την κληρονομικότητα (inheritance). Οι έννοιες αυτές θα περιγραφούν συνοπτικά αργότερα σε αυτό το κεφάλαιο, και θα αναλυθούν διεξοδικά σε επόμενα κεφάλαια του βιβλίου. C++, μια μεταγλωττίσιμη γλώσσα Όλες οι γλώσσες προγραμματισμού (εκτός από τη γλώσσα μηχανής) μεταφράζουν το πηγαίο πρόγραμμα σε γλώσσα μηχανής είτε με έναν ερμηνευτή (interpreter) είτε με έναν μεταγλωττιστή (compiler). Για παράδειγμα, η BASIC είναι μια ερμηνευόμενη γλώσσα ενώ η C++ είναι μια μεταγλωττίσιμη γλώσσα. Στο σχήμα που ακολουθεί βλέπετε με απλοποιημένο τρόπο τη διαδικασία μεταγλωττισμού μέσω ενός μεταγλωττιστή (compiler). Το αρχείο που περιέχει τον πηγαίο κώδικα του προγράμματος (source code) μπορεί να δημιουργηθεί με οποιονδήποτε επεξεργαστή κειμένου ή μέσα από ένα ολοκληρωμένο περιβάλλον ανάπτυξης (IDE), εφόσον διατίθεται για τη συγκεκριμένη έκδοση της γλώσσας. Κατά τον χρόνο μεταγλώττισης (compile time), ο μεταγλωττιστής ε- ντοπίζει τυχόν συντακτικά λάθη που υπάρχουν στον πηγαίο κώδικα. Αν ο μεταγλωττιστής δεν εντοπίσει κανένα λάθος, θα δημιουργήσει ένα αρχείο που περιέχει τον εκτελέσιμο κώδικα (executable code), δηλαδή ένα πρόγραμμα σε γλώσσα μηχανής που μπορεί να εκτελεστεί απευθείας από τον Η/Υ.

27 Κεφάλαιο 1: Εισαγωγή 33 Στην πραγματικότητα, η διαδικασία της μεταγλώττισης είναι λίγο διαφορετική και αρκετά πιο πολύπλοκη. Μας επιτρέπει να χρησιμοποιούμε έτοιμο κώδικα που βρίσκεται σε βιβλιοθήκες προγραμμάτων τις οποίες αγοράζουμε, αλλά και να μεταγλωττίζουμε το πρόγραμμά μας τμηματικά. Στη διαδικασία αυτή θα αναφερθούμε αναλυτικά σε επόμενο κεφάλαιο. Η C++ είναι μια φορητή (portable) γλώσσα. Ο κώδικας που γράφεται σε C++ μπορεί να μεταγλωττιστεί σε σχεδόν οποιονδήποτε τύπο Η/Υ και λειτουργικό σύστημα, πρακτικά χωρίς καμία αλλαγή. Υπάρχουν μεταγλωττιστές της γλώσσας για όλα σχεδόν τα λειτουργικά συστήματα και τους τύπους επεξεργαστών. Αυτό το χαρακτηριστικό της γλώσσας, σε συνδυασμό με τις τεράστιες δυνατότητες που παρέχει, την ευελιξία της και την απόδοσή της, την καθιστούν σήμερα την πρώτη επιλογή των προγραμματιστών για την κατασκευή μεγάλων και απαιτητικών εφαρμογών. Αν δεν το έχετε κάνει ήδη, θα πρέπει τώρα να εγκαταστήσετε το ολοκληρωμένο περιβάλλον του Code::Blocks (Σχήμα 1.2) ώστε να μπορείτε να πειραματίζεστε με τα προγράμματα που υπάρχουν σε αυτό το βιβλίο αλλά και να γράφετε τα δικά σας. Το Παράρτημα Β περιγράφει τη διαδικασία εγκατάστασης και τη βασική χρήση του ο- λοκληρωμένου περιβάλλοντος Code::Blocks. Σχήμα 1.2 Το ολοκληρωμένο περιβάλλον ανάπτυξης Code::Blocks

28 34 H γλώσσα C++ σε βάθος Γιατί να μάθω C++; Όταν αποφασίσει κάποιος να ασχοληθεί με τον αντικειμενοστρεφή προγραμματισμό (ΑΠ), ή όταν αποφασίσει να τον διδάξει, έρχεται αντιμέτωπος με ένα δίλημμα: ποια γλώσσα να επιλέξει! Οι πιο διαδεδομένες αντικειμενοστρεφείς γλώσσες που χρησιμοποιούνται σήμερα είναι η C++, η Java και η C#. Γιατί όμως να επιλέξει τη C++ και όχι κάποια από τις άλλες δύο; Τόσο η Java όσο και η C# δεν είναι γλώσσες που παράγουν ένα άμεσα εκτελέσιμο πρόγραμμα, αλλά έναν ενδιάμεσο κώδικα ο οποίος εκτελείται από μια εικονική μηχανή (virtual machine). Αυτό τις κάνει πολύ φορητές και ιδανικές για διαδικτυακές εφαρμογές και εφαρμογές μικροσυσκευών, αλλά παράγουν προγράμματα που εκτελούνται πιο αργά και διαθέτουν λιγότερες δυνατότητες ελέγχου στο σύστημα όπου εκτελούνται. Αν επομένως θέλουμε προγράμματα στα οποία μας ενδιαφέρει η υψηλή απόδοση και ο πλήρης έλεγχος του συστήματος, η C++ αποτελεί μονόδρομο. Εξάλλου, ένα μεγάλο μέρος των δημοφιλέστερων προγραμμάτων και λειτουργικών συστημάτων που χρησιμοποιούμε σήμερα, όπως τα Windows και όλες οι εφαρμογές του Office, είναι γραμμένα σε C++ 3. Ας έλθουμε τώρα στην εκπαίδευση του αντικειμενοστρεφούς προγραμματισμού. Εκεί, κατά τη γνώμη μου, η C++ έχει αδιαφιλονίκητο προβάδισμα. Η C++ είναι μια «συσκευασία» δύο γλωσσών σε μία! Διαθέτει όλα τα διαδικαστικά χαρακτηριστικά της C και επιπλέον δικά της αντικειμενοστρεφή χαρακτηριστικά. Με τη C++ μπορούμε να ξεκινήσουμε φτιάχνοντας απλές διαδικαστικές εφαρμογές και να προσθέτουμε βήμα-βήμα τα αντικειμενοστρεφή στοιχεία της γλώσσας. Αυτό κάνει τη διαδικασία μάθησης της αντικειμενοστρεφούς λογικής σταδιακή και λιγότερο επίπονη. Τόσο η Java όσο και η C# μας ρίχνουν κατευθείαν σε βαθιά νερά. Για να φτιάξουμε το απλούστερο προγραμματάκι θα πρέπει να έχουμε κατανοήσει πολύπλοκες αρχές του α- ντικειμενοστρεφούς προγραμματισμού. Είναι σαν να μας ρίχνουν στο λιμάνι για να μάθουμε να κολυμπάμε. Το πιθανότερο είναι ότι, αν δεν πνιγούμε, θα πάρουμε από φόβο το νερό και δεν θα μάθουμε ποτέ σωστό κολύμπι. Αρκετά εκπαιδευτικά ιδρύματα του εξωτερικού, σε μια προσπάθεια να επιβάλουν από την αρχή την αντικειμενοστρεφή λογική στον σχεδιασμό προγραμμάτων, έβαλαν στο πρόγραμμα σπουδών τους ως πρώτο μάθημα προγραμματισμού τη γλώσσα Java. Τα α- ποτελέσματα ήταν απογοητευτικά και τα περισσότερα ιδρύματα γύρισαν πίσω στις πιο κλασικές γλώσσες. Η C++ βοηθάει στη σταδιακή κατανόηση των αρχών του αντικειμενοστρεφούς προγραμματισμού, που είναι απαραίτητες για τη μετέπειτα μετάβαση σε πιο «καθαρόαιμες» γλώσσες αντικειμενοστρεφούς προγραμματισμού, όπως η Java και η C#. 3 Πηγή: The Programming Languages Beacon,

29 Κεφάλαιο 1: Εισαγωγή 35 Βασικές έννοιες του προγραμματισμού Η ενότητα αυτή απευθύνεται στους αρχάριους στον προγραμματισμό. Αναφέρει και εξηγεί βασικές έννοιες του προγραμματισμού, απαραίτητες για τον αναγνώστη που έρχεται για πρώτη φορά σε επαφή με μια γλώσσα προγραμματισμού. Κάθε πρόγραμμα, σε όποια γλώσσα προγραμματισμού και αν έχει γραφεί, επεξεργάζεται δεδομένα και δίνει αποτελέσματα. Η επεξεργασία των δεδομένων γίνεται πάντα με έναν προκαθορισμένο τρόπο (αλγόριθμο). Ας μην ξεχνάμε ότι ένας Η/Υ είναι ένα μηχάνημα το οποίο ουσιαστικά εκτελεί μόνο τρείς λειτουργίες: Πρόσθεση. Στη πραγματικότητα ο Η/Υ εκτελεί μόνο την πράξη της πρόσθεσης. Όλες οι άλλες πράξεις ανάγονται σε προσθέσεις. Σύγκριση. Για παράδειγμα, συγκρίνει δύο αριθμούς και αποφασίζει ποιος είναι μεγαλύτερος. Μεταφορά δεδομένων. Ο Η/Υ μπορεί να αποθηκεύσει στη μνήμη του δεδομένα τα οποία μπορεί να είναι σταθερές ή να προέρχονται από αποτελέσματα πράξεων. Όπως διαπιστώνουμε, ο Η/Υ εκτελεί πολύ απλές και βασικές λειτουργίες στις οποίες όμως βασίζονται πολύπλοκοι αλγόριθμοι. Συνηθίζω να λέω στους φοιτητές ότι πρέπει να αντιμετωπίζουμε τον Η/Υ σαν έναν ασθενή που έχει τη νόσο Αλτσχάιμερ σε προχωρημένο στάδιο! Όσοι νοσούν από Αλτσχάιμερ έχουν απώλεια μνήμης και πιθανόν να μην θυμούνται τι έκαναν το προηγούμενο δευτερόλεπτο. Οι ασθενείς αυτοί καταφεύγουν σε διάφορα τεχνάσματα για να μπορούν να ζουν όσο πιο φυσιολογικά γίνεται. Για παράδειγμα, μπορεί να χρησιμοποιούν χαρτάκια ή κουτάκια για να σημειώνουν ό,τι κάνουν ώστε αργότερα να μπορούν να το ελέγχουν. Π.χ., όταν τρώνε πρωινό, γράφουν σε έναν κουτάκι τη φράση «έφαγα πρωινό». Έτσι, όταν το δούνε αργότερα θα ξέρουν ότι έφαγαν πρωινό και δεν θα ξαναφάνε. Οτιδήποτε θέλουν να θυμούνται θα πρέπει να το σημειώνουν κάπου! Μεταβλητές Ο «ασθενής» μας, ο Η/Υ, έχει στη διάθεσή του δισεκατομμύρια τέτοια κουτάκια, που δεν είναι τίποτε άλλο από τις θέσεις μνήμης της μνήμης RAM του κάθε συστήματος. Τα δεδομένα, καθώς και τα αποτελέσματα των πράξεων, αποθηκεύονται στα κουτάκια της κύριας μνήμης (RAM) του Η/Υ. Σε διαφορετική περίπτωση, ο «ασθενής» μας με Αλτσχάιμερ θα τα είχε ξεχάσει.

30 36 H γλώσσα C++ σε βάθος Η διαχείριση της μνήμης RAM είναι βασικό μέλημα μιας γλώσσας προγραμματισμού. Για να χρησιμοποιηθεί μια θέση μνήμης από μια γλώσσα προγραμματισμού, πρέπει να της δοθεί ένα όνομα. Σε κάθε θέση μνήμης που χρησιμοποιείται σε ένα πρόγραμμα, ανατίθεται (αντιστοιχίζεται, αποδίδεται) ένα όνομα, ενώ το περιεχόμενο της θέσης μνήμης αποτελεί την τιμή της. Για να αναφερθεί το πρόγραμμα στη συγκεκριμένη θέση μνήμης, χρησιμοποιεί α- πλώς το όνομά της. Φανταστείτε την κάθε θέση μνήμης που χρησιμοποιούμε σαν ένα κουτί, στο εξωτερικό του οποίου είναι γραμμένο το όνομα του. Το περιεχόμενο του κουτιού αποτελεί την τιμή αυτής της θέσης μνήμης. Ας θεωρήσουμε τη θέση μνήμης ab η ο- ποία περιέχει αρχικά τον αριθμό 23, και έστω ότι με μια κατάλληλη εντολή αλλάζουμε το περιεχόμενό της σε 18. Παρατηρούμε ότι το κουτί (θέση μνήμης) παραμένει το ίδιο (ab), αλλά το περιεχόμενό του μεταβάλλεται. Το όνομα, λοιπόν, που αντιστοιχεί σε μία θέση μνήμης μπορεί να πάρει διαφορετικές τιμές. Γι αυτό τον λόγο, κάθε όνομα θέσης μνήμης καλείται μεταβλητή (variable). Στο παραπάνω παράδειγμα η μεταβλητή ab είχε αρχικά την τιμή 23 και μετά την τιμή 18. Ένα πρόγραμμα χρησιμοποιεί μεταβλητές για να αποθηκεύει τα δεδομένα και τα αποτελέσματα τα οποία παράγει. Κατά την εκτέλεση του προγράμματος, οι τιμές των μεταβλητών μπορεί να αλλάζουν. Μεταβλητή είναι μια θέση μνήμης την οποία έχουμε δεσμεύσει και της έχουμε δώσει ένα όνομα. Το περιεχόμενο αυτής της θέσης μνήμης αποτελεί την τιμή αυτής της μεταβλητής. Αν πάμε σε ένα κατάστημα και ζητήσουμε να αγοράσουμε ένα κουτί, το πρώτο πράγμα που θα μας ρωτήσουν είναι το τι θέλουμε να βάλουμε μέσα. Από την απάντησή μας θα εξαρτηθεί το μέγεθος του κουτιού που θα μας δώσουν. Παρόμοια, οι θέσεις μνήμης (μεταβλητές) που χρησιμοποιεί ένα πρόγραμμα διαφέρουν ανάλογα με το τι σκοπεύουμε να αποθηκεύσουμε σε αυτές. Τα δεδομένα που χειρίζεται ένας Η/Υ μπορεί να είναι διαφορετικών τύπων (αριθμοί, χαρακτήρες κ.λπ.), οπότε θα πρέπει να υπάρχουν και οι αντίστοιχες κατηγορίες μεταβλητών για την καταχώρισή τους. Έτσι έχουμε ακέραιες μεταβλητές για την αποθήκευση ακέραιων αριθμών, μεταβλητές χαρακτήρων για την αποθήκευση χαρακτήρων, κ.λπ.

31 Κεφάλαιο 1: Εισαγωγή 37 Μια γλώσσα προγραμματισμού μπορεί να υποστηρίζει διάφορους τύπους δεδομένων (data types). Ανάλογα με τους τύπους δεδομένων που υποστηρίζει, υπάρχουν και αντίστοιχα είδη (τύποι) μεταβλητών. Στις περισσότερες γλώσσες προγραμματισμού, όπως και στη C++, πριν χρησιμοποιήσουμε μια μεταβλητή πρέπει να δηλώσουμε τον τύπο της. Η C++ υποστηρίζει διάφορους τύπους δεδομένων, οι βασικότεροι από τους οποίους είναι οι εξής: Ο ακέραιος τύπος δεδομένων: Αναφέρεται σε δεδομένα που είναι ακέραιοι αριθμοί. Στη C++ o τύπος αυτός συμβολίζεται με int ή long int. Ο πραγματικός τύπος δεδομένων: Αναφέρεται σε δεδομένα που είναι αριθμοί κινητής υποδιαστολής με μικρή ή μεγάλη ακρίβεια. Στη C++ o τύπος αυτός συμβολίζεται, αντίστοιχα, με float ή double. Ο τύπος δεδομένων χαρακτήρα: Αναφέρεται σε μεμονωμένους χαρακτήρες. Στη C++ o τύπος αυτός συμβολίζεται με char. Ο τύπος δεδομένων συνόλου χαρακτήρων (συμβολοσειρών): Αναφέρεται σε σύνολα χαρακτήρων. Η C++ δεν υποστηρίζει άμεσα αυτό τον τύπο δεδομένων και χειρίζεται διαφορετικά τα σύνολα χαρακτήρων. Όμως με τη χρήση της καθιερωμένης βιβλιοθήκης προτύπων της C++ υπάρχει έμμεση υποστήριξη του συνόλου χαρακτήρων μέσω της κλάσης string. Ο λογικός τύπος δεδομένων: Αναφέρεται σε δεδομένα με τιμή «αληθές» (true) ή «ψευδές» (false). Στη C++ o τύπος αυτός συμβολίζεται με bool. Πέρα από τις μεταβλητές, ένα απλό πρόγραμμα μπορεί να αποτελείται από σταθερές, παραστάσεις, και εντολές. Σταθερές Οι σταθερές είναι προκαθορισμένες τιμές που δε μεταβάλλονται κατά τη διάρκεια εκτέλεσης ενός προγράμματος. Υπάρχουν αντίστοιχες σταθερές για κάθε τύπο δεδομένων. Για παράδειγμα, μια ακέραια σταθερά είναι ένας ακέραιος αριθμός. Αριθμοί όπως το 10, το 20, το 17 κ.λπ. είναι παραδείγματα ακέραιων σταθερών (τύπου int), ενώ το 3.14 είναι μία πραγματική σταθερά (τύπου double). Παραστάσεις Οι παραστάσεις είναι πράξεις μεταξύ διάφορων μεγεθών. Μια παράσταση έχει ένα αποτέλεσμα. Για παράδειγμα η παράσταση 4+5 έχει ως αποτέλεσμα τον αριθμό 9. Στις παραστάσεις μπορούν να μετέχουν σταθερές και μεταβλητές. Οι πράξεις υλοποιούνται με τη χρήση μαθηματικών τελεστών (+,-,*,>,<, κλπ).

32 38 H γλώσσα C++ σε βάθος Εντολές Εντολή είναι μια φράση της γλώσσας προγραμματισμού που υποδεικνύει στον Η/Υ να εκτελέσει μια συγκεκριμένη λειτουργία. Κάθε εντολή μιας γλώσσας προγραμματισμού έχει μια αυστηρά καθορισμένη σύνταξη, η οποία ορίζεται από την ίδια τη γλώσσα. Οι εντολές επιτελούν διάφορες λειτουργίες. Μια εντολή μπορεί να κάνει μια απλή πράξη ή έναν έλεγχο, να επιβάλλει μια επαναληπτική διαδικασία, να εμφανίζει κάτι στην οθόνη, να γράφει κάτι στον δίσκο του Η/Υ κ.λπ. Σε κάθε περίπτωση, ένα πρόγραμμα αποτελείται από έναν αριθμό εντολών που εκτελούνται η μία μετά την άλλη (εκτός αν κάποια εντολή ορίζει μια διαφορετική σειρά εκτέλεσης). Ένα πρόγραμμα μπορεί να είναι ενιαίο ή να αποτελείται από περισσότερα τμήματα (υποπρογράμματα-διαδικασίες). Οι περισσότερες γλώσσες ενθαρρύνουν τον προγραμματιστή να χωρίζει το πρόγραμμα σε μικρότερα τμήματα, τα οποία ονομάζονται υποπρογράμματα. Η δομή της γλώσσας C++ σχεδόν επιβάλλει τον τμηματικό (αρθρωτό) προγραμματισμό. Ένα τμήμα προγράμματος (υποπρόγραμμα) στη C++ ονομάζεται συνάρτηση (function). Οι συναρτήσεις καλούνται απλώς με το όνομά τους. Μια συνάρτηση μπορεί να εκτελεί απλώς μια λειτουργία, αλλά και να επιστρέφει κάποια τιμή στον κώδικα που την κάλεσε. Αναγνωριστικά Αναγνωριστικά (identifiers) καλούνται τα ονόματα που χρησιμοποιεί μια γλώσσα για να αναφέρεται στα επί μέρους στοιχεία της. Για παράδειγμα, το όνομα μιας μεταβλητής, το όνομα μιας συνάρτησης (υποπρογράμματος), ή το όνομα ενός αντικειμένου αποτελούν αναγνωριστικά της γλώσσας. Κάθε γλώσσα έχει τους δικούς της κανόνες για τη σύνταξη των αναγνωριστικών της. Οι κανόνες αυτοί καθορίζουν το πλήθος και το είδος των επιτρεπτών χαρακτήρων. Οι κανόνες για τα αναγνωριστικά της C++ αναφέρονται στο επόμενο κεφάλαιο. Φιλοσοφίες και τεχνικές προγραμματισμού Όσοι ασχολούνται σοβαρά με τον προγραμματισμό έχουν σίγουρα περάσει από τα παρακάτω στάδια μάθησης που αντανακλούν διαφορετικές φιλοσοφίες και τεχνικές προγραμματισμού. Μη δομημένος προγραμματισμός (unstructured programming) Δομημένος διαδικαστικός προγραμματισμός (structured procedural programming) Τμηματικός προγραμματισμός (modular programming) Αντικειμενοστρεφής προγραμματισμός (Object Oriented Programming)

33 Κεφάλαιο 1: Εισαγωγή 39 Μη δομημένος προγραμματισμός Συνήθως, όταν κάποιος ξεκινάει να μαθαίνει προγραμματισμό, τα πρώτα προγράμματα που κατασκευάζει είναι μικρά και α- ποτελούνται από ένα μοναδικό ενιαίο σύνολο εντολών (ένα κύριο πρόγραμμα). Όλα τα δεδομένα είναι διαθέσιμα στο πρόγραμμα, το οποίο έχει πλήρη πρόσβαση σε αυτά από κάθε σημείο, ακόμα και από σημεία που δε χρειάζεται να έχουν πρόσβαση σε συγκεκριμένα δεδομένα. Ο μη δομημένος προγραμματισμός οδηγεί σε δυσανάγνωστα προγράμματα, με μεγάλο κόστος συντήρησης, με μηδενικές δυνατότητες επαναχρησιμοποίησης και επέκτασης, τα οποία είναι γνωστά και ως «προγράμματα σπαγγέτι» (spaggetti programs). Δομημένος διαδικαστικός προγραμματισμός Στον δομημένο διαδικαστικό προγραμματισμό το πρόγραμμα χωρίζεται σε ξεχωριστές ενότητες-διαδικασίες (υποπρογράμματα), κάθε μία από τις οποίες επιτελεί μια ξεχωριστή λειτουργία του προγράμματος. Μία από αυτές τις διαδικασίες είναι και το κύριο πρόγραμμα (main), που σκοπό έχει να «συνδέει» τις υπόλοιπες ενότητες του προγράμματος καλώντας τις αντίστοιχες διαδικασίες (Σχήμα 1.3). Σχήμα 1.3 Δομημένος διαδικαστικός προγραμματισμός

34

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

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

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

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

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

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

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

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

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

#define, 70, 575 #elif, 580 #else, 580 #endif, 580 #error, 584 #if, 580 #ifdef, 583 #ifndef, 580, 583 #include, 70, 227, 574 #undef, 579

#define, 70, 575 #elif, 580 #else, 580 #endif, 580 #error, 584 #if, 580 #ifdef, 583 #ifndef, 580, 583 #include, 70, 227, 574 #undef, 579 Ευρετήριο Η γλώσσα C σε βάθος # #define, 70, 575 #elif, 580 #else, 580 #endif, 580 #error, 584 #if, 580 #ifdef, 583 #ifndef, 580, 583 #include, 70, 227, 574 #undef, 579 A abs(), 625 AND, 64 ASCII πίνακας

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

Βασικές Αρχές Προγραμματισμού

Βασικές Αρχές Προγραμματισμού Βασικές Αρχές Προγραμματισμού Κεφάλαιο 2 ΗγλώσσαC Ιστορική Αναδρομή ΗανάπτυξητηςC ξεκίνησε το 1972 στα εργαστήρια Bell από τον Dennis Ritchie με σκοπό την ανάπτυξη ενός λειτουργικού συστήματος για τον

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

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

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

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

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

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

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

Περιεχόμενα. Κεφάλαιο 1: Εισαγωγή...17. Κεφάλαιο 2: Μια πρώτη ματιά στη C++...49

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

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

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

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

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

Περιεχόμενα. Κεφάλαιο 1: Εισαγωγή Κεφάλαιο 2: Μια πρώτη ματιά στη C

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

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

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

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

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

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

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

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

Ενδεικτικές σελίδες από κάθε κεφάλαιο του βιβλίου

Ενδεικτικές σελίδες από κάθε κεφάλαιο του βιβλίου Ενδεικτικές σελίδες από κάθε κεφάλαιο του βιβλίου Κεφάλαιο Εισαγωγή 26 H γλώσσα C++ σε βάθος Εισαγωγή Ξεκίνησα τη "θητεία" μου ως προγραμματιστής όταν ακόμα τα προγράμματα γράφονταν σε διατρητικές μηχανές

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

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Εργαστήριο 1 Εισαγωγή στη C Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr Διαδικαστικά Ιστοσελίδα μαθήματος: http://eclass.uoa.gr/courses/f30/ Υποχρεωτική παρακολούθηση: Παρασκευή 14:00 16:00 στην

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

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

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

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

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Προγραμματισμός Η/Υ 1 (Εργαστήριο) Προγραμματισμός Η/Υ 1 (Εργαστήριο) Ενότητα 2: Δομή ενός προγράμματος C Καθηγήτρια Εφαρμογών: Τσαγκαλίδου Ροδή Τμήμα: Ηλεκτρολόγων Μηχανικών Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες

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

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 1: Εισαγωγή. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 1: Εισαγωγή. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά) Αντικειμενοστρεφής Προγραμματισμός Ενότητα 1: Εισαγωγή Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά) Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative

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

Εισαγωγή ΕΙΣΑΓΩΓΗ. Γεώργιος Παπαϊωάννου ( )

Εισαγωγή ΕΙΣΑΓΩΓΗ. Γεώργιος Παπαϊωάννου ( ) ΕΙΣΑΓΩΓΗ Γεώργιος Παπαϊωάννου (2013-16) gepap@aueb.gr Περιγραφή: Εισαγωγή στη C++ Ιστορικά στοιχεία για τη C/C++ Ένα βασικό πρόγραμμα Μεταγλώττιση ενός προγράμματος Τελευταία ενημέρωση: Σεπτέμβριος 2016

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

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

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

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

ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL

ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL 8.1. Εισαγωγή ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PACAL Πως προέκυψε η γλώσσα προγραμματισμού Pascal και ποια είναι τα γενικά της χαρακτηριστικά; Σχεδιάστηκε από τον Ελβετό επιστήμονα της Πληροφορικής Nicklaus Wirth to

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

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

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

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

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

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

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

Προγραμματισμός H/Y Ενότητα 1: Εισαγωγή. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Προγραμματισμός H/Y Ενότητα 1: Εισαγωγή. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά) Προγραμματισμός H/Y Ενότητα 1: Εισαγωγή Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά) Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

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

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

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

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

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

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

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

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

Εισαγωγή στη γλώσσα προγραμματισμού C++ Εισαγωγή στη γλώσσα προγραμματισμού C++ Περιβάλλον Εργασίας 2 Περιβάλλον Εργασίας 1. Χρήση απλού κειμενογράφου και Μεταγλωττιστή 2. Ολοκληρωμένα Περιβάλλοντα Εργασίας (Integrated Development Environments)

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

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

Εισαγωγή στη γλώσσα προγραμματισμού C++14 Εισαγωγή στη γλώσσα προγραμματισμού C++14 Σταμάτης Σταματιάδης Τμήμα Επιστήμης και Τεχνολογίας Υλικών, Πανεπιστήμιο Κρήτης Σχετικά με το μάθημα Διαλέξεις Ασκήσεις Παρασκευή 17:00-20:00 στην αίθουσα υπολογιστών

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

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

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

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

Πληροφορική 2. Αλγόριθμοι

Πληροφορική 2. Αλγόριθμοι Πληροφορική 2 Αλγόριθμοι 1 2 Τι είναι αλγόριθμος; Αλγόριθμος είναι ένα διατεταγμένο σύνολο από σαφή βήματα το οποίο παράγει κάποιο αποτέλεσμα και τερματίζεται σε πεπερασμένο χρόνο. Ο αλγόριθμος δέχεται

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

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

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

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

Εισαγωγή στην επιστήμη των υπολογιστών

Εισαγωγή στην επιστήμη των υπολογιστών Εισαγωγή στην επιστήμη των υπολογιστών Λογισμικό Υπολογιστών Γλώσσες Προγραμματισμού 1 Εξέλιξη Οι γλώσσες προγραμματισμού είναι σύνολα από προκαθορισμένες λέξεις οι οποίες συνδυάζονται σε προγράμματα σύμφωνα

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

Από την πρώτη στην τέταρτη έκδοση...

Από την πρώτη στην τέταρτη έκδοση... Από την πρώτη στην τέταρτη έκδοση... Όταν το Φεβρουάριο του 2004 έστειλα την πρότασή μου στον ΚΛΕΙΔΑΡΙΘ- ΜΟ για την έκδοση ενός βιβλίου για τη γλώσσα C, δεν θα μπορούσα ποτέ να φανταστώ ότι οχτώ χρόνια

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

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

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

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

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

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

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

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

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

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

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

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

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

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

4. Συντακτικό μιας γλώσσας είναι το σύνολο των κανόνων που ορίζει τις μορφές με τις οποίες μια λέξη είναι αποδεκτή. ΑΕσΠΠ-Κεφ6. Εισαγωγή στον προγραμματισμό 1 ΣΩΣΤΟ ΛΑΘΟΣ 1. Οι γλώσσες προγραμματισμού αναπτυχθήκαν με σκοπό την επικοινωνία ανθρώπου μηχανής. 2. Αλγόριθμος = Πρόγραμμα + Δομές Δεδομένων 3. Ένα πρόγραμμα

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C Στο εργαστήριο αυτό, θα ασχοληθούμε με δύο προγραμματιστικά περιβάλλοντα για τη γλώσσα C: τον gcc μεταγλωττιστή της C σε περιβάλλον

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

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον. Κεφάλαια 2,7,8

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον. Κεφάλαια 2,7,8 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον Επιμέλεια : Δρεμούσης Παντελής Κεφάλαια 2,7,8 1. Τι είναι αλγόριθμος; Μια πεπερασμένη σειρά ενεργειών, αυστηρά καθορισμένων και εκτελέσιμων σε πεπερασμένο

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

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

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος http://www.teiser.gr/icd/staff/lantzos lantzos@teiser.gr 1 Πώς δημιουργούμε πρόγραμμα Η/Υ; 1. Ανάλυση του προβλήματος 2. Επινόηση & Σχεδιασμός

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

ΑΕΠΠ Ερωτήσεις τύπου Σωστό-Λάθος

ΑΕΠΠ Ερωτήσεις τύπου Σωστό-Λάθος ΑΕΠΠ Ερωτήσεις τύπου Σωστό-Λάθος Κεφάλαιο 1 1. Πρόβλημα είναι μια μαθηματική κατάσταση που πρέπει να αντιμετωπίσουμε 2. Αν υποβάλλουμε τα δεδομένα σε επεξεργασία παίρνουμε πληροφορίες 3. Ο υπολογιστής

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

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

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

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

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

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

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

Ηλεκτρονικοί Υπολογιστές

Ηλεκτρονικοί Υπολογιστές ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΧΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Ενότητα 1: Βασικά Στοιχεία της C++ Ζαχαρούλα Ανδρεοπούλου Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative

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

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

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

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

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf("%u\n", x); Β. unsigned char

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf(%u\n, x); Β. unsigned char ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εξετάσεις Β Περιόδου 2015 (8/9/2015) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................

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

Προγραμματισμός Ι (HY120)

Προγραμματισμός Ι (HY120) Προγραμματισμός Ι (HY20) # μνήμη & μεταβλητές πρόγραμμα & εκτέλεση Ψηφιακά δεδομένα, μνήμη, μεταβλητές 2 Δυαδικός κόσμος Οι υπολογιστές είναι δυαδικές μηχανές Όλη η πληροφορία (δεδομένα και κώδικας) κωδικοποιείται

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

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Προγραμματισμός Η/Υ 1 (Εργαστήριο) Προγραμματισμός Η/Υ 1 (Εργαστήριο) Ενότητα 4: Τύποι Δεδομένων και τελεστές Καθηγήτρια Εφαρμογών: Τσαγκαλίδου Ροδή Τμήμα: Ηλεκτρολόγων Μηχανικών Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται

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

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

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

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

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C Στο εργαστήριο αυτό, θα ασχοληθούμε με δύο προγραμματιστικά περιβάλλοντα της γλώσσας C, το Dev-C++, το οποίο είναι εφαρμογή που τρέχει

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

Περιεχόμενα. Κεφάλαιο 1 Εισαγωγή στην Access...9. Κεφάλαιο 2 Χειρισμός πινάκων... 25

Περιεχόμενα. Κεφάλαιο 1 Εισαγωγή στην Access...9. Κεφάλαιο 2 Χειρισμός πινάκων... 25 Περιεχόμενα Κεφάλαιο 1 Εισαγωγή στην Access...9 Γνωριμία με την Access... 12 Δημιουργία βάσης δεδομένων... 18 Άνοιγμα και κλείσιμο βάσης δεδομένων... 21 Ερωτήσεις ανακεφαλαίωσης... 22 Πρακτική εξάσκηση...

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

Η γλώσσα προγραμματισμού C

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Εισαγωγή στη C Λίγα λόγια για την C Γλώσσα προγραμματισμού υψηλού επιπέδου. Σχεδιάστηκε και υλοποιήθηκε από τον Dennis Richie στις αρχές της δεκαετίας του 1970 (Bell Labs). Η

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

Προγραμματισμός Η/Υ (ΤΛ2007 )

Προγραμματισμός Η/Υ (ΤΛ2007 ) Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2015-16

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

Τεχνικές σχεδίασης προγραμμάτων, Προγραμματιστικά Περιβάλλοντα

Τεχνικές σχεδίασης προγραμμάτων, Προγραμματιστικά Περιβάλλοντα Τεχνικές σχεδίασης προγραμμάτων, Προγραμματιστικά Περιβάλλοντα Ενότητες βιβλίου: 6.4, 6.7 Ώρες διδασκαλίας: 1 Τεχνικές σχεδίασης προγραμμάτων Στο βιβλίο γίνεται αναφορά σε μία τεχνική για την ανάπτυξη

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

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

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

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

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

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Δυναμική Διαχείριση Μνήμης Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2011-2012 Ανάγκη για Δυναμική Μνήμη Στατική Μνήμη Μέχρι τώρα χρησιμοποιούσαμε

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

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

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

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

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

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

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

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

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

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

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

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #2

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #2 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #2 «Προγραμματισμός Η/Υ» - Τετράδιο Εργαστηρίου #2 2 Γενικά Στο Εργαστήριο αυτό θα αναλύσουμε τη χρήση της βασικής εντολής ελέγχου ροής

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

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

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

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

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

Προβλήματα, αλγόριθμοι, ψευδοκώδικας Προβλήματα, αλγόριθμοι, ψευδοκώδικας October 11, 2011 Στο μάθημα Αλγοριθμική και Δομές Δεδομένων θα ασχοληθούμε με ένα μέρος της διαδικασίας επίλυσης υπολογιστικών προβλημάτων. Συγκεκριμένα θα δούμε τι

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

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

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

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

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

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

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

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Πληροφορική II. Ενότητα 3 : Γλώσσες προγραμματισμού. Δρ.

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Πληροφορική II. Ενότητα 3 : Γλώσσες προγραμματισμού. Δρ. 1 Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου Πληροφορική II Ενότητα 3 : Γλώσσες προγραμματισμού Δρ. Γκόγκος Χρήστος 2 Ανοιχτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ηπείρου Τμήμα Χρηματοοικονομικής

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ Μέρος 1ο ΝΙΚΟΛΑΟΣ ΣΤΕΡΓΙΟΥΛΑΣ ΤΜΗΜΑ ΦΥΣΙΚΗΣ ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ 1 ΓΙΑΤΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ; Στα μαθηματικά και στη φυσική συχνά έχουμε

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

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Προγραμματισμός Η/Υ 1 (Εργαστήριο) Προγραμματισμός Η/Υ 1 (Εργαστήριο) Ενότητα 1: Εισαγωγή στη C - Αλγόριθμοι Καθηγήτρια Εφαρμογών: Τσαγκαλίδου Ροδή Τμήμα: Ηλεκτρολόγων Μηχανικών Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε

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

ΜΕΡΙΚΑ ΣΤΟΙΧΕΙΑ ΓΙΑ ΤΙΣ ΓΛΩΣΣEΣ ΠPOΓPAMMATIΣMOY

ΜΕΡΙΚΑ ΣΤΟΙΧΕΙΑ ΓΙΑ ΤΙΣ ΓΛΩΣΣEΣ ΠPOΓPAMMATIΣMOY ΜΕΡΙΚΑ ΣΤΟΙΧΕΙΑ ΓΙΑ ΤΙΣ ΓΛΩΣΣEΣ ΠPOΓPAMMATIΣMOY Mία γλώσσα προγραμματισμού συνίσταται από ένα περιορισμένο υποσύνολο της αγγλικής γλώσσας και το οποίο αποτελείται από εκφράσεις σαφώς ορισμένες, χωρίς παρερμηνεία.

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

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

ΥΠΟΛΟΓΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ ΓΙΑ ΣΥΣΤΗΜΑΤΑ ΜΕΤΑΔΟΣΗΣ ΠΛΗΡΟΦΟΡΙΑΣ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΥΠΟΛΟΓΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ ΓΙΑ ΣΥΣΤΗΜΑΤΑ ΜΕΤΑΔΟΣΗΣ ΠΛΗΡΟΦΟΡΙΑΣ Αντικειμενοστραφής προγραμματισμός Web Sites:

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

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ ΠΛΗΡΟΦΟΡΙΚΗ ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Εισαγωγή στη Python Νικόλαος Ζ. Ζάχαρης Αναπληρωτής

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

Κεφάλαιο 10 ο Υποπρογράµµατα

Κεφάλαιο 10 ο Υποπρογράµµατα Κεφάλαιο 10 ο Υποπρογράµµατα Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον Η αντιµετώπιση των σύνθετων προβληµάτων και η ανάπτυξη των αντίστοιχων προγραµµάτων µπορεί να γίνει µε την ιεραρχική σχεδίαση,

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

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 1 ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Μάθημα 1ο Τμήμα Διοίκησης Επιχειρήσεων α εξάμηνο Β. Φερεντίνος Ορισμός Wikipedia.org 2 Δομημένος προγραμματισμός (structured programming) ή διαδικαστικός προγραμματισμός (procedural

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

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

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

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

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

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

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

<<ΔΗΜΗΤΡΗΣ ΜΑΝΩΛΗΣ ΦΥΣΙΚΟΣ ΜCs>> 1

<<ΔΗΜΗΤΡΗΣ ΜΑΝΩΛΗΣ ΦΥΣΙΚΟΣ ΜCs>> 1 ΚΕΦΑΛΑΙΟ 7 ο ΠΡΟΓΡΑΜΜΑ : Το πρόγραμμα αποτελείται από μια σειρά οδηγιών, που ονομάζονται εντολές, για την εκτέλεση τέτοιου είδους πράξεων, καθώς επίσης και από ένα σύνολο πρόσθετων οδηγιών ελέγχου, που

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

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

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

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

Προγραμματισμός Η/Υ. Ενότητα 2β: Εισαγωγή στη C (Μέρος Δεύτερο)

Προγραμματισμός Η/Υ. Ενότητα 2β: Εισαγωγή στη C (Μέρος Δεύτερο) Προγραμματισμός Η/Υ Ενότητα 2β: Νίκος Καρακαπιλίδης, Καθηγητής Δημήτρης Σαραβάνος, Καθηγητής Πολυτεχνική Σχολή Τμήμα Μηχανολόγων & Αεροναυπηγών Μηχανικών Σκοποί ενότητας Κατανόηση της έννοιας του Τελεστή

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

10 η Διάλεξη C++ - Πίνακες. Δρ. Χρήστος Δρόσος ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ

10 η Διάλεξη C++ - Πίνακες. Δρ. Χρήστος Δρόσος ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ 10 η Διάλεξη C++ - Πίνακες Δρ. Χρήστος Δρόσος ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ Ανακεφαλαίωση Κατά την κλήση μιας συνάρτησης κατ αξία οι τιμές των ορισμάτων αντιγράφονται στις αντίστοιχες τυπικές παραμέτρους

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

2.1. Εντολές. 2.2. Σχόλια. 2.3. Τύποι Δεδομένων

2.1. Εντολές. 2.2. Σχόλια. 2.3. Τύποι Δεδομένων 2 Βασικές Εντολές 2.1. Εντολές Οι στην Java ακολουθούν το πρότυπο της γλώσσας C. Έτσι, κάθε εντολή που γράφουμε στη Java θα πρέπει να τελειώνει με το ερωτηματικό (;). Όπως και η C έτσι και η Java επιτρέπει

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

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

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

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

Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού

Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού ( Απαντήσεις & Λύσεις Βιβλίου) 1. Σκοποί κεφαλαίου Κύκλος ανάπτυξης προγράµµατος Κατηγορίες γλωσσών προγραµµατισµού

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

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

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων Δομημένος Προγραμματισμός Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 2 Νέο Πρόγραμμα

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

Προγραμματισμός Η/Υ. Συναρτήσεις & Υποπρογράμματα. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

Προγραμματισμός Η/Υ. Συναρτήσεις & Υποπρογράμματα. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος Προγραμματισμός Η/Υ Συναρτήσεις & Υποπρογράμματα ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος Τμηματικός Προγραμματισμός Η επίλυση ενός προβλήματος διευκολύνεται

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

Υπολογιστές Ι. Άδειες Χρήσης. Εισαγωγή. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

Υπολογιστές Ι. Άδειες Χρήσης. Εισαγωγή. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Άδειες Χρήσης Υπολογιστές Ι Εισαγωγή Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης

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

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

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

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

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python Εισαγωγή στην Επιστήμη Υπολογιστών Εισαγωγή στην Python Β Μέρος Δομή Ελέγχου if-elif-else Επαναληπτική Δομή Ελέγχου while Επαναληπτική Δομή Ελέγχου for Αλληλεπίδραση χρήστη-προγράμματος Συναρτήσεις Η δομή

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

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

Δομημένος Προγραμματισμός ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Δομημένος Προγραμματισμός Ενότητα: Εισαγωγή στη C θεωρία Δ. Ε. Μετάφας Τμ. Ηλεκτρονικών Μηχ. Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό

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

Κεφάλαιο 14: Συμβουλές προς έναν νέο προγραμματιστή

Κεφάλαιο 14: Συμβουλές προς έναν νέο προγραμματιστή Κεφάλαιο 14: Συμβουλές προς έναν νέο προγραμματιστή Φτάσαμε σιγά σιγά στο τέλος του βιβλίου. Αντί για κάποιον επίλογο σκέφτηκα να συλλέξω κάποια πράγματα που θα ήθελα να πω σε κάποιον ο οποίος αρχίζει

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

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

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

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

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL)

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) Pascal- Εισαγωγή Η έννοια του προγράμματος Η επίλυση ενός προβλήματος με τον υπολογιστή περιλαμβάνει, όπως έχει ήδη αναφερθεί, τρία εξίσου

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

Προγραμματισμός Η/Υ. Προτεινόμενα θέματα εξετάσεων Εργαστήριο. Μέρος 1 ό. ΤΕΙ Λάρισας- Σχολή Τεχνολογικών Εφαρμογών Τμήμα Πολιτικών Έργων Υποδομής

Προγραμματισμός Η/Υ. Προτεινόμενα θέματα εξετάσεων Εργαστήριο. Μέρος 1 ό. ΤΕΙ Λάρισας- Σχολή Τεχνολογικών Εφαρμογών Τμήμα Πολιτικών Έργων Υποδομής Προγραμματισμός Η/Υ Προτεινόμενα θέματα εξετάσεων Εργαστήριο Μέρος 1 ό ΤΕΙ Λάρισας- Σχολή Τεχνολογικών Εφαρμογών Τμήμα Πολιτικών Έργων Υποδομής Ιανουάριος 2011 Καλογιάννης Γρηγόριος Επιστημονικός/ Εργαστηριακός

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 «Προγραμματισμός Η/Υ» - Τετράδιο Εργαστηρίου #4 2 Γενικά Στο Τετράδιο #4 του Εργαστηρίου θα αναφερθούμε σε θέματα διαχείρισης πινάκων

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

Επανάληψη για τις Τελικές εξετάσεις. (Διάλεξη 24) ΕΠΛ 032: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ

Επανάληψη για τις Τελικές εξετάσεις. (Διάλεξη 24) ΕΠΛ 032: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ Επανάληψη για τις Τελικές εξετάσεις (Διάλεξη 24) Εισαγωγή Το μάθημα EPL032 έχει ως βασικό στόχο την επίλυση προβλημάτων πληροφορικής με την χρήση της γλώσσας προγραμματισμού C. Επομένως πρέπει: Nα κατανοήσετε

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