Page 1 of 1

Java (Απορία περί if)

Posted: Wed Oct 20, 2010 9:45 pm
by MpoMp
Σήμερα στο εργαστήριο αναπτύξαμε πρόγραμμα το οποίο βρίσκει τον μέγιστο από τρεις αριθμούς. Η δομή του if, όπως δόθηκε από την καθηγήτρια, και δούλεψε ήταν η εξής (παραθέτω όλο τον κώδικα):

Code: Select all

class megisto3ar
{
    public static void main (String args[])
    {
        int a,b,c,meg; // a,b,c oi treis ari8moi, meg h metavlhth gia ton megisto
        a=Integer.parseInt(args[0]); b=Integer.parseInt(args[1]);
c=Integer.parseInt(args[2]);
        meg = a;
        if (b > meg) meg = b;
        if (c > meg) meg = c;
        System.out.println("O megistos ari8mos metaksy twn "+a+" kai "+b+" kai
"+c+" einai o "+meg+".");
    }
}
Όταν έριξα μια ματιά στο tutorial της oracle, παρατήρησα ότι η if διαφέρει στην σύνταξη:

Code: Select all

void applyBrakes(){
     if (isMoving) {
          currentSpeed--;
     } else {
          System.err.println("The bicycle has already stopped!");
     } 
}
Στο μέλλον (μου ως προγραμματιστής :-p ), μπορώ να χρησιμοποιώ και τις δύο συντάξεις?

Re: Java (Απορία περί if)

Posted: Wed Oct 20, 2010 9:53 pm
by cypher
Ως διαφορα εννοεις την υπαρξη και μη των αγκυλων; Αν ναι προφανως οτι σε βολευει χρησιμοποιεις, απλα καθε γλωσσα εχει μερικα δικα της προτυπα για το πως θα επρεπε να γραφεται ωστε να ειναι πιο ευκολη η αναγνωση του κωδικα απο αλλους.

Re: Java (Απορία περί if)

Posted: Wed Oct 20, 2010 9:54 pm
by MpoMp
Βασικά τώρα που το βλέπω, ναι, οι αγκύλες διαφέρουν μόνο. Αλλά μήπως επειδή εμείς δεν χρησιμοποιήσαμε else?

Re: Java (Απορία περί if)

Posted: Wed Oct 20, 2010 10:01 pm
by cypher
MpoMp wrote:Βασικά τώρα που το βλέπω, ναι, οι αγκύλες διαφέρουν μόνο. Αλλά μήπως επειδή εμείς δεν χρησιμοποιήσαμε else?
Ο μεταγλωτιστης λαμβανει ως εντολες προς εκτελεση μετα το if ειτε την πρωτη εντολη (μεχρι το πρωτο ; ) ειτε το πρωτο block εντολων (οπου block ειναι οτι ειναι μεσα σε αγκυλες).
Απο εκει και περα κανεις οτι θες ειτε με if σκετο ειτε με if-else.

Re: Java (Απορία περί if)

Posted: Wed Oct 20, 2010 10:02 pm
by MpoMp
Μάλιστα. Ευχαριστώ πολύ!

Re: Java (Απορία περί if)

Posted: Thu Oct 21, 2010 1:36 am
by The Punisher
καλύτερα να βάζεις αγκύλες για να μη χάνεις τη μπάλα. Και να προτιμάς καθαρό κώδικα. Ο compiler δεν κουράζεται με 10 γραμμές παραπάνω :lol:

Re: Java (Απορία περί if)

Posted: Thu Oct 21, 2010 9:00 am
by ja_the_invincible
The Punisher wrote:καλύτερα να βάζεις αγκύλες για να μη χάνεις τη μπάλα. Και να προτιμάς καθαρό κώδικα. Ο compiler δεν κουράζεται με 10 γραμμές παραπάνω :lol:
εκ των πραγμάτων θα βάζει αγκύλες στα επόμενα :-p

Re: Java (Απορία περί if)

Posted: Thu Oct 21, 2010 11:47 am
by stoupeace
Αν το if σηκώνει μονο μία εντολή εγώ δε βάζω αγκύλες.

Code: Select all

if (Punisher.kills(people)) System.out.println("This is always true");
else
{
    people--;
    killer = Punisher;
    World.isSafe(true);
}

Re: Java (Απορία περί if)

Posted: Thu Oct 21, 2010 11:57 am
by MpoMp
stoupeace wrote:

Code: Select all

if (Punisher.kills(people)) System.out.println("This is always true");
else
{
    people--;
    killer = Punisher;
    World.isSafe(true);
}
:lol: :lol: :lol: :lol: :lol: :lol: :lol:

Re: Java (Απορία περί if)

Posted: Thu Oct 21, 2010 12:58 pm
by The Punisher
:lol:

απλά αν θέλει κάποιος να διαβάσει τον κώδικά σου μετά, θα έχει πρόβλημα. Γιατί το μάτι έχει συνηθίσει να διαβάζει το if και στην επόμενη γραμμή να βρίσκει εντολές, κι όχι ένα "else". Δηλαδή, άντε, το one-line-with-no-braces να το αντέξω, αλλά το same-line μου είναι δύσκολο