Μαθαίνοντας την JAVA – Μέρος 6
Στο προηγούμενο βοήθημα μάθαμε πώς να δημιουργούμε σχόλια στον πηγαίο κώδικα ενός προγράμματος, όπως επίσης μάθαμε τους βασικούς τύπους δεδομένων με τους οποίους μπορούμε να δημιουργούμε μεταβλητές στην Java. Σήμερα θα δούμε πώς να δηλώνουμε και πώς να χρησιμοποιούμε αυτές τις μεταβλητές στα προγράμματα μας. Επίσης θα δούμε πώς να δηλώνουμε στα προγράμματα μας μεταβλητές σταθερών τιμών, και πως αυτές διαφέρουν απ’ τις συνηθισμένες μεταβλητές.
Δηλώνοντας τις Μεταβλητές μας
Ως μεταβλητή, ονομάζουμε μια περιοχή στη μνήμη του υπολογιστή, η οποία δεσμεύετε από το πρόγραμμα μας και χρησιμοποιείτε για αποθήκευση δεδομένων κατά τη διάρκεια που αυτό τρέχει. Οι μεταβλητές συνήθως δηλώνονται/δημιουργούνται στην αρχή (χωρίς αυτό να είναι απαραίτητα δεσμευτικό) ενός προγράμματος και κατά τη διάρκεια της δήλωσης δίνονται τα εξής στοιχεία:
- Όνομα της μεταβλητής, έτσι ώστε να μπορούμε να την χρησιμοποιούμε στο πρόγραμμα μας χρησιμοποιώντας τη συγκεκριμένη ονομασία.
- Τύπο δεδομένων της μεταβλητής, έτσι ώστε να δημιουργηθεί στην μνήμη ο κατάλληλος χώρος ο οποίος θα είναι ανά πάσα στιγμή έτοιμος να φιλοξενήσει δεδομένα αυτού του τύπου. Αν για παράδειγμα δηλώσουμε μια μεταβλητή ως τύπο byte, τότε στη μνήμη θα δεσμευτεί ο μέγιστος χώρος που είναι πιθανό να χρειαστεί να αποθηκευτούν δεδομένα για μια μεταβλητή αυτού του τύπου.
Μερικά στοιχεία που πρέπει να προσέξουμε επιλέγοντας ονομασία για μια μεταβλητή, είναι τα εξής:
- Το όνομα να μην είναι ήδη δεσμευμένο απ’ το λεξιλόγιο της Java, δηλαδή λέξεις όπως class, void, public κτλ. είναι απαγορευμένες.
- Να μην περιλαμβάνει κενά διαστήματα (spaces), ούτε μαθηματικά σύμβολα όπως + ή –
- Πρέπει οπωσδήποτε να αρχίζει με χαρακτήρα του αγγλικού αλφαβήτου ή με κάτω γραμμή (_), ή με το σύμβολο του δολαρίου ($)
- Σημαντικό είναι να επιλέξουμε μια ονομασία αντιπροσωπευτική για την χρήση για την οποία προορίζετε η συγκεκριμένη μεταβλητή. Αυτό θα μας διευκολύνει κατά τη διάρκεια ανάγνωσης του κώδικα μας.
Αφού αποφασίσουμε τον τύπο αλλά και την ονομασία της μεταβλητής μας, τότε μπορούμε να την δηλώσουμε στον κώδικα μας με τον εξής τύπο:
τύπος ονομασίαΜεταβλητής;
Για παράδειγμα, στο παράδειγμα που είχαμε δει στο προηγούμενο βοήθημα, όπου θέλαμε να φτιάξουμε κάποιο πρόγραμμα που να υπολογίζει τον αριθμό τον παγωτών που έχει πωλήσει κάποιος σε μια μέρα. Σε αυτή την περίπτωση, χρειαζόμαστε μια μεταβλητή που να αντιπροσωπεύει αυτό τον αριθμό. Τι τύπου θα είναι αυτή η μεταβλητή όμως; Σίγουρα θα είναι ακέραιος αριθμός, έτσι μπορούμε να χρησιμοποιήσουμε είτε byte, είτε short, είτε int, είτε ακόμη και long. Ας πούμε όμως πως επιλέγουμε να χρησιμοποιήσουμε μεταβλητή τύπου int και να του δώσουμε ονομασία iceCreamSales, τότε σύμφωνα με τον τύπο που είδαμε πιο πάνω, θα την δηλώσουμε στο πρόγραμμα μας με τον εξής κώδικα:
int iceCreamSales;
Ωραία!
Ας πούμε για παράδειγμα τώρα, πως εκτός από τον αριθμό των παγωτών, θέλουμε να κρατάμε και τις εισπράξεις των πωλήσεων της ημέρας, τότε χρειαζόμαστε ακόμη μια μεταβλητή. Εδώ χρειαζόμαστε κάποια μεταβλητή που να μπορεί να κρατάει και δεκαδικά, έτσι οι επιλογές που μπορούμε να χρησιμοποιήσουμε είναι float ή double. Επιλέγουμε να χρησιμοποιήσουμε double και ως ονομασία της μεταβλητής μας το όνομα netSales. Τότε στον κώδικα του προγράμματος μας θα δηλώσουμε τις δύο μεταβλητές μας κάπως έτσι:
int iceCreamSales; double netSales;
Τι συμβαίνει στην περίπτωση που θέλουμε να δηλώσουμε περισσότερες από μια μεταβλητές του ίδιου τύπου;
Ας συνεχίσουμε το παράδειγμα μας υποθέτοντας πως εκτός από παγωτά, ο φίλος μας πωλεί και γρανίτες. Έτσι θέλει το πρόγραμμα που θα του φτιάξουμε να είναι σε θέση να κρατάει και αυτό τον αριθμό. Χρειαζόμαστε ακόμη μια μεταβλητή του τύπου int, και η ονομασία που επιλέγουμε είναι granitaSales. Αυτά μπορούν να δηλωθούν κάπως έτσι:
int granitaSales; int iceCreamSales; double netSales;
Υπάρχει όμως ακόμη ένας τρόπος να γίνει αυτό..
Στην Java, μπορούμε να δηλώσουμε όλες τις μεταβλητές του ίδιου τύπου, στην ίδια γραμμή, στην ίδια εντολή. Έτσι μπορούμε να δηλώνουμε τις μεταβλητές του ίδιου τύπου με περισσότερη ευκολία, γράφοντας λιγότερο κώδικα που αυτό θα έχει αντίκτυπο στο μέγεθος του προγράμματος μας αλλά και στην καλύτερη οργάνωση του κώδικα.
Η δήλωση περισσότερων από μια μεταβλητές του ίδιου τύπου, στην ίδια γραμμή, γίνεται με τον εξής τρόπο:
τύπος ονομασίαΜεταβλητής1, ονομασίαΜεταβλητής2;
Φυσικά μπορούμε να δηλώσουμε περισσότερες από δύο μεταβλητές με τον ίδιο τρόπο.
Έτσι, ο πιο πάνω κώδικας που γράψαμε σε τρείς γραμμές, μπορεί να γραφεί σε δύο ακριβώς έτσι:
int granitaSales, iceCreamSales; double netSales;
Εκχωρώντας Τιμές Στις Μεταβλητές Μας
Μια μεταβλητή θα ήταν τελείως άχρηστη αν δεν μπορούσαμε σε αυτήν να εκχωρήσουμε δεδομένα. Μπορούμε να εκχωρήσουμε δεδομένα σε μια μεταβλητή χρησιμοποιώντας το σύμβολο ίσον (=). Το = ονομάζεται ως τελεστής εκχωρήσεως (assignment operator), και για να δώσουμε τιμή σε μια μεταβλητή τον χρησιμοποιούμε ως εξής:
ονομασίαΜεταβλητής = τιμή;
Αν για παράδειγμα θέλουμε να δώσουμε την τιμή 0 στην μεταβλητή μας με την ονομασία iceCreamSales τότε ο κώδικας θα είναι ο εξής:
iceCreamSales = 0;
Όπως είναι λογικό, για να δώσουμε τιμή σε κάποια μεταβλητή, αυτή πρέπει πρώτα προηγουμένως να έχει δηλωθεί στον κώδικα μας. Μπορούμε όμως, κατά την στιγμή της δήλωσης μιας μεταβλητής, στην ίδια γραμμή να της δώσουμε ταυτόχρονα και μια τιμή.
Στο πιο πάνω παράδειγμα μας, αυτό θα γινόταν ως εξής:
int iceCreamSales = 0;
ο πιο πάνω κώδικας έχει την ίδια σημασία με αυτό:
int iceCreamSales; iceCreamSales = 0;
Σημαντικό είναι να προσέξουμε τις τιμές που δίνουμε σε κάθε μεταβλητή γιατί εάν δώσουμε κάποια τιμή η οποία δεν χωράει στο συγκεκριμένο τύπο δεδομένων της μεταβλητής, τότε το πρόγραμμα μας δεν θα μεταγλωττίζετε και θα λάβουμε error. Για παράδειγμα, δεν μπορούμε να εισάγουμε μια τιμή με δεκαδικά σε μια int μεταβλητή.
Για αυτό το λόγο, το πιο κάτω παράδειγμα είναι λανθασμένο και δεν θα λειτουργήσει.
int iceCreamSales; iceCreamSales = 3.5;
Μπορούμε όμως να εκχωρήσουμε μια ακέραια τιμή σε μια μεταβλητή με δεκαδικά.
Για παράδειγμα:
double netSales; netSales = 100;
Σε αυτή την περίπτωση, αυτόματα ο μεταγλωττιστής θα μετατρέψει το 100 σε 100.00 έτσι ώστε να χωράει στη συγκεκριμένη μεταβλητή.
Σημαντικό είναι επίσης να δούμε πώς μπορούμε να εκχωρούμε τιμές σε μεταβλητές του τύπου char.
Όπως έχουμε πει στο προηγούμενο βοήθημα, στις μεταβλητές του τύπου char χωράει ένας Unicode χαρακτήρας. Η εκχώρηση τιμών σε αυτές τις μεταβλητές γίνεται ως εξής.
ονομασίαΜεταβλητής = ‘UnicodeΧαρακτήρας’;
Για παράδειγμα, αφού πρώτα υπάρχει δηλωμένη η μεταβλητή με την ονομασία grade, εκχωρούμε τιμές σε αυτήν ακριβώς έτσι:
grade = ‘A’;
Μεταβλητές Σταθερών Τιμών
Σε ένα πρόγραμμα μας, μπορούμε να έχουμε επίσης μεταβλητές των οποίων η τιμή να είναι σταθερή. Μερικά παραδείγματα σταθερών τιμών είναι:
- Οι ώρες σε μια ημέρα που πάντα είναι 24
- Οι μήνες σε ένα χρόνο που είναι πάντα 12
- Ο μεγαλύτερος βαθμός σε ένα διαγώνισμα που είναι πάντα 100
- Ο μαθηματικός όρος π που πάντα είναι 3.14176
Για να δηλώσουμε μια μεταβλητή ως σταθερή, αυτό που έχουμε να κάνουμε είναι κατά τη διάρκεια της δήλωσης της, να βάλουμε μπροστά τη λέξη-κλειδί final. Επίσης, αν και δεν είναι αναγκαίο, συνήθως οι μεταβλητές σταθερών τιμών δηλώνονται με ΚΕΦΑΛΑΙΟΥΣ χαρακτήρες. Αυτό βοηθάει στη συνέχεια όταν σε κάποιο κομμάτι του κώδικα μας δούμε τη μεταβλητή, να καταλάβουμε πως πρόκειται περί σταθερής μεταβλητής. Όπως είπαμε και πιο παλιά, η Java ξεχωρίζει τους κεφαλαίους απ’ του πεζούς χαρακτήρες, έτσι μια μεταβλητή με την ονομασία ‘exam’ είναι διαφορετική από μια με την ονομασία ‘Exam’ ή ‘ΕΧΑΜ’.
Για παράδειγμα, φτιάχνω ένα πρόγραμμα για κάποιο καθηγητή και ξέρω πως η μεγαλύτερη βαθμολογία σε κάποιο διαγώνισμα θα είναι το 100. Έτσι η μεταβλητή που θα δηλώσω για αυτό το σκοπό είναι η εξής:
final int EXAMSCORE = 100;
Οποιαδήποτε προσπάθεια αργότερα στο πρόγραμμα για αλλαγή της τιμής αυτής της μεταβλητής, θα οδηγήσει σε error και θα ενημερωθούμε για αυτό από τον μεταγλωττιστή.
Αυτά για σήμερα.
Μπορείς να εξασκηθείς φτιάχνοντας ένα νέο project στο NetBeans και δοκιμάζοντας αυτά που μάθαμε σήμερα. Σίγουρα δεν θα είσαι σε θέση να φτιάξεις ένα πρόγραμμα που να τρέχει και να τυπώνει αποτελέσματα (αφού ακόμη δεν τα μάθαμε αυτά), όμως ο καλύτερος τρόπος για να χωνέψεις αυτά που μαθαίνουμε κάθε φορά, είναι να κάνεις και πρακτική εξάσκηση με το πληκτρολόγιο σου.
Προσπάθησε να δηλώσεις μερικές μεταβλητές και να τους εκχωρήσεις τιμές. Τόσο αρχικά στην ίδια γραμμή, όσο και με τον δεύτερο τρόπο ξεχωριστά. Μπορεί να φαίνεται αστείο και να νομίζεις πως μπορείς να μάθεις τα πάντα απλά διαβάζοντας ένα βοήθημα ή ένα βιβλίο, όμως η αλήθεια είναι πως για να πάρεις το 100% της γνώσης πρέπει ταυτόχρονα να κάνεις και πρακτική εξάσκηση, αφού αυτή πάντα βοηθάει καλύτερα στο να εμπεδώσουμε κάθε νέο πράγμα που μαθαίνουμε.
Καλή εξάσκηση και θα τα πούμε ξανά πάρα πολύ σύντομα.



Μπραβο!
Αλλα δεν διευκρινισες πως το char καταχωρει μονο ενα χαρακτηρα..