ΠΕΡΙΕΧΟΜΕΝΑ ΜΑΘΗΜΑΤΟΣ
Α. Θεωρία
1. Η Γλώσσα C++
1.1. Γενικά
1.2. Ιστορία – Εκδόσεις
1.3. Η αναγκαιότητα της C
1.4. Μεταγλωττιστές
2. Hello World!
2.1. Πηγαίος Κώδικας
2.2. Σχόλια
2.3. Βιβλιοθήκη iostream
2.4. main, block κώδικα, return
2.5 Είσοδος/Έξοδος
2.5.1. Έξοδος με την cout
2.5.2. Οδηγία using
2.5.3. Περισσότερα για την cout
2.5.4. Είσοδος με την cin
3. Στοιχεία της C
3.1. Μεταβλητές
3.2. Σταθερές
3.3. Τελεστές και η Δομή Ελέγχου
3.4. Δομές Επανάληψης
3.5. Συναρτήσεις
3.5.1. Πολυμορφισμός Συναρτήσεων
3.6. Πίνακες
3.7. Συμβολοσειρές
3.8. Δείκτες
B.Ασκήσεις
Εφαρμογή 1
Εφαρμογή 2
Εφαρμογή 3
Α. Θεωρία
1. Κλάσεις
1.1 Γενικά
1.2 Ορισμός Κλάσης
1.3 Δημόσια (public) στοιχεία της κλάσης
1.4 Ιδιωτικά (private) στοιχεία της κλάσης
1.5 Παράδειγμα (προδιαγραφές)
2 Περισσότερα για τις κλάσεις
2.1 Ορισμός Συναρτήσεων έξω από την Κλάση
2.2 Παρουσίαση Ιδιωτικών – Δημόσιων Μέλων μιας κλάσης
2.3 Χωρισμός σε Αρχεία
3. Ειδικές Μεθόδοι Κλάσεων
3.1 Γενικά
3.2 Κατασκευαστής (constructor)
3.3 Καταστροφέας (destructor)
3.4 Ελεγκτές Πρόσβασης (accessors)
B. Ασκήσεις
ΠΕΡΙΕΧΟΜΕΝΑ ΜΑΘΗΜΑΤΟΣ
Α. Θεωρία
1.Διαχείριση Μνήμης
1.1.Στατική Δέσμευση Μνήμης
1.2.Στατική Δέσμευση Μνήμης για Συνήθεις Μεταβλητές
1.3.Στατική Δέσμευση Μνήμης για Αντικείμενα
2.Δυναμική Δέσμευση Μνήμης
2.1.Δείκτες (Υπενθύμιση από C)
2.2.Οι τελεστές new και delete
2.3.Δυναμική Δέσμευση για Συνήθεις Μεταβλητές
2.4.Δυναμική Δέσμευση για Αντικείμενα
2.5.Δυναμική Δέσμευση και Κατασκευαστές
3.Κλάσεις που περιέχουν δείκτες
3.1.Παράδειγμα κλάσης που περιέχει δείκτες
3.2.…και ένα πρόβλημα (χωρίς λύση για την ώρα)
4..Δυναμική Δέσμευση Μνήμης για Πίνακες
4.1.Μονοδιάστατοι πίνακες
4.2.Παράδειγμα δέσμευσης μνήμης για μονοδιάστατους πίνακες
4.3.Διδιάστατοι πίνακες
4.4.Παράδειγμα δέσμευσης μνήμης για διδιάστατους πίνακες
B. Ασκήσεις
Α. Πίνακες
Α.1) Εισαγωγή στους Πίνακες
Α.1.1) Μονοδιάστατοι Πίνακες
Α.1.2) Παράδειγμα
B. Δομές Επανάληψης
Β.1) Γενικά
Β.2) Η δομή for
Β.2.1) Συντακτικό της for
Β.2.2) Διάγραμμα Ροής Προγράμματος
Β.2.3) Παραδείγματα Εκτέλεσης
Β.3) Η δομή do…while
Β.3.1) Συντακτικό της do…while
Β.3.2) Διάγραμμα Ροής Προγράμματος
Β.3.3) Παραδείγματα Εκτέλεσης
Β.3.4) Αμυντικός Προγραμματισμός
Β.4) Η δομή while
Β.4.1) Συντακτικό της while
Β.4.2) Διάγραμμα Ροής Προγράμματος
Β.4.3) Παραδείγματα Εκτέλεσης
Β.4.4) Αμυντικός Προγραμματισμός
Β.5) Συμπεράσματα
Β.5.1) Προτεινόμενη χρήση των δομών επανάληψης
Β.5.2) Προσομοίωση της for από την while και τη do..while
Γ) Ασκήσεις
Γ.1) Άθροισμα και Γινόμενο Αριθμών
Γ.2) Εμφωλιασμένοι Βρόχοι: Εκτύπωση Αθροισμάτων
Γ.3) Εμφωλιασμένοι Βρόχοι: Εκτύπωση Παραλληλογράμμου
Γ.4) Εμφωλιασμένοι Βρόχοι: Εκτύπωση Τριγώνου
Γ.5) Άθροισμα Αριθμών με Χρήση Πίνακα
Γ.6) Γινόμενο Αριθμών με Χρήση Πίνακα
Γ.7) Ελάχιστος από N αριθμούς
Γ.8) Μέσος Όρος Ν αριθμών
Α. Θεωρία
1. Κλάσεις
1.1 Γενικά
1.2 Ορισμός Κλάσης
1.3 Δημόσια (public) στοιχεία της κλάσης
1.4 Ιδιωτικά (private) στοιχεία της κλάσης
1.5 Παράδειγμα (προδιαγραφές)
2 Περισσότερα για τις κλάσεις
2.1 Ορισμός Συναρτήσεων έξω από την Κλάση
2.2 Παρουσίαση Ιδιωτικών – Δημόσιων Μέλων μιας κλάσης
2.3 Χωρισμός σε Αρχεία
3. Ειδικές Μεθόδοι Κλάσεων
3.1 Γενικά
3.2 Κατασκευαστής (constructor)
3.3 Καταστροφέας (destructor)
3.4 Ελεγκτές Πρόσβασης (accessors)
B. Ασκήσεις
ΠΕΡΙΕΧΟΜΕΝΑ ΜΑΘΗΜΑΤΟΣ
Α. Θεωρία
1.Διαχείριση Μνήμης
1.1.Στατική Δέσμευση Μνήμης
1.2.Στατική Δέσμευση Μνήμης για Συνήθεις Μεταβλητές
1.3.Στατική Δέσμευση Μνήμης για Αντικείμενα
2.Δυναμική Δέσμευση Μνήμης
2.1.Δείκτες (Υπενθύμιση από C)
2.2.Οι τελεστές new και delete
2.3.Δυναμική Δέσμευση για Συνήθεις Μεταβλητές
2.4.Δυναμική Δέσμευση για Αντικείμενα
2.5.Δυναμική Δέσμευση και Κατασκευαστές
3.Κλάσεις που περιέχουν δείκτες
3.1.Παράδειγμα κλάσης που περιέχει δείκτες
3.2.…και ένα πρόβλημα (χωρίς λύση για την ώρα)
4..Δυναμική Δέσμευση Μνήμης για Πίνακες
4.1.Μονοδιάστατοι πίνακες
4.2.Παράδειγμα δέσμευσης μνήμης για μονοδιάστατους πίνακες
4.3.Διδιάστατοι πίνακες
4.4.Παράδειγμα δέσμευσης μνήμης για διδιάστατους πίνακες
B. Ασκήσεις
Α. Πίνακες
Α.1) Εισαγωγή στους Πίνακες
Α.1.1) Μονοδιάστατοι Πίνακες
Α.1.2) Παράδειγμα
B. Δομές Επανάληψης
Β.1) Γενικά
Β.2) Η δομή for
Β.2.1) Συντακτικό της for
Β.2.2) Διάγραμμα Ροής Προγράμματος
Β.2.3) Παραδείγματα Εκτέλεσης
Β.3) Η δομή do…while
Β.3.1) Συντακτικό της do…while
Β.3.2) Διάγραμμα Ροής Προγράμματος
Β.3.3) Παραδείγματα Εκτέλεσης
Β.3.4) Αμυντικός Προγραμματισμός
Β.4) Η δομή while
Β.4.1) Συντακτικό της while
Β.4.2) Διάγραμμα Ροής Προγράμματος
Β.4.3) Παραδείγματα Εκτέλεσης
Β.4.4) Αμυντικός Προγραμματισμός
Β.5) Συμπεράσματα
Β.5.1) Προτεινόμενη χρήση των δομών επανάληψης
Β.5.2) Προσομοίωση της for από την while και τη do..while
Γ) Ασκήσεις
Γ.1) Άθροισμα και Γινόμενο Αριθμών
Γ.2) Εμφωλιασμένοι Βρόχοι: Εκτύπωση Αθροισμάτων
Γ.3) Εμφωλιασμένοι Βρόχοι: Εκτύπωση Παραλληλογράμμου
Γ.4) Εμφωλιασμένοι Βρόχοι: Εκτύπωση Τριγώνου
Γ.5) Άθροισμα Αριθμών με Χρήση Πίνακα
Γ.6) Γινόμενο Αριθμών με Χρήση Πίνακα
Γ.7) Ελάχιστος από N αριθμούς
Γ.8) Μέσος Όρος Ν αριθμών
1) Θεωρία
1.1) Κύκλος Ανάπτυξης Προγράμματος
1.1.1) Βήματα Δημιουργία ενός Προγράμματος
1.1.2) Κατέβασμα και εγκατάσταση του Dev-C++
1.2) Το πρώτο πρόγραμμα σε C
1.2.1) Περιγραφή του προγράμματος
1.2.2) Συγγραφή του προγράμματος
1.2.3) Μεταγλώττιση του προγράμματος
1.2.4) Σύνδεση των αρχείων
1.2.5) Εκτέλεση του προγράμματος
1.2.6) Λίγα λόγια για το πρόγραμμα
2) Ασκήσεις
Α. Χαρακτήρες
1) Ο τύπος δεδομένων char
2) O πίνακας ASCII
3) Χρήση Μεταβλητών τύπου char
Β. Συμβολοσειρές
1) Τι είναι η συμβολοσειρά
2) Διάβασμα και Εκτύπωση Συμβολοσειράς
3) Οι συναρτήσεις gets και puts
4) Η βιβλιοθήκη string.h
Γ. Ασκήσεις
Θεωρία
1) Στοιχεία ενός προγράμματος C
2) Η συνάρτηση main()
3) H οδηγία #include
4) Μεταβλητές
5) Εντολές
5.1) Η εντολή printf
5.2) Η εντολή scanf
6) Συναρτήσεις Χρήστη
6.1) Το πρωτότυπο μιας συνάρτησης
6.2) Το σώμα μιας συνάρτησης
6.3) Κλήση μιας συνάρτησης
7) Σχόλια Προγράμματος
Ασκήσεις
ΠΕΡΙΕΧΟΜΕΝΑ ΜΑΘΗΜΑΤΟΣ
Α. Ροές
1) Γενικά
2) Η ροή προκαθορισμένης εισόδου stdin
3) Η ροή προκαθορισμένης εξόδου stdout
4) Η ροή προκαθορισμένης εξόδου λαθών stderr
Β. Συναρτήσεις ροής εισόδου stdin
1) Γενικά
2) Η συνάρτηση getchar()
3) Η συνάρτηση getch()
4) Η συνάρτηση getche()
5) H συνάρτηση ungetc()
6) Η συνάρτηση gets()
7) Η συνάρτηση fgets()
8) Η συνάρτηση scanf()
9) Η συνάρτηση fflush()
Α. Δείκτες
1) Η μνήμη του υπολογιστή
2) Η έννοια του δείκτη
3) Ορισμός Δείκτη
4) Απόδοση τιμής σε δείκτη (Ο τελεστής &)
5) Απόδοση τιμής μέσω δείκτη (ο τελεστής *)
6) Παράδειγμα χρήσης δείκτη
Β. Δείκτες και Πίνακες
1) Το όνομα ενός πίνακα είναι δείκτης
2) Αποθήκευση ενός πίνακα στη μνήμη
3) Αριθμητική Δεικτών
4) Ισοδύναμος Συμβολισμός για πρόσβασή σε πίνακα
Γ. Δείκτες και Συναρτήσεις
1) Διοχέτευση Δείκτη σε Συνάρτηση
2) Διοχέτευση Ορίσματος σε Συνάρτηση μέσω Τιμής
3) Διοχέτευση Ορίσματος σε Συνάρτηση μέσω Αναφοράς
Δ. Παρατηρήσεις
1) Διοχέτευση πίνακα ως όρισμα σε συνάρτηση
2) Η Σταθερά NULL
Ασκήσεις
Α. Έλεγχος Προγράμματος
1) Η εντολή άμεσης επανάληψης continue
2) Η εντολή διακοπής επανάληψης break
3) Η εντολή μεταφοράς ελέγχου προγράμματος goto
4) Η εντολή ελέγχου πολλαπλής συνθήκης switch
Β. Προγραμματιστικές Τεχνικές
1) Ατέρμονες Βρόχοι για την κατασκευή menu
2) Άμεση Έξοδος από το πρόγραμμα
3) Εκτέλεση Εντολών Συστήματος
Γ.Ασκήσεις
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 17 - ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑDimitris Psounis
A. Επικοινωνία με το Λειτουργικό Σύστημα
1) Γενικά
2) Λειτουργικό Σύστημα
3) Ορίσματα Γραμμής Εντολής
3.1) Ορισμός της main με ορίσματα
3.2) Παράδειγμα με διαφορετικό πλήθος ορισμάτων
3.3) Μετατροπή συμβολοσειράς σε άλλο τύπο δεδομένων
4) Ανακατεύθυνση Εισόδου / Εξόδου
4.1) Ανακατεύθυνση εξόδου
4.2) Ανακατεύθυνση εισόδου
B. Ασκήσεις
A. Θεωρία
1. Αλγόριθμοι και Ψευδογλώσσα
1.1) Ορισμός Αλγορίθμου
1.2) Ψευδογλώσσα
1.3) Γενική Συνθήκη για τη συνέχεια των μαθημάτων
2) Εγκατάσταση του Μεταγλωττιστή
2.1) Εγκατάσταση του DevC++
2.2) Εγκατάσταση του Μεταγλωττιστή Ψευδογλώσσας
3) Το πρώτο μας πρόγραμμα σε ψευδογλώσσα
3.1) Δημιουργία Αρχείου Ψευδογλώσσας
3.2) Πληκτρολόγηση του Κώδικα του Προγράμματος
3.3) Μεταγλώττιση του προγράμματος
3.4) Εκτέλεση του προγράμματος
1) Θεωρία
1.1) Κύκλος Ανάπτυξης Προγράμματος
1.1.1) Βήματα Δημιουργία ενός Προγράμματος
1.1.2) Κατέβασμα και εγκατάσταση του Dev-C++
1.2) Το πρώτο πρόγραμμα σε C
1.2.1) Περιγραφή του προγράμματος
1.2.2) Συγγραφή του προγράμματος
1.2.3) Μεταγλώττιση του προγράμματος
1.2.4) Σύνδεση των αρχείων
1.2.5) Εκτέλεση του προγράμματος
1.2.6) Λίγα λόγια για το πρόγραμμα
2) Ασκήσεις
Α. Χαρακτήρες
1) Ο τύπος δεδομένων char
2) O πίνακας ASCII
3) Χρήση Μεταβλητών τύπου char
Β. Συμβολοσειρές
1) Τι είναι η συμβολοσειρά
2) Διάβασμα και Εκτύπωση Συμβολοσειράς
3) Οι συναρτήσεις gets και puts
4) Η βιβλιοθήκη string.h
Γ. Ασκήσεις
Θεωρία
1) Στοιχεία ενός προγράμματος C
2) Η συνάρτηση main()
3) H οδηγία #include
4) Μεταβλητές
5) Εντολές
5.1) Η εντολή printf
5.2) Η εντολή scanf
6) Συναρτήσεις Χρήστη
6.1) Το πρωτότυπο μιας συνάρτησης
6.2) Το σώμα μιας συνάρτησης
6.3) Κλήση μιας συνάρτησης
7) Σχόλια Προγράμματος
Ασκήσεις
ΠΕΡΙΕΧΟΜΕΝΑ ΜΑΘΗΜΑΤΟΣ
Α. Ροές
1) Γενικά
2) Η ροή προκαθορισμένης εισόδου stdin
3) Η ροή προκαθορισμένης εξόδου stdout
4) Η ροή προκαθορισμένης εξόδου λαθών stderr
Β. Συναρτήσεις ροής εισόδου stdin
1) Γενικά
2) Η συνάρτηση getchar()
3) Η συνάρτηση getch()
4) Η συνάρτηση getche()
5) H συνάρτηση ungetc()
6) Η συνάρτηση gets()
7) Η συνάρτηση fgets()
8) Η συνάρτηση scanf()
9) Η συνάρτηση fflush()
Α. Δείκτες
1) Η μνήμη του υπολογιστή
2) Η έννοια του δείκτη
3) Ορισμός Δείκτη
4) Απόδοση τιμής σε δείκτη (Ο τελεστής &)
5) Απόδοση τιμής μέσω δείκτη (ο τελεστής *)
6) Παράδειγμα χρήσης δείκτη
Β. Δείκτες και Πίνακες
1) Το όνομα ενός πίνακα είναι δείκτης
2) Αποθήκευση ενός πίνακα στη μνήμη
3) Αριθμητική Δεικτών
4) Ισοδύναμος Συμβολισμός για πρόσβασή σε πίνακα
Γ. Δείκτες και Συναρτήσεις
1) Διοχέτευση Δείκτη σε Συνάρτηση
2) Διοχέτευση Ορίσματος σε Συνάρτηση μέσω Τιμής
3) Διοχέτευση Ορίσματος σε Συνάρτηση μέσω Αναφοράς
Δ. Παρατηρήσεις
1) Διοχέτευση πίνακα ως όρισμα σε συνάρτηση
2) Η Σταθερά NULL
Ασκήσεις
Α. Έλεγχος Προγράμματος
1) Η εντολή άμεσης επανάληψης continue
2) Η εντολή διακοπής επανάληψης break
3) Η εντολή μεταφοράς ελέγχου προγράμματος goto
4) Η εντολή ελέγχου πολλαπλής συνθήκης switch
Β. Προγραμματιστικές Τεχνικές
1) Ατέρμονες Βρόχοι για την κατασκευή menu
2) Άμεση Έξοδος από το πρόγραμμα
3) Εκτέλεση Εντολών Συστήματος
Γ.Ασκήσεις
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 17 - ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑDimitris Psounis
A. Επικοινωνία με το Λειτουργικό Σύστημα
1) Γενικά
2) Λειτουργικό Σύστημα
3) Ορίσματα Γραμμής Εντολής
3.1) Ορισμός της main με ορίσματα
3.2) Παράδειγμα με διαφορετικό πλήθος ορισμάτων
3.3) Μετατροπή συμβολοσειράς σε άλλο τύπο δεδομένων
4) Ανακατεύθυνση Εισόδου / Εξόδου
4.1) Ανακατεύθυνση εξόδου
4.2) Ανακατεύθυνση εισόδου
B. Ασκήσεις
A. Θεωρία
1. Αλγόριθμοι και Ψευδογλώσσα
1.1) Ορισμός Αλγορίθμου
1.2) Ψευδογλώσσα
1.3) Γενική Συνθήκη για τη συνέχεια των μαθημάτων
2) Εγκατάσταση του Μεταγλωττιστή
2.1) Εγκατάσταση του DevC++
2.2) Εγκατάσταση του Μεταγλωττιστή Ψευδογλώσσας
3) Το πρώτο μας πρόγραμμα σε ψευδογλώσσα
3.1) Δημιουργία Αρχείου Ψευδογλώσσας
3.2) Πληκτρολόγηση του Κώδικα του Προγράμματος
3.3) Μεταγλώττιση του προγράμματος
3.4) Εκτέλεση του προγράμματος
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ (4δ)Dimitris Psounis
ΠΕΡΙΕΧΟΜΕΝΑ ΜΑΘΗΜΑΤΟΣ
Α. Θεωρία
1.Διαχείριση Μνήμης
1.1.Στατική Δέσμευση Μνήμης
1.2.Στατική Δέσμευση Μνήμης για Συνήθεις Μεταβλητές
1.3.Στατική Δέσμευση Μνήμης για Αντικείμενα
2.Δυναμική Δέσμευση Μνήμης
2.1.Δείκτες (Υπενθύμιση από C)
2.2.Οι τελεστές new και delete
2.3.Δυναμική Δέσμευση για Συνήθεις Μεταβλητές
2.4.Δυναμική Δέσμευση για Αντικείμενα
2.5.Δυναμική Δέσμευση και Κατασκευαστές
3.Κλάσεις που περιέχουν δείκτες
3.1.Παράδειγμα κλάσης που περιέχει δείκτες
3.2.…και ένα πρόβλημα (χωρίς λύση για την ώρα)
4..Δυναμική Δέσμευση Μνήμης για Πίνακες
4.1.Μονοδιάστατοι πίνακες
4.2.Παράδειγμα δέσμευσης μνήμης για μονοδιάστατους πίνακες
4.3.Διδιάστατοι πίνακες
4.4.Παράδειγμα δέσμευσης μνήμης για διδιάστατους πίνακες
B. Ασκήσεις
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ (4 διαφ)Dimitris Psounis
Α. Θεωρία
1. Κλάσεις
1.1 Γενικά
1.2 Ορισμός Κλάσης
1.3 Δημόσια (public) στοιχεία της κλάσης
1.4 Ιδιωτικά (private) στοιχεία της κλάσης
1.5 Παράδειγμα (προδιαγραφές)
2 Περισσότερα για τις κλάσεις
2.1 Ορισμός Συναρτήσεων έξω από την Κλάση
2.2 Παρουσίαση Ιδιωτικών – Δημόσιων Μέλων μιας κλάσης
2.3 Χωρισμός σε Αρχεία
3. Ειδικές Μεθόδοι Κλάσεων
3.1 Γενικά
3.2 Κατασκευαστής (constructor)
3.3 Καταστροφέας (destructor)
3.4 Ελεγκτές Πρόσβασης (accessors)
B. Ασκήσεις
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C (4sl/p)Dimitris Psounis
ΠΕΡΙΕΧΟΜΕΝΑ ΜΑΘΗΜΑΤΟΣ
Α. Θεωρία
1. Η Γλώσσα C++
1.1. Γενικά
1.2. Ιστορία – Εκδόσεις
1.3. Η αναγκαιότητα της C
1.4. Μεταγλωττιστές
2. Hello World!
2.1. Πηγαίος Κώδικας
2.2. Σχόλια
2.3. Βιβλιοθήκη iostream
2.4. main, block κώδικα, return
2.5 Είσοδος/Έξοδος
2.5.1. Έξοδος με την cout
2.5.2. Οδηγία using
2.5.3. Περισσότερα για την cout
2.5.4. Είσοδος με την cin
3. Στοιχεία της C
3.1. Μεταβλητές
3.2. Σταθερές
3.3. Τελεστές και η Δομή Ελέγχου
3.4. Δομές Επανάληψης
3.5. Συναρτήσεις
3.5.1. Πολυμορφισμός Συναρτήσεων
3.6. Πίνακες
3.7. Συμβολοσειρές
3.8. Δείκτες
B.Ασκήσεις
Εφαρμογή 1
Εφαρμογή 2
Εφαρμογή 3
Weatherman 1-hour Speed Course for Web [2024]Andreas Batsis
Εκλαϊκευμένη Διδασκαλία Μετεωρολογίας. Η συγκεκριμένη παρουσίαση παρέχει συνοπτικά το 20% της πληροφορίας σχετικά με το πως λειτουργεί ο καιρός, η οποία πληροφορία θα παρέχει στον αναγνώστη τη δυνατότητα να ερμηνεύει το 80% των καιρικών περιπτώσεων με τη χρήση ιντερνετικών εργαλείων. Η λογική της παρουσίασης βασίζεται κατά κύριο λόγο στην εφαρμογή και δευτερευόντως στην επιστημονική ερμηνεία η οποία περιορίζεται στα απολύτως απαραίτητα.
Vision Based Coaching-EMCC CY Knowledge Meeting 28.05.24.pdf
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C
1. H ΓΛΩΣΣΑ C++
Μάθημα 1:
Εισαγωγή στην C++ και σχέση με την γλώσσα C
Δημήτρης Ψούνης
2. Περιεχόμενα Μαθήματος
Α. Θεωρία
1. Η Γλώσσα C++
1. Γενικά
2. Ιστορία – Εκδόσεις
3. Η αναγκαιότητα της C
4. Μεταγλωττιστές
2. Hello World!
1. Πηγαίος Κώδικας
2. Σχόλια
3. Βιβλιοθήκη iostream
4. main, block κώδικα, return
5. Είσοδος/Έξοδος
1. Έξοδος με την cout
2. Οδηγία using
3. Περισσότερα για την cout
4. Είσοδος με την cin
2Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 1: Εισαγωγή στην C++ και σχέση με την C
3. Στοιχεία της C
1. Μεταβλητές
2. Σταθερές
3. Τελεστές και η Δομή Ελέγχου
4. Δομές Επανάληψης
5. Συναρτήσεις
1. Πολυμορφισμός Συναρτήσεων
6. Πίνακες
7. Συμβολοσειρές
8. Δείκτες
Ασκήσεις
3. A. Θεωρία
1. Η Γλώσσα C++
1. Γενικά
3
Η Γλώσσα Προγραμματισμού C++
• Είναι μια επέκταση της γλώσσας C με
• Την οργάνωση των δεδομένων και των
συναρτήσεων σε μία ενιαία οντότητα που
ονομάζεται κλάση (class)
• Οργάνωση των δεδομένων και των
συναρτήσεων της κλάσης, ώστε να
επιτυγχάνεται απόκρυψη πληροφορίας:
ενθυλάκωση (encapsulation)
• Η δυνατότητα των κλάσεων να
κληρονομούνται (inheritance) από άλλες
κλάσεις και να προσθέτουν την δική τους
λειτουργικότητα
• Η δυνατότητα συναρτήσεων και κλάσεων
να είναι πολυμορφικές (polymorphism)
• Ένα όνομα θα μπορεί να κάνει
διαφορετικές ενέργειες
• Με πολλές καινούργιες βιβλιοθήκες, οι οποίες
κάνουν πιο αποδοτικό τον προγραμματισμό
μεγαλύτερων projects.
Παράδειγμα:
Θέλω να κατασκευάσω ένα παιχνίδι, το
οποίο θα έχει για ήρωα τον σκύλο «Πίκο»
(μικρόσωμο) και τον σκύλο «Αζόρ»
(μεγαλόσωμο)
• Θα ορίσω μία κλάση με όνομα σκύλος
με όλη τη συμπεριφορά του σκύλου
• Η ενέργεια «γάβγισε» θα είναι δημόσια,
ενώ η ενέργεια «εκνευρισμός» θα είναι
εσωτερική (ενθυλάκωση)
• Την κλάση αυτή θα την κληρονομούν
δύο υπό-κλάσεις οι οποίες θα
εξειδικεύουν τα χαρακτηριστικά των
μεγαλόσωμων και μικρόσωμων σκύλων.
• Ο Πίκο θα είναι ένα αντικείμενο της
κλάσης «Μικρόσωμος σκύλος»
• Η κλάση θα έχει μία μέθοδο «γάβγισε»,
που θα αντιδρά διαφορετικά, αν ο σκύλος
γαβγίζει μία γάτα ή έναν άνθρωπο
(πολυμορφισμός)
Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 1: Εισαγωγή στην C++ και σχέση με την C
4. A. Θεωρία
1. Η Γλώσσα C++
2. Ιστορία – Εκδόσεις C++
4
• 1979 «C with classes» από τον Bjarne Stroustroup
• στα εργαστήρια της Bell και της ΑΤ & T
• 1984 Μετονομασία σε «C++» με αρκετές προσθήκες
• 1989 2η έκδοση της C++ με πολλές προσθήκες ακόμη στη γλώσσα
• 1998 Πρώτη standard έκδοση με πρότυπο ISO
• Από το 2011 βγαίνει μία καινούργια έκδοση κάθε 3 χρόνια συνήθως
με αλλαγές που συνήθως είναι επεκτάσεις της γλώσσας. Εκδόσεις:
• C++11 (2011)
• C++14 (2014)
• C++17 (2017)
• επόμενη έκδοση C++20 (2020)
Bjarne Stroustrup
Σημείωση:
• Το όνομα C++ σημαίνει
• Αύξηση της C κατά 1 (με βάση τον τελεστή ++, που σημαίνει αύξηση κατά 1)
• Άρα είναι μία επέκταση της C, ωστόσο:
• Δεν είναι αυστηρό υπερσύνολο της, υπάρχουν κάποια (λίγα) χαρακτηριστικά της C που
δεν δουλεύουν σε C++.
Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 1: Εισαγωγή στην C++ και σχέση με την C
5. A. Θεωρία
1. Η Γλώσσα C++
3. Η αναγκαιότητα της C
5
• Η C++ «πατάει» πάνω στην γλώσσα C
• Γι’αυτό είναι απαραίτητη καλή γνώση της C
• Ωστόσο δεν είναι απαραίτητη η γνώση όλων των χαρακτηριστικών της C
• Για παράδειγμα οι περισσότερες βιβλιοθήκες συναρτήσεων αλλάζουν στην C++ και
γίνονται (συνήθως) πιο εύκολες στην χρήση.
• Τα περισσότερα βασικά χαρακτηριστικά όμως είναι ίδια.
• Π.χ. ο χειρισμός
• Μεταβλητών, Τύπων Δεδομένων
• Δομής Ελέγχου, Δομών Επανάληψης
• Συναρτήσεων
• Πινάκων
• Δεικτών
• είναι ίδιος στην C++ και είναι προαπαιτούμενος για την κατανόηση των νέων
χαρακτηριστικών (κλάσεις, κληρονομικότητα κ.λπ.)
• Αλλά η μεγάλη διαφορά της C με την C++ είναι η μετατόπιση του ενδιαφέροντος στην δόμηση
των προγραμμάτων από:
• τις συναρτήσεις της C (διαδικαστικός προγραμματισμός)
• στα αντικείμενα της C++ (αντικειμενοστραφής προγραμματισμός – object oriented
programming)
• Στην συνέχεια του μαθήματος θα κάνουμε μία υπενθύμιση των βασικών χαρακτηριστικών της
γλώσσας C (με κάποια νέα στοιχεία).
Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 1: Εισαγωγή στην C++ και σχέση με την C
6. A. Θεωρία
1. Η Γλώσσα C++
4. Μεταγλωττιστές
6
• Υπάρχουν δεκάδες μεταγλωττιστές της γλώσσας C++, είτε δωρεάν, είτε με πληρωμή.
• Στα πλαίσια αυτής της σειράς μαθημάτων θα χρησιμοποιήσουμε τον (δωρεάν) online
μεταγλωττιστή OnlineGDB
• Στην σελίδα https://www.onlinegdb.com/
• Χρησιμοποιεί τον μεταγλωττιστή g++
• Έχει μηχανισμό για debugging
Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 1: Εισαγωγή στην C++ και σχέση με την C
7. A. Θεωρία
2. Hello World!
1. Πηγαίος κώδικας
7
• Δημιουργούμε το νέο project CPP1.helloworld.cpp
• και το εκτελούμε:
/* CPP1.helloworld.cpp */
#include <iostream>
int main()
{
std::cout<<"Hello World!";
return 0;
}
Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 1: Εισαγωγή στην C++ και σχέση με την C
8. A. Θεωρία
2. Hello World!
2. Σχόλια
8
• Βλέπουμε την πρώτη γραμμή
• Είναι ένα σχόλιο. Συνηθίζεται να γράφουμε στην αρχή, το όνομα του αρχείου με κάποια
επεξηγηματικά σχόλια.
• Τα σχόλια γράφονται όπως στην C και υπάρχουν δύο είδη σχολίων:
• Σχόλια πολλών γραμμών. Ξεκινάνε με /* και τελέιώνουν με */
• Σχόλια μίας γραμμής. Ξεκινάνε με //
/* CPP1.helloworld.cpp */
Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 1: Εισαγωγή στην C++ και σχέση με την C
/* Αυτό
είναι ένα σχόλιο πολλών
γραμμών */
// Αυτό είναι ένα σχόλιο μίας γραμμής
9. A. Θεωρία
2. Hello World!
3. Βιβλιοθήκη iostream
9
• Βλέπουμε την γραμμή
• Είναι μια οδηγία για τον προεπεξεργαστή (ξεκινά με το #)
• Λέει πρακτικά, βρες το αρχείο (iostream.h) και βάλε τα περιεχόμενά του εδώ.
• Η βιβλιοθήκη iostream.h
• Περιέχει τις standard κλάσεις/συναρτήσεις για τον χειρισμό εισόδου/εξόδου
#include <iostream>
Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 1: Εισαγωγή στην C++ και σχέση με την C
Παρατηρήσεις:
• Η βιβλιοθήκη iostream.h αντικαθιστά την stdio.h της C
• Η βιβλιοθήκη είναι απαραίτητη για το αντικείμενο cout, το οποίο κάνει το χειρισμό της εξόδου
στην οθόνη, εδώ της συμβολοσειράς «Hello World!»
10. A. Θεωρία
2. Hello World!
4. main, block κώδικα, return
10
• Η συνάρτηση main είναι το σημείο εισόδου του προγράμματος μας.
• Με το που ξεκινάει να τρέχει, εκτελούνται σειριακά οι εντολές μέσα στην main.
• H main υποχρεωτικά επιστρεφει ακέραια τιμή.
• Η επιστροφή γίνεται στο λειτουργικό σύστημα που τρέχει το εκτελέσιμο.
• Η τιμή 0 σημαίνει ότι όλα πήγαν καλά (κατά σύμβαση)
• Ο προγραμματιστής μπορεί να διαχειριστεί μη μηδενικές τιμές για να δείξει (στο
λειτουργικό) ότι κάτι δεν πήγε καλά στην εκτέλεση του προγράμματος.
• Τα άγκιστρα πάντα ορίζουν την αρχή και το τέλος της συνάρτησης main
• και λέμε ότι ορίζεται από αυτά, ένα μπλοκ κώδικα.
int main()
{
…
return 0;
}
Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 1: Εισαγωγή στην C++ και σχέση με την C
Παρατηρήσεις:
• H χρήση της return είναι ίδια με την C
• Είναι μία εντολή, άρα πρέπει να ακολουθείται από ερωτηματικό.
11. 11
• Το αντικείμενο std::cout χρησιμοποιείται για την έξοδο δεδομένων στην οθόνη
• Η πλήρης κατανόηση του, απαιτεί την γνώση κλάσεων, άλλά θα δώσουμε μια πρόχειρη
ιδέα (αν δεν την κατανοούμε πλήρως, δεν πειράζει για την ώρα).
• Η βιβλιοθήκη iostream ορίζει μεταξύ άλλων:
• Ένα αντικείμενο που λέγεται cout το οποίο τυπώνει στην οθόνη
• Οι κλάσεις/αντικείμενα εισόδου/εξόδου της iostream ορίζονται σε έναν χώρο ονομάτων
(namespace) που ονομάζεται std
• Ο χώρος ονομάτων χρησιμοποιείται για να μην έχουν τα αντικείμενα αυτά καθολική
εμβέλεια.
• Ο χώρος ονομάτων std περιέχεται στο iostream.h
• Οπότε η έκφραση std::cout σημαίνει:
• Βρες το αντικείμενο cout το οποίο βρίσκεται στον χώρο ονομάτων std.
• To << θα το ονομάζουμε τελεστή εξόδου.
• Πρακτικά λέμε στο αντικείμενο std::cout, πάρε σαν είσοδο αυτή την συμβολοσειρά
(Hello World!) και τύπωσε την στην οθόνη.
std::cout<<“Hello World!”;
Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 1: Εισαγωγή στην C++ και σχέση με την C
Παρατήρηση:
• Περισσότερα για τους χώρους ονομάτων θα δούμε στη συνέχεια του μαθήματος.
A. Θεωρία
2. Hello World!
5. Είσοδος / Έξοδος (1. Έξοδος με την cout)
12. 12
• Με την οδηγία using, μπορούμε να δώσουμε εντολή στο πρόγραμμα μας:
• να ενσωματώσει στο πρόγραμμα μας ένα στοιχείο (αντικείμενο, σταθερά κ.ο.κ)
• ώστε να μην γράφουμε κάθε φορά που βρίσκεται το αντικείμενο cout
• Έτσι ο ακόλουθος κώδικας είναι κομψότερος:
/* CPP1.helloworld2.cpp using std::cout */
#include <iostream>
using std::cout;
int main()
{
cout<<"Hello World!";
return 0;
}
Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 1: Εισαγωγή στην C++ και σχέση με την C
A. Θεωρία
2. Hello World!
5. Είσοδος / Έξοδος (2. Οδηγία using)
13. 13
• και ο δρόμος του τεμπέλη:
• Δίνουμε οδηγία στο πρόγραμμα μας να ενσωματώσει όλα τα στοιχεία του χώρου ονομάτων
της std.
• Χρησιμοποιώντας την οδηγία using namespace std;
/* CPP1.helloworld3.cpp Ενσωμάτωση όλης της std*/
#include <iostream>
using namespace std;
int main()
{
cout<<"Hello World!";
return 0;
}
Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 1: Εισαγωγή στην C++ και σχέση με την C
A. Θεωρία
2. Hello World!
5. Είσοδος / Έξοδος (2. Οδηγία using)
14. 14
• Ο τελεστής << λέμε ότι είναι υπερφορτωμένος (overloaded)
• διότι μπορεί να προβάλλει στην οθόνη, διαφορετικούς τύπους δεδομένων.
• Στα προηγούμενα παραδείγματα είδαμε πως μπορεί να προβάλλει συμβολοσειρές
• Ας δούμε πως μπορούμε να προβάλλουμε ακέραιες και πραγματικές μεταβλητές
Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 1: Εισαγωγή στην C++ και σχέση με την C
A. Θεωρία
2. Hello World!
5. Είσοδος / Έξοδος (3. Περισσότερα για την cout)
/* CPP1.overloading.cpp Εκτύπωση διαφορετικών τύπων δεδομένων */
#include <iostream>
using namespace std;
int main()
{
int x = 5;
double y = 5.01;
cout<<"To x einai ";
cout<<x;
cout<<" kai to y einai ";
cout<<y;
return 0;
}
15. 15
• Στην std έχει οριστεί και το std::endl
• Το οποίο αλλάζει γραμμή στην κονσόλα.
• Μπορούμε και να ενσωματώσουμε τον χαρακτήρα n μέσα σε μία συμβολοσειρά της C
• Επίσης, ο τελεστής << μπορεί να γραφεί και πολλές φορές στην ίδια γραμμή μίας cout.
Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 1: Εισαγωγή στην C++ και σχέση με την C
A. Θεωρία
2. Hello World!
5. Είσοδος / Έξοδος (4. Περισσότερα για την cout)
/* CPP1.endl.cpp Χρήση του endl */
#include <iostream>
using namespace std;
int main()
{
int x = 5;
double y = 5.01;
cout<<"To x einai "<<x<<endl<<"kai to y einai "<<y<<"n";
return 0;
}
16. 16
• H std::cin χρησιμοποιείται για την είσοδο από το το πληκτρολόγιο
• Αντικαθιστά την scanf της C
• Λειτουργεί όπως η cout
• Με την διαφορά ότι ο τελεστής εισόδου που έχει οριστεί είναι ο >>
Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 1: Εισαγωγή στην C++ και σχέση με την C
A. Θεωρία
2. Hello World!
5. Είσοδος / Έξοδος (5. Είσοδος με την cin)
/* CPP1.cin.cpp Χρήση της cin */
#include <iostream>
using namespace std;
int main()
{
int x;
cout<<"Dwse x: ";
cin>>x;
cout<<"To x einai: "<<x;
return 0;
}
Παρατήρηση:
• Οι cin και cout είναι περίπλοκα αντικείμενα. Θα τα μελετήσουμε αναλυτικά σε επόμενο μάθημα
17. 17Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 1: Εισαγωγή στην C++ και σχέση με την C
• Ο ορισμός των μεταβλητών γίνεται όπως στην C
• Π.χ. η δήλωση:
• δηλώνει μία ακέραια μεταβλητή και της αναθέτει την τιμή 5.
• Οι τύποι δεδομένων της C υπάρχουν αυτούσιοι στην C++:
• char, short, int, long για ακέραιες τιμές
• float, double για πραγματικές τιμές
• Και ορίζεται ένας νέος τύπος δεδομένων:
int x=5;
Ο τύπος δεδομένων bool απεικονίζει λογικές τιμές, και συγκεκριμένα δέχεται μόνο δύο τιμές:
• true (λογικό αληθές). Δεσμευμένη λέξη (keyword) με τιμή 1.
• false (λογικό ψευδές). Δεσμευμένη λέξη (keyword) με τιμή 0.
Παρατηρήσεις:
• Κάθε αριθμητική τιμή μετατρέπεται σε λογική τιμή ώς εξής
• Το 0, γίνεται false.
• Κάθε άλλη τιμή, γίνεται true.
• Αναλυτικά βλ. «Γλώσσα C – Μάθημα 3: Μεταβλητές και Σταθερές»
A. Θεωρία
3. Στοιχεία της C
1. Μεταβλητές
18. 18Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 1: Εισαγωγή στην C++ και σχέση με την C
/* CPP1.bool.cpp Χρήση λογικών μεταβλητών */
#include <iostream>
using namespace std;
int main(){
bool x = true;
// Αριθμητική τιμή μίας λογικής μεταβλητής
cout<<x<<endl;
// Μετατροπή αριθμού σε λογική μεταβλητή
x = 4;
cout<<x<<endl;
// Μία συνθήκη που ερμηνεύεται σε μεταβλητή bool.
x = !(0>1);
if (x)
cout<<x<<endl;
return 0;
}
A. Θεωρία
3. Στοιχεία της C
1. Μεταβλητές
19. 19Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 1: Εισαγωγή στην C++ και σχέση με την C
• Ισχύει ο διαχωρισμός των σταθερών σε:
• Αριθμητικές σταθερές, π.χ. 1, 3.14
• Συμβολικές σταθερές
• Είτε με την οδηγία προεπεξεργαστή #define, π.χ.
• Η οποία αντικαθιστά κάθε εμφάνιση της PI με 3.14 πριν την μεταγλώττιση του
προγράμματος
• Είτε με την λέξη κλειδί const πριν από την δήλωση της μεταβλητής, π.χ.
• H οποία απαγορεύει στην μεταβλητή x να αλλάξει την τιμή της κατά την εκτέλεση
του προγράμματος.
#define PI 3.14
Παρατηρήσεις:
• Αναλυτικά βλ. «Γλώσσα C – Μάθημα 3: Μεταβλητές και Σταθερές»
A. Θεωρία
3. Στοιχεία της C
2. Σταθερές
const int x = 2;
20. 20Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 1: Εισαγωγή στην C++ και σχέση με την C
• Οι τελεστές της C είναι ίδιοι στην C++:
• Αριθμητικοί τελεστές:
+,*,-,/,% και ++,--
• Σχεσιακοί τελεστές:
==, >, >=, <, <=, !=
• Λογικοί τελεστές:
&&, ||, !
• και οι συντομογραφίες:
+=, -=, *=, /=, %=
• Ενώ και η σύνταξη της δομής ελέγχου (if)
είναι ίδια.
• Και μπορούμε να χρησιμοποιήσουμε την
switch
Παρατηρήσεις:
• Αναλυτικά βλ. «Γλώσσα C – Μάθημα 4: Τελεστές και η δομή ελέγχου»
• και τη switch από το «Γλώσσα C – Μάθημα 12: Έλεγχος Ροής Προγράμματος»
A. Θεωρία
3. Στοιχεία της C
3. Τελεστές και η δομή ελέγχου
[προηγούμενες εντολές]
if (πρώτη συνθήκη)
{
(εντολές1)
}
else if (δεύτερη συνθήκη)
{
(εντολές2)
}
…
else if (συνθήκηΝ)
{
(εντολέςΝ)
}
else
{
(εντολέςΝ+1)
}
[επόμενες εντολές]
21. 21Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 1: Εισαγωγή στην C++ και σχέση με την C
• Και οι δομές επανάληψης είναι ίδιες με την C:
Παρατηρήσεις:
• Αναλυτικά βλ. «Γλώσσα C – Μάθημα 5: Δομές Επανάληψης»
• και τις break, continue από το «Γλώσσα C – Μάθημα 12: Έλεγχος Ροής Προγράμματος»
A. Θεωρία
3. Στοιχεία της C
4. Δομές Επανάληψης
[προηγούμενες εντολές]
for( αρχική; συνθήκη; βήμα)
{
(εντολές)
}
[επόμενες εντολές]
do
{
(Εντολές)
}
while (Συνθήκη);
while (Συνθήκη)
{
(εντολές)
}
22. 22Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 1: Εισαγωγή στην C++ και σχέση με την C
• Και οι συναρτήσεις είναι ίδιες με την C:
Παρατηρήσεις:
• Αναλυτικά βλ. «Γλώσσα C – Μάθημα 6: Συναρτήσεις»
A. Θεωρία
3. Στοιχεία της C
5. Συναρτήσεις
.....
int func(int x, int y); <- Αυτό είναι το πρωτότυπο της συνάρτησης
Σημείωση: Μπορεί να γραφεί και ως int func(int, int); σε C++
main()
{
....
c=func(a,b); <- Εδώ καλούμε την συνάρτηση στην main,
.... σαν μία ακόμη εντολή του προγράμματος
}
int func(int x, int y) <-Αυτό είναι το σώμα της συνάρτησης
{
return (x*y);
}
23. 23Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 1: Εισαγωγή στην C++ και σχέση με την C
• Μια σημαντική προσθήκη στην C++ είναι ο «πολυμορφισμός» (polymorphism)
• ή πως το ίδιο όνομα μπορεί να κάνει διαφορετικά πράγματα.
• Ο πολυμορφισμός συναρτήσεων στην C++ είναι μία διευκόλυνση:
• Το ίδιο όνομα συνάρτησης μπορεί να χρησιμοποιηθεί για να κάνει διαφορετικές
δουλειές.
• Π.χ. ενώ στην C αν θέλαμε μία συνάρτηση που να προσθέτει είτε int είτε float θα γράφαμε δύο
συναρτήσεις:
• στην C++ μπορούμε να χρησιμοποιήσουμε το ίδιο όνομα συνάρτησης:
• O μεταγλωττιστής αποφασίζει ποια από τις δύο συναρτήσεις θα χρησιμοποιήσει, ανάλογα
με τα ορίσματα της κλήσης της συνάρτησης.
A. Θεωρία
3. Στοιχεία της C
5.1. Πολυμορφισμός Συναρτήσεων
int sumi(int x, int y);
float sumf(float x, floaty);
int sum(int x, int y);
float sum(float x, floaty);
24. 24Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 1: Εισαγωγή στην C++ και σχέση με την C
A. Θεωρία
3. Στοιχεία της C
5.1. Πολυμορφισμός Συναρτήσεων (Παράδειγμα )
/* CPP1.overloading.cpp Υπερφόρτωση
Συναρτήσεων */
#include <iostream>
using namespace std;
int sum(int x, int y);
double sum(double x, double y);
int main()
{
std::cout<<sum(5,3);
std::cout<<" ";
std::cout<<sum(1.1,2.2);
return 0;
}
int sum(int x, int y)
{
return x+y;
}
double sum(double x, double y)
{
return x+y;
}
25. 25Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 1: Εισαγωγή στην C++ και σχέση με την C
• Σημαντικό!
• Ο μεταγλωττιστής αποφασίζει ποια δήλωση να ακολουθήσει ως εξής:
• Βλέπει την κλήση της συνάρτησης και τα ορίσματα που έχουμε βάλει σε αυτήν
• Και καλέι εκείνη την δήλωση που ταιριάζουν τα ορίσματα.
• Δεν λαμβάνει υπόψιν του λοιπόν, την επιστρεφόμενη τιμή.
• Έτσι αν είχαμε τις δηλώσεις συναρτήσεων:
• Αυτές έχουν ίδιο όνομα και ίδια ορίσματα, οπότε δεν διαφοροποιούνται και θα
οδηγήσει σε λάθος μεταγλώττισης.
A. Θεωρία
3. Στοιχεία της C
5.1. Πολυμορφισμός Συναρτήσεων
int func(int x, int y);
float func(int x, int y);
Παρατηρήσεις:
• Υπάρχουν και άλλα είδη πολυμορφισμού, π.χ. κλάσεων, που θα δούμε στα επόμενα μαθήματα.
26. 26Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 1: Εισαγωγή στην C++ και σχέση με την C
• Και οι πίνακες είναι ίδιοι με την C:
• Παράδειγμα ορισμού πίνακα:
• Επεξεργασία κάποιου στοιχείου του πίνακα:
• Παράδειγμα ορισμού διδιάστατου πίνακα
• και επεξεργασία κάποιου στοιχείου του πίνακα:
Παρατηρήσεις:
• Αναλυτικά βλ. «Γλώσσα C – Μάθημα 7: Πίνακες»
A. Θεωρία
3. Στοιχεία της C
6. Πίνακες
int arr[5] = {0,4,9,2,1};
arr[2] = 4;
int arr[2][3] = {{0,1,2}, {3,4,5}};
arr[0][1] = 4;
27. 27Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 1: Εισαγωγή στην C++ και σχέση με την C
• Επίσης οι συμβολοσειρές είναι ίδιες με την C
• Παράδειγμα ορισμού συμβολοσέιράς:
• Η εκτύπωση μπορεί να γίνει με την cout (και η είσοδος με την cin)
• Ενδέχεται να μας φανεί χρήσιμη κάποια συνάρτηση του string.h
• Προσοχή! Η ενσωμάτωση της αλλάζει και γίνεται ως εξής:
• Παρόμοια μπορούμε να ενσωματώσουμε και άλλες βιβλιοθήκες της C π.χ. η cstdlib
είναι η stdlib.h, η ctime είναι η time.h κ.ο.κ.
• Η C++ προσφέρει και έναν καινούργιο τρόπο διαχείρισης συμβολοσειρών μέσω της βιβλιοθήκης
STL (αλλά θα είναι ένα από τα τελευταία μαθήματα)
Παρατηρήσεις:
• Αναλυτικά βλ.
• «Γλώσσα C – Μάθημα 10: Συμβολοσειρές» και
• «Γλώσσα C – Μάθημα 18: string.h»
A. Θεωρία
3. Στοιχεία της C
7. Συμβολοσειρές
char str[80] = “A string”;
cout<<str;
#include <cstring>
28. 28Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 1: Εισαγωγή στην C++ και σχέση με την C
A. Θεωρία
3. Στοιχεία της C
7.1. Συμβολοσειρές (Παράδειγμα)
/* CPP1.strings.cpp */
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
char str1[80];
char str2[80];
cout<<"Dwse string: ";
cin>>str1;
strcpy(str2,str1);
cout<<str2;
return 0;
}
29. 29Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 1: Εισαγωγή στην C++ και σχέση με την C
• Οι δείκτες είναι εξίσου σημαντικοί στην C++ όπως και στην C!
• Παράδειγμα ορισμού δείκτη:
• Βάζουμε τον δείκτη να δείχνει σε μια μεταβλητή (διευθυνσιοδότηση):
• Και ισχύει πλέον:
• Καθώς και
• Και εξίσου σημαντικά είναι:
• Η σχέση πινάκων με δείκτες
• Η αριθμητική δεικτών
• Τα ορίσματα συναρτήσεων (μέσω δείκτη και μέσω αναφοράς), η σταθερά NULL
Παρατηρήσεις:
• Αναλυτικά βλ. «Γλώσσα C – Μάθημα 8: Δείκτες»
• Προσοχή όμως ότι αλλάζει ο τρόπος δυναμικής δέσμευσης μνήμης (malloc – free)
A. Θεωρία
3. Στοιχεία της C
8. Δείκτες
int *p;
p = &x;
p == &x; // Διεύθυνση της x
*p == x; // Τιμή της x
30. 30Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 1: Εισαγωγή στην C++ και σχέση με την C
• Ο κώδικας του μαθήματος είναι διαθέσιμος στο:
Σημαντικό!
https://github.com/psounis/CPP-programming
31. Β. Ασκήσεις
Άσκηση 1
31Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 1: Εισαγωγή στην C++ και σχέση με την C
Κατασκευάστε ένα νέο πρόγραμμα που να ζητάει από το χρήστη:
• Το όνομά του
• Το επώνυμο του
• Την ηλικία του (έτη)
• Και να τα τυπώνει έπειτα στην οθόνη σε μία γραμμή: «ΕΠΩΝΥΜΟ ΟΝΟΜΑ (ΗΛΙΚΙΑ)»
32. Β. Ασκήσεις
Άσκηση 2
32Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 1: Εισαγωγή στην C++ και σχέση με την C
• Κατασκευάστε μία συνάρτηση, με όνομα average, η οποία να υπολογίζει το μέσο όρο, είτε δύο
ακεραίων είτε δύο πραγματικών αριθμών.
• Η main να δίνει την επιλογή στο χρήστη να εισάγει από το πληκτρολόγιο δύο ακέραιους ή δύο
πραγματικούς και να υπολογίζει και να εκτυπώνει τον μέσο όρο τους.
Υπενθύμιση:
• Μέσος όρος των α+β είναι (α+β)/2.
33. Β. Ασκήσεις
Άσκηση 3
33Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 1: Εισαγωγή στην C++ και σχέση με την C
Το ακόλουθο πρόγραμμα από το «Γλώσσα C – Μάθημα 11» υλοποιεί την Σειριακή Αναζήτηση
Τροποποιήστε το πρόγραμμα ώστε:
Να είναι C++
Να χρησιμοποιεί λογική μεταβλητή που υποδεικνύει αν βρέθηκε το στοιχείο στον πίνακα.
*
**
***
****
*****
/* break.c: Deixnei tin xrisi tis break */
#include <stdio.h>
#define N 5
main()
{
int i;
int A[N]= {5, 3, 2, 4, 8 }; // Pinakas dedomenwn
int x=2; // Pros anazitisi stoixeio
/* Psaxnoume gia to stoixeio x ston pinaka A */
for (i=0; i<N; i++)
{
if (A[i]==x)
break;
}
if (i<N)
printf("nVrethike to stoixeio %d sti thesi %d",x,i);
else
printf("nDen Vrethike to stoixeio");
}