Ύπαρξη κοινής ιδιότητας στα δεδομένα

Ξεκίνησε από Νίκος Αδαμόπουλος, 15 Νοε 2009, 07:35:56 ΜΜ

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

Νίκος Αδαμόπουλος

Παράθεση από: gpapargi στις 20 Νοε 2009, 10:28:45 ΠΜ
Νίκο νόμιζω το μπλέκεις πολύ το πράγμα. Δες λίγο αυτό που έγραψα πιο πριν.

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

Δεν διαφωνώ με αυτό που λες! Παρόμοια είχα απαντήσει κι εγώ σε προηγούμενο post. Όμως νομίζω ότι η ερώτηση του pgrontas δεν έχει να κάνει με το τεχνικό μέρος της υπόθεσης (που θέλω να πιστεύω ότι δεν προβληματίζει κανέναν από εμάς) αλλά με την παιδαγωγική προσέγγιση του θέματος.

Όταν για παράδειγμα εσύ λες:

  Αν χ mod 2=1 τότε
       όλοι_ζυγοί<-αληθής

ή παρακάτω:

Αν όλοι_ζυγοί=αληθής τότε
   Εμφάνισε "Δεν ήταν όλοι ζυγοί"

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

Ο συνάδελφος νομίζω δεν ρωτάει ποια είναι η σωστή λύση αλλά με ποιο τρόπο θα την παρουσιάσει στους μαθητές, ή τι θα απαντήσει στους μαθητές αν τον ρωτήσουν "Δεν θα μπορούσαμε να πούμε ότι έχουν_κοινή_ιδιότητα<- ψευδής"...

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

Αυτό έκαναν και οι μαθητές όταν άκουγαν τους αριθμούς και αυτό θα κάνουμε αργότερα στην σειριακή αναζήτηση...

gpapargi

Έβγαλα το συμπέρασμα από την παρακάτω φράση
Παράθεση από: pgrontas στις 18 Νοε 2009, 06:31:00 ΜΜ
απαντάω κάνοντας παράδειγμα και δείχνοντας ότι δεν δουλεύει.
Μπορεί να κατάλαβα λάθος το ερώτημα.

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

Όσο ι<=100 και !(το αφήνω άδειο σε πρώτη φάση)
   Διάβασε χ
   Αν χ mod 2 =1 τότε
      όλοι_άρτιοι<-ψευδής ! στηρίζομαι στην ερμηνεία στα νέα ελληνικά
   Τέλος_αν
   ι<-ι+1
Τέλος_επανάληψης

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

pgrontas

#17
Παράθεση από: gpapargi στις 20 Νοε 2009, 09:32:49 ΠΜ
όλοι_ζυγοί<-ψευδής
Όσο ι <=100 και όλοι_ζυγοί = ψευδής επανάλαβε
   Διάβασε χ
   Αν χ mod 2=1 τότε
       όλοι_ζυγοί<-αληθής
   Τέλος_αν
   ι<-ι+1
Τέλος_επανάληψης
Αν όλοι_ζυγοί=αληθής τότε
   Εμφάνισε "Δεν ήταν όλοι ζυγοί"
αλλιώς
   Εμφάνισε "Ήταν όλοι ζυγοί"
Τέλος_αν
Γιώργο, διαβάζω το παραπάνω και με πονάνε τα μάτια μου! :D
Αυτό που ήθελα να συζητήσουμε είναι το πώς επιλέγουμε την προσέγγιση, με βάση την οποία μετά μπορούμε να  διαλέξουμε και ονόματα μεταβλητών και αρχικές τιμές.

Παράθεση από: gpapargi στις 20 Νοε 2009, 11:14:06 ΠΜ
Έβγαλα το συμπέρασμα από την παρακάτω φράση
Παράθεση από: pgrontas στις 18 Νοε 2009, 06:31:00 ΜΜ
απαντάω κάνοντας παράδειγμα και δείχνοντας ότι δεν δουλεύει.
Μπορεί να μην το εξέφρασα και εγώ σωστά, αλλά το παραπάνω το ανέφερα επειδή βλέπω ότι τα παιδιά δεν πείθονται και πάντα προσπαθούν να πειράξουν κάποια αρχική τιμή, κάποια συνθήκη μέσα στο loop, με αποτέλεσμα στην μεγαλη πλειοψηφία να κάνουν λάθος (μου συνέβη μάλιστα αυτή την εβδομάδα με τον έλεγχο για το αν κάποιος είναι πρώτος). Μου φαίνεται ότι πάνε να αποδείξουν το ανάποδο. Ήθελα λοιπόν κάποια ωραία δικαιολογία για το πώς να τους κατευθύνεις εξαρχής στην σωστή κατεύθυνση.

Παράθεση από: Νίκος Αδαμόπουλος στις 20 Νοε 2009, 09:53:27 ΠΜ
Γενικότερα, λοιπόν, για να δούμε αν όλα τα στοιχεία έχουν μια κοινή ιδιότητα, κάνουμε αρχικά την υπόθεση εκείνη που να πρέπει να ελεγχθούν όλα τα στοιχεία για να μην διαψευστεί. Και μέσα στις επαναλήψεις ελέγχουμε για κάθε στοιχείο το αντίθετο από αυτό που υποθέσαμε αρχικά.
Παράθεση από: gpapargi στις 20 Νοε 2009, 11:14:06 ΠΜ
Όσο ι<=100 και !(το αφήνω άδειο σε πρώτη φάση)
   Διάβασε χ
   Αν χ mod 2 =1 τότε
      όλοι_άρτιοι<-ψευδής ! στηρίζομαι στην ερμηνεία στα νέα ελληνικά
   Τέλος_αν
   ι<-ι+1
Τέλος_επανάληψης
Αυτά τα δύο μου φαίνονται ισοδύναμα. Κάτι ανάλογο είχε πει και Παναγιώτης  ο Τσιωτάκης νωρίτερα. Μάλλον αυτό ίσως πρέπει να πεις αρχικά. Ίσως να βοηθάει κιολας ότι ταιριάζει πιο πολύ με την εκφώνηση.

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

gthal

Απ' ότι έχω καταλάβει ψάχνουμε μια ικανοποιητική δικαιολογία για την αρχική τιμή της λογικής μεταβλητής (και ίσως για το όνομά της)

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

Όσο για μια πειστική δικαιολογία, έχω δύο τις οποίες χρησιμοποιώ συνδυαστικά (καμιά δε φτάνει από μόνη της νομίζω):
1)  Καλή πίστη - αισιοδοξία  :)   (το παραβάλλω και με το "αθώος μέχρι αποδείξεως του εναντίου")
Είμαι αισιόδοξος και θεωρώ ότι πράγματι θα είναι όλοι άρτιοι, γιαυτό είναι_όλοι_άρτιοι <-- αληθής
αυτό ίσως πείσει μερικούς
2)  Τους πιο αυστηρά σκεπτόμενους θα πείσει η επισήμανση ότι θα είναι πιο εύκολο να καταρρίψω την υπόθεση (γιατί αρκεί να βρω έναν περιττό) παρά δείξω ότι ΚΑΙ ο 1ος ΚΑΙ ο 2ος ΚΑΙ ο 3ος κλπ είναι άρτιοι.

Πάντως, αφού προηγηθεί η παραπάνω κουβέντα (περί κατάρριψης) βρίσκω τη μεταβλητή βρήκα_περιττό πιο "εύπεπτη" :

βρήκα_περιττό <-- ψευδής    ! που ταιριάζει με τη διαίσθηση αφού ακόμα δεν έχω βρει περιττό
για ι από 1 μέχρι 100
   Διάβασε χ
   Αν χ mod 2 =1 τότε
      βρήκα_περιττό <-- αληθής
   τέλος_αν
τέλος_επανάληψης

Αν βρήκα_περιττό τότε
   Εμφάνισε "Δεν ήταν όλοι άρτιοι"
Αλλιώς
   Εμφάνισε "Ήταν όλοι άρτιοι"
Τέλος_αν
Φιλικά,
Γιώργος Θαλασσινός

evry


  Σχετικά με την αιτιολόγηση της αρχικής τιμής μιας λογικής μεταβλητής. Ας υποθέσουμε ότι θέλουμε να γράψουμε έναν αλγόριθμο ο οποίος θα ελέγχει αν όλοι οι αριθμοί είναι θετικοί. Το ερώτημα αν κατάλαβα καλά είναι τι τιμή θα έχει αρχικά η μεταβλητή μας ή για την ακρίβεια πως θα πείσουμε τους μαθητές για αυτήν.
   Ας υποθέσουμε ότι η μεταβλητή λέγεται θετικοί.
Η μεταβλητή αυτή θα είναι αρχικά αληθής.  Γιατί όμως? Κάνουμε τον παρακάτω διάλογο με τους μαθητές
Κ: Πόσες μεταβλητές έχουμε διαβάσει πριν μπούμε στην επανάληψη?
Μ: Καμία
Κ: Ωραία. Άρα τι τιμή πρέπει να έχει η μεταβλητή? Ισχύει η συνθήκη?
Μ: Δεν ξέρουμε, δεν έχουμε στοιχεία.
Κ: Ναι εντάξει, αλλά είναι λογική μεταβλητή, πρέπει να πάρει κάποια τιμή, και αφού δεν έχουμε στοιχεία όπως λέτε να την πούμε Ψευδή?
Μ: Έγινε
Κ: Τι σημαίνει θετικοί = Ψευδής?
Μ: Ότι δεν είναι όλοι θετικοί
Κ: Άρα υπάρχει ένας τουλάχιστον αριθμός που δεν είναι θετικός, σωστά?
Μ: Όχι δεν υπάρχει αφού ακόμα δεν έχουμε διαβάσει κανέναν αριθμό
Κ: Τέλεια, άρα η πρόταση είναι αληθής

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

Αν πάλι δεν πείθονται οι μαθητές μπορείτε να επιλέξετε ένα πιο τραβηγμένο παράδειγμα όπως :
"Όλοι οι κάτοικοι της Σελήνης είναι πράσινοι", αληθής ή ψευδής?
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr