Το μάθημα έχει ως στόχο:
- να εισάγει τους φοιτητές στην C (μια γλώσσα χαμηλού επιπέδου)
- να παρουσιάσει έννοιες αντικειμενοστραφούς προγραμματισμού στην C++, και τέλος
- να παρουσιάσει προχωρημένες έννοιες προγραμματισμού.
Το μάθημα χωρίζεται σε τρεις ενότητες:
- Προγραμματισμός σε C,
- Αντικειμενοστραφής προγραμματισμός
- Προχωρημένες έννοιες.
Η ενότητα Προγραμματισμός σε C, περιλαμβάνει τα ακόλουθα θέματα:
- Αναπαράσταση αριθμών στο δυαδικό/οκταδικό/δεκαεξαδικό σύστημα
- Τελεστές: αριθμητικοί, λογικοί, σχεσιακοί, bitwise
- Δομές δεδομένων
- Συναρτήσεις και μεταβλητές
- Τελεστές
- Έλεγχος ροής
- Πίνακες
- Δείκτες (Pointers), αριθμητικές διευθύνσεις, πίνακας δεικτών
- Interrupts (ρουτίνες διακοπής προγράμματος).
Η ενότητα Aντικειμενοστραφής προγραμματισμός, περιλαμβάνει έννοιες όπως:
- Τι είναι ο αντικειμενοστραφής προγραμματισμός στην C++
- Κλάσσεις και αντικείμενα
- Constructor και ~
- Αντικείμενα σαν ορίσματα συναρτήσεων
- Κληρονομικότητα (Inheritance),
- Yπερφορτωση (Overloading)
- Ενθυλάκωση (Encapsulation), Πρόσβαση στις συναρτήσεις
- Αφαίρεση (Abstraction),
- Πολύμορφισμός (Polymorphism),
- Διασυνδέσεις (Interfaces)
- Σύγκριση με άλλες αντικειμενοστρεφείς γλώσσες.
Η ενότητα Προχωρημένες έννοιες C παρουσιάζει τις ακόλουθες έννοιες:
- Αρχεία (Files and streams)
- Διαχείριση Σφαλμάτων/Εξαιρέσεων
- Δυναμική Παραχώρηση μνήμης
- Ονοματοχώροι (Namespaces)
- Πρότυπα (templates) και Γενικός Προγραμματισμός (Generic Programming)
- Διαχείριση Σημάτων (Signal Handling)/Interrupts
- Design Patterns
Με την επιτυχή ολοκλήρωση του μαθήματος οι φοιτητές / τριες θα είναι σε θέση να:
- Γράψουν, να μεταγλωττίσουν και να εκτελέσουν ένα πρόγραμμα σε γλώσσα C
- επιλέξουν τους τύπους δεδομένων και τους αλγόριθμους που είναι κατάλληλοι για την αρχιτεκτονική,
- να κατανοήσουν έννοιες αντικειμενοστραφούς προγραμματισμού και να αντιληφθούν διαφορές με τις άλλες προσεγγίσεις (διαδικασιακός, συναρτησιακός).
- Είναι ικανοί να χρησιμοποιήσουν πιο προχωρημένες λειτουργίες της C++.
- Υλοποιήσουν μια κλάση με τις απαραίτητες σχεδιαστικές αρχές, για την επίλυση ενός προβλήματος
- Βελτιώσουν την ικανότητα τους να λύσουν προβλήματα
Απαιτούμενες γνώσεις: Πληροφορική, Πληροφορική για Μηχανικούς.