1ο θέμα Όσο<-->Για

Ξεκίνησε από evry, 06 Ιουν 2007, 12:38:55 ΠΜ

« προηγούμενο - επόμενο »

evry


   Παιδιά μετά από διόρθωση αρκετών γραπτών έχω κατάληξει στο συμπέρασμα. Στο ερώτημα που λέει αν μπορεί να υλοποιηθεί μια δομή επανάληψης Όσο από Για, υπάρχει καταφατική απάντηση σε πολλά γραπτά. Για να είμαι πιο συγκεκριμένος το 70% των ΝΑΙ είναι από γραπτά του 18 και πάνω. Μήπως αυτό σημαίνει κάτι??
   Επίσης μυστηριωδώς μαθητές που έχουν λάθος τα θέματα 2,3,4 έχουν σωστά όλα τα πολλαπλών επιλογών του 1.
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

Muldy

για το τελευταίο που είπες:τα πολλαπλης επιλογής "φωναζονται" στην αίθουσα, στην δική μου τάξη τουλάχιστον το θεμα πρώτο με τον αλγόριθμο, τα σ,λ, τα αβγ και π1π2π3 ήταν προιόν διακινησης. Βέβαια αυτό δεν ήταν τίποτα μπροστά σε άλλα που γίνονται με τα περι τουλέτας αλλά αυτά είναι άλλου παππά ευαγγέλιο..

pgrontas

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

Με την λογική κάποιων εδώ στο FORUM θα έπρεπε αν η ερώτηση ρώταγε αν μπορεί να μετατραπεί η ΟΣΟ σε ΜΕΧΡΙΣ_ΟΤΟΥ να απαντήσουμε ΟΧΙ, καθώς η ΜΕΧΡΙΣ_ΟΤΟΥ συνίσταται αν θέλουμε να εκτελεστεί η επανάληψη τουλάχιστον μία φορά, ενώ η ΟΣΟ αν συνίσταται αν θέλουμε να είναι δυνατόν η επανάληψη να  μην εκτελεστεί.

Τώρα για τις απαντήσεις των μαθητών, σίγουρα κάποιοι απάντησαν ΣΩΣΤΟ στην τύχη, αλλά είμαι σίγουρος ότι υπήρξαν και κάποιοι αποστασιοποιημένοι από σχολεία και φροντιστήρια που σκέφτηκαν μία είναι η έννοια  της επανάληψης γιατί να υπάρχει διαφορά με ποια εντολή θα την εκφράσεις - υπενθυμίζω ότι ρώταγε αν ΜΠΟΡΕΙ να γίνει μετατροπή

Ίσως όσοι συνάδελφοι είναι σε ΒΚ και είναι πεπεισμένοι για το παραπάνω να έπρεπε να ζητήσουν διευκρίνηση.
Programs must be written for people to read, and only incidentally for machines to execute - Harold Abelson

andreas_p

Είναι ξεκάθαρο ΔΕ θέλει διευκρίνιση.

Κάθε  ΓΙΑ  μετατρέπεται  σε ΟΣΟ  ή  ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ. 

Το αντίστροφο ΔΕΝ ισχύει πάντα.

Συνεπώς  :    Θ1. Α5  η ορθή απάντηση  είναι   Λάθος.

Τώρα    οι  προτάσεις :

            1)  Κάθε ΟΣΟ  μπορεί να μετατραπεί  σε  ΜΕΧΡΙΣ_ΟΤΟΥ

            2)  Κάθε  ΜΕΧΡΙΣ_ΟΤΟΥ  μπορεί να μετατραπεί  σε  ΟΣΟ

είναι    ΣΩΣΤΕΣ,

αρκεί  βέβαια 

για την  Πρ.   1)   να προβλέψεις να εισάγεις τη σχετική  ΑΝ  μέσα στο βρόχο της  ΜΕΧΡΙΣ_ΟΤΟΥ

και

για τη  Πρ.  2)  να εξασφαλίσεις την ισοδυναμία.  Πώς  ;    Ανάλογα ...


Ανδρέας



gpapargi

Ευριπίδη το συγκεκριμένο θέμα δε μου φαίνεται και τόσο περίεργο. Πριν από λίγες μέρες είχα κάνει κάποιες τοποθετήσεις που για μένα είναι η εξήγηση του φαινομένου. Κάνω copy paste 2 αποσπάσματα:

Απόσπασμα 1:

"Να προσθέσω κάτι ακόμα.
Οι ασκήσεις που ρωτάνε αν γίνεται ή όχι κάτι και περιμένουν σαν απάντηση το «Όχι, δεν γίνεται με τίποτα» είναι πολύ επικίνδυνες. Μπορεί να νομίζουμε ότι δεν γίνεται κάτι και να βρεθεί κάποιος που να το κάνει και μετά να μας το τρίψει στη μούρη και να μην ξέρουμε τι να κάνουμε. Ολόκληρος ο κλάδος των ψυχαγωγικών μαθηματικών στηρίζεται ακριβώς πάνω σε αυτό. Επειδή εμένα είναι το χόμπυ μου κάθε φορά που ακούω ότι δεν γίνεται κάτι προσπαθώ να το κάνω. Impossible is nothing. Θέλεις απόδειξη για να είσαι πραγματικά σίγουρος ότι δε γίνεται κάτι.

Πχ λέμε εύκολα ότι η «Όσο» δεν μετατρέπεται σε «Για» σε κάθε περίπτωση. Λέμε επίσης ότι δε μετράει το να τερματίσουμε το βρόχο πρόωρα με αλλαγή του μετρητή γιατί αυτό απαγορεύεται. Με χρήση της goto όμως;"

Εδώ ουσιαστικά λέω ότι η "Για" αν περιέχει goto τερματίζει όποτε θέλουμε νόμιμα.

Απόσπασμα 2:

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

alkisg

Να προσθέσω κάτι σ' αυτά που πολύ σωστά λέει ο Γιώργος:

Στην εκφώνηση «είναι η ΟΣΟ και η ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ ισοδύναμες»;
απαντάμε ναι.
Επιπρόσθετα, λέμε ότι για να εξασφαλίσουμε την ισοδυναμία προσθέτουμε μια εντολή ΑΝ.

Προσπαθώντας να το πω με τα ίδια λόγια:
Στην εκφώνηση «είναι η ΟΣΟ ισοδύναμη με την ΑΝ»;
απαντάμε ναι.
Επιπρόσθετα, λέμε ότι για να εξασφαλίσουμε την ισοδυναμία προσθέτουμε μια εντολή ΠΗΓΑΙΝΕ (goto).

Γιατί δηλαδή μας επιτρέπεται να προσθέτουμε ΑΝ και όχι ΠΗΓΑΙΝΕ;

Η εκφώνηση δεν το απαγορεύει. Το βιβλίο δεν το απαγορεύει.
Απαγορεύεται όμως έμμεσα επειδή η χρήση της ΠΗΓΑΙΝΕ δεν είναι καλή προγραμματιστική τεχνική, όπως και η αλλαγή του μετρητή στο βρόχο.

Συμπέρασμα; συμφωνώ απόλυτα με τον gpapargi.
> Οι ασκήσεις που ρωτάνε αν γίνεται ή όχι κάτι και περιμένουν σαν απάντηση το «Όχι, δεν γίνεται με τίποτα» είναι πολύ επικίνδυνες.

Θα έπρεπε οι εκφωνήσεις να δίνονται υπό το πρίσμα του τι είναι καταλληλότερο, όχι αν ΓΙΝΕΤΑΙ (ή ισοδυναμία κτλ).

ΓΙΝΕΤΑΙ να χρησιμοποιήσουμε ΟΣΟ για να βρούμε το άθροισμα των στοιχείων ενός πίνακα; Γίνεται.
Είναι κατάλληλη η ΟΣΟ για να βρούμε το άθροισμα των στοιχείων ενός πίνακα; Όχι, καλύτερα να χρησιμοποιήσουμε τη ΓΙΑ, η οποία είναι πιο απλή για συγκεκριμένο αριθμό επαναλήψεων.

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

pgrontas

#6
>> Κάθε  ΓΙΑ  μετατρέπεται  σε ΟΣΟ  ή  ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ. 
>> Το αντίστροφο ΔΕΝ ισχύει πάντα.

Σε αυτό έχεις λάθος. Ένας τρόπος (μη ενδεδειγμένος) είναι με αλλαγή μετρητή, ένα δεύτερος (μη ενδεδειγμένος) είναι με πήγαινε, αλλά γίνεται. Ξαναγράφω το πώς και παρακαλώ να μην ξαναρχίσουν τα σχόλια για το αν το προτείνω ή όχι - δεν το προτείνω.
ΟΣΟ ΣΥΝΘΗΚΗ ΕΠΑΝΑΛΑΒΕ
   ΕΝΤΟΛΕΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
γίνεται
ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 1
ΑΝ ΣΥΝΘΗΚΗ ΤΟΤΕ
    ΕΝΤΟΛΕΣ
    I<-1
ΑΛΛΙΩΣ
    Ι<-2
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

Αλλά για να μην μακρυγορούμε θα ήθελα αν έχεις υπόψιν σου κάποιο παράδειγμα στο οποίο δεν ΜΠΟΡΟΥΜΕ να μετατρέψουμε την ΟΣΟ σε ΓΙΑ.

Στο συγκεκριμένο θέμα δεν είναι σωστά διατυπωμένη η ερώτηση, όπως σωστά προαναφέρθηκε.

Programs must be written for people to read, and only incidentally for machines to execute - Harold Abelson

petrosp13

Σχολικό βιβλίο, σελίδα 178:
"Η εντολή ΓΙΑ...ΑΠΟ...ΜΕΧΡΙ χρησιμοποιείται στην περίπτωση που πρέπει να επαναληφθεί η εκτέλεση κάποιων εντολών για προκαθορισμένο αριθμό επαναλήψεων"

Γι'αυτό τον λόγο το έβαλε η επιτροπή των εξετάσεων

Γιατί το συζητάμε ακόμα; Έχουμε αρχίσει να αμφιβάλλουμε και για τα αυτονόητα και σίγουρα
Παπαδόπουλος Πέτρος
Καθηγητής Πληροφορικής

pgrontas

Το συζητάμε ακριβώς επειδή δεν χρησιμοποιήσαν την διατύπωση του βιβλίου.
Programs must be written for people to read, and only incidentally for machines to execute - Harold Abelson

P.Tsiotakis

@pgontas το παράδειγμα που γράφεις είναι λάθος

Στο τετράδιο μαθητή, στη σελίδα 78 αναφέρει: "Ποτέ μη χρησιμοποιείς εντολές που αλλάζουν ...τη μεταβλητή που ελέγχει την επανάληψη...γιατί οδηγούν σε προγράμματα δυσνότητα...".

Το ποτέ που βάζει δεν είναι σαφές; Γιατί επιμένεις σε μια άποψη που είναι λανθασμένη;

Η δομή επανάληψης Για έχει συγκεκριμένο πεδίο εφαρμογής στο μάθημά μας. Αν δεν είναι γνωστό εξαρχής το πλήθος των επαναλήψεων και πρέπει να τερματιστεί ο βρόχος με κάποιο κριτήριο ΔΕΝ χρησιμοποιούμε ΤΗ ΔΟΜΗ ΓΙΑ

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

Οι 3 δομές ΔΕΝ είναι ισοδύναμες μεταξύ τους.....

petrosp13

Ακριβώς
Γι'αυτόν τον λόγο, άλλωστε, υπάρχουν και 3 δομές επανάληψης
Η κάθε μια με τα χαρακτηριστικά της διευκολύνει κάποιες περιπτώσεις

Φυσικά, μπορούμε να χρησιμοποιούμε την "Όσο" σε κάθε περίπτωση
Παπαδόπουλος Πέτρος
Καθηγητής Πληροφορικής

pgrontas

@ptsiotakis,
το συζητάμε πρώτα από όλα γιατί είναι ενδιαφέρον (για μένα τουλάχιστον που σχετικά πρόσφατα άρχισα να συμμετέχω στο site).
Κυρίως όμως γιατί ενώ στην σελίδα που ανέφερες το βιβλίο διατυπώνει μια ισχυρή ΠΡΟΤΡΟΠΗ, η ερώτηση που έπεσε ελέγχει ΔΥΝΑΤΟΤΗΤΑ, τα οποία είναι δύο διαφορετικά πράγματα.
Κατά συνέπεια το συζητάμε επειδή άλλα λέει το βιβλίο και άλλα ζήτησαν στις πανελλήνιες (κατά τη γνώμη μου πάντα).
Δεν καταλαβαίνω γιατί πρέπει να υπάρχει ενόχληση;

ΥΓ: Σου ανταποδίδω τα σέβη και θέλω να σε ευχαριστήσω για την βοήθεια που μου προσέφερες μέσω του site σου αυτή την χρονιά.
Programs must be written for people to read, and only incidentally for machines to execute - Harold Abelson

johnny_xp

Το σχολικό βιβλίο πράγματι σε κάποια σημεία δεν είναι ιδιαίτερα συγκεκριμένο, αλλά στο συγκριμένο σημείο είναι πλήρως συγκεκριμένο κατ' εμέ. Δηλαδή θα έπρεπε να λεεί: "Απαγορεύεται εντός ενός βρόχο ΓΙΑ να αλλάζει ο μετρητής", για να ήταν πλήρως συγκεκριμένο; Συγνώμη, αλλά τότε δε θα ήταν μάλλον σχολικό βιβλίο, αλλά εγχειρίδιο κάποιας συγκεκριμένης γλώσσας προγραμματισμού, όπου αν εσύ άλλαζες το μετρητή εντός του βρόχου θα σου παρήγαγε συντακτικό λάθος...

Το συγκεκριμένο θέμα, έχει εξαντληθεί. Δεν είναι δυνατόν μετά από 7 χρόνια πορείας του μαθήματος να αναλύουμε τέτοια ζητήματα, τα οποία εν τέλη είναι καθαρά τεχνικά και έχουν να κάνουν καθαρά και μόνο με την υλοποίηση μιας γλώσσας προγραμματισμού. Σε τελική ανάλυση σε όσες γλώσσες επιτέπεται αλλαγή μετρητή εντός του βρόχου, επουδενί δε συστήνεται. Αυτή είναι η ουσία! Από όσο εγώ τουλάχιστον γνωρίζω η C και η C++ έγουν το γενικότερο βρόχο for, όπου επιτρέπεται να αλλάξεις τα πάντα εντός του βρόχου. Ωστόσο δεν έχου δει σε κάποι βιβλίο να λέει: "είναι καλή τακτική να αλλάζεται το βήμα εντός του βρόχου ώστε να μην ξέρετε ακριβώς πότε θα ολοκληρωθεί". Τουναντίον όσα βιβλία εγώ έχω συναναστραφεί κατά περιόδους το αντίθετο προτρέπουν. Και παραθέτω από το documentation της Visual C++:

Use the for statement to construct loops that must execute a specified number of times.

Αυτό είναι το ουσιώδες και αυτό πρέπει να καταλάβει ο μαθητής.

gpapargi

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

Όλα εξαρτώνται από το τι ακριβώς ζητάμε όταν θέλουμε μετατροπή από τη μια εντολή στην άλλη. Συνήθως λέμε ότι θέλουμε για κάθε είσοδο την ίδια έξοδο. Είναι όμως έτσι; Πχ αν κάποιος ζητήσει μετατροπή της σειριακής αναζήτησης από «όσο» σε «Μέχρις_ότου» και ο μαθητής γράψει τη δυαδική αναζήτηση με «μέχρις_ότου» είναι αυτό που ζητάμε; (αφού έχουν ίδια είσοδο και ίδια έξοδο) Μήπως κάτι άλλο είναι αυτό που θέλουμε να δούμε από αυτές τις ασκήσεις τελικά;

Είναι μεγάλο θέμα. Άλκη ετοιμάσου για θεωρητική κουβέντα τον Οκτώβριο  ;)

ΥΓ

Η αντικατάσταση της Όσο από τη Για που είχα στο νου μου είναι η εξής:

Για ι από 1 μέχρι 2 με_βήμα 0 ! ατέρμνων βρόχος
  Αν συνθήκη τότε
    πήγαινε έξω από το βρόχο
  Τέλος_αν
Τέλος_επανάληψης
Γιώργος Παπαργύρης

johnny_xp

@gpapargi
Σχετικά με τη βίαιη διακοπή του βρόχου: Δοθέντος ότι το βιβλίο εξυμνεί τον δομημένο προγραμματισμό (και πολύ καλά κάνει, κατά τη γνώμη μου) δε θεωρώ πως είναι ορθή προσέγγιση να διδάσκουμε στους μαθητές τέτοιες τεχνικές.

Φυσικά και ο κώδικας ο οποίο δίνεται είναι, στη γενική περίπτωση, έγκυρος και νόμιμος, δοθέντος ότι όλες οι πολύ γνωστές γλώσσες προγραμματισμού υποστηρίζουν κάποια εντολή μορφής goto ή break (ή exit για την Basic). Ωστόσο, είναι κοινή άποψη πλέον ότι οι εντολές αυτές πρέπει να εξαλειφθούν. Για παράδειγμα η Java έχει δεχθεί μεγάλη κριτική γιατί υποστηρίζει τη χρήση της goto. Επίσης ας αναφέρω ότι η γλώσσα προγραμματισμού Eiffel, η οποία είναι πολύ σύγχρονη και έχει ως σκοπό να εξαλείψει πολλές “ασθένειες” τέτοιας μορφής δεν υποστηρίζει καν αδόμητες διακλαδώσεις κώδικα. Αξίζει δε να σημειωθεί ότι η συγκεκριμένη γλώσσα υποστηρίζει μια και μόνο δομή επανάληψης της μορφής while, εφαρμόζοντας (ορθά, κατά τη γνώμη μου) τη φιλοσοφική προσέγγιση του ξυραφιού του Occam.

gpapargi

Δεν τα διδάσκω johnny, τα είπαμε αυτά. Διδάσκω σαφώς την αποφυγή τους και έκανα και σαματά για το θέμα της goto που εξετάστηκε.  Το ερώτημα ήταν "αν είναι δυνατό να γίνει" και όχι "αν πρέπει να γίνεται" ή αν πρέπει να τα διδάσκουμε. Δες από την αρχή τις τοποθετήσεις μου στο συγκεκριμένο θέμα. Ο Ευριπίδης αναρωτήθηκε γιατί αυτοί που απάντησαν ότι γίνεται είναι καλοί και σκεπτόμενοι μαθητές.
Γιώργος Παπαργύρης

johnny_xp

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

alkisg

Παράθεση από: johnny_xp στις 07 Ιουν 2007, 10:46:40 ΠΜ
...όλες οι πολύ γνωστές γλώσσες προγραμματισμού υποστηρίζουν κάποια εντολή μορφής goto ή break (ή exit για την Basic). Ωστόσο, είναι κοινή άποψη πλέον ότι οι εντολές αυτές πρέπει να εξαλειφθούν. ... Επίσης ας αναφέρω ότι η γλώσσα προγραμματισμού Eiffel, η οποία είναι πολύ σύγχρονη και έχει ως σκοπό να εξαλείψει πολλές “ασθένειες” τέτοιας μορφής δεν υποστηρίζει καν αδόμητες διακλαδώσεις κώδικα.

Μιας και είμαστε στο θέμα, ας πούμε και την αντίθετη γνώμη:
Δεν είναι κοινή άποψη ότι οι εντολές τύπου goto πρέπει να εξαλειφθούν.
Οι break, continue, οι return στη μέση των συναρτήσεων, ο χειρισμός exceptions, η retry της Eiffel αλλά και μερικές περιπτώσεις χρήσης της goto είναι σχεδόν γενικά αποδεκτές.

Εκτός από το κλασσικό paper του Knuth υπέρ της (προσεγμένης) χρήσης της goto, το παρακάτω link τα γράφει πολύ εμπεριστατωμένα, σχολιάζοντας μάλιστα και το αρχικό κείμενο του Dijkstra που θεωρείται η "βίβλος κατά του goto":
http://david.tribble.com/text/goto.html

Και μου άρεσε ο παρακάτω κώδικας που παραθέτει από έναν LR parser, που πραγματικά με goto είναι πιο ευκολοδιάβαστος παρά χωρίς goto:
Κώδικας: C
int parse()
{
    Token   tok;

reading:
    tok = gettoken();
    if (tok == END)
        return ACCEPT;
shifting:
    if (shift(tok))
        goto reading;
reducing:
    if (reduce(tok))
        goto shifting;
    return ERROR;
}


Όλα αυτά βέβαια σε θεωρητικό υπόβαθρο (τη στιγμή της αναφοράς στο "μαύρο πρόβατο"), δε λέω να ανακατέψουμε τέτοια στο πρακτικό κομμάτι του μαθήματος. Η goto δεν πρέπει να χρησιμοποιείται στα εισαγωγικά βήματα του προγραμματισμού γιατί προάγει τον αδόμητο τρόπο σκέψης. Η χρήση της πρέπει να περιορίζεται μόνο σε εξεζητημένες περιπτώσεις κώδικα, όπου πραγματικά τον κάνει πιο ευκολοδιάβαστο από ότι η δομημένη version...

P.Tsiotakis


Τετράδιο μαθητή: Συμβουλές – Υποδείξεις (υπόδειξη σημαίνει να το κάνεις έτσι)

1. Σελ 21
- Ο αλγόριθμος πρέπει να είναι απλός και να προτείνει την εξυπνότερη δυνατή λύση σε ένα πρόβλημα...
- ...Είναι χρήσιμο να αναγνωρίσεις την αλγοριθμική δομή που βολεύει ανάλογα με την εκφώνηση του προβλήματος.

Σελ. 78
- Η εντολή ΓΙΑ χρησιμοποιείται μόνο για προκαθορισμένο αριθμό επαναλήψεων. Αν λοιπόν ξέρεις τον αριθμό των επαναλήψεων ή μπορείς να τον υπολογίσεις, τότε να χρησιμοποιείς την εντολή ΓΙΑ.
- Ποτέ μη χρησιμοποιείς εντολές που αλλάζουν την αρχική τιμή, την τελική τιμή, το βήμα ή τη μεταβλητή που ελέγχει την επανάληψη μέσα σε ένα βρόχο ΓΙΑ. Αν και μερικές γλώσσες προγραμματισμού επιτρέπουν αυτές τις αλλαγές, να τις αποφεύγεις, γιατί οδηγούν σε προγράμματα δυσνόητα και συνήθως λανθασμένα. ΛΕΕΙ ΟΤΙ ΤΟ ΕΠΙΤΡΕΠΕΙ Η ΓΛΩΣΣΑ;; Λέει οτι επιτρέπεται στα πλαίσια του μαθήματός μας;


Βιβλίο καθηγητή:
Σελ 50 -  10. Η δομή «Για μεταβλητή από τ1 μέχρι τ2 με_βήμα β» αποτελεί ένα επαναληπτικό σχήμα ορισμένων φορών επανάληψης.

Σελ. 69 - ... Ωστόσο αν ο αριθμός των φορών επανάληψης είναι γνωστός εκ των προτέρων, είναι προτιμότερο να χρησιμοποιείται η δομή Για.

Σελ. 170 - διδακτικός στόχος 8ου κεφαλαίου: Να επιλέγουν την καλύτερη δομή επανάληψης και να χρησιμοποιούν την κατάλληλη εντολή.


Βιβλίο μαθητή
Σελ 42 – Όταν ο αριθμός των φορών που θα εκτελεστεί μια επαναληπτική διαδικασία είναι γνωστός εκ των προτέρων, τότε είναι προτιμότερο να χρησιμοποιείται η εντολή Για,.

Σελ 173 – Η ΓΛΩΣΣΑ υποστηρίζει 3 εντολές επανάληψης...η εντολή ΓΙΑ , με την οποία ο βρόχος επαναλαμβάνεται για προκαθορισμένο αριθμό φορών.

Σελ 178 – Πολλές φορές ο αριθμός των επαναλήψεων που πρέπει να εκτελεστούν είναι γνωστός από την αρχή. Αν και αυτού του είδους οι επαναλήψεις μπορούν να αντιμετωπιστούν με τη χρήση των ΌΣΟ και ΜΕΧΡΙΣ_ΟΤΟΥ, η ΓΛΩΣΣΑ διαθέτει και την εντολή ΓΙΑ.
Στη συμβουλή αριστερά γράφει για προκαθορισμένο αριθμό επαναλήψεων.

Σελ 179 - στη συμβουλή δεξιά: Κάθε επανάληψη που εκτελείται με μια εντολή ΓΙΑ, μπορεί να υλοποιηθεί και με τη χρήση ΌΣΟ και ΜΕΧΡΙΣ_ΟΤΟΥ.
Το ανάποδο δεν αναφέρεται πουθενά.

Σελ 181 Στην ανακεφαλαίωση : Η εντολή ΓΙΑ χρησιμοποιείται για καθορισμένο αριθμό επαναλήψεων, ενώ ο αριθμός επαναλήψεων των άλλων δυο δεν είναι γνωστός εκ των προτέρων και εξαρτάται από τις συνθήκες που ελέγχουν.

Σελ 121 - Υπάρχει η εντολή "έξοδος από βρόχο", αλλά δεν τολμάει να αλλάξει την τιμή του μετρητή για να το πετύχει.

Που παραπάνω στοιχειοθετείται οτι οι 3 δομές επανάληψης είναι ισοδύναμες; Που στοιχειοθετείται οτι μπορεί κάποιος αν το θέλει να αλλάξει το μετρητή του Για; Το ΠΟΤΕ δε σου δίνει τη δυνατότητα, το ΠΟΤΕ σου απαγορεύει.



Και σε τελική ανάλυση ΓΙΑΤΙ πρέπει να συζητάμε κάτι τέτοιο. Η ενόχλησή μου είναι οτι 5 χρόνια παλεύω για μια κοινή αντιμετώπιση κάποιων θεμάτω στο μάθημα αυτό και νομίζω οτι η ελικοειδής προσέγγιση ταιριάζει σε μας : είμαστε στο σημείο που αρχίσαμε.

Αν στους μαθητές τεθεί το πλαίσιο χρήσης των 3 δομών επανάληψης όπως περιγράφεται στο διδακτικό πακέτο στις σελίδες που παρουσίασα, που είναι το πρόβλημα και οι ασάφειες;
Για να επιτευχθεί αυτό πρέπει να ξεφύγουμε όλοι από τις γλώσσες προγραμματισμού. Μιλάμε για την αλγοριθμική και την ψευδογλώσσα εδώ, σε ένα μάθημα λυκείου ΜΕ ΣΥΓΚΕΚΡΙΜΕΝΟ ΠΛΑΙΣΙΟ : πρόγραμμα σπουδών...

@ pgrontas τα σέβη είναι για τους μητροπολίτες...  :)

pgrontas

#19
Τελευταίο post από μένα σε αυτό το θέμα, γιατί όντως παρατράβηξε χωρίς να βγει άκρη.

@ptsiotakis To post σου ήταν εκτενέστατο, αλλά δεν προσέθεσε κάτι.
Σημειώνω λέξεις: προτιμότερο, συμβουλή, υπόδειξη, δεν τολμάει. Δεν δείχνουν απουσία δυνατότητας. Δείχνουν προτροπή.

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

Συμφωνώ με όλα όσα έγραψες αλλά δεν θα μπορούσαν να ρωτήσουν αν η δομή ΟΣΟ συνίσταται να μετατρέπεται σε ΓΙΑ, να τελειώνουν? Γιατί προσπαθούν να μπερδέψουν κάποια παιδιά - γιατί η συγκεκριμένη διατύπωση δεν προσφέρεται για κάτι άλλο. Η' γιατί ζητούν μονολεκτική απάντηση;

Επιπλέον όλα αυτό το θέμα δεν σχετίζεται με καμία γλώσσα προγραμματισμού γιατί αφορά ψευδογλώσσα και την ΔΟΜΗ της ΕΠΑΝΑΛΗΨΗΣ που υπάρχει ανεξάρτητα από την υλοποίηση της. Ήταν λάθος που ανέφερα συγκεκριμένες γλώσσες.

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


Με φιλικούς χαιρετισμούς
Π. Γροντάς

ΥΓ: Τα σέβη είναι για την ιδιότητα του αρχιερέα της ΑΕΠΠ (χωρίς να θέλω να προσβάλλω τους υπόλοιπους)  ;D

Programs must be written for people to read, and only incidentally for machines to execute - Harold Abelson

P.Tsiotakis

Αγαπητό μου τέκνον    :)   Π(αναγιώτη;)

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

Θα ήθελα να επιβληθεί (όχι επιβάλλω εγώ) μια κοινά αποδεκτή στάση (ορθόδοξη  :angel: ) που να ακολουθούμε όλοι γύρω από τη διδασκαλία ώστε να δώσουμε έμφαση σε άλλα θέματα. Μακάρι να μπορέσει να γίνει αυτό μέχρι το νέο σύστημα εξετάσεων  :(  που δεν ξέρουμε και που θα μας πάει

Η Για που σπάει πάντως δε εκτελεί προκαθορισμένο αριθμό επαναλήψεων  :-[


filippos

Ακόμα και δω ασάφεια βρήκαμε;;

Έλεος ρε παιδιά :(

gpapargi

Φίλιππε δεν είναι του τύπου μου να γεννάω προβλήματα που δεν υπάρχουν. Το θέμα ζητάει όχι αν πρέπει να μετατρέπεις την Όσο σε Για αλλά το αν είναι θεωρητικά δυνατό να γίνει. Όλοι διδάσκουμε καλώς ότι αυτό ΔΕΝ ΠΡΕΠΕΙ να γίνεται. Αλλά δεν μπορείς να απαγορέψεις σε κάποιο σκεπτόμενο παιδάκι να σκεφτεί τον παρακάτω κώδικα:

Για ι από 1 μέχρι 2 με_βήμα 0 ! ατέρμνων βρόχος
  Αν συνθήκη τότε
    πήγαινε έξω από το βρόχο
  Τέλος_αν
Τέλος_επανάληψης

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

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

gouvasg

Παράθεση από: gpapargi στις 12 Ιουν 2007, 10:10:17 ΠΜ
Είμαστε κλάδος θετικών επιστημών. Αυτά που λέμε πρέπει να έχουν συνέπεια. Αν το βιβλίο λέει ότι κάτι δε γίνεται αλλά κάποιος καταφέρνει και το κάνει, σημαίνει είτε ότι το βιβλίο κάνει λάθος, είτε δεν καταλάβαμε τι ακριβώς εννοεί το βιβλίο. Εδώ εγώ πιστεύω ότι ισχύει το δεύτερο. 


η αλήθεια είναι οτι φέτος μετά τις πανελλήνιες άρχισα να αισθάνομαι και λίγο θεολόγος... :)
Γεώργιος Γκούβας
Μηχ. Η/Υ-Σ
www.gouvas.eu

EleniK

@gouvasg
Γιατί το λες αυτό ???

Αν εξαιρέσουμε το 1ο θέμα (και συγκεκρικένα το 1Γ και το Σ-Λ με τη συνάρτηση και το διάβασμα) τα υπόλοιπα θέματα ήταν μια χαρά. Το 2ο έξυπνο, μη αναμενόμενο, σχετικά απλό. Το 3ο πολύ ωραίο θέμα !!! Το 4ο είναι το αναμενόμενο θέμα των πινάκων αλλά καλά συνδυασμένο με δομές επιλογές για να μην εχουμε του κλασικούς τυφλοσούρτες. Βατό. Λογική η δυσκολία των θεμάτων στο σύνολό τους.

Κάθε χρόνο κάτι δεν μας αρέσει και είμαστε όλο κριτικές. Καλή η κριτική και μάλιστα η καλοπροαίρετη που θεωρώ ότι γίνεται εδώ απο την πλειονότητα των συμμετεχόντων, αλλά ας μην αμφισβητούμε τόσο εύκολα τους πάντες και τα πάντα. Αν ο κάθε ένας απο εμάς ήταν στην επιτροπή, καλύτερα θα τα καταφέρναμε? Δε νομίζω (αν όχι χειρότερα). Ας μην λοιπόν κοιτάμε το δέντρο και χάνουμε το δάσος. Ότι δλδ τα θέματα σαν σύνολο πήραν την καταλληλη τροπή και υφή. Προτιμούμε τους σκεπτόμενους μαθητές. Σαφώς και δεν θέλουμε να αυξηθεί η δυσκολία των θεμάτων. Σε τόσο μικρό χρονικό διάστημα (μόνο σε μια σχολική χρονιά με τις απώλειες που αυτό συνεπάγεται και τις καταλήψεις να το υποθάλπουν) δεν γίνεται να αυξηθεί και άλλο η δυσκολία των θεμάτων. Τουλάχιστον όχι σε όλα τα θέματα ταυτόχρονα.

Καλώς λοιπόν υπάρχουν οι κριτικές αλλά ας μην απαξιώνουμε τα πάντα.

Ελένη Κοκκίνου
Καθηγήτρια Πληροφορικής, ΠΕ19