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

Γενικό Λύκειο => Γ΄ Λυκείου => Θεωρία => Μήνυμα ξεκίνησε από: Λαμπράκης Μανώλης στις 07 Οκτ 2013, 10:14:53 ΠΜ

Τίτλος: Μετατροπές Δομές επανάληψης
Αποστολή από: Λαμπράκης Μανώλης στις 07 Οκτ 2013, 10:14:53 ΠΜ
Καλημέρα σε όλους

το Σάββατο συζητούσαμε με τους μαθητές μου στο φροντιστήριο μετατροπές μεταξύ δομών επανάληψης...είπαμε λοιπόν ότι πχ στην δομή

Διάβασε λ
κ<--0
Αρχή_επανάληψης
    εμφάνισε κ
     κ<-- κ+1
Μεχρις_ότου κ>λ

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

Διάβασε λ
κ<--0
εμφάνισε κ
κ<--κ+1
Όσο κ<=λ επανάλαβε
   εμφάνισε κ
     κ<-- κ+1
Τέλος_επανάληψης


ένας μαθητής μου πρότυνε το εξής

διάβασε λ
κ<--0
Αν κ>λ τότε
   εμφάνισε κ
   κ<--κ+1
Αλλιώς
Όσο κ<=λ επανάλαβε
   εμφάνισε κ
     κ<-- κ+1
Τέλος_επανάληψης

δηλαδή αν κάνει μία επανάληψη αν η η συνθήκη είναι τέτοια ώστε να μην μπει καθόλου στο Όσο, αλλιώς να εκτελεστεί κανονικά

Ουσιαστικά αν δεν κάνω λάθος το ίδιο είνια, απλά η δομή Αν μου φαίνεται κάπως "περιττή", καθώς ουσιαστικά με την μία επανάληψη εκτός μεταβάλεται έτσι ο μετρητής της συνθήκης που δεν χρειάζεται να ελέγξουμε κάτι παραπάνω

Σωστά τα σκέφτομαι, ή μήπως υπάρχει κάποια περίπτωση που δεν καλύπτεται με την χρήση της Αν ???
Τίτλος: Απ: Μετατροπές Δομές επανάληψης
Αποστολή από: petrosp13 στις 07 Οκτ 2013, 11:24:03 ΠΜ
Αν το κ είναι μεγαλύτερο του λ, τότε θα ισχύσει το Αν και δεν θα γίνει Επανάληψη Όσο
Το ίδιο θα γινόταν και χωρίς την δομή Αν
Άρα, η δομή Αν είναι περιττή

Αφού οι συνθήκες του Αν και του Όσο είναι οι ακριβώς αντίθετες, δεν υπάρχει πρόβλημα
Τίτλος: Απ: Μετατροπές Δομές επανάληψης
Αποστολή από: Λαμπράκης Μανώλης στις 07 Οκτ 2013, 12:18:40 ΜΜ
ωραία, συμφωνούμε πως είναι περιττή, δεν είναι όμως και λάθος έτσι ?? δηλαδή ουσιαστικά σωτή είναι σαν υλοποίηση, απλά το αν είναι περιττό, και "εγκυμονεί τον κίνδυνο" να γίνει και κανένα λάθος στην συνθήκη...
Τίτλος: Απ: Μετατροπές Δομές επανάληψης
Αποστολή από: petrosp13 στις 07 Οκτ 2013, 12:23:41 ΜΜ
Είναι περιττός έλεγχος
Αντίστοιχο παράδειγμα:
Αν (χ <= 20) τότε
      .....
Αλλιώς_Αν (χ > 20) και ....

Δεν είναι τόσο προφανές φυσικά, απλά με δεύτερη σκέψη καταλαβαίνεις ότι ο έλεγχος είναι περιττός