προβληματισμός για το θέμα Α4 α

Ξεκίνησε από Κανάκη, 29 Μαΐου 2013, 06:41:49 ΜΜ

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

Κανάκη

Καλησπέρα σας,

έχω μια αντίρρηση για τον τρόπο με τον οποίο αντιμετωπίζεται το θέμα Α4, α όχι μόνο εδώ αλλά και σε άλλα site  :D

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

Για i από 1 μέχρι 100
Για j από 1 μέχρι 100
......
Διάβασε Π[i,j]
....
Τέλος_επανάληψης
Τέλος_επανάληψης


Μια λυση που θα πρότεινα είναι :

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

done <-  i< j
όσο done = ΑΛΗΘΗΣ επανάλαβε
Διάβασε Π[i,j]
done <- ΨΕΥΔΗΣ
τέλος_επανάληψης

Τέλος_επανάληψης
Τέλος_επανάληψης


Αυτό μας εξασφαλίζει 0 ή μια εκτέλεση του Διάβασε .. όπως άλλωστε γίνεται και στην Αν ::).

itt

Έλεγε επι λέξη
Παράθεσηχωρίς τη χρήση της δομής επιλογής

Οπότε δεν βλέπω το πρόβλημα να κάνεις κάτι στη Για(Στα όρια του επιτρεπτού επ'αυτής that is).

Κανάκη

Έλεγε:

ΠαράθεσηΝα ξαναγράψετε στο τετράδιό σας το παραπάνω τμήμα αλγορίθμου
χωρίς τη χρήση της δομής επιλογής, έτσι ώστε να επιτελεί την ίδια
λειτουργία

ξαναγράφω δεν σημαίνει ότι γράφω ακριβώς το ίδιο;  :o

itt

Δεν ξέρω,πιστεύω πως είναι πιο weak,με την έννοια ότι άμα θέλανε περισσότερους περιορισμούς,ας τους καταγράφανε explicitly.

evry

Δεν υπάρχει πρόβλημα σε αυτό το θέμα.
Μέχρι στιγμής οι λύσεις είναι 3

αυτή με το i+1

αυτή που σαρώνει κατά στήλες οπότε πάει στην εσωτερική επανάληψη από 1 μέχρι j-1

και η λύση με την Όσο και τη λογική μεταβλητή

Για ι από 1 μέχρι 100
     Για j από 1 μέχρι 100
          done <-- i<j
          Όσο done Επανάλαβε
               Διάβασε Π[ι,j]
               done <-- Ψευδής
          Τέλος_Επανάληψης
     Τέλος_Επανάληψης
Τέλος_Επανάληψης


και οι 3 παραπάνω είναι δεκτές

What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

gthal

Πράγματι, αν με κάποιον τρόπο κάνεις μια Όσο να εκτελεστεί μία μόνο φορά, είναι ισοδύναμη με μια Αν
Αυτό είναι που δε μου αρέσει σ' αυτή τη λύση και μου φαίνεται "ζαβολιά".
Φυσικά ξεγλιστράει άριστα από τους περιορισμούς που θέτει η εκφώνηση, οπότε δε μπορεί να θεωρηθεί λάθος.

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

Κανάκη

Παράθεση από: gthal στις 29 Μαΐου 2013, 09:24:36 ΜΜ
Πράγματι, αν με κάποιον τρόπο κάνεις μια Όσο να εκτελεστεί μία μόνο φορά, είναι ισοδύναμη με μια Αν
Αυτό είναι που δε μου αρέσει σ' αυτή τη λύση και μου φαίνεται "ζαβολιά".
Φυσικά ξεγλιστράει άριστα από τους περιορισμούς που θέτει η εκφώνηση, οπότε δε μπορεί να θεωρηθεί λάθος.

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

Πιστεύω ότι δεν είναι "ζαβολιά"  :angel: διότι απάντάει ακριβώς στο ερώτημα. Είναι πολύ πιο εύκολο να σκεφτεί κάποιος ότι η συνθήκη i<j αναφέρεται στα στοιχεία πάνω από την κύρια διαγώνιο και να λύσει αναλόγως το θέμα. Εγώ θεώρησα ότι αυτό είναι η παγίδα (το να παρασυρθείς δηλαδή από την συνθήκη)  και ότι το ζητούμενο είναι να δείξει ο μαθητής ότι να μπορεί να "πάει"από την ΑΝ στην ΟΣΟ.

Ειλικρινά εξεπλάγην όταν διαπίστωσα ότι δεν προβλημάτησε το φόρουμ! ???

gthal

Παράθεση από: Κανάκη στις 29 Μαΐου 2013, 09:49:58 ΜΜ
Εγώ θεώρησα ότι αυτό είναι η παγίδα (το να παρασυρθείς δηλαδή από την συνθήκη)  και ότι το ζητούμενο είναι να δείξει ο μαθητής ότι να μπορεί να πάει από την ΑΝ στην ΟΣΟ.
Εγώ πάλι είμαι σίγουρος το ζητούμενο δεν είναι να δείξει ο μαθητής ότι να μπορεί να πάει από την ΑΝ στην ΟΣΟ.  :angel:
Και δεν θα έπρεπε επ' ουδενί να είναι!
Αυτό επισημαίνω στο παραπάνω σχόλιό μου: η ΑΝ και η ΟΣΟ είναι δομές/εντολές διαφορετικών κατηγοριών. Είναι φτιαγμένες για να κάνουν η καθεμιά άλλο είδος δουλειάς. Η μία είναι για να κάνει επαναλήψεις, η άλλη για να επιλέγει, να παίρνει μια απόφαση.
Από διδακτικής πλευράς πρέπει να κατευθύνουμε τα παιδιά προς το να διακρίνουν την ειδοποιό διαφορά τους κι όχι να τις συγχέουν. Δεν πρέπει να τους βάζουμε να σκέφτονται πώς να ΜΗΝ χρησιμοποιήσουν μια ΑΝ αλλά στη θέση της να χρησιμοποιήσουν (χωρίς κάποιον επαρκή λόγο) μια (αχρείαστη) δομή επανάληψης.
Αντικαθιστώ μια δομή επιλογής με μια άλλη δομή επιλογής και αντικαθιστώ μια δομή επανάληψης μια άλλη δομή επανάληψης (εκτός βέβαια αν ο αρχικός κώδικας τις χρησιμοποιεί λάθος, οπότε θα έχω ακριβώς αυτή τη δουλειά, να χρησιμοποιήσω τη σωστή δομή)
Στην προγραμματιστική πραγματικότητα ποτέ δε θα αντικαταστήσω μια δομή επιλογής με μια δομή επανάληψης (μόνο αν το δω σαν σπαζοκεφαλιά για να διασκεδάσω το πώς θα κάνω τα αδύνατα δυνατά), ούτε και το αντίστροφο.
Αυτή είναι η δική μου ματιά  :)
Φιλικά,
Γιώργος Θαλασσινός

petrosp13

Γενικότερα, αυτό το θέμα νομίζω ότι θα έπρεπε να είναι πολύ εύκολο για τους μαθητές, παρόλο που τελικά τους δυσκόλεψε
Όποιος κατάλαβε ουσιαστικά ότι το j πρέπει να είναι μεγαλύτερο του i, θα έφτιαξε εύκολα την επανάληψη
Δεν έχει καμία σχέση π.χ. με το Β2 που χρειάζεται πλήρης φαντασία για την υλοποίηση
Παπαδόπουλος Πέτρος
Καθηγητής Πληροφορικής

Κανάκη

#9
a

Κανάκη

Παράθεση από: gthal στις 29 Μαΐου 2013, 10:13:00 ΜΜ
Εγώ πάλι είμαι σίγουρος το ζητούμενο δεν είναι να δείξει ο μαθητής ότι να μπορεί να πάει από την ΑΝ στην ΟΣΟ.  :angel:
Και δεν θα έπρεπε επ' ουδενί να είναι!
Αυτό επισημαίνω στο παραπάνω σχόλιό μου: η ΑΝ και η ΟΣΟ είναι δομές/εντολές διαφορετικών κατηγοριών. Είναι φτιαγμένες για να κάνουν η καθεμιά άλλο είδος δουλειάς. Η μία είναι για να κάνει επαναλήψεις, η άλλη για να επιλέγει, να παίρνει μια απόφαση.
Από διδακτικής πλευράς πρέπει να κατευθύνουμε τα παιδιά προς το να διακρίνουν την ειδοποιό διαφορά τους κι όχι να τις συγχέουν. Δεν πρέπει να τους βάζουμε να σκέφτονται πώς να ΜΗΝ χρησιμοποιήσουν μια ΑΝ αλλά στη θέση της να χρησιμοποιήσουν (χωρίς κάποιον επαρκή λόγο) μια (αχρείαστη) δομή επανάληψης.
Αντικαθιστώ μια δομή επιλογής με μια άλλη δομή επιλογής και αντικαθιστώ μια δομή επανάληψης μια άλλη δομή επανάληψης (εκτός βέβαια αν ο αρχικός κώδικας τις χρησιμοποιεί λάθος, οπότε θα έχω ακριβώς αυτή τη δουλειά, να χρησιμοποιήσω τη σωστή δομή)
Στην προγραμματιστική πραγματικότητα ποτέ δε θα αντικαταστήσω μια δομή επιλογής με μια δομή επανάληψης (μόνο αν το δω σαν σπαζοκεφαλιά για να διασκεδάσω το πώς θα κάνω τα αδύνατα δυνατά), ούτε και το αντίστροφο.
Αυτή είναι η δική μου ματιά  :)

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

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

gthal

Παράθεση από: Κανάκη στις 29 Μαΐου 2013, 10:27:09 ΜΜ
Δεν πρέπει να αφήσουμε αναλλοίωτο τον κώδικα έκτός από την Αν;
Αν το σκεφτείς, και οι δυο μας αλλοιώνουμε τον κώδικα.
Κι εσύ, για να εξαφανίσεις την Αν, προσθέτεις εντολές μέσα στη Για οι οποίες δεν υπήρχαν. Προσθέτεις μάλιστα και μια καινούρια μεταβλητή!
Αν θέλεις όμως, η μεγαλύτερή μου ένσταση είναι ότι ξαναχρησιμοποιείς την ίδια συνθήκη που έχει και η Αν
Κατά βάθος, μια καλύτερη διατύπωση του θέματος ώστε να διατηρήσει το πνεύμα της (όπως το καταλαβαίνω εγώ) θα ήταν:
"Να το ξαναγράψετε χωρίς τη χρήση συνθήκης"  >:D
Φιλικά,
Γιώργος Θαλασσινός

Κανάκη

#12
Παράθεση από: gthal στις 29 Μαΐου 2013, 10:46:54 ΜΜ
Αν το σκεφτείς, και οι δυο μας αλλοιώνουμε τον κώδικα.
Κι εσύ, για να εξαφανίσεις την Αν, προσθέτεις εντολές μέσα στη Για οι οποίες δεν υπήρχαν. Προσθέτεις μάλιστα και μια καινούρια μεταβλητή!
Αν θέλεις όμως, η μεγαλύτερή μου ένσταση είναι ότι ξαναχρησιμοποιείς την ίδια συνθήκη που έχει και η Αν
Κατά βάθος, μια καλύτερη διατύπωση του θέματος ώστε να διατηρήσει το πνεύμα της (όπως το καταλαβαίνω εγώ) θα ήταν:
"Να το ξαναγράψετε χωρίς τη χρήση συνθήκης"  >:D

Σου λέει τι πρέπει να γράψεις και τι δεν πρέπεινα γράψεις. Το να αλλάζεις κάτι που σου λέει ότι πρέπει να το γράψεις είναι λάθος . Συμφωνώ εννοείται ότι προσθέτω κάτι καινούριο στον κώδικα αλλά δεν γίνεται αλλιώς  :P.


gthal

Ναι, αλλά εν τέλει μέτρα τις αλλαγές  : πιο πολλές είναι οι δικές σου  :P
(τελος πάντων, εμένα δε με νοιάζει αυτό. επειδή εσύ λες ότι πιο πολύ αλλάζει τον αρχικό κώδικα η άλλη λύση παρά η δική σου)

εδώ δεν κατάλαβα τι λες
Παράθεση από: Κανάκη στις 29 Μαΐου 2013, 10:56:51 ΜΜ
Το να αλλάζεις κάτι που σου λέει ότι πρέπει να το γράψεις (όπως την συνθήκη) είναι λάθος .
Φιλικά,
Γιώργος Θαλασσινός

ilias01

Για ι απο 1 μεχρι 100
   Για ξ απο 1 μεχρι 100
       οσο ι<ξ επαναλαβε
           διαβασε π[ι,ξ]
           ι<-- ι+1
       τελος_επαναληψης
   τελος_επαναληψης
τελος_επαναληψης