Το Στέκι των Πληροφορικών

Γενικό Λύκειο => Δομή επιλογής => Γ΄ Λυκείου => Εντολή ΑΝ => Μήνυμα ξεκίνησε από: despoina στις 11 Οκτ 2012, 01:58:41 ΠΜ

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

Και μία ακόμα ερώτηση. Την έχετε απαντήσει πολλές φορές στο forum αλλά διάβασα πάρα πολλές απόψεις και λίγο μπερδεύτηκα!  :-\ Στην πολλαπλή δομή επιλογής το αλλιώς δεν είναι απαραίτητο να μπει στο τέλος. Σωστά;
Τίτλος: Απ: Εμφωλευμένη και πολλαπλή επιλογή
Αποστολή από: Νίκος Αδαμόπουλος στις 11 Οκτ 2012, 09:02:02 ΠΜ
Παράθεση από: despoina στις 11 Οκτ 2012, 01:58:41 ΠΜ
Το βιβλίο στo θέμα των εμφωλευμένων επιλογών είναι λίγο λακωνικό νομίζω...Ήθελα να ρωτήσω το εξής. Οι εμφωλευμένες επιλογές, απ' ότι έχω καταλάβει μπορούν να έχουν οποιαδήποτε μορφή από τις άλλες 3 (απλή, σύνθετη, πολλαπλή) και μπορούν να μπουν οπουδήποτε (κάτω από το αν ή κάτω από το αλλιώς ή το αλλιώς_αν). Διορθώστε με αν κάπου έχω λάθος. Ακόμα όλες οι εμφωλευμένες μπορούν να μετατραπούν σε δομές πολλαπλής επιλογής; Και ισχύει και το αντίθετο;

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


γίνεται:

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

Παράθεση από: despoina στις 11 Οκτ 2012, 01:58:41 ΠΜ
Και μία ακόμα ερώτηση. Την έχετε απαντήσει πολλές φορές στο forum αλλά διάβασα πάρα πολλές απόψεις και λίγο μπερδεύτηκα!  :-\ Στην πολλαπλή δομή επιλογής το αλλιώς δεν είναι απαραίτητο να μπει στο τέλος. Σωστά;

Σωστά!

Υ.Γ. Το νήμα μετακινήθηκε στο https://alkisg.mysch.gr/steki/index.php?board=35.0
Τίτλος: Απ: Εμφωλευμένη και πολλαπλή επιλογή
Αποστολή από: petrosp13 στις 11 Οκτ 2012, 10:28:52 ΠΜ
Νομίζω ότι η εμφωλευμένη δεν μπορεί να μετατραπεί πάντα σε πολλαπλή
Τίτλος: Απ: Εμφωλευμένη και πολλαπλή επιλογή
Αποστολή από: gpapargi στις 11 Οκτ 2012, 11:00:13 ΠΜ
Αν υπάρχουν εντολές εισόδου (διάβασε) μέσα στις εμφωλεύσεις υπάρχει πρόβλημα και δε γίνεται πάντα η μετατροπή. Αν η είσοδος είναι γνωστή πριν μπεις στις εντολές επιλογής τότε γίνεται η μετατροπή (κατά τη γνώμη μου πάντα).
Τίτλος: Απ: Εμφωλευμένη και πολλαπλή επιλογή
Αποστολή από: petrosp13 στις 11 Οκτ 2012, 11:36:01 ΠΜ
Γιώργο, μια απλή περίπτωση:

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

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

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

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

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

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

Αυτή η επανάληψη δεν είναι η τυποποιημένη "Για" των 100 επαναλήψεων, γιατί πειράζουμε τον μετρητή της και γι'αυτό δεν μπορεί να υλοποιηθεί με "Για"
Τίτλος: Απ: Εμφωλευμένη και πολλαπλή επιλογή
Αποστολή από: gpapargi στις 11 Οκτ 2012, 02:13:13 ΜΜ
Παράθεση από: petrosp13 στις 11 Οκτ 2012, 11:36:01 ΠΜ
Γιώργο, μια απλή περίπτωση:

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


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