Αποστολέας Θέμα: Εμφωλευμένη και πολλαπλή επιλογή  (Αναγνώστηκε 2058 φορές)

denia_k

  • Βετεράνος
  • ****
  • Μηνύματα: 84
Εμφωλευμένη και πολλαπλή επιλογή
« στις: 11 Οκτ 2012, 01:58:41 πμ »
Το βιβλίο στo θέμα των εμφωλευμένων επιλογών είναι λίγο λακωνικό νομίζω...Ήθελα να ρωτήσω το εξής. Οι εμφωλευμένες επιλογές, απ' ότι έχω καταλάβει μπορούν να έχουν οποιαδήποτε μορφή από τις άλλες 3 (απλή, σύνθετη, πολλαπλή) και μπορούν να μπουν οπουδήποτε (κάτω από το αν ή κάτω από το αλλιώς ή το αλλιώς_αν). Διορθώστε με αν κάπου έχω λάθος. Ακόμα όλες οι εμφωλευμένες μπορούν να μετατραπούν σε δομές πολλαπλής επιλογής; Και ισχύει και το αντίθετο;

Και μία ακόμα ερώτηση. Την έχετε απαντήσει πολλές φορές στο forum αλλά διάβασα πάρα πολλές απόψεις και λίγο μπερδεύτηκα!  :-\ Στην πολλαπλή δομή επιλογής το αλλιώς δεν είναι απαραίτητο να μπει στο τέλος. Σωστά;

Νίκος Αδαμόπουλος

  • Γενικός διαχειριστής
  • *****
  • Μηνύματα: 2771
  • Πύργος Ηλείας
    • ΚΕΠΛΗΝΕΤ Ηλείας
Απ: Εμφωλευμένη και πολλαπλή επιλογή
« Απάντηση #1 στις: 11 Οκτ 2012, 09:02:02 πμ »
Το βιβλίο στo θέμα των εμφωλευμένων επιλογών είναι λίγο λακωνικό νομίζω...Ήθελα να ρωτήσω το εξής. Οι εμφωλευμένες επιλογές, απ' ότι έχω καταλάβει μπορούν να έχουν οποιαδήποτε μορφή από τις άλλες 3 (απλή, σύνθετη, πολλαπλή) και μπορούν να μπουν οπουδήποτε (κάτω από το αν ή κάτω από το αλλιώς ή το αλλιώς_αν). Διορθώστε με αν κάπου έχω λάθος. Ακόμα όλες οι εμφωλευμένες μπορούν να μετατραπούν σε δομές πολλαπλής επιλογής; Και ισχύει και το αντίθετο;

Ισχύουν όλα όσα αναφέρεις. Η εμφωλευμένη μπορούν να μετατραπεί σε πολλαπλή αλλά όμως με πιθανώς αρκετά σύνθετες συνθήκες. Η πολλαπλή μπορεί να μετατραπεί σε εμφωλευμένη ως εξής:
   ...
αλλιώς_αν
   ...


γίνεται:

   ...
αλλιώς
   Αν
      ...
   Τέλος_αν

Και μία ακόμα ερώτηση. Την έχετε απαντήσει πολλές φορές στο forum αλλά διάβασα πάρα πολλές απόψεις και λίγο μπερδεύτηκα!  :-\ Στην πολλαπλή δομή επιλογής το αλλιώς δεν είναι απαραίτητο να μπει στο τέλος. Σωστά;

Σωστά!

Υ.Γ. Το νήμα μετακινήθηκε στο http://alkisg.mysch.gr/steki/index.php?board=35.0

petrosp13

  • Ομάδα Νέου Λυκείου
  • *
  • Μηνύματα: 2148
Απ: Εμφωλευμένη και πολλαπλή επιλογή
« Απάντηση #2 στις: 11 Οκτ 2012, 10:28:52 πμ »
Νομίζω ότι η εμφωλευμένη δεν μπορεί να μετατραπεί πάντα σε πολλαπλή
Παπαδόπουλος Πέτρος
Καθηγητής Πληροφορικής

gpapargi

  • Γενικός διαχειριστής
  • *****
  • Μηνύματα: 2428
  • I 'm not young enough to know everything
Απ: Εμφωλευμένη και πολλαπλή επιλογή
« Απάντηση #3 στις: 11 Οκτ 2012, 11:00:13 πμ »
Αν υπάρχουν εντολές εισόδου (διάβασε) μέσα στις εμφωλεύσεις υπάρχει πρόβλημα και δε γίνεται πάντα η μετατροπή. Αν η είσοδος είναι γνωστή πριν μπεις στις εντολές επιλογής τότε γίνεται η μετατροπή (κατά τη γνώμη μου πάντα).
Γιώργος Παπαργύρης (gpapargi@hotmail.com)

petrosp13

  • Ομάδα Νέου Λυκείου
  • *
  • Μηνύματα: 2148
Απ: Εμφωλευμένη και πολλαπλή επιλογή
« Απάντηση #4 στις: 11 Οκτ 2012, 11:36:01 πμ »
Γιώργο, μια απλή περίπτωση:

Αν (χ > 0) τότε
    χ <-- χ + 100
    υ <-- 2
    Αν (χ > 200) τότε
           Εμφάνισε χ
    Τέλος_Αν
Τέλος_Αν

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

Νομίζω ότι η μετατροπή από εμφωλευμένη σε πολλαπλή μπορεί να γίνει μόνο αν μιλάμε μόνο για ελέγχους, χωρίς άλλες εντολές ανάμεσα που δεν μπορούν να αποτυπωθούν σε πολλαπλή

Ουσιαστικά, η εμφωλευμένη είναι κυρίως χρήσιμη για τέτοιες "περίεργες" περιπτώσεις

Κάτι αντίστοιχο ισχύει για τις επαναλήψεις "Για" και "Όσο"-"Μέχρις_ότου"
Αν η επανάληψη είναι "τυποποιημένη", τότε είναι πιο εύκολη η Για
Σε διαφορετική περίπτωση, δεν μπορεί να χρησιμοποιηθεί

α <-- 2
Όσο (α <= 100) επανάλαβε
     Διάβασε χ
     Αν (χ = 0) τότε
          α <-- 101
     Τέλος_Αν
     α <-- α + 1
Τέλος_Επανάληψης

Αυτή η επανάληψη δεν είναι η τυποποιημένη "Για" των 100 επαναλήψεων, γιατί πειράζουμε τον μετρητή της και γι'αυτό δεν μπορεί να υλοποιηθεί με "Για"
Παπαδόπουλος Πέτρος
Καθηγητής Πληροφορικής

gpapargi

  • Γενικός διαχειριστής
  • *****
  • Μηνύματα: 2428
  • I 'm not young enough to know everything
Απ: Εμφωλευμένη και πολλαπλή επιλογή
« Απάντηση #5 στις: 11 Οκτ 2012, 02:13:13 μμ »
Γιώργο, μια απλή περίπτωση:

Αν (χ > 0) τότε
    χ <-- χ + 100
    υ <-- 2
    Αν (χ > 200) τότε
           Εμφάνισε χ
    Τέλος_Αν
Τέλος_Αν


Πέτρο η συγκεκριμένη πρέπει να γίνεται. Αν ονομάσουμε τις 3 εντολές
α: χ <-- χ + 100
β: υ <-- 2
γ: Εμφάνισε χ
τότε η α και η β εκτελούνται αν χ>0.
Η γ εκτελείται αν χ>0 (για να μπει στην πρώτη Αν) ΚΑΙ χ+100>200 για να μπει στη δεύτερη Αν. Οι 2 αυτές συνθήκες ισοδυναμούν με χ> 100.
Άρα το πρόβλημα χωρίζεται σε 3 ζώνες: την χ<=0, την 0<χ<=100 και τη χ>100
Στην πρώτη ζώνη δεν εκτελείται τίποτα στη δεύτερη εκτελείται η α και η β και στην τρίτη εκτελούνται οι α , β και γ. Γενικά δηλαδή αν δεις πότε εκτελείται η κάθε εντολή μπορείς να χωρίσεις το πρόβλημα σε ζώνες ξένες μεταξύ τους. Μετά βάζεις σε κάθε ζώνη τις εντολές που εκτελούνται. Μια εντολή που εκτελείται σε παραπάνω από μια ζώνες τη βάζεις και σε όλες. Έτσι φαίνεται να μπαίνουν σε πολλαπλή επιλογή, αν δε μου ξέφυγε κάτι. Η συνταγή στραβώνει αν έχεις εντολές εισόδου και άρα δεν μπορείς να βρεις εκ των προτέρων τις ζώνες.
Γιώργος Παπαργύρης (gpapargi@hotmail.com)