Τελεστές σύγκρισης, λογικής και επαναλήψεις
Διομήδης Σπινέλλης
Τμήμα Διοικητικής Επιστήμης και Τεχνολογίας
Οικονομικό Πανεπιστήμιο Αθηνών
dds@aueb.gr
Τελεστές σύγκρισης
Οι αριθμητικές τιμές της Java μπορούν να συγκριθούν με τη
χρήση των παρακάτω τελεστών:
 | Σύγκριση | Τελεστής της Java | 
 | Ίσο | == | 
 | Διάφορο | != | 
 | Μικρότερο | < | 
 | Μεγαλύτερο | > | 
 | Μικρότερο ή ίσο | <= | 
 | Μεγαλύτερο ή ίσο | >= | 
-  Για τον υπολογισμό μιας τιμής, πρώτα εκτελούνται οι πράξεις ανάμεσα
στους τελεστές * / %, μετά οι πράξεις ανάμεσα στους τελεστές + -,
μετά ανάμεσα στους τελεστές < > <= >= και μετά
ανάμεσα στους τελεστές == και !=.
-  Η παραπάνω σειρά μπορεί να μεταβληθεί με τη χρήση παρενθέσεων.
-  Το αποτέλεσμα της κάθε σύγκρισης είναι 
αληθές (true) αν η σύγκριση ισχύει
και
ψευδές (false) αν η σύγκριση δεν ισχύει.
Παράδειγμα
import gr.aueb.dds.BIO;
class TestCompare {
        public static void main(String args[]) {
                BIO.println(1 + 1 == 2);        /* Τυπώνει true */
                BIO.println(1 > 2);             /* Τυπώνει false */
                BIO.println(5 != 5);            /* Τυπώνει false */
                BIO.println(1 <= 5);            /* Τυπώνει true */
                BIO.println(1 <= 1);            /* Τυπώνει true */
                BIO.println(1 <= 0);            /* Τυπώνει false */
        }
}
Βρόχοι με την εντολή while
-  Μπορούμε να επαναλάβουμε την εκτέλεση ορισμένων εντολών με τη
δομή ελέγχου (control structure) while.
-  Αυτή χρησιμοποιείται ως εξής:
        while (συνθήκη)
 εντολή;
 
 
-  Τις περισσότερες φορές θέλουμε να εκτελέσουμε πάνω από μια εντολή
πολλαπλές φορές οπότε περικλείουμε όλες τις αντίστοιχες εντολές μέσα σε
αγκύλες "{" και "}":
        while (συνθήκη) {
 εντολή1;
 εντολή2;
 εντολή3;
 }
 
 
-  Η εντολή που ακολουθεί το while εκτελείται όσο η συνθήκη είναι
αληθής, δηλαδή έχει τιμή διάφορη του 0.
Παράδειγμα (τυπώνει τους αριθμούς από το 0 μέχρι το 9):
import gr.aueb.dds.BIO;
 
 class Counter {
 public static void main(String args[])
 {
 int i;
 
 i = 0;
 while (i < 10) {
 BIO.println(i);
 i = i + 1;
 }
 }
 }
 
 
-  Αν η συνθήκη δεν είναι αληθής όταν εκτελεστεί το while για πρώτη
φορά τότε η εντολή που περιέχεται σε αυτό δε θα εκτελεστεί.
-  Η δομή ελέγχου while μπορεί να χρησιμοποιηθεί οπουδήποτε θα μπορούσε
και οποιαδήποτε άλλη εντολή (π.χ. η println) δηλαδή ακόμα και μέσα σε μια άλλη
while.
Το παρακάτω παράδειγμα τυπώνει στην οθόνη ένα τριγωνικό σχήμα:
import gr.aueb.dds.BIO;
 
 class Triangle {
 public static void main(String args[]) {
 int row, stars;
 
 row = 0;
 while (row < 10) {
 stars = row;
 while (stars > 0) {
 BIO.print('*');
 stars = stars - 1;
 }
 row = row + 1;
 BIO.println();;
 }
 }
 }
 
 όπως αυτό:
*
**
***
****
*****
******
*******
********
*********
 
Βρόχοι με την εντολή do while
-  Ορισμένες φορές θέλουμε να ελέγχουμε τη συνθήκη στο τέλος
του βρόχου, δηλαδή η εντολή να εκτελεστεί τουλάχιστον μια φορά.
Στις περιπτώσεις αυτές χρησιμοποιούμε τη δομή ελέγχου do while
-  Αυτή χρησιμοποιείται ως εξής:
        
 do
 εντολή;
 while (συνθήκη);
 
 
-  Τις περισσότερες φορές θέλουμε να εκτελέσουμε πάνω από μια εντολή
πολλαπλές φορές οπότε περικλείουμε όλες τις αντίστοιχες εντολές μέσα σε
αγκύλες "{" και "}":
        do {
 εντολή1;
 εντολή2;
 εντολή3;
 } while (συνθήκη);
 
 
-  Η εντολή που ακολουθεί το do εκτελείται μια φορά και συνεχίζει
να εκτελείται όσο η συνθήκη είναι αληθής, δηλαδή έχει τιμή διάφορη του 0.
-  Σημαντικό ρόλο έχει αυτή η δομή ελέγχου όταν διαβάζουμε στοιχεία
από το χρήστη και θέλουμε να ελέγξουμε την είσοδο για λάθη.
Παράδειγμα (εισάγει έναν αριθμό μικρότερο του 10):
import gr.aueb.dds.BIO;
 
 class CheckGrade {
 public static void main(String args[])
 {
 int number;
 
 do {
 BIO.print("Enter a number less than 10: ");
 number = BIO.readInt();
 } while (number >= 10);
 BIO.println("You entered " + number);
 }
 }
 
 όπως φαίνεται από το παρακάτω παράδειγμα:
Enter a number less than 10: 34
Enter a number less than 10: 50
Enter a number less than 10: 2
You entered 2
 
-  Αν η συνθήκη δεν είναι αληθής όταν εκτελεστεί το do για πρώτη
φορά τότε η εντολή που περιέχεται σε αυτό θα εκτελεστεί τουλάχιστον μια φορά.
-  Η δομή ελέγχου do μπορεί να χρησιμοποιηθεί οπουδήποτε θα μπορούσε
και οποιαδήποτε άλλη εντολή (π.χ. η BIO.println()) δηλαδή ακόμα και μέσα σε μια άλλη
do ή while.
Λογικοί τελεστές
Τα λογικά αποτελέσματα στη Java μπορούν να συνδυαστούν με τη
χρήση των παρακάτω λογικών τελεστών:
Παράδειγμα
Ο παρακάτω βρόχος μπορεί να αποτελεί τμήμα του προγράμματος
ελέγχου ενός τραπεζικού μηχανήματος αυτομάτων συναλλαγών:
{
        int secret, pin, tries;
        secret = 1234;                  /* Customer's secret PIN */
        tries = 0;
        do {
                BIO.print("Δώστε το PIN σας: ");
                pin = BIO.getInt();
                tries = tries + 1;
        } while (pin != secret && tries < 4);
        /* Correct PIN entered or number of tries exhausted */
}
Βιβλιογραφία
- Γιώργος Λιακέας
Εισαγωγή στην Java. σ. 91-95,
Εκδόσεις Κλειδάριθμος 2001.
 
Ασκήσεις
Βρόχοι
-  Να γράψετε ένα πρόγραμμα που να τυπώνει τον πίνακα της
προπαίδειας όπως στο παρακάτω παράδειγμα:
   1    2    3    4    5    6    7    8    9   10 
   2    4    6    8   10   12   14   16   18   20 
   3    6    9   12   15   18   21   24   27   30 
   4    8   12   16   20   24   28   32   36   40 
   5   10   15   20   25   30   35   40   45   50 
   6   12   18   24   30   36   42   48   54   60 
   7   14   21   28   35   42   49   56   63   70 
   8   16   24   32   40   48   56   64   72   80 
   9   18   27   36   45   54   63   72   81   90 
  10   20   30   40   50   60   70   80   90  100