Μετατροπή σε δομές αν

Ξεκίνησε από Λαμπράκης Μανώλης, 24 Ιουλ 2013, 05:05:52 ΜΜ

« προηγούμενο - επόμενο »

Λαμπράκης Μανώλης

Καλησπέρα σε όλους

ήθελα να ρωτήσω το εξής.  έχουμε το παρακάτω τμήμα αλγορίθμου

Αν κ>0 τότε
     εμφάνισε "α"
αλλιώς
      αν λ>0 τότε
            εμφάνισε "β"
      αλλιώς
             εμφάνισε "γ"
τέλος_αν

για να απαλείψουμε την εμφωλευμένη δομή μπορούμε να γράψουμε το εξής?

αν κ>0 τότε
     εμφάνισε "α"
αλλιώς_αν κ<=0 και λ>0 τότε
      εμφάνισε "β"
αλλιώς
       εμφάνισε "γ"
τέλος_αν

1η ερώτηση --> το τμήμα αλλιώς είναι σωστά τοποθετημένο???καλύπτει τις περιπτωσεις που δεν καλύπτονται με τις παραπάνω συνθήκεςή μήπως αντί του αλλιώς χρειάζεται αλλιώς_αν κ<=0 και λ<=0 ???

2η ερώτηση --> στο αλλιώς_αν μπορούμε να γράψουμε αλλιώς_αν λ>0, με την λογική ότι το κ<=0 το έχουμε ελέγξει στην παραπάνω συνθήκη???? 

3η ερώτηση --> αν μπορούμε να κάνουμε το 2, τότε θα έχουμε

αν κ>0 τότε
   εμφάνισε "α"
αλλιώς_αν λ>0 τότε
   εμφάνισε "β"
αλλιώς
   εμφανισε γ"

μπορούμε να έχουμε αρχικά έλεγχο για μία μεταβλητή στο Αν και στη συνέχεια έλεγχο για μία δεύτερη στο αλλιώς_αν (όπως στο παράδειγμα)?? Με τη δομή Αν...αλλιως_αν....αλλώς  δεν καλύπτουμε περιπτώσεις της ίδιας μεταβλητής, δηλαδή στις συνθήκες δεν πρέπει καπου να υπάρχει και η κ στο παράδειγμά μας????

περιμένω τις απόψεις σας, γιατί έχω κολλήσει λιγάκι

ευχαριστώ

petrosp13

Αν σχεδιάσεις το διάγραμμα του πρώτου κώδικα σου και του τελευταίου, θα δεις ότι είναι ακριβώς το ίδιο, οπότε δεν χρειάζονται οι περιττοί έλεγχοι!
Παπαδόπουλος Πέτρος
Καθηγητής Πληροφορικής

Λαμπράκης Μανώλης

συμφωνώ, απλά μου φαίνεται περίεργη δομή πχ

Αν χ>0 τότε
    εμφάνισε "α"
Αλλιώς_αν κ>0
     εμφανισε "β"
αλλιώς
     εμφάνισε "γ"
τέλος_αν

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

petrosp13

H πρώτη συνθήκη όμως σου αποκλείει το 1/3 των περιπτώσεων του χ και οι υπόλοιπες 2/3 θεωρούνται σίγουρες από εκεί και πέρα, οπότε δεν χρειάζεται να ελεγχθούν και ελέγχονται μόνο αυτά που χρειάζεται
Παπαδόπουλος Πέτρος
Καθηγητής Πληροφορικής

Λαμπράκης Μανώλης

ήθελα να τσεκάρω μία μετατροπή σχετική μα τα παραπάνω, δεν ανοίγω νέο θέμα

αν κ>0 τότε
    αν λ>0 τότε
         εντολές 1
    αλλιώς
         εντολές 2
     τέλος_αν
αλλιώς_αν π<0 τότε
    αν λ=0 τότε
       εντολές 2
    αλλιώς
        εντολές 1
   τέλος_αν
αλλιώς
   εντολές 1
τέλος_αν

είναι ισοδύναμο με

αν (κ>0 και λ>0) ή (κ<=0 και π<0 και λ <>0) ή (κ<=0 και π>=0 ) τότε
   εντολές 1
αλλιώς_αν (κ>0 και λ<=0) ή (κ<=0 και π<0 και λ=0) τότε
   ενολές 2
τέλος_αν

σωστά  ή χάνω κάτι ???

ευχαριστώ