[cplusplus image]

Προχωρημένος Προγραμματισμός Ι:
Εισαγωγή στη γλώσσα προγραμματισμού C++


Διδάσκων

Σταμάτης Σταματιάδης
stamatis@materials.uoc.gr
Τηλ. 2810394284
Γραφείο Ε-104, Κτήριο Μαθηματικού

Διαλέξεις & Εργαστήρια

Πέμπτη 17:00–20:00
Αίθουσα Υπολογιστών 3
Κτήρια Φυσικού, Βούτες

Ανακοινώσεις

2014-02-16: Αποτελέσματα εξετάσεων Ιανουαρίου

2014-01-15: Η εξέταση θα γίνει την Τρίτη 4 Φεβρουαρίου στις 09:00-12:00.

2013-11-14: Ασκήσεις συγγραφής ολοκληρωμένου προγράμματος (PDF).

2013-10-10: Η πρώτη συνάντηση για το μάθημα θα γίνει την Πέμπτη 10 Οκτωβρίου. Τότε θα αποφασιστεί αν και πότε θα μεταφερθεί το μάθημα.


Περιγραφή

Το μάθημα αποτελεί μια εισαγωγή στη γλώσσα προγραμματισμού C++. Παρουσιάζονται τα στοιχεία της γλώσσας σύμφωνα με το ISO Standard του 1998 και οι σύγχρονες μέθοδοι προγραμματισμού με έμφαση σε ό,τι χρειάζεται για την ανάπτυξη επιστημονικών κωδίκων. Η διάρκεια του μαθήματος δεν επιτρέπει μεν εμβάθυνση, είναι, όμως, επαρκής για την απόκτηση ενός καλού υποβάθρου για περαιτέρω ενασχόληση.

Προαπαιτούμενα

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

Διδασκόμενη ύλη

Εισαγωγή, τύποι και τελεστές της C++.
Συντακτικό της γλώσσας, δεσμευμένες λέξεις, κανόνες σχηματισμού ονομάτων. Θεμελειώδεις τύποι μεταβλητών: λογικός, χαρακτήρα, ακεραίων, πραγματικών, μιγαδικών αριθμών. "Τύπος" void. Αριθμήσεις. Τρόποι δήλωσης και εμβέλεια μεταβλητών και σταθερών ποσοτήτων. Σύνθετοι τύποι. Αριθμητικοί τελεστές, προτεραιότητες. Χώροι ονομάτων. Αναφορές και Δείκτες.
Εντολές ελέγχου, Βρόχοι.
Εντολή if, τελεστής (?:), εντολή switch, εντολή goto, συνάρτηση assert. Δομή while, do while, for. Εντολές continue, break.
Συναρτήσεις.
Ορισμός και κλήση συνάρτησης, συνάρτηση main. Overloading, συναρτήσεις template. Μαθηματικές συναρτήσεις της C++.
Standard Library.
Συλλογές (containers): vector, deque, list, set, multiset, map, multimap. Αλγόριθμοι, Function objects.
Προχωρημένα Θέματα.
Κλάσεις, στοιχεία προγραμματισμού object-based και object-oriented. Μεθοδολογία οργάνωσης προγραμμάτων. Διασύνδεση με βιβλιοθήκες συναρτήσεων σε FORTRAN και C.

Τρόπος Εξέτασης

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

Παλαιά θέματα εξετάσεων

Σημειώσεις Μαθήματος

Παρέχονται (ημιτελείς προς το παρόν) σημειώσεις, για υποβοήθηση των διαλέξεων, σε μορφή αρχείου PDF, αρχείου PS και σελίδων HTML.

Χρήσιμη βιβλιογραφία

Bιβλία, στα αγγλικά, ταξινομημένα με αύξοντα βαθμό δυσκολίας και πληρότητας (και αριθμού σελίδων!). Περισσότερα βιβλία, εισαγωγικά και προχωρημένα, προτείνονται στη βιβλιογραφία που παρατίθεται στις Σημειώσεις. Κάποια από τα βιβλία υπάρχουν στη Βιβλιοθήκη του Πανεπιστημίου. Να αποφύγετε όσα τυχόν βρείτε και έχουν εκδοθεί πριν το 1997. Δυστυχώς, κανένα σχετικό βιβλίο στα ελληνικά, πρωτότυπο ή μεταφρασμένο, από όσα έχουν υποπέσει στην αντίληψή μου, δεν περιγράφει σωστά και επαρκώς την ISO C++ (εκτός, βέβαια, από τη μετάφραση των [3],[8] από τα παρακάτω βιβλία).

  1. Andrew Koenig and Barbara E. Moo. Accelerated C++: practical programming by example. C++ In-Depth Series. Addison Wesley, Reading, MA, USA, 2000. Accelerated C++ ] Θεωρείται ένα από καλύτερα εισαγωγικά βιβλία, με πρωτοποριακή προσέγγιση στη διδασκαλία της C++. Υπάρχει στη Βιβλιοθήκη και προτείνεται για αυτομελέτη.
  2. Stanley B. Lippman. Essential C++. C++ In-Depth Series. Addison Wesley, Reading, MA, USA, 2000. Σύντομο και σχετικά πλήρες. Απαιτεί κάποια εξοικοίωση με τον προγραμματισμό. Προτείνεται για αυτομελέτη.
  3. Bjarne Stroustrup. Programming -- Principles and Practice Using C++ Addison Wesley, Reading, MA, USA, 2008.
    Εκδίδεται μεταφρασμένο στα ελληνικά, με τίτλο “Προγραμματισμός με τη C++”, από τις εκδόσεις “Παπασωτηρίου”.
  4. John R. Hubbard. Programming with C++. Schaum's Outline Series. McGraw-Hill, second edition, June 2000.
  5. Nicolai M. Josuttis. The C++ Standard Library: A Tutorial and Reference. Addison Wesley, Reading, MA, USA, March 2012. The C++ Standard Library ] Πλήρες βιβλίο για την παρουσίαση της Standard Library. Απαιτεί γνώση των βασικών στοιχείων της C++. Ο τρόπος οργάνωσης της ύλης ίσως δυσκολεύει τον αναγνώστη. Η πρώτη έκδοσή του υπάρχει στη Βιβλιοθήκη.
  6. Bruce Eckel. Thinking in C++. Introduction to Standard C++, volume 1.
    Prentice Hall, second edition, 2000. http://www.mindviewinc.com ] Διατίθεται και σε ηλεκτρονική μορφή, δωρεάν στο σχετικό link.
  7. Stanley B. Lippman, Josée Lajoie and Barbara E. Moo. C++ Primer. Addison Wesley, Reading, MA, USA, fifth edition, August 2012. Πολύ καλή, αναλυτικότατη παρουσίαση σχεδόν όλης της γλώσσας. Είναι κάπως δύσχρηστο ως βιβλίο αναφοράς. Η τρίτη έκδοσή του υπάρχει στη Βιβλιοθήκη.
  8. Bjarne Stroustrup. The C++ Programming Language. Addison Wesley, Reading, MA, USA, fourth edition, 2013. The C++ Programming Language (Fourth Edition) ] Η προηγούμενη έκδοση διατίθεται μεταφρασμένη στα ελληνικά, με τίτλο “Η Γλώσσα Προγραμματισμού C++”, από τις εκδόσεις “Κλειδάριθμος”. Το πληρέστερο βιβλίο για τη C++, από το δημιουργό της γλώσσας. Η προηγούμενη έκδοση υπάρχει στη Βιβλιοθήκη. Τα τρία πρώτα κεφάλαια του βιβλίου στην τρίτη έκδοση (ιστορία και επισκόπηση της γλώσσας) παρέχονται δωρεάν στo σχετικό link και προτείνονται για ανάγνωση (είναι ιδιαίτερα δύσκολα για αρχάριους).
  9. Bjarne Stroustrup. A tour of C++. Addison Wesley, Reading, MA, USA, 2013. A Tour of C++ ]