Περίληψη
Αυτό το μάθημα καθορίζει τον τρόπο εργασίας που θα ακολουθήσει ο κύκλος μαθημάτων ως το τέλος. Περιγράφει τον κύκλο της επεξεργασίας, της αποθήκευσης, της μεταγλώττισης, της εκτέλεσης και της ανάγνωσης, και εξηγεί γιατί συμφέρει να ανακαλύπτεται το σφάλμα στο νωρίτερο δυνατό στάδιο· παρουσιάζει την εντολή μεταγλώττισης που συνιστά ο κύκλος μαθημάτων και τι κάνει καθεμιά από τις επιλογές της· δείχνει πώς εκτελείται ο κύκλος από το τερματικό και πώς ρυθμίζεται το Visual Studio Code ώστε να μεταγλωττίζει με τις ίδιες επιλογές· διδάσκει πώς να διακρίνουμε στην έξοδο του μεταγλωττιστή ένα σφάλμα από μια προειδοποίηση και πώς να εντοπίζουμε τη γραμμή στην οποία αναφέρονται· παρουσιάζει τους ανιχνευτές, που σταματούν το πρόγραμμα όταν αυτό υποπίπτει σε ορισμένες απροσδιόριστες συμπεριφορές και δείχνουν τη γραμμή· και αφήνει την κονσόλα έτοιμη να εμφανίζει σωστά τα ελληνικά γράμματα.
Μαθησιακοί στόχοι
- Να μεταγλωττίζουμε ένα πρόγραμμα από το τερματικό με τις επιλογές του κύκλου μαθημάτων (
-std=c++23 -Wall -Wextraκαι τις υπόλοιπες), να ονομάζουμε το εκτελέσιμο αρχείο με το-oκαι να το εκτελούμε. - Να ρυθμίζουμε το Visual Studio Code ώστε να μεταγλωττίζει με τις ίδιες επιλογές με το τερματικό και να δείχνει τις προειδοποιήσεις στο παράθυρο προβλημάτων του.
- Να διακρίνουμε στην έξοδο του μεταγλωττιστή ένα σφάλμα από μια προειδοποίηση, να κατονομάζουμε την επιλογή που παρήγαγε κάθε προειδοποίηση και να εντοπίζουμε τη γραμμή στην οποία αναφέρεται.
- Να ενεργοποιούμε τους ανιχνευτές σφαλμάτων μνήμης και απροσδιόριστης συμπεριφοράς και να αναγνωρίζουμε στην αναφορά τους το είδος της αστοχίας και τη γραμμή όπου συνέβη.
- Να διαγιγνώσκουμε γιατί μια έξοδος δείχνει παράξενα σύμβολα αντί για ελληνικά γράμματα, και να ρυθμίζουμε τον επεξεργαστή κειμένου και την κονσόλα ώστε να εμφανίζονται σωστά.
Ο κύκλος εργασίας
Η συγγραφή ενός προγράμματος δεν είναι μια μοναδική πράξη, αλλά ένας κύκλος που επαναλαμβάνεται δεκάδες φορές στην ίδια συνεδρία. Έχει πέντε στιγμές: επεξεργαζόμαστε τον πηγαίο κώδικα· αποθηκεύουμε το αρχείο, επειδή ο μεταγλωττιστής διαβάζει τον δίσκο και όχι την οθόνη του επεξεργαστή κειμένου· μεταγλωττίζουμε, δηλαδή ζητάμε από τον μεταγλωττιστή να μεταφράσει το αρχείο σε εκτελέσιμο· εκτελούμε το αποτέλεσμα· και διαβάζουμε με προσοχή ό,τι έγραψαν ο μεταγλωττιστής και το πρόγραμμα. Όσα διαβάστηκαν οδηγούν σε νέα επεξεργασία, και ο κύκλος αρχίζει ξανά.
Η τελευταία στιγμή είναι αυτή που παραμελείται περισσότερο και αυτή που μετράει περισσότερο. Η προκείμενη είναι απλή: ένα ελάττωμα κοστίζει τόσο ακριβότερα στη διόρθωση όσο αργότερα ανακαλύπτεται. Αν το επισημαίνει ο μεταγλωττιστής, ξέρουμε σε ποια γραμμή και σχεδόν πάντα γιατί· αν εκδηλώνεται κατά την εκτέλεση, ξέρουμε μόνο ότι κάτι πήγε στραβά· αν εκδηλώνεται εβδομάδες αργότερα, με άλλα δεδομένα, μπορεί κανείς να μη μάθει ποτέ την αιτία. Από αυτό έπεται ότι συμφέρει να ανακαλύπτονται τα ελαττώματα όσο το δυνατόν νωρίτερα, και ότι ο μεταγλωττιστής πρέπει να αντιμετωπίζεται ως ο πρώτος ελεγκτής του προγράμματος: ένας ακούραστος αναγνώστης που, σωστά ρυθμισμένος, προειδοποιεί για πολύ περισσότερα από τα λάθη πληκτρολόγησης.
Αυτό το μάθημα ρυθμίζει τον ελεγκτή αυτόν σε τρία επίπεδα: τα σφάλματα, που εμποδίζουν να παραχθεί το εκτελέσιμο αρχείο· τις προειδοποιήσεις του μεταγλωττιστή, που το επιτρέπουν, αλλά επισημαίνουν ύποπτο κώδικα· και τους ανιχνευτές (sanitizers), που επιτηρούν το πρόγραμμα όσο εκτελείται. Προϋποθέτει εγκατεστημένους τον μεταγλωττιστή και τον επεξεργαστή κειμένου (μάθημα 1.3). Τα παραδείγματα χρησιμοποιούν μεταβλητές και εντολές if, που θα εξηγηθούν στα μαθήματα 2.1 και 4.1· εδώ αρκεί να τα διαβάσουμε.
Φόρτωση του περιεχομένου…
Ολοκληρώθηκε
Συνδεθείτε για να αποθηκεύσετε την πρόοδό σας