Γενικό Λύκειο > Δομή επιλογής

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

(1/1)

Λαμπράκης Μανώλης:
Καλησπέρα σε όλους

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

Αν κ>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
τέλος_αν

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

ευχαριστώ

Πλοήγηση

[0] Λίστα μηνυμάτων

Μετάβαση στην πλήρη έκδοση