ETY-215 Προχωρημένος Προγραμματισμός Ι:
Εισαγωγή στη γλώσσα προγραμματισμού C++
Διδάσκων
- Σταμάτης Σταματιάδης
-
- stamatis@materials.uoc.gr
- τηλέφωνο
- 2810 39 4284
- γραφείο
- Γραφείο Β-201, κτίριο Επιστήμης Υπολογιστών.
Ώρες και Αίθουσα Διδασκαλίας
- Διαλέξεις
- Τρίτη 09:00-11:00, αίθουσα 2 Φυσικού
- Ασκήσεις
- Τρίτη 11:00-12:00, αίθουσα υπολογιστών 2 Φυσικού
Ανακοινώσεις
- 21 Σεπτεμβρίου 2022
- Το μάθημα αρχίζει την Τρίτη 27 Σεπτεμβρίου, στις 09:00. Θα γίνεται στην αίθουσα Υπολογιστών 2, στο κτίριο του Φυσικού (κεντρική είσοδος). Το πρώτο μάθημα εκτάκτως θα αποτελείται από τρεις ώρες θεωρίας και μία ώρα ασκήσεων.
- 28 Σεπτεμβρίου 2022
- Η θεωρία θα γίνεται στην αίθουσα 2 του Φυσικού
Παρακαλώ εγγραφείτε στο eclass του μαθήματος.
Αντικείμενο –Σκοπός
Το μάθημα αποτελεί μια εισαγωγή στη γλώσσα προγραμματισμού C++. Παρουσιάζονται τα στοιχεία της γλώσσας σύμφωνα με το ISO Standard του 2014 και οι σύγχρονες μέθοδοι προγραμματισμού με έμφαση σε ό,τι χρειάζεται για την ανάπτυξη επιστημονικών κωδίκων. Η διάρκεια του μαθήματος δεν επιτρέπει μεν εμβάθυνση, είναι όμως επαρκής για την απόκτηση ενός καλού υποβάθρου για περαιτέρω ενασχόληση.
Απευθύνεται σε προπτυχιακούς φοιτητές θετικών επιστημών με εισαγωγικές γνώσεις προγραμματισμού υπολογιστών και με διάθεση να μάθουν περισσότερα. Είναι επιθυμητό να έχουν επιτύχει σε εισαγωγικό μάθημα προγραμματισμού.
Διδακτέα Ύλη
Η διδακτέα ύλη του μαθήματος περιλαμβάνει
Βασικές έννοιες
- Εισαγωγή, τύποι και τελεστές της C++.
- Συντακτικό της γλώσσας, δεσμευμένες λέξεις, κανόνες σχηματισμού ονομάτων. Θεμελιώδεις τύποι μεταβλητών: λογικός, χαρακτήρα, ακεραίων, πραγματικών, μιγαδικών αριθμών. "Τύπος" void. Απαριθμήσεις. Τρόποι δήλωσης και εμβέλεια μεταβλητών και σταθερών ποσοτήτων. Αριθμητικοί τελεστές, προτεραιότητες. Χώροι ονομάτων. Αναφορές και Δείκτες.
- Εντολές επιλογής, εντολές επανάληψης.
- Τελεστές σύγκρισης, Εντολή if, τελεστής (?:), εντολή switch. Βρόχοι while, do while, for, range for. Εντολές continue, break.
- Βασικές δομές αποθήκευσης
- Διανύσματα - Πίνακες, στατικοί και δυναμικοί. Δομή (struct).
- Ροές (streams)
- Ροές αρχείων, Εσωτερικά αρχεία, είσοδος-έξοδος δεδομένων, διαμορφώσεις.
- Συναρτήσεις.
- Ορισμός και κλήση συνάρτησης, συνάρτηση main. Overloading, συναρτήσεις template. Μαθηματικές συναρτήσεις της C++.
- Χειρισμός σφαλμάτων
- Συναρτήσεις assert, static_assert. Σφάλματα μαθηματικών συναρτήσεων. Εξαιρέσεις (exceptions).
Standard Library
- Iterators
- Εισόδου, εξόδου, μονής κατεύθυνσης, διπλής κατεύθυνσης, τυχαίας προσπέλασης.
- Containers
- array, vector, deque, list, set, multiset, map, multimap, unordered_set, unordered_multiset, unordered_map, unordered_multimap.
- Αλγόριθμοι
- Κατηγορίες αλγορίθμων
- Λοιπές έννοιες
- Αντικείμενα-Συναρτήσεις, συναρτήσεις λάμδα, προσαρμογείς (adapters).
Αντικειμενοστρεφής Προγραμματισμός
- Βασικές έννοιες
- Οργάνωση κώδικα, ενθυλάκωση (encapsulation), ιεραρχία - κληρονομικότητα (inheritance), πολυμορφισμός.
- Κλάσεις
- Συναρτήσεις δημιουργίας, καταστροφής, αντιγραφής, μετακίνησης. Τελεστές εκχώρησης, σύγκρισης, λοιποί τελεστές. Υπόδειγμα κλάσης (class template).
Λοιπά Θέματα.
Μεθοδολογία οργάνωσης προγραμμάτων. Διασύνδεση με βιβλιοθήκες συναρτήσεων σε FORTRAN και C.Διδακτικά Βοηθήματα
Διατίθενται εκτεταμένες σημειώσεις που παρουσιάζουν τα πιο χρήσιμα χαρακτηριστικά της C++14.
Τρόπος Εξέτασης
Σημαντικό ρόλο έχει το ενδιαφέρον προς το μάθημα και η γενική απόδοση στις ασκήσεις που θα γίνονται σε κάθε εργαστήριο. Η συμμετοχή στα εργαστήρια δεν είναι υποχρεωτική, η ύλη όμως που καλύπτεται σε αυτά θεωρείται γνωστή στα επόμενα.
Η τελική εξέταση γίνεται στο εργαστήριο υπολογιστών και αποτελείται από ασκήσεις συγγραφής ολοκληρωμένων προγραμμάτων, με ανοιχτές σημειώσεις και βιβλία.
Κατά τη διάρκεια της εξέτασης ΑΠΑΓΟΡΕΥΕΤΑΙ Η ΧΡΗΣΗ ΚΙΝΗΤΩΝ ΤΗΛΕΦΩΝΩΝ.
Παλαιά θέματα εξετάσεων
- Ιανουάριος 2005
- Ιανουάριος 2006 αρχείο lotto
- Σεπτέμβριος 2006
- Ιανουάριος 2007
- Σεπτέμβριος 2007
- Ιανουάριος 2008
- Σεπτέμβριος 2008
- Ιανουάριος 2009
- Σεπτέμβριος 2009
- Ιανουάριος 2010
- Ιανουάριος 2011
- Σεπτέμβριος 2011
- Ιανουάριος 2012
- Σεπτέμβριος 2012
- Ιανουάριος 2013
- Σεπτέμβριος 2013
- Ιανουάριος 2014
- Σεπτέμβριος 2014
- Ιούνιος 2015
- Ιούνιος 2016
- Σεπτέμβριος 2016
- Ιανουάριος 2017
- Σεπτέμβριος 2017
- Ιανουάριος 2018
- Ιανουάριος 2019
- Ιανουάριος 2020
Χρήσιμοι Σύνδεσμοι
C++ Online Documentation
C++ Online Tutorials
- Προγραμματισμός με τη Γλώσσα C++
- C++ Notes
- Programming:C++ (wikibook)
- NIST Course on C++ Programming for Scientists
- C++ Annotations
Δωρεάν Compilers της C++
- GNU Compiler Collection
- Clang
- Intel Compilers [Linux, Windows, MacOS]
- Microsoft Visual C++ [Windows]
- Digital Mars C and C++ Compilers [Dos, Windows]
- DJGPP [Dos]
- Apple Xcode [MacOS,iOS]
- Free NVIDIA HPC SDK [Linux, Windows]
- CODE::Blocks
[Linux, Windows, MacOS]
Οδηγίες εγκατάστασης
Online Compilers της C++
Συλλογές Συνδέσμων
Διάφορα
- C++ Core Guidelines
- C++ Secure Coding Standard
- Google C++ Style Guide
- News, Status & Discussion about Standard C++
- The Association of C & C++ Users
- Bjarne Stroustrup's Homepage
- C++ FAQ LITE
- C++ newsgroup
Βιβλιογραφία
Bιβλία, στα αγγλικά, ταξινομημένα με αύξοντα βαθμό δυσκολίας και πληρότητας (και αριθμού σελίδων!). Κάποια από τα βιβλία υπάρχουν στη Βιβλιοθήκη του Πανεπιστημίου. Να αποφύγετε όσα τυχόν βρείτε και έχουν εκδοθεί πριν το 1997, περιγράφουν τη γλώσσα πριν τυποποιηθεί με το Standard του 1998. Να προτιμήσετε βιβλία που έχουν εκδοθεί μετά το 2011 και περιγράφουν τη γλώσσα σύμφωνα με το Standard του 2011.
C++11/C++14
-
Programming -- Principles and Practice Using C++ (Second Edition) Addison Wesley, Reading, MA, USA, 2014.
-
C++ Primer. Addison Wesley, Reading, MA, USA, fifth edition, August 2012. Πολύ καλή, αναλυτικότατη παρουσίαση σχεδόν όλης της γλώσσας. Είναι κάπως δύσχρηστο ως βιβλίο αναφοράς.
-
The C++ Standard Library: A Tutorial and Reference. Addison Wesley, Reading, MA, USA, March 2012. [ The C++ Standard Library ] Πλήρες βιβλίο για την παρουσίαση της Standard Library. Απαιτεί γνώση των βασικών στοιχείων της C++. Ο τρόπος οργάνωσης της ύλης ίσως δυσκολεύει τον αναγνώστη.
-
The C++ Programming Language. Addison Wesley, Reading, MA, USA, fourth edition, 2013. [ The C++ Programming Language (Fourth Edition) ] Η τέταρτη έκδοση διατίθεται μεταφρασμένη στα ελληνικά, με τίτλο “Η Γλώσσα Προγραμματισμού C++”, από τις εκδόσεις “Κλειδάριθμος”. Υπάρχει στη Βιβλιοθήκη. Το πληρέστερο βιβλίο για τη C++, από το δημιουργό της γλώσσας.
C++98
-
Accelerated C++: practical programming by example. C++ In-Depth Series. Addison Wesley, Reading, MA, USA, 2000. [ Accelerated C++ ] Θεωρείται ένα από καλύτερα εισαγωγικά βιβλία, με πρωτοποριακή προσέγγιση στη διδασκαλία της C++. Υπάρχει στη Βιβλιοθήκη και προτείνεται για αυτομελέτη.
-
Essential C++. C++ In-Depth Series. Addison Wesley, Reading, MA, USA, 2000. Σύντομο και σχετικά πλήρες. Απαιτεί κάποια εξοικοίωση με τον προγραμματισμό. Προτείνεται για αυτομελέτη.
-
Programming -- Principles and Practice Using C++ Addison Wesley, Reading, MA, USA, 2008.
Εκδίδεται μεταφρασμένο στα ελληνικά, με τίτλο “Προγραμματισμός με τη C++”, από τις εκδόσεις “Παπασωτηρίου”. -
Programming with C++. Schaum's Outline Series. McGraw-Hill, second edition, June 2000.
-
Thinking in C++. Introduction to Standard C++, volume 1.
Prentice Hall, second edition, 2000. [ http://www.mindviewinc.com ] Διατίθεται και σε ηλεκτρονική μορφή, δωρεάν στο σχετικό link. -
C++ Primer. Addison Wesley, Reading, MA, USA, third edition, April 1998. Πολύ καλή, αναλυτικότατη παρουσίαση σχεδόν όλης της γλώσσας. Είναι κάπως δύσχρηστο ως βιβλίο αναφοράς. Υπάρχει στη Βιβλιοθήκη.
-
The C++ Standard Library: A Tutorial and Reference. Addison Wesley, Reading, MA, USA, September 1999. [ The C++ Standard Library ] Πλήρες βιβλίο για την παρουσίαση της Standard Library. Απαιτεί γνώση των βασικών στοιχείων της C++. Ο τρόπος οργάνωσης της ύλης ίσως δυσκολεύει τον αναγνώστη. Υπάρχει στη Βιβλιοθήκη.
-
The C++ Programming Language. Addison Wesley, Reading, MA, USA, third edition, 1997. [ The C++ Programming Language (Third Edition) ] Διατίθεται μεταφρασμένη στα ελληνικά, με τίτλο “Η Γλώσσα Προγραμματισμού C++”, από τις εκδόσεις “Κλειδάριθμος”. Το πληρέστερο βιβλίο για τη C++, από το δημιουργό της γλώσσας. Η τρίτη έκδοση υπάρχει στη Βιβλιοθήκη. Τα τρία πρώτα κεφάλαια του βιβλίου (ιστορία και επισκόπηση της γλώσσας) παρέχονται δωρεάν στo σχετικό link και προτείνονται για ανάγνωση (είναι ιδιαίτερα δύσκολα για αρχάριους).