Κυριακή, 13 Νοεμβρίου 2011

Οι λέξεις κλειδιά CONST και VOLATILE - CONCOM.CPP

[πηγή]


Στις αρχικές δηλώσεις υπάρχουν δυο νέες λέξεις κλειδιά, οι οποίες δεν υπήρχαν στην
αρχική C, αλλά είναι τμήμα του προτύπου ANSI-C. Η λέξη const χρησιμοποιείται για 
να ορίσει μια σταθερά. Η σταθερά START είναι ακέραιου τύπου (int) και παίρνει αρχική 
τιμή 3. Ο μεταγλωττιστής δεν επιτρέπει την ηθελημένη ή κατά λάθος αλλαγή της τιμής 
της START γιατί έχει δηλωθεί σαν σταθερά. Οποιαδήποτε απόπειρα αλλαγής της τιμής 
μιας σταθεράς θα έχει σαν αποτέλεσμα την εμφάνιση ενός μηνύματος λάθους. Εφόσον δεν 
επιτρέπεται η αλλαγή της τιμής μιας σταθεράς, είναι καλό να αρχικοποιείται όταν 
δηλώνεται, ώστε να έχει μια χρήσιμη τιμή. Ο μεταγλωττιστής δεν απαιτεί την αρχικοποίηση 
της και δεν εμφανίζει μήνυμα λάθους αν αυτή δεν γίνει. 

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

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

Προσωρινά αφήνουμε τις προτάσεις εξόδου. Θα τις μελετήσουμε αργότερα στο κεφάλαιο. Αν 
είστε εξοικειωμένοι στον προγραμματισμό με τον αρχικό ορισμό της C, σίγουρα θα βρείτε 
το πρόγραμμα κάπως παράξενο. Εδώ φαίνεται η προτυποποίηση και ο νέος τρόπος ορισμού
των συναρτήσεων, όπως ορίζεται στο πρότυπο ANSI-C. Η προτυποποίηση είναι προαιρετική 
στη C,αλλά απολύτως αναγκαία στη C++. Γι’ αυτό το κεφάλαιο 4 ασχολείται με αυτό το θέμα. 

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

Αποτελέσματα εκτέλεσης

The value of the index is  3
The value of the index is  4
The value of the index is  5
The value of the index is  6
The value of the index is  7
The value of the index is  8
 
#include "iostream.h"      '*this is the stream definition 
file */

void print_it(const int dara_value);

main()
{

const int START = 3;        // The value of START cannot be 
changed
const int STOP = 9;         // The value of STOP cannot be 
changed
volatile int CENTER = 6;    /* The value of CENTER may be 
changed
                                 by something external to 
this
                                 program.             */
int index;                  /* A normal C variable     */

   for (index = START ; index < STOP ; index++)
      print_it(index);
}     /* End of program */

void print_it(const int data_value)
{
   cout << "The value of the index is  " << data_value << "\n";
}
}CONCOM.CPP



  
Κατεβάστε το πρόγραμμα στον υπολογιστή σας  

Δεν υπάρχουν σχόλια:

Δημοσίευση σχολίου