BETA

Μαθαίνοντας την Java-EQUALITY, RELATIONAL, AND CONDITIONAL OPERATORS [μάθημα 15]

Εικόνα Michail

Συνεχίζουμε τα μαθήματα εκμάθησης της Java, έχοντας ήδη κάνει το πρώτο εισαγωγικό μάθημα και έχοντας δει,πως μπορούμε να εγκαταστήσουμε το NetBeans, προκειμένου να δημιουργήσουμε τις εφαρμογές μας και στη συνέχεια δημιουργώντας την πρώτη μας εφαρμογή.
Έχοντας δει κιόλας, σχετικά με τα LANGUAGE FUNDAMENTALS και στη συνέχεια, Ονομασία Μεταβλητών, και τα INTEGER TYPES, καθώς και τα Floating Point Types, μα και καθορισμό των Boolean και Char Data types, καθώς και για τα Arrays και την εισαγωγή δεδομένων μέσω κλάσης Scanner και την JOptionPane CLASS, όπως και τα Big Numbers και ASSIGNMENT-ARITHMETIC-και UNARY OPERATORS συνεχίζουμε με το 14ο μάθημα της σειράς.
[box color=blue]Σε αυτή την φάση για τα εκπαιδευτικά μαθήματα χρησιμοποιούμε το λειτουργικό σύστημα Windows, μα οι διαφορές είναι ελάχιστες, ως μηδαμινές και στα υπόλοιπα λειτουργικά[/box]
Στο σημερινό java μάθημα θα συνεχίσουμε την ανάλυση μας με τους τελεστές.
Ας ξεκινήσουμε με τους Equality και τους Relational και μετά θα ολοκληρώσουμε με τους Conditional.
Οι equality και οι relational τελεστές συγκρίνουν εάν ένας όρος είναι μεγαλύτερος από έναν άλλο, εάν είναι μικρότερος, εάν είναι ίσος, ή δεν έχουν καμία σχέση ισότητας μεταξύ τους.
Οι περισσότεροι από τους τελεστές που χρησιμοποιούνται για αυτό το σκοπό θα πρέπει να σας είναι γνώριμοι.
Υπάρχει όμως ένα σημείο που πρέπει να προσέξουμε – όταν συγκρίνουμε δύο όρους για ισότητα (συνήθως σε κάποια συνθήκη όπως το if-else) τότε χρησιμοποιούμε το διπλό σύμβολο της ισότητας ( == ) και όχι το μονό ( = ).
Το σύμβολο ( = ) σημαίνει ανάθεση τιμής από τον όρο στα δεξιά του συμβόλου προς το όρο προς τα αριστερά και όχι ισότητα. Ο πιο κάτω πίνακας συγκεντρώνει όλα τα σύμβολα για τους equality και relational τελεστές.

Ας δούμε όμως την λειτουργία και χρήση αυτών των τελεστών σε ένα ολοκληρωμένο πρόγραμμα με την ονομασία ComparisonDemo:

Lines 7 – 10: Αρχικά ορίζουμε δύο μεταβλητές value1 και value2 δίνοντας τους τις τιμές 1 και 2 αντίστοιχα.
Με την συνθήκη του if (θα μιλήσουμε σε μελλοντικό μάθημα για αυτό) συγκρίνουμε εάν η τιμή της μεταβλητής value1 είναι ίση με την τιμή της μεταβλητής value2. Σας επισημάνω για άλλη μια φορά ότι σε συνθήκες σύγκρισης χρησιμοποιείται το διπλό σύμβολο της ισότητας.
Επειδή όμως η συνθήκη του if δεν αληθεύει (οι τιμές είναι άνισες άρα το if δίνει σαν αποτέλεσμα τιμή false) δεν θα ολοκληρωθεί η εκτέλεση του System.out.println(“value1 == value2”) και το πρόγραμμα θα μεταφερθεί στην αμέσως επόμενη γραμμή κώδικα. Οπότε το συγκεκριμένο αποτέλεσμα δεν θα το δούμε ποτέ στην οθόνη μας.

Lines 11 – 12: Σε αυτή την γραμμή του κώδικα, η συνθήκη του if συγκρίνει εάν οι δύο όροι του τελεστή != είναι άνισοι. Επειδή αυτή η συνθήκη αληθεύει και το αποτέλεσμα είναι true τότε η java συνεχίζει με την εκτέλεση του System.out.println(“value1 != value2″) το οποίο είναι και το πρώτο μήνυμα που βλέπουμε στην οθόνη του output.

Lines 13 – 14: Κατά τον ίδιο τρόπο σκέψης, επειδή η συνθήκη του if, που συγκρίνει εάν η τιμή της πρώτης μεταβλητής είναι μεγαλύτερη από την τιμή της δεύτερης, δεν αληθεύει τότε η πρόταση System.out.println(“value1 > value2″) δεν θα εκτελεστεί ποτέ και το πρόγραμμα θα συνεχίσει στην επόμενη γραμμή κώδικα.

Lines 15 – 16: Αντίθετα με την προηγούμενη συνθήκη, αυτή η συνθήκη αληθεύει οπότε θα εκτελεστεί και η πρόταση System.out.println(“value1 < value2″) την οποία βλέπουμε και στο output του προγράμματος μας.

Lines 17 – 18: Τέλος, συγκρίνουμε εάν η τιμή της μεταβλητής value2 είναι μεγαλύτερη η έστω ίση με την τιμή της μεταβλητής value1.
Επειδή και αυτή η συνθήκη αληθεύει, τότε θα εκτελεστεί και η println μέθοδο που ακολουθεί.

Η επόμενη κατηγορία τελεστών στην οποία θα αναφερθούμε είναι η Conditional Operators. Εδώ αναφερόμαστε ποιο συγκεκριμένα στον τελεστή AND που αντιπροσωπεύεται από το σύμβολο && και τον τελεστή OR που αντιπροσωπεύεται από το σύμβολο ||.

Ο τελεστής AND συνδυάζει και αποτελείται από δύο όρους που αξιολογούνται ο κάθε ένας από αυτούς σαν Boolean, δηλαδή σαν true ή false.
Με βάση το αποτέλεσμα από κάθε όρο, ο τελεστής θα αποφασίσει ποιο θα είναι το ολικό αποτέλεσμα για ολόκληρη την πρόταση που περιλαμβάνει και τους δύο όρους. Αυτό το τελικό και ολικό αποτέλεσμα είναι πολύ εύκολο να το βρούμε γιατί μπορούμε να στηριχτούμε σε έναν πίνακα (ονομάζεται truth table) που παρουσιάζει όλους τους δυνατούς συνδυασμούς που μπορεί να έχουμε.
Με βάση λοιπόν αυτό τον πίνακα για να μπορέσει ένας AND τελεστής να αποδώσει σαν τελικό αποτέλεσμα TRUE απάντηση, θα πρέπει και οι δύο όροι του να είναι TRUE.
Για οποιοδήποτε άλλο συνδυασμό το αποτέλεσμα θα είναι FALSE όπως σας δείχνει και ο πίνακας που ακολουθεί:

Όσο αφορά τώρα τον OR τελεστή, αυτός είναι λίγο πιο χαλαρός με τους όρους που προϋποθέτει για να δώσει TRUE απάντηση.
Με άλλα λόγια, εάν ένας από τους δύο όρους είναι TRUE ή στην καλύτερη κατάσταση είναι και οι δύο TRUE τότε το ολικό αποτέλεσμα θα είναι TRUE. Για να το θυμάστε καλύτερα, ο OR τελεστής θα σας δώσει FALSE μόνο και μόνο όταν και οι δύο όροι του είναι FALSE και αυτό μπορούμε να το επιβεβαιώσουμε στο πιο κάτω truth table:

Πριν δούμε ένα ολοκληρωμένο παράδειγμα που χρησιμοποιεί αυτούς τους δύο τελεστές, ας αναφέρουμε ένα ακόμα πολύ ενδιαφέρον κοινό στοιχείο τους που είναι η “short-circuit” συμπεριφορά τους.
Αυτή η έννοια σημαίνει ότι, εάν από το αποτέλεσμα του πρώτου όρου μπορούμε με ασφάλεια να βγάλουμε ένα αποτέλεσμα για όλον τον τελεστή τότε ο έλεγχος του δεύτερου όρου παραλείπεται.
Για παράδειγμα, εάν έχουμε μια AND συνθήκη που ο πρώτος της όρος αξιολογείται σαν FALSE τότε η Java δεν θα ασχοληθεί να ελέγξει και τον δεύτερο όρο αφού είναι σίγουρο ότι το τελικό και ολικό αποτέλεσμα θα είναι FALSE.
Αυτός ο τρόπος κάνει πιο σύντομο το χρόνο εκτέλεσης ενός προγράμματος.

Ας δούμε όμως ένα ολοκληρωμένο πρόγραμμα τώρα με το όνομα ConditionalDemo1 μέσα από το οποίο μπορούμε να δούμε την εφαρμογή της θεωρίας για την οποία μόλις μιλήσαμε:

Lines 9 – 10: Σε αυτή την συνθήκη με τον AND τελεστή ο πρώτος όρος συγκρίνει εάν η μεταβλητή ισούται με την τιμή 1 που αληθεύει οπότε αξιολογείται σαν TRUE. Ο δεύτερος όρος και αυτός αξιολογείται σαν TRUE αφού η τιμή της μεταβλητής value2 είναι 2. Με βάση το truth table λοιπόν του τελεστή AND, όταν και οι δύο όροι είναι true, τότε και το τελικό αποτέλεσμα θα είναι true. Το αποτέλεσμα θα είναι να εκτελεστεί η println μέθοδο με το μήνυμα “value1 is 1 AND value2 is 2″.

Lines 11 – 12: Εδώ η επίλυση της τελικής απάντησης είναι ακόμα πιο εύκολη και γρήγορη επειδή ενεργοποιείται ο short-circuit μηχανισμός. Με άλλα λόγια από την στιγμή που ο πρώτος όρος είναι true τότε όλη η συνθήκη θα είναι true και η println μέθοδο θα εκτελεστεί με το μήνυμα “value1 is 1 OR value2 is 1″.

Οι υπόλοιποι δύο τελεστές όσο και αν είναι μέρος της σημερινής θεωρίας θα τους παραβλέψω γιατί ακόμα δεν έχουμε μιλήσει ούτε για αντικείμενα αλλά ούτε και για if-then-else εντολές, οπότε η χρησιμότητα τους δεν θα είναι εμφανή αυτή την χρονική στιγμή.
Θα επανέλθουμε σε αυτό το tutorial στο κοντινό μέλλον όταν θα έχουμε το θεωρητικό υπόβαθρο το οποίο απαιτείται για την ανάλυση και κατανόηση των παραδειγμάτων που προσφέρονται.

Μιχάλης Κασάπογλου(http://kassapoglou.com)

  • Σχόλια

0 Comments:

Scroll to Top