Περίληψη
Ένα προστακτικό πρόγραμμα δεν υπολογίζει το αποτέλεσμά του με μιας: το κατασκευάζει βήμα προς βήμα, αποθηκεύοντας ενδιάμεσες τιμές και αλλάζοντάς τες. Αυτό το μάθημα μελετά τον τόπο όπου αποθηκεύονται, τη μεταβλητή, που είναι ένα κελί μνήμης με όνομα, τύπο και τιμή. Διδάσκει πώς τη δηλώνουμε και την αρχικοποιούμε με άγκιστρα, και γιατί τα άγκιστρα είναι ο προτιμώμενος τρόπος· πώς αλλάζουμε την τιμή της με ανάθεση, της οποίας το σύμβολο = δεν σημαίνει ό,τι σημαίνει στα μαθηματικά· πώς παρακολουθούμε την κατάσταση ενός προγράμματος, δηλαδή την τιμή όλων των μεταβλητών του σε κάθε στιγμή, με έναν πίνακα ίχνους· πώς επιλέγουμε ονόματα που λένε τι φυλάσσει η μεταβλητή· και πώς αποφεύγουμε το πιο σιωπηλό σφάλμα αυτού του σταδίου: την ανάγνωση μιας μεταβλητής στην οποία δεν δόθηκε ποτέ τιμή, που στη C++ είναι απροσδιόριστη συμπεριφορά.
Μαθησιακοί στόχοι
- Να δηλώνετε και να αρχικοποιείτε μεταβλητές με άγκιστρα, και να διακρίνετε την αρχικοποίηση από την ανάθεση σε ένα δοσμένο πρόγραμμα.
- Να παρακολουθείτε με το χέρι την κατάσταση ενός προγράμματος διαδοχικών αναθέσεων με έναν πίνακα ίχνους, και να προβλέπετε έτσι την έξοδό του.
- Να επιλέγετε ονόματα στα αγγλικά που λένε τι φυλάσσει κάθε μεταβλητή, σύμφωνα με τους κανόνες της γλώσσας και τον οδηγό του κύκλου μαθημάτων.
- Να εξηγείτε γιατί η ανάγνωση μιας μη αρχικοποιημένης μεταβλητής είναι απροσδιόριστη συμπεριφορά, να την αναγνωρίζετε σε ένα πρόγραμμα και να την προλαμβάνετε αρχικοποιώντας πάντα.
Η μεταβλητή ως κελί
Στο μάθημα Από το πρόβλημα στον αλγόριθμο οι αλγόριθμοι γράφτηκαν με γράμματα όπως η και η , που έπαιρναν μια τιμή και ύστερα άλλη: «η παίρνει την τιμή ». Στα μαθηματικά, ένα γράμμα δηλώνει μια σταθερή τιμή, αν και άγνωστη· σε έναν αλγόριθμο, αντίθετα, δηλώνει μια θέση της οποίας το περιεχόμενο αλλάζει. Ένα πρόγραμμα C++ χρειάζεται το ίδιο, και το παίρνει από τη μνήμη του υπολογιστή.
Η κύρια μνήμη είναι μια μακριά σειρά από bytes, το καθένα με τον αύξοντα αριθμό του, τη διεύθυνσή του. Μια μεταβλητή είναι ένα κομμάτι αυτής της μνήμης στο οποίο το πρόγραμμα δίνει όνομα και τύπο. Έχει, επομένως, τέσσερα χαρακτηριστικά:
- ένα όνομα, με το οποίο το πρόγραμμα την ονομάζει (
count,price)· - έναν τύπο, που ορίζει ποιες τιμές μπορεί να φυλάξει, πόσα bytes καταλαμβάνει και ποιες πράξεις δέχεται: ο
intφυλάσσει ακέραιους αριθμούς, οdoubleαριθμούς με δεκαδικά· - μια τιμή, αυτήν που φυλάσσει σε μια δεδομένη στιγμή, η οποία μπορεί να αλλάξει όσο εκτελείται το πρόγραμμα·
- μια θέση στη μνήμη, που την επιλέγουν ο μεταγλωττιστής και το σύστημα και που το πρόγραμμα σχεδόν ποτέ δεν χρειάζεται να γνωρίζει.
Η αναπαράσταση που αξίζει να κρατήσουμε είναι εκείνη ενός κελιού: το όνομα γραμμένο από πάνω, η τιμή μέσα. Ο τύπος είναι το μέγεθος και το σχήμα του κελιού· ένα κελί int δεν δέχεται το 2.5, όπως μια θυρίδα αλληλογραφίας δεν δέχεται ένα δέμα. Τα σχήματα αυτού του μαθήματος σχεδιάζουν έτσι την κατάσταση ενός προγράμματος, και την ξανασχεδιάζουν μετά από κάθε εντολή.
Ότι ο τύπος ορίζει το μέγεθος μπορεί να φανεί: ο τελεστής sizeof δίνει τον αριθμό των bytes που καταλαμβάνει μια μεταβλητή ή ένας τύπος.
#include <print>int main(){ const int count{12}; const double price{4.5}; std::println("Η count καταλαμβάνει {} bytes", sizeof(count)); std::println("Η price καταλαμβάνει {} bytes", sizeof(price));}Η count καταλαμβάνει 4 bytesΗ price καταλαμβάνει 8 bytesΈνας int καταλαμβάνει εδώ 4 bytes, και ένας double 8. Αυτοί οι αριθμοί δεν είναι ίδιοι σε όλα τα συστήματα, και από αυτούς εξαρτάται πόσες διαφορετικές τιμές χωρούν σε κάθε τύπο· τα μαθήματα Οι ακέραιοι και η αναπαράστασή τους και Οι αριθμοί κινητής υποδιαστολής θα το μελετήσουν. Εδώ αρκεί το ουσιώδες: ο τύπος μιας μεταβλητής ορίζεται όταν τη δηλώνουμε και δεν αλλάζει ποτέ· αυτό που αλλάζει είναι η τιμή της.
Φόρτωση του περιεχομένου…
Ολοκληρώθηκε
Συνδεθείτε για να αποθηκεύσετε την πρόοδό σας