Γενικό Λύκειο > Δομή επανάληψης

Εμφωλευμένη επανάληψη

(1/2) > >>

vasiko:
Στη σελίδα 180 του βιβλίου αναφέρονται  τρεις κανόνες οι οποίοι πρέπει να ακολουθούνται στις εμφωλευμένες επαναλήψεις.
Μπορεί κάποιος να μου εξηγήσει τι ακριβώς εννοεί ο δεύτερος κανόνας;
"Η είσοδος σε κάθε βρόχο  υποχρεωτικά  γίνεται από την αρχή του."
???
Ευχαριστώ.

Sergio:
Καλή ερώτηση!!

Να υποθέσω ότι θέλει να αποκλείσει την είσοδο σε βρόχο με χρήση της εντολής goto (σε κάποιο σημείο εντός του βρόχου) ως κακή προγραμματιστική τεχνική (που οδηγεί σε αδόμητα προγράμματα);;

Αν και δεν ορίζεται πουθενά η εντολή goto στη ΓΛΩΣΣΑ, υπάρχουν κάποιες αναφορές σε "ασκήσεις" του κεφαλαίου 6 (π.χ. Τετράδιο Μαθητή, σελ 58 - 59) σε συνδυασμό με δομή επιλογής.  

Επίσης, κάποτε το μάθημα παρείχε ελευθερία χρήσης γλώσσας αφού επέτρεπε εναλλακτικά και τη χρήση Basic & Pascal, δηλαδή γλωσσών που υποστηρίζουν την goto (παρά το σκληρό "...should be abolished from all high level languages..." του Edgard Dijkstra).

Φαντάζομαι λοιπόν ότι κάτι τέτοιο πρέπει να εννοεί.

Οι υπόλοιποι τι νομίζετε;

EleniK:
Εγώ έχω την εντύπωση ότι εξηγεί στα παιδιά πώς δουλεύουν οι εμφωλευμένες επαναλήψεις δηλ. αν έχεις

Για i από 1 μέχρι 10
Για j από 1 μέχρι 10

ότι για i=1, θα πραγματοποιηθούν οι 10 επαναλήψεις του j (j=1, j=2....j=10) .
Μετά, αφού αλλάξει το i σε 2, έχουμε ξανά είσοδο στον εσωτερικό βρόγχο οπότε επειδή  'η είσοδος στον βρόγχο θα πραγματοποιηθεί από την αρχή του' δηλ. θα γίνουν ξανά 10 επαναλήψεις  (j=1, j=2....j=10) κ.ο.κ.

Πάντως σε απλο επίπεδο απλά περιγράφει ποως αλλάζουν οι τιμές των μεταβλητών  σε δυο εμφωλευμένες επαναλήψεις. Βέβαια σε πιο 'τραβηγμένο' επίπεδο νομίζω όπως είπε και ο Sergio ότι απλά αποκλείει τη χρήση της εντολής.

alkisg:
[glossa] ι = 8
GOTO ΜέσαΣτοΒρόχο
Γράψε "Αυτή η εντολή δεν εκτελείται ποτέ"

Για ι από 1 μέχρι 10
ΜέσαΣτοΒρόχο:
 Γράψε ι
τέλος_επανάληψης[/glossa]

Ο παραπάνω κώδικας θα γράψει τους αριθμούς 8, 9, 10. Άμα το GOTO βρισκόταν "3 σελίδες κώδικα" παρακάτω άντε να καταλάβεις τι γίνεται!

gpapargi:
Αν καταλαβαίνω καλά το βιβλίο μάλλον εννοεί ότι ο μετρητής κάθε βρόχου ξεκινάει από την αρχή. Δε βγάζω και πολύ νόημα αλλά δεν έχει σημασία. Αυτό που έχει σημασία είναι το να καταλαβαίνεις πως λειτουργούν οι φωλιασμένοι βρόχοι.

Για το θέμα της goto οι πατριάρχες της C,  Kernighan και Ritchie, λένε (όπως και όλος ο κόσμος) ότι πρέπει να αποφεύγεται και ότι σπάνια είναι χρήσιμη. Αναφέρουν μια τέτοια περίπτωση ωστόσο. Αν έχεις πολλούς φωλιασμένους βρόχους και ξαφνικά συμβεί μια συνθήκη που θέλεις να σε βγάλει έξω, είναι χρήσιμη η goto. Συστήνουν γενικά να αποφεύγεται αν και ξεκαθαρίζουν ότι δεν είναι δογματικοί.

Επειδή το σχολικό μάθημα είναι εισαγωγικό θεωρώ ότι στην ΑΕΠΠ πρέπει να αποφεύγεται (και θα έλεγα ότι δογματικός σε αυτό). Αλίμονο αν πριν μάθει ο μαθητής να σκέφτεται δομημένα, αρχίσει και χρησιμοποιεί αεροπλανικά κόλπα που έτσι κι αλλιώς χρησιμοποιούνται πολύ σπάνια ακόμα και από έμπειρους προγραμματιστές.

Πλοήγηση

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

[#] Επόμενη σελίδα

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