Το μάθημα αποτελεί μια εισαγωγή στη γλώσσα προγραμματισμού C++.Παρουσιάζονται τα στοιχεία της γλώσσας σύμφωνα με το ISO Standardτου 2014 και οι σύγχρονες μέθοδοι προγραμματισμού με έμφασησε ό,τι χρειάζεται για την ανάπτυξη επιστημονικών κωδίκων.Η διάρκεια του μαθήματος δεν επιτρέπει μεν εμβάθυνση, είναι όμως επαρκήςγια την απόκτηση ενός καλού υποβάθρου για περαιτέρω ενασχόληση.Απευθύνεται σε προπτυχιακούς φοιτητές θετικών επιστημώνμε εισαγωγικές γνώσεις προγραμματισμού υπολογιστώνκαι με διάθεση να μάθουν περισσότερα. Είναι επιθυμητόνα έχουν επιτύχει σε εισαγωγικό μάθημα προγραμματισμού.
Τρίτη, 9:00-11:00, Αίθουσα Υπολογιστών 2 (θεωρία)
Τρίτη, 11:00-13:00, Αίθουσα Υπολογιστών 2 (ασκήσεις)
1. Εισαγωγή, τύποι και τελεστές της C++.
Συντακτικό της γλώσσας, δεσμευμένες λέξεις, κανόνες σχηματισμού ονομάτων.
Θεμελειώδεις τύποι μεταβλητών: λογικός, χαρακτήρα, ακεραίων, πραγματικών,
μιγαδικών αριθμών. "Τύπος" void. Απαριθμήσεις. Τρόποι δήλωσης και εμβέλεια μεταβλητών και σταθερών ποσοτήτων.
Αριθμητικοί τελεστές, προτεραιότητες. Χώροι ονομάτων.
Αναφορές και Δείκτες.
2. Εντολές επιλογής, εντολές επανάληψης.
Τελεστές σύγκρισης, Εντολή if, τελεστής (?:), εντολή switch.
Βρόχοι while, do while, for, range for. Εντολές continue, break.
3. Βασικές δομές αποθήκευσης
Διανύσματα - Πίνακες, στατικοί και δυναμικοί. Δομές (struct).
4. Ροές (streams)
Ροές αρχείων, Ροές strings, είσοδος-έξοδος δεδομένων, διαμορφώσεις.
5. Συναρτήσεις.
Ορισμός και κλήση συνάρτησης, συνάρτηση main. Overloading, συναρτήσεις template. Μαθηματικές συναρτήσεις της C++.
6. Χειρισμός σφαλμάτων
Συναρτήσεις assert, static_assert. Σφάλματα μαθηματικών συναρτήσεων.
Εξαιρέσεις (exceptions).
Β) Standard Library
1. Iterators
Εισόδου, εξόδου, μονής κατεύθυνσης, διπλής κατεύθυνσης, τυχαίας προσπέλασης.
2. Containers
array, vector, deque, list, set, multiset, map, multimap, unordered_set, unordered_multiset, unordered_map, unordered_multimap.
3. Αλγόριθμοι
Κατηγορίες αλγορίθμων
4. Λοιπές έννοιες
Αντικείμενα-Συναρτήσεις, συναρτήσεις λάμδα, προσαρμογείς (adapters).
Γ) Αντικειμενοστρεφής Προγραμματισμός
1. Βασικές ένοιες
Οργάνωση κώδικα, ενθυλάκωση (encapsulation), ιεραρχία - κληρονομικότητα (inheritance), πολυμορφισμός.
2. Κλάσεις
Συναρτήσεις δημιουργίας, καταστροφής, αντιγραφής, μετακίνησης.
Τελεστές εκχώρησης, σύγκρισης, λοιποί τελεστές.
Υπόδειγμα κλάσης (class template).
Δ) Λοιπά Θέματα.
1. Μεθοδολογία οργάνωσης προγραμμάτων.
2. Διασύνδεση με βιβλιοθήκες συναρτήσεων σε FORTRAN και C.
1. Σημειώσεις Διδάσκοντα: https://www.materials.uoc.gr/el/undergrad/courses/ETY213/notes.pdf
2) Bjarne Stroustrup. Programming - Principles and Practice Using C++ (Second Edition), Addison Wesley, Reading, MA, USA, 2014.
3) Stanley B. Lippman, Josée Lajoie and Barbara E. Moo. C++ Primer. Addison Wesley, Reading, MA, USA, fifth edition, August 2012.
4) Nicolai M. Josuttis. The C++ Standard Library: A Tutorial and Reference. Addison Wesley, Reading, MA, USA, March 2012.
5) Bjarne Stroustrup. The C++ Programming Language. Addison Wesley, Reading, MA, USA, fourth edition, 2013.