🟢2.1. Μεταβλητές, Τύποι, Τελεστές και Εκφράσεις

H Java είναι μια αντικειμενοστρεφής γλώσσα προγραμματισμού. Τα πάντα στην Java είναι αντικείμενα κάποιων κλάσεων εκτός από κάποιες ελάχιστες εξαιρέσεις, όπως είναι οι βασικοί τύποι δεδομένων.

 

Μεταβλητές

Όπως γνωρίζετε, από την εμπειρία σας με τα κινητά, τα λάπτοπ ή άλλες υπολογιστικές μηχανές τις οποίες έχετε περιεργαστεί, όσο περισσότερη μνήμη RAM έχει ένα υπολογιστικό σύστημα τόσο το καλύτερο. Η μνήμη RAM μετριέται σε Gigabytes (GB).

Φανταστείτε ότι η μνήμη RAM είναι ένα πελώριο συρτάρι όπου μπορείς να αποθηκεύσεις ότι επιθυμείς για μελλοντική χρήση ή αναφορά. Δεν θα ήταν φοβερό αυτό;

Ε λοιπόν η μνήμη RAM είναι όντως φοβερή! Είναι τόσο μεγάλη που μπορεί να αποθηκεύσει εξαιρετικά μεγάλο όγκο δεδομένων και τα «συρτάρια» της είναι οι λεγόμενες Μεταβλητές.

 

Μία μεταβλητή έχει τρία (3) χαρακτηριστικά:

  • Όνομα  🔒
  • Τύπος 🔓
  • Τιμή 🔓

 

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

Οι τύποι μεταβλητών είναι σαν την εθνικότητα ενός ανθρώπου. Ας πούμε ότι μια μεταβλητή x είναι ο "Γιάννης" και είναι Έλληνας. Τότε στο παράδειγμά μας η τιμή "Γιάννης" είναι το περιεχόμενο της μεταβλητής, η τιμή Έλληνας είναι ο τύπος της μεταβλητής και το x είναι το όνομα της μεταβλητής.

 

📍Ευτυχώς στην ζωή δεν είναι έτσι και μπορούμε να αλλάξουμε εθνικότητες :) Οπότε απλά πάρτε το ως παράδειγμα προς κατανόηση των μεταβλητών και όχι κατά γράμμα.

 

 

Βασικοί τύποι

Οι βασικοί πρωτογενείς τύποι δεδομένων, οι οποίοι δεν είναι αντικείμενα κάποια κλάσης, είναι οι παρακάτω:

Πίνακας: Οι βασικοί τύποι δεδομένων

 

Οι τύποι δεδομένων byte, short, int, long χρησιμοποιούνται ως ακέραιοι αριθμοί ανάλογα με το εύρος που μας ενδιαφέρει, ενώ οι τύποι float, double για χρήση αριθμών κινητής υποδιαστολής, δηλαδή δεκαδικών αριθμών. Ο τύπος boolean παίρνει μόνο δυο τιμές true / false (Αληθής / Ψευδής) ενώ ο τύπος char έχει μέγεθος 2 bytes γιατί έχει σχεδιαστεί να περιέχει χαρακτήρες Unicode (UTF-16).

 

 

Ιεραρχία Τελεστών

 

 

Αριθμητικοί Τελεστές

Πίνακας: Αριθμητικοί τελεστές

 

 

Συγκριτικοί Τελεστές

Πίνακας: Συγκριτικοί τελεστές

 

 

Λογικοί Τελεστές

Πίνακας: Λογικοί τελεστές

 

 

Πίνακας Αληθείας

Φανταστείτε ότι ένας έφηβος (Α) και η μικρή του αδερφή (Β) θέλουν να πάνε να δουν Καραγκιόζη στην πλατεία του χωριού τους. Έτσι λοιπόν, ρωτούν την μητέρα τους ώστε να τους δώσει την άδεια.

 

 

Ωραία, τώρα που είδαμε τον Πίνακα Αλήθειας ας επιστρέψουμε στο 2ο παράδειγμα των Λογικών τελεστών.

 

-10 > -100 || (19 + 2 > 25 && 25 * 2 > 125) ⇒

True || (False and False) ⇒

True || False ⇒

True

 

 

Παράδειγμα 01 - Εκφράσεις με Τελεστές

Οι τιμές θα είναι το αποτέλεσμα των εκφράσεων ύστερα από την εφαρμογή της Ιεραρχίας Τελεστών.

 π.χ. 

a =  9 + 4 * 2 
a = 17        # ← αποτέλεσμα της a μεταβλητής

b = ! 5 == 5 
b = False     # ← αποτέλεσμα της b μεταβλητής

 

 

 

💪🏻Δραστηριότητα 01 - Εκφράσεις με Τελεστές

 

 

 

💪🏻Δραστηριότητα 02 - Εκφράσεις με Τελεστές

 

 

 

💪🏻Δραστηριότητα 03 - Εκφράσεις με Τελεστές

 

 

 

💪🏻Δραστηριότητα 04 - Εκφράσεις με Τελεστές

 

 


 

 

Δήλωση και ορισμός μεταβλητών

Όπως είδαμε και σε προηγούμενα κεφάλαια, οι μεταβλητές είναι ζωτικής σημασίας για την δημιουργία προγραμμάτων.

 

Για παράδειγμα, ας υποθέσουμε ότι θέλουμε να δημιουργήσουμε ένα παιχνίδι όπου ο παίκτης μας έχει 5 ζωές (❤️❤️❤️❤️❤️) και κάθε φορά που ένας εχθρός καταφέρνει να τον χτυπήσει χάνει μία ζωή.

 

 

Οπότε, δημιουργούμε μια μεταβλητή hp και της εκχωρούμε την τιμή 5 , αναπαριστώντας τις 5 ζωές που είπαμε προηγουμένως.

Ο κώδικας στην Java είναι,

hp = 5;

Το σύμβολο  =  στην Java είναι η εκχώρηση. Δηλαδή, το να εισάγεις μία τιμή στην μεταβλητή.

 

📌 Φανταστείτε τον τελεστή της εκχώρησης ( = ) σαν ένα βέλος ( ← ) για καλύτερη κατανόηση. Μην τον συγχέετε με το συγκριτικό τελεστή ίσον  ( == ) που ελέγχει για ισότητα στην Java.

 

Όποτε ο χαρακτήρας μας λάβει χτύπημα από έναν εχθρό τότε μειώνουμε τις ζωές του κατά μία:

hp = hp - 1;

Μπορεί να παραξενεύεστε από το συντακτικό αυτό, καθώς η εμπειρία σας στην γραφή Μαθηματικών σας προτρέπει να σκεφτείτε:

«Μα καλά πως γίνεται το hp να είναι ίσο με το hp - 1;»

 

Όμως ο χαρακτήρας  =  στην Java δεν ελέγχει για ισότητα αλλά κάνει ενημέρωση στην τιμή της μεταβλητής. Είναι το ειδικό σύμβολο για την εκχώρηση τιμής σε μεταβλητές. Μην τον συγχέετε με τον συγκριτικό τελεστή == (ίσον) της Java.

 

Με το να γράφουμε  hp = hp - 1;  λέμε: «Βάλε ότι ήταν μέσα στο hp μείον ένα»

 

Κάνοντας το παράδειγμα λίγο πιο ρεαλιστικό ας υποθέσουμε ότι ο χαρακτήρας μας ξεκινά με 1000 πόντους ζωής (hp). Κάθε χτύπημα που δέχεται από κάποιον εχθρό του αφαιρεί πόντους από την ζωή. Τους αφαιρούμενους πόντους που κατάφερε, εναντίον του, ο εχθρός ας την ονομάσουμε ζημιά (damage). Ο χαρακτήρας μας τερματίζεται όταν χάσει όλους τους πόντους ζωής.

 

public class Main {
    public static void main(String[] args) {
        int hp = 1000;
        int damage;

        // first enemy hit
        damage = 70;
        hp = hp - damage;
        System.out.println("μετά από 1ο χτύπημα: " + hp + "💓");

        // second enemy hit
        damage = 50;
        hp = hp - damage;
        System.out.println("μετά από 2ο χτύπημα: " + hp + "💓");

        // third enemy hit
        hp = hp - damage;
        System.out.println("μετά από 3ο χτύπημα: " + hp + "💓");

        System.out.println("hp: " + hp + "💓");
    }
}

Κάντε αντιγραφή & επικόλληση (copy & paste) και εκτελέστε τον παραπάνω κώδικα Java στον online μεταγλωττιστή Java → https://onecompiler.com/java 

(εναλλακτικά: https://www.w3schools.com/java/tryjava.asp?filename=demo_compiler )

 

 

 

💪🏻Δραστηριότητα : 👣

Ανοίξτε το πρόγραμμα/μηχανή κατασκευής παιχνιδιών Greenfoot και ακολουθήστε τα παρακάτω βήματα ώστε να θέσουμε μία μεταβλητή ως μετρητή.

Βήμα 1: Δημιουργία του κόσμου και των κλάσεων Bear και Burger 

 

Βήμα 2: Διπλό κλικ στο Actor → Bear  και δημιουργία της μεταβλητής speed στον κώδικα της κλάσης Bear.

 

Βήμα 3: Δημιουργία αντικειμένου Bear και τοποθέτηση στον κόσμο. Έπειτα πατήστε Εκτέλεση (Run).

 

 

 


Επιπλέον υλικό

Java Basics: [1🔗] [2🔗] [3🔗] [4🔗] [5🔗] [6🔗] [7🔗]