Τελεστές σύγκρισης, λογικής και επαναλήψεις
Διομήδης Σπινέλλης
Τμήμα Διοικητικής Επιστήμης και Τεχνολογίας
Οικονομικό Πανεπιστήμιο Αθηνών
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