ΚΕΠΛΗΝΕΤ Ηλείας

Πανελλήνιο Σχολικό Δίκτυο

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

SaferInternet.gr

SafeLine.gr

 

Εφαρμογή Χαρτογράφησης Μονάδων Εκπαίδευσης Ν. Ηλείας

Ενημερωτικό Δελτίο «ΤΠΕ στην Εκπαίδευση» - ΚΕ.ΠΛΗ.ΝΕ.Τ. Ηλείας

25ος Πανελλήνιος Διαγωνισμός Πληροφορικής

2ος Πανελλήνιος Διαγωνισμός Εκπαιδευτικής Ρομποτικής WRO (World Robot Olympiad)

Ημέρα Ασφαλούς Διαδικτύου 2013

Ανακύκλωση Ηλεκτρικών και Ηλεκτρονικών Συσκευών

 

Ιστοσελίδες μονάδων

Αναφορά προβλημάτων

Διαδικτυακά εργαλεία τεχνικού ελέγχου

Ανάπτυξη εφαρμογών: Σχετικά με την εντολή επανάληψης «Για…από…μέχρι…με_βήμα»

του Νίκου Αδαμόπουλου, εκπαιδευτικού ΠΕ19
Υπεύθυνου ΚΕ.ΠΛΗ.ΝΕ.Τ. ΔΔΕ Ηλείας

Κατά τη διδασκαλία του μαθήματος «Ανάπτυξη Εφαρμογών Σε Προγραμματιστικό Περιβάλλον» της Τεχνολογικής Κατεύθυνσης των Γενικών Λυκείων, αλλά και οποιουδήποτε μαθήματος για τη δημιουργία αλγορίθμων, έχει παρατηρηθεί κάποια δυσκολία στο χειρισμό των εντολών επανάληψης από τους μαθητές.

Στο κείμενο που ακολουθεί γίνεται μια προσπάθεια προσέγγισης του τρόπου λειτουργίας της εντολής Για… από…μέχρι…με_βήμα δίνοντας έμφαση στη σχέση της με τις άλλες εντολές επανάληψης.

Ανάλυση λειτουργίας

Έστω, λοιπόν, ότι έχουμε το γενικό σχήμα:

Για i από τ1 μέχρι τ2 με_βήμα β
  <εντολές>
Τέλος_επανάληψης

Υπάρχουν οι εξής περιπτώσεις:

1. Αν το β > 0 τότε:

2. Αν το β < 0 τότε:

3. Αν το β = 0 τότε:

Παρατηρήσεις

Από τα παραπάνω εξάγονται κάποια συμπεράσματα:

  1. Αν το β > 0 τότε για να γίνουν επαναλήψεις θα πρέπει τ1 ≤ τ2. Αν τ1 = τ2 τότε θα γίνει μόνο μία επανάληψη, ενώ αν τ1 > τ2 δεν θα γίνει καμία επανάληψη.
  2. Αν το β < 0 τότε για να γίνουν επαναλήψεις θα πρέπει τ1 ≥ τ2. Αν τ1 = τ2 τότε θα γίνει μόνο μία επανάληψη, ενώ αν τ1 < τ2 δεν θα γίνει καμία επανάληψη.
  3. Αν το β = 0 τότε, σύμφωνα με το σχολικό βιβλίο, θα έχουμε άπειρες επαναλήψεις. Όμως δεν διευκρινίζεται τι θα γίνει, για παράδειγμα, στην περίπτωση: Για i από 5 μέχρι 1 με_βήμα 0. Θα έχουμε άπειρες επαναλήψεις ή δεν θα έχουμε καμία;
  4. Από τις παραπάνω παρατηρήσεις προκύπτει ότι πρόβλημα περατότητας έχουμε μόνο όταν το β = 0 και σε καμία άλλη περίπτωση. Έτσι, στο παράδειγμα: Για i από 5 μέχρι 1 (όπου το βήμα εννοείται ως 1) τότε δεν έχουμε καθόλου επαναλήψεις και όχι άπειρες, όπως οι μαθητές υποθέτουν συχνά.
  5. Είτε προκύπτουν επαναλήψεις είτε όχι, μετά το Τέλος_επανάληψης το i δεν μπορεί να έχει την τιμή τ2, όπως οι μαθητές επίσης υποθέτουν συχνά.
  6. Επειδή η εντολή Για…από…μέχρι…με_βήμα μπορεί να μην κάνει καθόλου επαναλήψεις τότε θα λέγαμε ότι αντιστοιχεί περισσότερο στην εντολή Όσο…επανάλαβε και λιγότερο στην Αρχή_επανάληψης… Μέχρις_ότου. Αυτό μάλιστα είναι ένα ακόμα στοιχείο που δείχνει ότι «η εντολή Όσο…επανάλαβε είναι η σημαντικότερη από όλες τις εντολές επανάληψης» (βλ. σχολικό βιβλίο, σελ. 174).
  7. Στην παραπάνω ανάλυση λειτουργίας τα βήματα β) και δ) είναι ταυτόσημα. Αναφέρθηκαν όμως και τα δύο για να είναι περισσότερο κατανοητή η σχέση της εντολής Για…από…μέχρι…με_βήμα με την Όσο… επανάλαβε και την Αρχή_επανάληψης…Μέχρις_ότου.
Υπολογισμός πλήθους επαναλήψεων

Ένας εύκολος τρόπος για να υπολογίσουμε το πλήθος των επαναλήψεων της εντολής Για…από…μέχρι …με_βήμα, με την προϋπόθεση ότι θα γίνει μία τουλάχιστον επανάληψη, είναι μέσω του τύπου:

Ο τύπος δίνει σωστό αποτέλεσμα τόσο για θετικό όσο και για αρνητικό βήμα.

Μετατροπές στις άλλες εντολές επανάληψης

Α) Αν το β > 0 τότε το παραπάνω σχήμα μπορεί άμεσα να μετατραπεί ώστε να χρησιμοποιεί την εντολή Όσο…επανάλαβε, ως εξής:

i ¬ τ1
Όσο i ≤ τ2 επανάλαβε
  <εντολές>
  i ¬ i + β
Τέλος_επανάληψης

Όμως, ενώ η ίδια η εντολή Όσο…επανάλαβε φροντίζει για την κάλυψη ακόμα και της περίπτωσης όπου δεν έχουμε καμία επανάληψη, ωστόσο δεν συμβαίνει το ίδιο με την εντολή Αρχή_επανάληψης…Μέχρις_ότου. Έτσι, η επόμενη μετατροπή μπορεί να γίνει άμεσα μόνο αν έχουμε τουλάχιστον μία επανάληψη, δηλαδή αν τ1 ≤ τ2.

i ¬ τ1
Αρχή_επανάληψης
  <εντολές>
  i ¬ i + β
Μέχρις_ότου i > τ2

Β) Αν το β < 0 τότε ισχύουν όλα όσα καταγράφηκαν και για την περίπτωση του θετικού βήματος, αλλάζοντας μόνο τις ανισότητες: από ≤ σε ≥ στην εντολή Όσο…επανάλαβε και από > σε < στην εντολή Αρχή_επανάληψης…Μέχρις_ότου.

Παραδείγματα μετατροπών

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

Εύκολα θέματα:

Θέμα 1-Γ, 2005, Ημερ. Ε.Λ.

∆ίνεται το παρακάτω τμήμα αλγορίθμου:

S ¬ 0 
Για Ι από 2 μέχρι 100 με_βήμα 2 
  S ¬ S + I 
Τέλος_επανάληψης 
Εμφάνισε S
  1. Να μετατραπεί σε ισοδύναμο με χρήση της δομής Όσο…επανάλαβε
  2. Να μετατραπεί σε ισοδύναμο με χρήση της δομής Αρχή_επανάληψης…μέχρις_ότου

Λύση

1. Με την Όσο…επανάλαβε:

S ¬ 0 
Ι ¬ 2
Όσο Ι ≤ 100 επανάλαβε 
  S ¬ S + I 
  Ι ¬ Ι + 2
Τέλος_επανάληψης 
Εμφάνισε S

2. Με την Αρχή_επανάληψης…Μέχρις_ότου:

S ¬ 0 
Ι ¬ 2
Αρχή_επανάληψης
  S ¬ S + I 
  Ι ¬ Ι + 2
Μέχρις_ότου Ι > 100
Εμφάνισε S

Θέμα 1-δ, 2005, Επαν. Ημερ. Ε.Λ.

Το παρακάτω τμήμα αλγόριθμου να μετατραπεί σε ισοδύναμο με χρήση της δομής Για…από…μέχρι… με_βήμα.

Ι ¬ 2
Όσο Ι ≤ 10 επανάλαβε
  Διάβασε Α
  Εμφάνισε Α
  Ι ¬ Ι + 2
Τέλος_επανάληψης

Λύση

Για Ι από 2 μέχρι 10 με_βήμα 2
  Διάβασε Α
  Εμφάνισε Α
Τέλος_επανάληψης

Θέμα 2-β, 2007, Εσπ. Ε.Λ.

Δίνεται το παρακάτω τμήμα αλγορίθμου:

Χ ¬ 2 
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ 
  Y ¬ X DIV 2 
  Z ¬ A_M(X / 3) 
  ΑΝ Ζ > 0 ΤΟΤΕ 
    Α ¬ Z 
  ΑΛΛΙΩΣ 
    Α ¬ Υ 
  ΤΕΛΟΣ_ΑΝ 
  ΓΡΑΨΕ Χ, Υ, Ζ, Α 
  Χ ¬ Χ + 3 
ΜΕΧΡΙΣ_ΟΤΟΥ Χ > 10

Να μετατρέψετε το παραπάνω τμήμα αλγορίθμου σε ισοδύναμο με χρήση της δομής επανάληψης ΓΙΑ... ΑΠΟ...ΜΕΧΡΙ...ΜΕ_ΒΗΜΑ.

Λύση

ΓΙΑ X ΑΠΟ 2 ΜΕΧΡΙ 10 ΜΕ_ΒΗΜΑ 3 
  Y ¬ X DIV 2 
  Z ¬ A_M(X / 3) 
  ΑΝ Ζ > 0 ΤΟΤΕ 
    Α ¬ Z 
  ΑΛΛΙΩΣ 
    Α ¬ Υ 
  ΤΕΛΟΣ_ΑΝ 
  ΓΡΑΨΕ Χ, Υ, Ζ, Α 
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Μέτρια θέματα:

Θέμα 1-ε, 2005, Επαν. Εσπ. Ε.Λ.

To παρακάτω τμήμα προγράμματος να μετατραπεί σε ισοδύναμο, χρησιμοποιώντας αποκλειστικά τη δομή επανάληψης ΟΣΟ… ΕΠΑΝΑΛΑΒΕ.

S ¬ 0
ΓΙΑ Κ ΑΠΟ 1 ΜΕΧΡΙ 5
  ΓΙΑ L ΑΠΟ 1 ΜΕΧΡΙ 7
    S ¬ S + 1
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ S

Λύση

S ¬ 0
Κ ¬ 1
ΟΣΟ Κ ≤ 5 ΕΠΑΝΑΛΑΒΕ
  L ¬ 1
  ΟΣΟ L ≤ 7 ΕΠΑΝΑΛΑΒΕ
    S ¬ S + 1 
    L ¬ L + 1
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ 
  Κ ¬ Κ + 1
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ 
ΓΡΑΨΕ S

Σε αυτήν αρκετοί μαθητές τοποθετούν την αρχικοποίηση της μεταβλητής L μαζί με την αρχικοποίηση της Κ.

Θέμα 1-β2, 2007, Επαν. Ημερ. Ε.Λ.

Δίνεται το παρακάτω τμήμα αλγορίθμου:

I ¬ 1
Όσο Ι < 10 επανάλαβε
  Εμφάνισε Ι
  Ι ¬ Ι + 3
Τέλος_επανάληψης

Να ξαναγράψετε το παραπάνω τμήμα αλγορίθμου χρησιμοποιώντας την εντολή ΓΙΑ αντί της ΟΣΟ.

Λύση

Για Ι από 1 μέχρι 7 με_βήμα 3
  Εμφάνισε Ι 
Τέλος_επανάληψης

Σε αυτήν αρκετοί μαθητές δίνουν: Για Ι από 1 μέχρι 10, που όμως θα ήταν σωστό μόνο αν η συνθήκη στην αρχική δομή επανάληψης ήταν Ι ≤ 10.

Θέμα 1-δ, 2007, Επαν. Εσπ. Ε.Λ.

Δίνεται το παρακάτω τμήμα αλγόριθμου:

α ¬ 1 
β ¬ 3 
Όσο α < 10 επανάλαβε 
  z ¬ α + β 
  β ¬ β + 1 
  α ¬ α + 2 
Τέλος_επανάληψης

Να μετατραπεί σε ισοδύναμο χρησιμοποιώντας τη δομή επανάληψης Αρχή_επανάληψης...Μέχρις_ότου.

Λύση

α ¬ 1
β ¬ 3
Αρχή_επανάληψης
  z ¬ α + β 
  β ¬ β + 1 
  α ¬ α + 2 
Μέχρις_ότου α ≥ 10

Η λύση προκύπτει σχετικά εύκολα από την συμπληρωματικότητα αυτών των εντολών επανάληψης.

Δύσκολα θέματα:

Θέμα 1-δ, 2006, Επαν. Ημερ. Ε.Λ.

Δίνεται το παρακάτω τμήμα αλγορίθμου

Για x από 1 μέχρι Κ
  Εμφάνισε x
Τέλος_επανάληψης

Να μετατραπεί σε ισοδύναμο τμήμα χρησιμοποιώντας την εντολή Αρχή_επανάληψης... Μέχρις_ ότου.

Λύση

Σε αυτήν οι περισσότεροι μαθητές δίνουν τη λύση:

x ¬ 1
Αρχή_επανάληψης
  Εμφάνισε x 
  x ¬ x + 1
Μέχρις_ότου x > Κ

Όμως, δεδομένου ότι η λύση αυτή δίνει μία τουλάχιστον επανάληψη, ενώ η αρχική Για…από…μέχρι δεν θα κάνει καμία επανάληψη αν το Κ < 1, τότε μία περισσότερο πλήρης λύση είναι η εξής:

x ¬ 1
Αν x ≤ Κ τότε
  Αρχή_επανάληψης
    Εμφάνισε x
    x ¬ x + 1
  Μέχρις_ότου x > Κ
Τέλος_αν

Θέμα 1-β, 2001, Ημερ. Ε.Λ.

Δίνεται η δοµή επανάληψης.

Για i από τιµή1 µέχρι τιµή2 µε_βήµα β
  Εντολές
Τέλος_επανάληψης

Να µετατρέψετε την παραπάνω δοµή σε ισοδύναµη δοµή επανάληψης Όσο...επανάλαβε.

Λύση

Σε αυτήν οι περισσότεροι μαθητές δίνουν τη λύση:

i ¬ τιµή1
Όσο i ≤ τιμή2 επανάλαβε
  Εντολές
  i ¬ i + β
Τέλος_επανάληψης

Όμως, αυτή η λύση είναι σωστή μόνο αν το β > 0. Έτσι, μία περισσότερο πλήρης λύση είναι η εξής:

i ¬ τιµή1
Αν β > 0 τότε
  Όσο i ≤ τιμή2 επανάλαβε
    Εντολές
    i ¬ i + β
  Τέλος_επανάληψης
αλλιώς
  Όσο i ≥ τιμή2 επανάλαβε
    Εντολές
    i ¬ i + β
  Τέλος_επανάληψης
Τέλος_αν

Να σημειώσουμε πως θεωρούμε ότι το β δεν μπορεί να είναι 0 γιατί τότε η εκφώνηση θα είχε πρόβλημα περατότητας.

Πολύ δύσκολο θέμα:

Θέμα 1-δ, 2001, Επαν. Ημερ. Ε.Λ.

Δίνεται τµήµα αλγορίθµου:

Χ ¬ Α
Αρχή_επανάληψης
  Χ ¬ Χ + 2
  Τύπωσε το Χ 
Μέχρις_ότου Χ ≥ Μ

Να δώσετε τη δοµή επανάληψης Για…από…µέχρι …με_βήµα η οποία τυπώνει ακριβώς τις ίδιες τιµές µε το πιο πάνω τµήµα αλγορίθµου.

Λύση

Μάλλον η δυσκολότερη μετατροπή που έχει ζητηθεί. Δεν πρέπει να υπήρχε μαθητής που να έλυσε το θέμα.

Σε αυτήν οι περισσότεροι μαθητές δίνουν τη λύση:

Για Χ από Α μέχρι Μ με_βήμα 2
  Τύπωσε το Χ 
Τέλος_επανάληψης

Αυτή η λύση θα ήταν σωστή αν το Α ≤ Μ, ώστε να έχουμε μία τουλάχιστον επανάληψη, και αν το αρχικό τμήμα αλγορίθμου ήταν:

Χ ¬ Α
Αρχή_επανάληψης
  Τύπωσε το Χ 
  Χ ¬ Χ + 2
Μέχρις_ότου Χ > Μ

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

Έτσι, και θεωρώντας τις μεταβλητές ως ακέραιες, μια σωστή (;) λύση είναι:

Τύπωσε το A + 2 
Για X από A + 4 μέχρι M + 1 με_βήμα 2
  Τύπωσε το Χ
Τέλος_επανάληψης