Τυποποίηση vs Σκέψης

Ξεκίνησε από evry, 05 Απρ 2011, 04:42:16 ΜΜ

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

evry

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

Άσκηση
Να γράψετε αλγόριθμο ο οποίος να διαβάζει αριθμούς μέχρι να δοθεί 0 και να εμφανίζει τους Ν μεγαλύτερους, για δεδομένο Ν.

(β έκδοση) : να εμφανίζει τους αριθμούς με τη σειρά που τους διάβασε
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

meteo_xampos

Καμία λύση κανείς? Είναι για μαθητές το πρόβλημα αυτό;

odysseas

Παράθεση από: evry στις 05 Απρ 2011, 04:42:16 ΜΜ
προσπαθούν να το λύσουν ad hoc ή να εφαρμόσουν κάποιους έτοιμους αλγορίθμους?

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

Κατά τ' άλλα, θες να δώσουμε και λύση ή απλά να συζητήσουμε το γενικό ερώτημα;

Παράθεση από: evry στις 05 Απρ 2011, 04:42:16 ΜΜ
(β έκδοση) : να εμφανίζει τους αριθμούς με τη σειρά που τους διάβασε

Εννοείς να εμφανίζει τους Ν μεγαλύτερους αριθμούς με τη σειρά που τους διάβασε;

evry

γιατί όχι και τα δύο, αλλά κατά βάση το δεύτερο. Δηλαδή το πρόβλημα είναι πως θα εξηγήσουμε σε έναν μαθητή, ώστε να τον πείσουμε, ότι η λύση που έκανε μπορεί να βγάζει σωστό αποτέλεσμα αλλά δεν είναι "τόσο σωστή" όσο νομίζει. Για παράδειγμα πόσο επιστημονικά τεκκμηριωμένη είναι η εύρεση μεγίστου με ταξινόμηση ή ακόμα καλύτερα η ταξινόμηση αριθμών με την μέθοδο BogoSort (ή MonkeySort)  http://en.wikipedia.org/wiki/Bogosort.
Θα μπορούσε αυτό να θεωρηθεί λύση? Γενικά το γεγονός ότι η απόδοση είναι εκτός ύλης, δημιουργεί κατά τη γνώμη μου πολλά προβλήματα
Παράθεση από: odysseas στις 06 Απρ 2011, 08:30:22 ΜΜ
Κατά τ' άλλα, θες να δώσουμε και λύση ή απλά να συζητήσουμε το γενικό ερώτημα;

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

(Καταρχήν λέμε στους μαθητές ότι θα δοθούν τουλάχιστον 50 αριθμοί. Οπότε η δουλειά είναι από εκεί και πέρα)

Αρχή Αλγορίθμου
0. Τοποθετώ τους πρώτους 50 αριθμούς σε έναν πίνακα Α[50]
1. Διαβάζω τον επόμενο αριθμό
2. Αντιγράφω τους 50 αριθμούς που έχω σε έναν νέο πίνακα Β[51]  και βάζω στην τελευταία θέση τον αριθμό που μόλις διάβασα
3. Ταξινόμηση στον πίνακα Β
4. Αντιγραφή των πρώτων 50 στοιχείων του Β στον Α
5. Συνεχίζω ακάθεκτος
Τέλος Αλγορίθμου

Η παραπάνω λύση είναι απαράδεκτη από επιστημονικής πλευράς? Θα γινόταν ποτέ δεκτή σε οποιοδήποτε πανεπιστήμιο του κόσμου? Αλλά και παιδαγωγικά να το πάρει κανείς. Δεν δείχνει ότι απλά έχουμε εκπαιδεύσει τα παιδιά να προσπαθούν να εφαρμόσουν έτοιμες συνταγές και όχι να επινοούν τις δικές τους? Πως μπορούμε μετά να μιλάμε για αλγοριθμική σκέψη? Δεν είναι υποκρισία?

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

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

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

Κουβέντα να γίνεται :)
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

tom

αλγόριθμος μεγαλύτεροι
 δεδομένα //ν//
 μ ← 0
 κ ← 0
 διάβασε αρ
 μαχ ← αρ
 όσο αρ<>0 επανάλαβε 
   μ ← μ+1
   αν αρ>=μαχ και κ<=ν τότε
     αν κ=ν τότε 
        κ← 0 
     τέλος_αν
     μαχ ← αρ 
     κ ←  κ+1
     θμαχ[κ]← μ
   τέλος_αν
   αριθμοί[μ]← αρ
   διάβασε αρ
 τέλος_επανάληψης
 εμφάνισε "οι", ν, " μεγαλύτεροι:"
 αν ν>μ τότε
  ν← μ
 τέλος_αν
 για ι από 1 μέχρι ν
  εμφάνισε αριθμοί[θμαχ[ι]]
 τέλος_επανάληψης
τέλος μεγαλύτεροι


Αυτή σου φαίνεται πολύπλοκη? Λάβε υπ'οψιν ότι φέτος δεν ασχολούμαι καθόλου με ΑΕΠΠ και είμαι deforme  ;D
Θωμάς Σκυλογιάννης

- Ζήσε σα να' ταν να πεθάνεις αύριο. Μάθε σα να' ταν να ζεις για πάντα.
                                                                                     Μαχάτμα Γκάντι

tom

Κάποιες φορές χάνει έναν αριθμό από τους Ν μεγαλύτερους  η λύση που έδωσα... >:(
Θωμάς Σκυλογιάννης

- Ζήσε σα να' ταν να πεθάνεις αύριο. Μάθε σα να' ταν να ζεις για πάντα.
                                                                                     Μαχάτμα Γκάντι

sstergou

Χρησιμοποιεί και πίνακα με άγνωστο πλήθος στοιχείων ακόμα και κατά την διάρκεια της εκτέλεσης.

Για κάνε και μια επεξήγηση όμως για το πως δουλεύει :)

tom

Παράθεση από: sstergou στις 06 Απρ 2011, 10:12:20 ΜΜ
Χρησιμοποιεί και πίνακα με άγνωστο πλήθος στοιχείων ακόμα και κατά την διάρκεια της εκτέλεσης.
Μη μου περιορίζεις της σκέψη.  :) Έστω ότι το μέγεθος του θμαχ[] είναι ν και του αριθμοί όσο θες  :) .

Σκέφτηκα να κρατάω τις θέσεις των ν μεγαλύτερων στοιχείων μέσα σε ξεχωριστό πίνακα. Όταν γεμίσει με ν μεγαλύτερους και εξακολουθούν να δίδονται στοιχεία, τον μηδενίζω και κρατάω τα αμέσως επόμενα ν μεγαλύτερα...δε ξέρω τι λέτε? 
Θωμάς Σκυλογιάννης

- Ζήσε σα να' ταν να πεθάνεις αύριο. Μάθε σα να' ταν να ζεις για πάντα.
                                                                                     Μαχάτμα Γκάντι

evry

αντιθέτως, αυτό σημαίνει ότι είσαι σε φόρμα  >:D, εγώ που κάνω κάθε χρόνο ΑΕΠΠ, κοιτάω τον κώδικά σου και και μου πήρε ώρα να καταλάβω τι κάνεις (και ακόμα δεν είμαι σίγουρος). Για παράδειγμα ο πίνακας Θμαχ αν κατάλαβα καλά δεν έχει σταθερό μέγεθος, έτσι δεν είναι?
   Ουσιαστικά ο θmax είναι ένας πίνακας δεικτών στους αριθμούς που βρίσκονται στον άλλον πίνακα. Αλλά μου φαίνεται ότι δεν κράτας τους N μεγαλύτερους


Παράθεση από: tom στις 06 Απρ 2011, 09:52:30 ΜΜ
Αυτή σου φαίνεται πολύπλοκη? Λάβε υπ'οψιν ότι φέτος δεν ασχολούμαι καθόλου με ΑΕΠΠ και είμαι deforme  ;D
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

evry

Ένα λεπτό, όταν τον μηδενίζεις δεν χάνεις όλα τα στοιχεία που έχεις ήδη βάλει μέσα? δηλαδή αν εγώ δώσω ν+5 αριθμούς
και τύχει οι πρώτοι 5 να είναι οι μεγαλύτεροι όλων, δεν θα τους χάσεις στο τέλος?
ή κάτι δεν έχω καταλάβει καλά

και επίσης αυτό που είπε ο Στάθης, ότι δεν ξέρεις πόσοι αριθμοί θα σου δωθούν άρα δεν μπορείς να τους βάλεις όλους σε πίνακα, μόνο τους Ν μεγαλύτερους κάθε φορά
Παράθεση από: tom στις 06 Απρ 2011, 10:19:12 ΜΜ
Σκέφτηκα να κρατάω τις θέσεις των ν μεγαλύτερων στοιχείων μέσα σε ξεχωριστό πίνακα. Όταν γεμίσει με ν μεγαλύτερους και εξακολουθούν να δίδονται στοιχεία, τον μηδενίζω και κρατάω τα αμέσως επόμενα ν μεγαλύτερα...δε ξέρω τι λέτε? 

edit: οκ το κατάλαβα τώρα, αλλά δεν έχω καταλάβει τι ήθελες να κάνεις, έχω την εντύπωση ότι πήγαινες να κάνεις κάτι άλλο και κάτι σου ξέφυγε. Για να δεις τι πάει στραβά σκέψου να σου δώσω για ν=5 τους αριθμούς 80, 90, 1, 2,3,4,5, 100 ποιους αριθμούς θα εμφανίσει. Λογικά θα χάσει το 80.
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

tom

Παράθεση από: evry στις 06 Απρ 2011, 10:29:33 ΜΜ
Για παράδειγμα ο πίνακας Θμαχ αν κατάλαβα καλά δεν έχει σταθερό μέγεθος, έτσι δεν είναι?
Έχει και είναι ν.
Παράθεση από: evry στις 06 Απρ 2011, 10:29:33 ΜΜ
Ουσιαστικά ο θmax είναι ένας πίνακας δεικτών στους αριθμούς που βρίσκονται στον άλλον πίνακα....
Σωστά.

Παράθεση από: evry στις 06 Απρ 2011, 10:33:41 ΜΜ
Ένα λεπτό, όταν τον μηδενίζεις δεν χάνεις όλα τα στοιχεία που έχεις ήδη βάλει μέσα? δηλαδή αν εγώ δώσω ν+5 αριθμούς
και τύχει οι πρώτοι 5 να είναι οι μεγαλύτεροι όλων, δεν θα τους χάσεις στο τέλος?
ή κάτι δεν έχω καταλάβει καλά
Μα αν εσύ θέλεις για παράδειγμα να εμφανίζεις τους 3 μεγαλύτερους και γεμίσει ο πίνακας με 3 θέσεις και στη συνέχεια ο χρήστης δώσει 3 άλλους μεγαλύτερους δεν πρέπει οι τελευταίοι να πάρουν τη θέση των πρώτων?

Παράθεση από: evry στις 06 Απρ 2011, 10:33:41 ΜΜ
και επίσης αυτό που είπε ο Στάθης, ότι δεν ξέρεις πόσοι αριθμοί θα σου δωθούν άρα δεν μπορείς να τους βάλεις όλους σε πίνακα, μόνο τους Ν μεγαλύτερους κάθε φορά
Αυτό ας το αφήσουμε τελευταίο. Είπες "να γραφεί αλγόριθμος..." και επειδή ξέρω ότι τα παραδείγματά σου ξεφεύγουν λίγο από το βιβλίο πήρα την πρωτοβουλία να θεωρήσω οτι εννοούσες "να γραφεί αλγόριθμος που μπορεί να υλοποιηθεί σε κάποια γλώσσα προγραμματισμού και όχι απαραίτητα σε ΓΛΩΣΣΑ".  :D
Θωμάς Σκυλογιάννης

- Ζήσε σα να' ταν να πεθάνεις αύριο. Μάθε σα να' ταν να ζεις για πάντα.
                                                                                     Μαχάτμα Γκάντι

sstergou

Μισό λεπτό, έχω μπερδευτεί... Θωμά αν κάποιος δώσει τους αριθμούς
90
80
1
2
3
4
5
70
0

ο αλγόριθμος που έδωσες δεν βρίσκει τους (π.χ. 3) μεγαλύτερους αλλά μέσα στον πίνακα θμαχ βάζει μόνο τον πρώτο. Αυτό συμβαίνει γιατί όλοι οι υπόλοιποι "μεγαλύτεροι" είναι μικρότεροι από τον 90.

Ευριπίδη είμαι περίεργος να δω την λύση σου και αν υπάρχει τρόπος να λυθεί αυτό μόνο με μία επανάληψη...
2 λύσεις απλές στην σύλληψη είναι :

  • Εύρεση κάθε φορά του ελάχιστου στοιχείο και στην συνέχεια μεταφορά όλων των στοιχείων που ακολουθούν ώστε να αδειάσει η τελευταία θέση
  • Κάθε φορά που διαβάζεται ένας αριθμός να μπαίνει στην σωστή θέση ώστε ο πίνακας να είναι ταξινομημένος (ταξινόμηση με εισαγωγή) και σε παράλληλο πίνακα κρατάμε την σειρά με την οποία διαβάστηκε

evry

Παράθεση από: tom στις 06 Απρ 2011, 10:45:36 ΜΜ
Μα αν εσύ θέλεις για παράδειγμα να εμφανίζεις τους 3 μεγαλύτερους και γεμίσει ο πίνακας με 3 θέσεις και στη συνέχεια ο χρήστης δώσει 3 άλλους μεγαλύτερους δεν πρέπει οι τελευταίοι να πάρουν τη θέση των πρώτων?
Ακριβώς. Στον δικό σου κώδικα όμως δεν την παίρνουν. για παράδειγμα αν δώσεις   100 90 6 5 200, τότε το 200 δεν θα πάρει τη θέση του 100? Θα έπρεπε να πάρει τη θέση του 6 όμως.
Επίσης αλλάζεις την τιμή του ν. Αυτό είναι το δεδομένο Ν που είναι σταθερό εξαρχής. Δηλαδή αν κάποιος δώσει τους αριθμούς 100 99 98 .....  1 τότε θα τους πάρει όλους και όχι π.χ. τους Ν=10 μόνο.

Παράθεση
Αυτό ας το αφήσουμε τελευταίο. Είπες "να γραφεί αλγόριθμος..." και επειδή ξέρω ότι τα παραδείγματά σου ξεφεύγουν λίγο από το βιβλίο πήρα την πρωτοβουλία να θεωρήσω οτι εννοούσες "να γραφεί αλγόριθμος που μπορεί να υλοποιηθεί σε κάποια γλώσσα προγραμματισμού και όχι απαραίτητα σε ΓΛΩΣΣΑ".  :D
ναι οκ, αλλά για φαντάσου ένα πρόβλημα στο οποίο έχεις συνεχή ροή αριθμών όπως για παράδειγμα ένας αλγόριθμος που επεξεργάζεται ένα data stream το οποίο μπορεί να μην τελειώνει ποτέ. Δεν μπορεί να το βάλει όλο σε έναν πίνακα. Τι θα πρέπει να κάνει αν θέλει να φυλάει κάθε φορά τα Ν καλύτερα. Αυτό εννοούσα. Ίσως να μην είχα διατυπώσει καλά το πρόβλημα και να κατάλαβες άλλο
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

evry

    Παράθεση από: sstergou στις 06 Απρ 2011, 11:00:10 ΜΜ
    Ευριπίδη είμαι περίεργος να δω την λύση σου και αν υπάρχει τρόπος να λυθεί αυτό μόνο με μία επανάληψη...
    καλά δεν είπα και με μια, αν και τώρα που σκέφτομαι υπάρχει αλλά ουσιαστικά θα κάνεις κάποιο τέχνασμα με μια δομή επιλογής μέσα (ουσιαστικά θα κάνεις τη διπλή μονή, θα το δω νομίζω πως γίνεται)

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

    Η πιο απλή λύση όμως είναι η παρακάτω

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

    Τόσο απλό!!!
    όταν λέμε Ν μεγαλύτεροι δεν θέλουμε να είναι και ταξινομημένοι, απλά να είναι οι καλύτεροι, τώρα σε ποια σειρά θα είναι δεν μας ενδιαφέρει ;)

    Δεν είναι απλό ?? και όμως δεν το σκέφτεται κανένας, όλοι πάνε στην ταξινόμηση[/list]
    What I cannot create I do not understand -- Richard Feynman
    http://evripides.mysch.gr

    meteo_xampos

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

    Αλγόριθμος τάδε
    Δεδομένα //Ν//
    Διάβασε αρ
    π← 0
    Όσο αρ>0 επανάλαβε
       π← π+1
       Αν π<=Ν τότε
          ΠΙΝ[π]← αρ
       Αλλιώς
          μικ← ΠΙΝ[1]
          θ← 1
          Για ι από 2 μέχρι Ν
             Αν ΠΙΝ[ι]<μικ τότε
                μικ← ΠΙΝ[ι]
                θ← ι
             Τέλος_Αν
          Τέλος_Επανάληψης
          Αν αρ>μικ τότε
             ΠΙΝ[θ]← αρ
          Τέλος_Αν
       Τέλος_Αν
       Διάβασε αρ
    Τέλος_επανάληψης
    Για ι από 1 μέχρι Ν
       Εμφάνισε ΠΙΝ[ι]
    Τέλος_επανάληψης
    Τέλος τάδε

    evry

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

    Keep Growing

    Πράγματι, πολύ απλή και αποτελεσματική η λύση του Ευριπίδη.
    Μπορεί να γίνει και μια παραλλαγή, βάζοντας στο παιχνίδι και τους αρνητικούς αριθμούς.
    Σε αυτή την περίπτωση θα πρέπει να αρικοποιήσουμε αρχικά τον πίνακα με τον ελάχιστο ακέραιο.
    Ο Έρωτας (του Εκπ/κου Πληροφορικού) στ' αλώνια της καλδέρας (του υπνωτισμού).

    evry

    Παναγιώτη τι εννοείς? δεν το κατάλαβα. Κάποια παραλλαγή της εκφώνησης?
    What I cannot create I do not understand -- Richard Feynman
    http://evripides.mysch.gr

    Keep Growing

    Να, λέω αν όλοι οι αριθμοί που θα διαβάζονται είναι αρνητικοί, για να μπορεί να δουλέψει ο αλγόριθμος, θα πρέπει ο πίνακας ΜΑΧ[Ν] αρχικά να αρχικοποιηθεί με τον μικρότερο ακέραιο (-max) και όχι με το 0. Είναι λεπτομέρεια,  αλλά καλό είναι να το γνωρίζουν οι μαθητές.
    Ο Έρωτας (του Εκπ/κου Πληροφορικού) στ' αλώνια της καλδέρας (του υπνωτισμού).

    evry

    ααα κατάλαβα
    λοιπόν δεν αρχικοποιείς τον πίνακα, απλά διαβάζεις στην αρχή Ν στοιχεία, τα βάζεις στον πίνακα και στη συνέχεια διαβάζεις τα υπόλοιπα ένα ένα.

    Τώρα με αυτό που είπες μου θύμησες μια άσκηση που λέει "να διαβάζει αριθμούς και να υπολογίζει τον μικρότερο θετικό και τον μεγαλύτερο αρνητικό",
    What I cannot create I do not understand -- Richard Feynman
    http://evripides.mysch.gr

    sstergou

    Παράθεση από: evry στις 06 Απρ 2011, 11:12:47 ΜΜ
    Βρες κάθε φορά τον χειρότερο και δες αν αυτός που ήρθε είναι καλύτερός του.
    Αν ναι βαλτόν στην θέση του.

    Τόσο απλό!!!
    όταν λέμε Ν μεγαλύτεροι δεν θέλουμε να είναι και ταξινομημένοι, απλά να είναι οι καλύτεροι, τώρα σε ποια σειρά θα είναι δεν μας ενδιαφέρερει

    Έτσι όμως χάνουμε την σειρά με την οποία διαβάστηκαν.

    evry

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

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


    Παράθεση από: sstergou στις 07 Απρ 2011, 10:16:59 ΠΜ
    Έτσι όμως χάνουμε την σειρά με την οποία διαβάστηκαν.
    What I cannot create I do not understand -- Richard Feynman
    http://evripides.mysch.gr

    P.Tsiotakis

    Γιατί δεν ακολουθείτε μια πολύ απλή λύση;

    1. είσοδος όλων των στοιχείων σε πίνακα
    2. ταξινόμηση
    3. Εμφάνιση των Ν (οσωνδήποτε) μεγαλύτερων

    ssimaiof

    ! Να γράψετε αλγόριθμο ο οποίος να διαβάζει αριθμούς μέχρι να δοθεί 0.
    ! Να εμφανίζει τους Ν μεγαλύτερους αριθμούς με τη σειρά που τους διάβασε.
    ΠΡΟΓΡΑΜΜΑ Ν_Μεγαλύτεροι
    ΣΤΑΘΕΡΕΣ
      Ν = 5
    ΜΕΤΑΒΛΗΤΕΣ
      ΑΚΕΡΑΙΕΣ: Μεγ[Ν]                ! Πίνακας με τους Ν Μεγαλ. αριθμούς
      ΑΚΕΡΑΙΕΣ: Α, Κ, Θ, i
    ΑΡΧΗ
      Κ <- 0                          ! Μετράει το πλήθος των καταχωρημένων ααριθμών στον Μεγ
      ΓΡΑΨΕ 'Δώστε έναν αριθμό :  '
      ΔΙΑΒΑΣΕ Α
      Θ <- 1                          ! Κρατάμε τη θέση του μικρότερου στον Μεγ
      ΟΣΟ Α <> 0 ΕΠΑΝΑΛΑΒΕ
        ΑΝ Κ < Ν ΤΟΤΕ                 ! Τους πρώτους Ν αριθμούς
          Κ <- Κ + 1                  !   απλά τους καταχωρούμε στον Μεγ
          Μεγ[Κ] <- Α                 !
          ΑΝ Α < Μεγ[Θ] ΤΟΤΕ          !   και Κρατάμε τη θέση του μικρότερου στον Μεγ
            Θ <- Κ
          ΤΕΛΟΣ_ΑΝ
        ΑΛΛΙΩΣ
          ΑΝ Α > Μεγ[Θ] ΤΟΤΕ          ! Αν ο αριθμός είναι μεγαλ. από το μικρότ. στοιχεό του Μεγ
            ΓΙΑ i ΑΠΟ Θ ΜΕΧΡΙ Ν - 1   !   Από τη θέση του μικρότερου
              Μεγ[i] <- Μεγ[i + 1]    !     Μετέφερε τα στοιχεία μία θέση πριν
            ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ          !     ελευθερώνοντας την τελευταία θέση
            Μεγ[Ν] <- Α               !   Στην τελευταία θέση βάλε τον αριθμό
            Θ <- 1                    ! Βρες τη θέση του νέου μικρότερου στοιχείου στον Μεγ
            ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ Ν
              ΑΝ Μεγ[i]<Μεγ[Θ] ΤΟΤΕ
                Θ <- i
              ΤΕΛΟΣ_ΑΝ
            ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
          ΤΕΛΟΣ_ΑΝ
        ΤΕΛΟΣ_ΑΝ
        ΓΡΑΨΕ 'Δώστε έναν αριθμό :  '
        ΔΙΑΒΑΣΕ Α
      ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
      ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Κ             ! Εμφάνισε τους μεγαλύτερους αριθμούς
        ΓΡΑΨΕ Μεγ[i], '  '
      ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
    ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
    
    [/font]
    Σταύρος Σημαιοφορίδης

    sstergou

    Παράθεση από: ptsiotakis στις 07 Απρ 2011, 11:06:58 ΠΜ
    Γιατί δεν ακολουθείτε μια πολύ απλή λύση;

    1. είσοδος όλων των στοιχείων σε πίνακα
    2. ταξινόμηση
    3. Εμφάνιση των Ν (οσωνδήποτε) μεγαλύτερων

    Γιατί ο πίνακας που προκύπτει είναι δυναμικός.

    Δεν υπάρχει ομοιότητα με το περσινό θέμα 3. Εκεί μπορούμε να έχουμε κανονικά στατική δομή.

    P.Tsiotakis

    Κι όμως, αφού έχουμε αλγόριθμο δεν μας ενδιαφέρει το πλήθος των στοιχείων του πίνακα, μπορώ να έχω όσα στοιχεία θέλω

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

    evry

    ακριβώς, εδώ υπάρχει τιμή φρουρός, δεν ξέρεις το μέγεθος του πίνακα παρά μόνο όταν έχει περάσει το τελευταίο στοιχείο, οπότε πρέπει να δουλέψεις με δυναμικούς πίνακες.
    Πράγματι δεν είναι το ίδιο με το θέμα 3, αλλά ο γενικότερος προβληματισμός παραμένει ο ίδιος. Δηλαδή από τη μια έχεις μια λύση που προκύπτει με μια απλή σκέψη (θέση<-θέση+1) και από την άλλη κάνεις ταξινόμηση και αναζήτηση.
    What I cannot create I do not understand -- Richard Feynman
    http://evripides.mysch.gr

    evry

    Χμμ... βλέπω ότι ο Παναγιώτης το αντιμετωπίζει στην πιο γενική μορφή του.
    Λέτε να αλλάξω την εκφώνηση και να βάλω πρόγραμμα?
    What I cannot create I do not understand -- Richard Feynman
    http://evripides.mysch.gr

    sstergou

    Παράθεση από: ptsiotakis στις 07 Απρ 2011, 11:53:42 ΠΜ
    Κι όμως, αφού έχουμε αλγόριθμο δεν μας ενδιαφέρει το πλήθος των στοιχείων του πίνακα, μπορώ να έχω όσα στοιχεία θέλω

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

    Καλώς ή κακώς υπάρχει αυτή η σύμβαση μέσα στο βιβλίο. Ότι δηλαδή οι πίνακες είναι στατικοί. Δεν  με πειράζει η στατικότητα των πινάκων αλλά ο ορισμός που το βιβλίο δίνει και ο τρόπος που χειρίζεται τους πίνακες στην ψευδογλώσσα και αυτό επειδή πιστεύω ότι υπάρχει ασυνέπεια.

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

    P.Tsiotakis

    Αυτό ακριβώς έκανα Στάθη, επανέλαβα προτάσεις που έχω διαβάσει στο παρελθόν

    Καλή συνέχεια...

    odysseas

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

    Επίσης, η διατήρηση των αριθμών σε διάταξη δεν κοστίζει και τόσο πολύ. Για την ακρίβεια, κοστίζει ακριβώς όσο και η προτεινόμενη λύση, με μια επιβάρυνση στη μνήμη. Να εξηγήσω: μπορούμε να χρησιμοποιήσουμε τους εξής δύο πίνακες:

    πίνακα Α με τα στοιχεία μας, σε οποιαδήπότε σειρά, π.χ. Α = [ 6 3 9 5 7 4 ] και
    πίνακα Ε, όπου Ε[δ] είναι ο δείκτης του επόμενου στοιχείου στη διάταξη, π.χ [ 5 6 0 1 3 4 ].
    Εδώ υποθέτουμε οτι το μεγαλύτερο στοιχείο έχει επόμενο το 0, ενώ επίσης θα χρειαστούμε μια μεταβλητή να μας δείχνει το μικρότερο στοιχείο, εδώ δmin = 2.

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

    Στη δομή αυτή λοιπόν δεν κοστίζει τίποτα να βρούμε το μικρότερο στοιχείο, άρα δεν κοστίζει τίποτα να ξέρουμε αν θα μπει μέσα το νέο στοιχείο. Αυτό που πρέπει να βρούμε είναι η διάταξη του νέου στοιχείου σε σχέση με τα υπάρχοντα. Γι' αυτό όμως χρειαζόμαστε απλά μια αναζήτηση, η οποία μάλιστα μόνο στη χειρότερη περίπτωση σαρώνει και τα Ν στοιχεία (δηλαδή κοστίζει το πολύ όσο η εύρεση του ελάχιστου).

    Αν θέλετε να γράψω και κώδικα.

    evry

    όχι άλλο κώδικα!!!! :laugh:

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

    evry

    συμφωνώ με τον Στάθη, το πρόβλημα κατά τη γνώμη μου είναι ότι υπάρχει ένα σκοτεινό σημείο σχετικά με το πότε δημιουργείται ο πίνακας, αλλά αυτό δεν θα έπρεπε να έχει νόημα σε μια αφηρημένη ψευδογλώσσα.
    Άσε που θα έπρεπε να ανοίξουμε και άλλο thread μόνο για αυτό

    Παράθεση από: sstergou στις 07 Απρ 2011, 12:01:58 ΜΜ
    Δεν  με πειράζει η στατικότητα των πινάκων αλλά ο ορισμός που το βιβλίο δίνει και ο τρόπος που χειρίζεται τους πίνακες στην ψευδογλώσσα και αυτό επειδή πιστεύω ότι υπάρχει ασυνέπεια.

    Τέλος πάντων, αυτό που ήθελα να πω είναι ότι το γεγονός ότι η απόδοση του αλγορίθμου είναι εκτός ύλης, περιορίζει πολύ τη σκέψη των μαθητών. Η νοοτροπία δηλαδή "βγάζει σωστό αποτέλεσμα άρα είναι σωστό" περιορίζει πολύ το μάθημα και μάλιστα σε κάποια σημεία το κάνει και λίγο αντιεπιστημονικό

    Το παράδειγμα της BogoSort είναι χαρακτηριστικό. Στο μάθημα της ΑΕΠΠ θα ήταν σωστό.
    What I cannot create I do not understand -- Richard Feynman
    http://evripides.mysch.gr

    lp

    #33
    Αν θέλουμε π.χ τους πρώτους 10

    1.  Διαβάζω τους πρώτους 10 αριθμούς σε έναν πίνακα Α[10]
    2.  Ταξινόμηση του Α
    3.  Διαβάζω επαναληπτικά κάθε επόμενο αριθμό μέχρι τον 0
    4.  Εισάγω κάθε νέο αριθμό στον πίνακα Α με τέτοιο τρόπο ώστε ο πίνακας να παραμείνει ταξινομημένος.
         4α. Εντοπίζω την θέση που πρέπει να μπει ο αριθμός
         4β. Ολισθαίνω τα στοιχεία του από τη θέση αυτή και μετά
         4γ. Εισάγω το νέο στοιχείο (Εφόσον βέβαια ανήκει στους 10 πρώτους) στη θέση που δημιούργησα.
    5. Τυπώνω τον πίνακα Α


    Ωραία ιδέα για πρόγραμμα
    Λέων Προκόπης
    2ο ΓΕΛ Ναυπλίου

    gthal

    και μια άλλη λύση
      Κ <- 0 ! το πλήθος των καταχωρημένων ααριθμών στον Μεγ
      ΓΡΑΨΕ 'Δώστε αριθμό :  '
      ΔΙΑΒΑΣΕ Α
      ΟΣΟ Α <> 0 ΕΠΑΝΑΛΑΒΕ
        i <- Κ              ! από το τελευταίο στοιχείο προς τα πάνω
        στοπ <- ΨΕΥΔΗΣ
        ΟΣΟ i > 0 ΚΑΙ ΟΧΙ στοπ ΕΠΑΝΑΛΑΒΕ
          ΑΝ Μεγ[i] >= Α ΤΟΤΕ        ! μέχρι να βρεθεί στοιχείο >= Α
            στοπ <- ΑΛΗΘΗΣ
          ΑΛΛΙΩΣ
            ΑΝ i < Ν ΤΟΤΕ
              Μεγ[i + 1] <- Μεγ[i]        ! σπρώχνω τα στοιχεία κάτω
            ΤΕΛΟΣ_ΑΝ
            i <- i - 1
          ΤΕΛΟΣ_ΑΝ
        ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
        ΑΝ i < Ν ΤΟΤΕ! αλλιώς ο Α είναι μικρότερος κι απ το Νστο στοιχ.
          Μεγ[i + 1] <- Α
        ΤΕΛΟΣ_ΑΝ
        ΑΝ Κ < Ν ΤΟΤΕ                ! προστέθηκε ένα ακόμα στοιχείο
          Κ <- Κ + 1
        ΤΕΛΟΣ_ΑΝ
        ΓΡΑΨΕ 'Δώστε αριθμό :  '
        ΔΙΑΒΑΣΕ Α
      ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
    

    Φιλικά,
    Γιώργος Θαλασσινός

    odysseas

    Παράθεση από: evry στις 07 Απρ 2011, 12:12:58 ΜΜ
    όχι άλλο κώδικα!!!! :laugh:

    Α, δεν παίζω! Οι υπόλοιποι έγραψαν κώδικα.

    tom

    Παράθεση από: evry στις 06 Απρ 2011, 11:12:47 ΜΜ

      Η πιο απλή λύση όμως είναι η παρακάτω

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

      Τόσο απλό!!!
      όταν λέμε Ν μεγαλύτεροι δεν θέλουμε να είναι και ταξινομημένοι, απλά να είναι οι καλύτεροι, τώρα σε ποια σειρά θα είναι δεν μας ενδιαφέρει ;)

      Δεν είναι απλό ?? και όμως δεν το σκέφτεται κανένας, όλοι πάνε στην ταξινόμηση

    Καλό! Δυστυχώς οι περισσότεροι σκέφτονται σύνθετα (και εγώ μέσα) και χάνουν την απλή και όμορφη λύση.
    Θωμάς Σκυλογιάννης

    - Ζήσε σα να' ταν να πεθάνεις αύριο. Μάθε σα να' ταν να ζεις για πάντα.
                                                                                         Μαχάτμα Γκάντι

    evry

    Ε τι να σε κάνουμε, για να μην παραπονιέσαι γράψε και εσύ κάτι
    Παράθεση από: odysseas στις 07 Απρ 2011, 02:45:40 ΜΜ
    Α, δεν παίζω! Οι υπόλοιποι έγραψαν κώδικα.

    @ggfiogos @gthal
    αυτό που προτείνετε είναι ουσιαστικά η ταξινόμηση με εισαγωγή, που ταιριάζει γάντι στο πρόβλημα ειδικά αν θέλουμε να κρατήσουμε τη σειρά με την οποία δόθηκαν οι αριθμοί. Απλά είναι κάτι που σου έρχεται αμέσως στο μυαλό όταν ακούς το πρόβλημα χωρίς να ξέρεις απαραίτητα τη συγκεκριμένη ταξινόμηση. Είναι ένα καλό παράδειγμα για να δείξουμε ότι κάποιοι αλγόριθμοι δεν είναι απαραίτητο να διδάσκονται σαν θεωρία, αλλά μπορεί να επινοηθούν για τις ανάγκες του προβλήματος

    Άσχετο , λέμε συνέχεια "Να γραφτεί πρόγραμμα"
    Και πολλοί μαθητές ρωτάνε να γράψω αλγόριθμο ή πρόγραμμα, λες και το πρόγραμμα δεν είναι αλγόριθμος ή ο αλγόριθμος σχεδιάζεται ώστε να μην εκτελεστεί σε μια μηχανή
    Θα προτιμούσα το  "Να γραφτεί αλγόριθμος σε ΓΛΩΣΣΑ" ???
    What I cannot create I do not understand -- Richard Feynman
    http://evripides.mysch.gr

    P.Tsiotakis

    Σχετικά με το θέμα, και χωρίς να θέλω να γίνω κουραστικός, θα ήθελα να παραθέσω άλλες 2 αράδες που διάβασα σε άλλο φόρουμ (μαθητών) (μπορείτε να διαβάσετε και την εξέλιξη της συζήτησης)

    Παράθεση
    ΠαράθεσηΤο μέγεθος του πίνακα πρέπει να είναι καθορισμένο στη ΓΛΩΣΣΑ. Δε μπορείς να χρησιμοποιείς πίνακα χωρίς να ξέρεις το μέγεθός του.
    Αν έχεις συγκεκριμένο πρόβλημα πες να σε βοηθήσουμε.
    Μπορεις.Στην γλωσσα υπαρχει ενα τρικακι με το οποιο μπορεις να λυσεις ασκησεις με αγωστο πληθος
    Δεσμευεις εναν μεγαλο πινακα και χρησιμοποιεις οσες θεσεις σε συμφερουν
    ΠΡΟΓΡΑΜΜΑ Π1
    Σταθερες
    Ν=10000000
    ΜΕΤΑΒΛΗΤΕΣ
    ΑΚΕΡΑΙΕΣ Α[Ν]
    Αυτο ηταν και το προβλημα περσυ στο 3 θεμα αν πρεπει να ζηταει προγραμμα η αλγοριθμο
    Φιλικα Χαρης

    gthal

    Ντόϊνκ !!!   :o
    Ορίστε ;;;
    Αλλά προσέξτε! Ειδικά στη ΓΛΩΣΣΑ υπάρχει αυτό το "τρικάκι" !   :D
    Α, ρε, είδες τι μπορεί να φτιάξεις άμα έχεις μελετήσει καλά τη ΓΛΩΣΣΑ ...
    Φιλικά,
    Γιώργος Θαλασσινός

    evry

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

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

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

    Αθανάσιος Πέρδος

    Παράθεση από: evry στις 14 Απρ 2011, 12:31:55 ΜΜ
    Ενδιαφέρον, νομίζω ότι αυτό το τρικ μάλλον λύνει όλες τις ασκήσεις με άγνωστο αριθμό επαναλήψεων.
    Για να δούμε μια άσκηση στην οποία μάλλον θα ήταν λίγο δύσκολο να εφαρμοστεί το παραπάνω

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

    Άντε αφού γνωρίζεις όλους τους πλανήτες του σύμπαντος το νόμπελ φυσικής είναι κοντά.
    Ελπίζω το Φυσικό Ιωαννίνων που πήρα πρώτα το πτυχίο Φυσικής να είναι σοβαρό τμήμα και κάτι να μάθαμε εκεί. Ή έχεις άποψη και για αυτό;

    odysseas

    Παράθεση από: aperdos στις 14 Απρ 2011, 12:45:05 ΜΜ
    Άντε αφού γνωρίζεις όλους τους πλανήτες του σύμπαντος το νόμπελ φυσικής είναι κοντά.
    Ελπίζω το Φυσικό Ιωαννίνων που πήρα πρώτα το πτυχίο Φυσικής να είναι σοβαρό τμήμα και κάτι να μάθαμε εκεί. Ή έχεις άποψη και για αυτό;

    Νομίζω οτι τα προσωπικά προβλήματα πρέπει να λύνονται με προσωπικά μηνύματα...

    evry

    Συγγνώμη, ποιο ακριβώς είναι το πρόβλημά σου? μπήκες εδώ για να γράψεις αυτό?
    μήπως έπρεπε πριν γραφτείς εδώ να διαβάσεις πρώτα τους κανόνες του φόρουμ?
    Προς τι η ειρωνία?
    Επίσης γιατί πρέπει να με ενδιαφέρει εμένα ή όποιον διαβάζει αυτό το thread ποια σχολή έχεις τελειώσει;  :-\

    Παράθεση από: aperdos στις 14 Απρ 2011, 12:45:05 ΜΜ
    Άντε αφού γνωρίζεις όλους τους πλανήτες του σύμπαντος το νόμπελ φυσικής είναι κοντά.
    Ελπίζω το Φυσικό Ιωαννίνων που πήρα πρώτα το πτυχίο Φυσικής να είναι σοβαρό τμήμα και κάτι να μάθαμε εκεί. Ή έχεις άποψη και για αυτό;
    What I cannot create I do not understand -- Richard Feynman
    http://evripides.mysch.gr

    Αθανάσιος Πέρδος

    Εσύ με ρώτησες χτες. Και μάλιστα την χαρακτήρισες και μη σοβαρή. Πράγματι το συγκεκριμένο thread δεν το ενδιαφέρει. Οι κανόνες όμως του forum να ισχύουν και για σένα. 

    Παράθεση από: evry στις 13 Απρ 2011, 01:49:36 ΜΜ
    !!!!!!!
    Με συγχωρείς αλλά αυτό που περιγράφεις δεν συμβαίνει σε κανένα σοβαρό τμήμα πληροφορικής (τουλάχιστον αυτά που ξέρω εγώ).
    Έχεις στο νου σου κάποιο συγκεκριμένο τμήμα πληροφορικής;
    Δηλαδή η άποψη που έχεις για τα τμήματα πληροφορικής είναι ότι μαθαίνουν στους φοιτητές τους συγκεκριμένους αλγορίθμους και απλά πως να τους εφαρμόζουν?
    Μου κάνει εντύπωση που έχεις αυτή την άποψη για τα τμήματα πληροφορικής. Στο δικό σου τμήμα πληροφορικής συνέβαινε κάτι τέτοιο?


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

    Αθανάσιος Πέρδος

    Παράθεση από: odysseas στις 14 Απρ 2011, 01:16:45 ΜΜ
    Νομίζω οτι τα προσωπικά προβλήματα πρέπει να λύνονται με προσωπικά μηνύματα...
    Έχεις απόλυτο δίκαιο. Δεν πρόκειται να συνεχίσω. 

    evry

    Δεν έχω γράψει κάτι τέτοιο, σε παρακαλώ να μην διαστρεβλώνεις αυτά που γράφω. Αν διαφωνείς με αυτό μπορείς πάντα να μου υποδείξεις το μήνυμα στο οποίο λέω κάτι τέτοιο. Μην παραθέσεις το ίδιο μήνυμα γιατί εκεί δεν αναφέρω κάτι τέτοιο, εκτός αν ερμηνεύεις αυτά που λέει ο συνομιλητής σου όπως σε συμφέρει.
    Παράθεση από: aperdos στις 14 Απρ 2011, 02:30:25 ΜΜ
    Και μάλιστα την χαρακτήρισες και μη σοβαρή.

    Χαιρετισμούς.
    Η συζήτηση αυτή δεν έχει κανένα νόημα
    What I cannot create I do not understand -- Richard Feynman
    http://evripides.mysch.gr

    Sergio

    beautiful.. άντε να "ζεσταινόμαστε" για καλόπιστη και επικοδομητική "συζήτηση" στις 23 του μήνα .. ανήμερα
    Απ τη μια η θητεία μου σε σχολικές αίθουσες: να φλυαρώ - να ελπίζω πως κατι κατάλαβαν - να εξερευνώ - να μαθαίνω. Απ την άλλη, σχεδόν συνομήλικη, η Διδακτική της Πληροφορικής: ερευνά διαδικασίες μάθησης - φλερτάρει με την Ψυχολογία - με καλεί να αφήσω το βλέμμα του Πληροφορικού και να δω με τα μάτια του δασκάλου. Τέκνα των 2, οι απόψεις μου.. (προσαρμοσμένο από τον πρόλογο του βιβλίου "Το μακρόν Φυσική προ του βραχέως διδάσκω" του Ανδρέα Κασσέτα)

    Πανάγος94

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

    evry

    σε ποιο πρόβλημα αναφέρεσαι?
    What I cannot create I do not understand -- Richard Feynman
    http://evripides.mysch.gr

    Πανάγος94


    evry

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

    Στην συγκεκριμένη περίπτωση διαβάζεις απεριόριστο πλήθος αριθμών (άρα δεν μπορούν να μπουν όλοι σε κάποια στατική δομή δεδομένων όπως είναι ο πίνακας) και θέλεις τους 50 μεγαλύτερους.
    Άρα σου χρειάζεται κάθε φορά να κρατάς 50 αριθμούς.
    Για κάθε αριθμό που διαβάζεις θα πρέπει να ανανεώνεις τον πίνακα έτσι ώστε να κρατά μόνο τους 50 μεγαλύτερους μέχρι εκείνη τη στιγμή και να "πετάει" τους άλλους.
    Θα πρέπει οποιαδήποτε στιγμή σου ζητηθεί να μπορείς να εμφανίσεις τους 50 μεγαλύτερους με τη σειρά όμως που τους διάβασες.

    Δεν υπάρχει έτοιμος αλγόριθμος (γνωστός εννοώ) που να λύνει αυτή την άσκηση. Θα πρέπει ο μαθητής να σχεδιάσει τον δικό του. Αυτό θα μπορούσε να θεωρηθεί ως ένα παράδειγμα σχεδίασης αλγορίθμων ή αλγοριθμικής όπως την χαρακτηρίζουν αρκετοί.
    What I cannot create I do not understand -- Richard Feynman
    http://evripides.mysch.gr

    Βασίλης Ταβουλτσίδης

    Υπάρχουν τρεις παράμετροι που κάνουν αυτό το πρόβλημα δύσκολο στη λύση του (εννοώ το Τυποποίηση vs Σκέψη).

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

    Η δεύτερη ο χρόνος που έχουμε στη διάθεσή μας και ο στόχος των μαθητών αλλά και ο δικός μας. Δυστυχώς κύριος στόχος δεν είναι η εκμάθηση του προγραμματισμού αλλά να γράψουν καλά στις εξετάσεις. Σαφώς και προσπαθούμε να πετύχουμε και τα δύο αλλά ας μη γελιόμαστε ο βαθμός είναι ο στόχος. Μέσα στον λίγο χρόνο που έχουμε στην διάθεσή μας κατά την διάρκεια της χρονιάς και με όλα τα υπόλοιπα μαθήματα να πιέζουν εξίσου τον μαθητή η τυποποίηση έρχεται ως σωσίβιο για να πιάσουμε συγκεκριμένα πράγματα που συνήθως πέφτουν με συγκεκριμένο τρόπο. Άλλωστε για να πετύχουμε ο μαθητής να λειτουργεί με τη σκέψη του και όχι με τυποποίηση θα έπρεπε να είχαμε πολύ περισσότερο χρόνο (π.χ. το μάθημα να απλωνόταν σε 2-3 χρονιές) ώστε να υλοποιήσουμε ολόκληρα projects σε πραγματικές συνθήκες όπου εκεί ο μαθητής θ' αναγκαστεί να σκεφτεί τι θα κάνει σε κάθε περίπτωση. Αλλά και οι ίδιες οι εξετάσεις θα μπορούσαν να βοηθήσουν αν δεν λειτουργούσαν στην τυποποιημένη λογική που λειτουργούν τώρα αλλά τα θέματα κάθε χρονιά ήταν εντελώς άσχετα μεταξύ τους. Σ' αυτή την περίπτωση θα μπορούσαμε να δικαιολογήσουμε μια εκπαίδευση που θα είχε ως κύριο στόχο την ενδυνάμωση της σκέψης ακριβώς γιατί αυτό θα ήταν το ζητούμενο στις εξετάσεις.

    Η τρίτη παράμετρος είναι ο ίδιος ο μαθητής. Όλοι οι άνθρωποι δεν έχουν κλίση σε όλα τα πράγματα. Κάποιος μπορεί να πάρει ένα πιάνο και να παίξει χωρίς καμία προσπάθεια και κάποιος άλλος να μην τα καταφέρει κι ας προσπαθεί μια ζωή. Το ίδιο συμβαίνει και με τον προγραμματισμό. Όλοι οι άνθρωποι δεν είναι δυνατό να έχουν κλίση σ' αυτό το αντικείμενο και ν' αναπτύξουν την σκέψη που είναι απαραίτητη, μέσα στον περιορισμένο χρόνο και στόχο που έχουμε. Έτσι και πάλι καταφύγιο είναι η τυποποίηση.

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