ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C++

Σύντομη περιγραφή εκπαιδευτικού υλικού

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

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

Το εκπαιδευτικό υλικό επεκτείνεται σε πιο προχωρημένες τεχνικές προγραμματισμού, όπως η δυναμική διαχείριση μνήμης, οι δείκτες, οι τελεστές new και delete, οι πολυδιάστατοι πίνακες, η διαχείριση εξαιρέσεων, οι ψηφιοπράξεις, οι εσωτερικές αναπαραστάσεις αριθμών, οι δομές, η επιφόρτωση συναρτήσεων και τελεστών, τα templates και η δημιουργία βιβλιοθηκών. Τέλος, εισάγει τις αρχές του αντικειμενοστρεφούς προγραμματισμού, με έμφαση στις κλάσεις, τα αντικείμενα, την ελεγχόμενη πρόσβαση στα δεδομένα, τους δημιουργούς και καταστροφείς, την ενθυλάκωση, την κληρονομικότητα, τον πολυμορφισμό και τη δημιουργία πιο ασφαλούς, επαναχρησιμοποιήσιμου και οργανωμένου κώδικα.

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

Μαθησιακά αποτελέσματα

Με την ολοκλήρωση της μελέτης του υλικού, οι εκπαιδευόμενοι θα είναι σε θέση να:

  • κατανοούν το λογισμικό ως τεχνικό κατασκεύασμα και τη σημασία της Τεχνολογίας Λογισμικού,
  • αναγνωρίζουν τα βασικά προβλήματα που εμφανίζονται κατά την ανάπτυξη και συντήρηση λογισμικού,
  • εξηγούν την έννοια του κύκλου ζωής λογισμικού και να διακρίνουν βασικά μοντέλα ανάπτυξης,
  • κατανοούν τη σημασία της μηχανικής απαιτήσεων και να διακρίνουν λειτουργικές και μη λειτουργικές απαιτήσεις,
  • χρησιμοποιούν βασικές τεχνικές δομημένης ανάλυσης και σχεδίασης λογισμικού,
  • αναγνωρίζουν βασικές αρχιτεκτονικές λογισμικού, όπως μονολιθική, πελάτη-εξυπηρετητή, τριμερής και πολυμερής διάταξη,
  • κατανοούν την έννοια του αλγορίθμου και τη σημασία της σαφούς, πλήρους και ορθής περιγραφής του,
  • διακρίνουν τη σύνταξη και τη σημασιολογία μιας γλώσσας προγραμματισμού,
  • χρησιμοποιούν βασικούς τύπους δεδομένων της C++, όπως ακέραιους, πραγματικούς, λογικούς τύπους και χαρακτήρες,
  • δηλώνουν και να χρησιμοποιούν μεταβλητές, σταθερές, εκφράσεις και τελεστές,
  • εφαρμόζουν εντολές εισόδου και εξόδου για την αλληλεπίδραση του προγράμματος με τον χρήστη,
  • χρησιμοποιούν δομές επιλογής, όπως if και if-else, για τον έλεγχο της ροής εκτέλεσης,
  • εφαρμόζουν δομές επανάληψης, όπως while, for και do-while,
  • αναπτύσσουν και να χρησιμοποιούν συναρτήσεις με παραμέτρους και επιστρεφόμενες τιμές,
  • κατανοούν βασικές αρχές ορθότητας προγράμματος, όπως προϋποθέσεις, απαιτήσεις και αναλλοίωτες,
  • διαχειρίζονται αρχεία κειμένου για ανάγνωση και εγγραφή δεδομένων,
  • χρησιμοποιούν πίνακες για την αποθήκευση και επεξεργασία συλλογών δεδομένων,
  • εφαρμόζουν βασικούς αλγορίθμους αναζήτησης και ταξινόμησης,
  • επεξεργάζονται κείμενα με χρήση του τύπου string και σχετικών μεθόδων,
  • αναγνωρίζουν και να αντιμετωπίζουν συντακτικά, λογικά και άλλα κοινά σφάλματα προγραμματισμού,
  • κατανοούν τη λειτουργία των δεικτών και της δυναμικής μνήμης,
  • χρησιμοποιούν τους τελεστές new και delete για δυναμική παραχώρηση και αποδέσμευση μνήμης,
  • αποφεύγουν συνηθισμένα σφάλματα δυναμικής μνήμης, όπως διαρροές μνήμης και κρεμάμενους δείκτες,
  • εφαρμόζουν βασικές τεχνικές διαχείρισης εξαιρέσεων με try, catch και throw,
  • κατανοούν τις εσωτερικές αναπαραστάσεις ακέραιων και αριθμών κινητής υποδιαστολής,
  • αναγνωρίζουν τις επιπτώσεις της υπερχείλισης, της υποχείλισης και των σφαλμάτων στρογγύλευσης,
  • χρησιμοποιούν ψηφιοπράξεις για χειρισμό δεδομένων σε δυαδικό επίπεδο,
  • ορίζουν και να χρησιμοποιούν δομές για την ομαδοποίηση δεδομένων διαφορετικών τύπων,
  • εφαρμόζουν επιφόρτωση συναρτήσεων και τελεστών για πιο ευέλικτο κώδικα,
  • χρησιμοποιούν templates για τη δημιουργία γενικών και επαναχρησιμοποιήσιμων συναρτήσεων,
  • κατανοούν την έννοια των βιβλιοθηκών και τη σημασία της χωριστής μεταγλώττισης σε μεγαλύτερα έργα,
  • κατανοούν την αναδρομή ως τεχνική επίλυσης προβλημάτων,
  • εφαρμόζουν βασικές αρχές ανάλυσης από πάνω προς τα κάτω και υλοποίησης από κάτω προς τα πάνω,
  • κατανοούν τις βασικές αρχές του αντικειμενοστρεφούς προγραμματισμού,
  • δημιουργούν κλάσεις και αντικείμενα στη C++,
  • διακρίνουν δημόσια και ιδιωτικά μέλη μιας κλάσης και να κατανοούν τη σημασία της ελεγχόμενης πρόσβασης,
  • χρησιμοποιούν δημιουργούς και καταστροφείς για την ορθή αρχικοποίηση και καταστροφή αντικειμένων,
  • εφαρμόζουν την έννοια της ενθυλάκωσης για την προστασία των δεδομένων μιας κλάσης,
  • κατανοούν τη σημασία των αναλλοίωτων κλάσης για την εγκυρότητα των αντικειμένων,
  • αξιοποιούν την κληρονομικότητα και τον πολυμορφισμό για την ανάπτυξη ευέλικτου και επεκτάσιμου κώδικα,
  • αντιλαμβάνονται τη σημασία της σωστής σχεδίασης, της επαναχρησιμοποίησης και της ασφάλειας κώδικα για την ανάπτυξη αξιόπιστων εφαρμογών C++.