JAVA ΕΝΟΤΗΤΑ 9 – IF/ELSE STATEMENTS

 


ΕΙΣΑΓΩΓΗ

Στο σημερινό δωρεάν μάθημα Java θα μελετήσουμε τον τρόπο με τον οποίο τα προγράμματα μας μπορούν να παίρνουν αποφάσεις με βάση κάποια συνθήκη ή συνθήκες 

που έχουμε ορίσει. Επίσης θα αναλύσουμε την έννοια του block και πως αυτό συνδυάζεται με το local scope.

 BLOCK STATEMENT

Στη Java, σαν statement ορίζουμε οποιαδήποτε πράξη που έχει ένα ολοκληρωμένο αποτέλεσμα όπως ο ορισμός μια μεταβλητής, η ανάθεση τιμής σε μια μεταβλητή, η τύπωση ενός αποτελέσματος στο terminal κτλ. Επίσης, κάθε statement, όπως ήδη γνωρίζετε, πρέπει να τελειώνει με semicolon ( ; ).

Ένα block είναι μια ομάδα από statements που η αρχή και το τέλος της ορίζεται από braces ( { } ). Οι μεταβλητές που θα οριστούν μέσα στο block μπορούν να χρησιμοποιηθούν μόνο από κώδικα μέσα από το ίδιο block. Με άλλα λόγια, το εύρος δράσης της μεταβλητής (δηλαδή ποιος κώδικας έχει πρόσβαση σε αυτή) είναι μόνο μέσα από το ίδιο block. Αυτό ονομάζεται local scope.

{
    statement1;
    statement2;
    statement3;
}

Ας δούμε ένα απλό παράδειγμα μέσα από το οποίο θα μπορέσετε να κατανοήσετε απόλυτα την έννοια του local scope. Για καλύτερη επεξήγηση του κώδικα έχουν προστεθεί σχόλια σε κάθε γραμμή του προγράμματος. Το παρακάτω πρόγραμμα δεν μπορεί να εκτελεστεί.

App.java


package com.example;

public class App {

    public static void main(String[] args) {
        // Declare a variable num1
        // The scope of this variable is the main method
        int num1;
        // Start of a block statement
        {
            int num2; // Declare a num2 variable inside the block
            num2 = 200; // num2 is local to this block

            num1 = 100; // num1 is declared outside the block, so
                        // from inside the block we can reach it
        } // End of the block statement

        num2 = 50; // A compile-time error. num2 has been
                   //declared inside a block and
                   //so it cannot be used outside that block
                   // This program can not be compiled.

    }
}

Output



Στο παραπάνω παράδειγμα, η κύρια ουσία είναι να καταλάβετε ότι στη μεταβλητή num1 που ορίστηκε σε επίπεδο μεθόδου έχουν πρόσβαση τα υπό-blocks που δημιουργήσαμε. Το αντίθετο όμως δεν ισχύει. Δηλαδή στη num2 που ορίστηκε μέσα στο δικό της block δεν έχει πρόσβαση ο κώδικας που βρίσκεται σε επίπεδο main μεθόδου.

IF STATEMENT

Η χρησιμότητα , και κατά συνέπεια, η έννοια του block γίνεται πιο ξεκάθαρη όταν χρησιμοποιείται σε συνδυασμό με άλλες λογικές όπως αυτή των if statements. Το if statement προσθέτει τη δυνατότητα στον πρόγραμμα μας να αποφασίζει για τη ροή εκτέλεσης του κώδικα βασιζόμενο στο αποτέλεσμα μιας (ή και περισσοτέρων) true/false συνθήκης.

Το if statement αποτελείται από ένα Boolean expression και αμέσως μετά ακολουθούν ένα ή και περισσότερα statements. Ο γενικός κανόνας συντακτικού ενός if statement είναι ο ακόλουθος:

if(Boolean_expression){
// Statements will execute if the Boolean expression is true
}


Εάν το Boolean expression μέσα στη παρένθεση έχει τιμή true, τότε τα statements που βρίσκονται μέσα στο block ( ορίζεται από τα braces ( { } ) ) θα εκτελεστούν. Εάν όμως το boolean expression είναι false, τότε δεν θα εκτελεστούν τα statements που ανήκουν στο block του if, το πρόγραμμα θα τα παραβλέψει και θα συνεχίσει την εκτέλεση του υπόλοιπου κώδικα της εφαρμογής.

Στο παρακάτω παράδειγμα θα χρησιμοποιήσουμε το if statement για να συγχαρούμε τον μαθητή εάν ο μέσος όρος των τριών διαγωνισμάτων είναι μεγαλύτερος από 95. Εάν δεν είναι τότε δεν θα εμφανιστεί ο έξτρα μήνυμα που ορίζεται μέσα στο if block.

App.java

package com.example;

public class App {

    public static void main(String[] args) {

        int HIGH_SCORE = 95;

        int test1 = 95;
        int test2 = 97;
        int test3 = 98;

        int average = (test1 + test2 + test3) / 3;

        System.out.println("The average score is " + average);

        if (average >= HIGH_SCORE) {
            System.out.println("Congratulations!");
            System.out.println("Excellent effort on your exams");
        }

    }
}

Output

The average score is 96

Congratulations!

Excellent effort on your exams

Με βάση το παραπάνω παράδειγμα και με τη θεωρία που έχουμε καλύψει μέχρι τώρα, καταλαβαίνετε ότι όταν έχουμε πολλαπλά if statements μέσα στο ίδιο πρόγραμμα, τότε θα εκτελεστούν όλα εκείνα στα οποία το Boolean expression είναι true. Ας δούμε ένα παράδειγμα στην οποίο έχουμε μια τέτοια περίπτωση.

App.java

package com.example;

public class App {

    public static void main(String[] args) {

        int x = 10;
        double half = 0.0;

        if (x != 0) {
            half = x / 2.0;
            System.out.println(x + "/2 = " + half);
        }

        if (x == 0) {
            System.out.println("The value of x is 0");
        }

        int y = x * 5;
        char grade = 'F';

        if (y >= 85) {
            grade = 'A';
        }

        if (y >= 70 && y < 85) {
            grade = 'C';
        }

        System.out.println("y = " + y + " and grade = " + grade);
    }

}

Output

10/2 = 5.0

y = 50 and grade = F

Παρατηρούμε στο παραπάνω κώδικα ότι μπορούμε να χρησιμοποιήσουμε τους Relational Operators για να πραγματοποιήσουμε τις διάφορες συγκρίσεις που χρειαζόμαστε.


 

Προσέξτε με το διπλό σύμβολο == το οποίο συμβολίζει αλγεβρική σύγκριση και όχι ανάθεση τιμής. Ο παρακάτω πίνακας σας δείχνει συνοπτικά όλους τους Relational Operators.


Επίσης υπάρχουν και οι Boolean Operators AND ( &&), OR ( || ) και NOT ( ! ).

 


IF ELSE STATEMENT

Η παραπάνω λειτουργία του if statement, αν και είναι επιθυμητή, δεν είναι απολύτως τέλεια. Συνήθως επιθυμούμε να έχουμε μια σειρά από if statements και να εκτελεστεί μόνο ένα (εκείνο που πρώτο ικανοποιεί τη συνθήκη) και να αγνοηθούν τα υπόλοιπα. Αυτό μπορούμε να το πετύχουμε αν προσθέσουμε το else μετά το if.

App.java

package com.example;

public class App {

    public static void main(String[] args) {
        int score = 79;
        char grade;

        if (score >= 90) {
            grade = 'A';
            System.out.println("Way to go!");
        } else if (score >= 80) {
            grade = 'B';
            System.out.println("Good job!");
        } else if (score >= 70 && score < 80) {
            grade = 'C';
        } else if (score >= 60) {
            grade = 'D';
        } else {
            grade = 'F';
            System.out.println("Try again");
        }

        System.out.println("Your grade is a " + grade);
    }

}

Output

Your grade is a C

Σε αυτό τον απλό κώδικα του παραπάνω παραδείγματος, αναθέτουμε τη τιμή 79 σε μια int μεταβλητή με το όνομα score. Η τιμή της μεταβλητής ελέγχεται από μια σειρά if-else statements. Η συνθήκη (score >= 70 && score < 80 ) ικανοποιείται και επιστρέφει true. Σας θυμίζω ότι για να επιστρέψει true το AND θα πρέπει και οι δύο όροι του να είναι true.

Επίσης στο τέλος του κώδικα υπάρχει ένα else μόνο του. Αυτός είναι ο τρόπος που ελέγχουμε για οποιαδήποτε άλλη κατάσταση που δεν έχουμε γράψει ένα if statement. Έτσι έχουμε τον απόλυτο έλεγχο στο πρόγραμμα μας γιατί στην ουσία είτε μια τιμή θα ανήκει σε ένα από τα if statements είτε όχι οπότε θα καλυφθεί από το τελευταίο else.

Μην ξεχάσετε να κάνετε ένα μικρό donation έτσι ώστε αυτό το blog να μεγαλώσει ακόμα πιο πολύ και να έχει περισσότερες δυνατότητες στην online παράδοση δωρεάν μαθημάτων.


full-width

Post a Comment

0 Comments