ΟΥΡΑ-ΣΤΟΙΒΑ

Ξεκίνησε από tkon, 04 Μαρ 2008, 01:23:12 ΜΜ

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

potato

Παράθεση από: evry στις 26 Μαΐου 2008, 12:58:06 ΠΜ

Οι πίνακες είναι στατική δομή δεδομένων? 


  Όταν λέμε σκέτο "πίνακες" εννοούμε τους στατικούς.
Be open source. Knowledge belongs to the world.

evry


Κατ'αρχήν δυστυχώς για κάποιους υπάρχουν και δυναμικοί πίνακες, αλλά δεν είναι αντιεπιστημονικό να λες στα παιδιά ότι
"παιδιά μέχρι τις 31 Μαϊου πρέπει να θεωρείτε σωστά αυτά αλλά μετά τις 31 θα δείτε ότι δεν ισχύουν πλήρως?"
Είναι αυτή σοβαρή στάση δασκάλου και επιστήμονα? Δηλαδή όλος ο κόσμος είναι οι πανελλήνιες και το σχολικό βιβλίο και ότι δεν γράφεται εκεί δεν υπάρχει? Ούτε η Βίβλος να ήτανε

Παράθεση από: papaluk στις 26 Μαΐου 2008, 12:17:56 ΜΜ
σελίδα 56, " οι στατικές υλοποιούνται με πίνακες..."
συμφωνώ με τον κύριο Τσιωτάκη
Στην τάξη λέω " σύμφωνα με σχολικό εφόσον στοιβα ουρά υλοποιούνται με πίνακες είναι στατικές. αν κάποια στιγμή δουλέψετε και ασχολειθείτε παραπάνω με προγραμματισμό θα διαπιστώσετε ότι αυτός ο ισχυρισμός δεν ισχύει πλήρως"  και όλοι είμαστε ευχαριστημένοι, αρκεί να μν τους λέω πατάτα :)
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

evry

Δηλαδή "σκέτο στοίβα" ==> εξαρτάται από την υλοποίηση
          "σκέτο πίνακας" ==> στατικός

Μήπως το παραπάνω αντιβαίνει στην απλή λογική?
Σε γλώσσες όπως η PHP, Perl, Python που χρησιμοποιούνται δυναμικοί πίνακες, πάλι σκέτο πίνακες τους λένε.
Που θέλω να καταλήξω. Μήπως κάποιοι ορισμοί που έχει το σχολικό βιβλίο δημιουργούν σύγχυση? Μήπως δεν είναι καλή ιδέα να τους υιοθετούμε σα να είναι το σχολικό βιβλίο καμιά βίβλος του προγραμματισμού? Είναι υπεύθυνη στάση να λέμε κάποια πράγματα στα παιδιά τα οποία θα ανακαλύψουν σε έναν μόλις χρόνο ότι δεν ισχύουν?

Παράθεση από: potato στις 26 Μαΐου 2008, 01:08:14 ΜΜ
  Όταν λέμε σκέτο "πίνακες" εννοούμε τους στατικούς.
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

pgrontas

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

Σαν αφηρημένες δομές όλες για μένα είναι δυναμικές. Η διαφορά είναι στην χρήση.Αν θυμάμαι καλά:
Πίνακας = δομή δεδομένων με Ο(1) προσπέλαση. Μπορεί να υλοποιηθεί σε συνεχόμενες θέσεις μνήμης με στατική κατανομή, ή με δυναμική κατανομή και ευρετήριο. 
Στοίβα και Ουρά=δομές δεδομένων με Ο(1) εισαγωγή και διαγραφή. 

Συμφωνώ με τον Ευριπίδη, ότι η σύγχυση στο συγκεκριμένο θέμα  οφείλεται στο ότι το σχολικό βιβλίο μπερδεύει την αφηρημένη δομή δεδομένων με την υλοποίηση.Στο συγκεκριμένο κεφάλαιο κατά την γνώμη μου  δεν θα έπρεπε να υπάρχει καθόλου αναφορά σε μνήμη, δυναμική κατανομή ή εφόσον υπάρχει θα έπρεπε να έχει γίνει σωστά. Συμφωνώ επίσης ότι δεν μου αρέσει να λέμε 'ψέματα' ή ότι θα τα μάθετε αργότερα.
Από την άλλη δεν ξέρω κατά πόσο μπορούμε να ανοίξουμε τέτοια συζήτηση λαμβάνοντας υπόψιν τους περιορισμούς του μαθήματος.
Programs must be written for people to read, and only incidentally for machines to execute - Harold Abelson

evry


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

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

potato

#20
Παράθεση από: evry στις 26 Μαΐου 2008, 03:00:20 ΜΜ
Δηλαδή "σκέτο στοίβα" ==> εξαρτάται από την υλοποίηση
          "σκέτο πίνακας" ==> στατικός

Μήπως το παραπάνω αντιβαίνει στην απλή λογική?
Σε γλώσσες όπως η PHP, Perl, Python που χρησιμοποιούνται δυναμικοί πίνακες, πάλι σκέτο πίνακες τους λένε.
Που θέλω να καταλήξω. Μήπως κάποιοι ορισμοί που έχει το σχολικό βιβλίο δημιουργούν σύγχυση? Μήπως δεν είναι καλή ιδέα να τους υιοθετούμε σα να είναι το σχολικό βιβλίο καμιά βίβλος του προγραμματισμού? Είναι υπεύθυνη στάση να λέμε κάποια πράγματα στα παιδιά τα οποία θα ανακαλύψουν σε έναν μόλις χρόνο ότι δεν ισχύουν?

Παράθεση από: potato στις 26 Μαΐου 2008, 01:08:14 ΜΜ
  Όταν λέμε σκέτο "πίνακες" εννοούμε τους στατικούς.

    Δεν είπε κανείς ότι δεν υπάρχουν δυναμικοί πίνακες, το θέμα είναι λεκτικό.. όταν λέμε πίνακα εννοούμε τον στατικό, αν θέλεις να αναφερθείς σε δυναμικό πίνακα βάζεις και το επίθετο μπροστά( δεν απαντώ βάση του βιβλίου, μιλώ γενικότερα για το τι ισχύει. Σημείωσε κιόλας το ότι επειδή κάποιοι προγραμματιστές high-level γλωσσών χρησιμοποιούν λάθος ορολογίες, επειδή δεν καταλαβαίνουν τι γίνεται στα core parts του συστήματος, δεν σημαίνει ότι είναι σωστό.)
    Σε αυτά απαντώ μόνο για χάριν της γνώσης. Οσαναφορά τους μαθητές, πιστεύω εξαρτάται σε ποιον το λες. Αν απευθύνεσαι σε μία κοπελίτσα που δεν καταλαβαίνει και πολλά και θέλει να μπει σε μία γυμναστικη ακαδημία δεν έχεις λόγο, αν τώρα απευθύνεστε σε υποψήφιο φοιτητή πληροφορικής τότε..

edit: Δεν πρέπει να σκέφτεσαι τι γίνεται σε μερικές γλώσσες μόνο, πόσο μάλλον όταν αυτές είναι υψηλού επιπέδου. Ειδικά όταν κάνεις λόγο για διαχείριση μνήμης. Καλύτερα να σκεφτείς σε C τότε.
Be open source. Knowledge belongs to the world.

evry

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

P.Tsiotakis

Πρέπει να σας ενημερώσω οτι για την περίσταση μας (ΑΕΠΠ), οι πίνακες είναι στατική δομή δεδομένων  :o

papaluk

Παράθεση από: evry στις 26 Μαΐου 2008, 02:56:24 ΜΜ

Κατ'αρχήν δυστυχώς για κάποιους υπάρχουν και δυναμικοί πίνακες, αλλά δεν είναι αντιεπιστημονικό να λες στα παιδιά ότι
"παιδιά μέχρι τις 31 Μαϊου πρέπει να θεωρείτε σωστά αυτά αλλά μετά τις 31 θα δείτε ότι δεν ισχύουν πλήρως?"
Είναι αυτή σοβαρή στάση δασκάλου και επιστήμονα? Δηλαδή όλος ο κόσμος είναι οι πανελλήνιες και το σχολικό βιβλίο και ότι δεν γράφεται εκεί δεν υπάρχει? Ούτε η Βίβλος να ήτανε

Παράθεση από: papaluk στις 26 Μαΐου 2008, 12:17:56 ΜΜ
σελίδα 56, " οι στατικές υλοποιούνται με πίνακες..."
συμφωνώ με τον κύριο Τσιωτάκη
Στην τάξη λέω " σύμφωνα με σχολικό εφόσον στοιβα ουρά υλοποιούνται με πίνακες είναι στατικές. αν κάποια στιγμή δουλέψετε και ασχολειθείτε παραπάνω με προγραμματισμό θα διαπιστώσετε ότι αυτός ο ισχυρισμός δεν ισχύει πλήρως"  και όλοι είμαστε ευχαριστημένοι, αρκεί να μν τους λέω πατάτα :)

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

potato

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

   Αναφορικά τώρα με το θέμα των πινάκων. Τονίζω και πάλι ότι όταν λέμε τη λέξη πίνακα στην καθημερινότητα εννοούμε τους στατικούς( και δικαιολογείται από τη συχνότητα χρήσης τους). Δεν λέω τι θα ήταν πιο σωστό να λέμε. Στην Perl όπως αναφέρθηκε ο κύριος evry έχουν μόνο δυναμικούς πίνακες, εκεί δεν τίθεται θέμα ονομασίας, το λένε απλά πίνακα! Δεν ισχύει παντού αυτό όμως. Στη C ας πούμε, από όπου και ήρθαν βασικές τέτοιες έννοιες, οι δυναμικοί πίνακες δεν είναι καν ANSI, και φυσικά υπάρχει διαχωρισμός της λέξης πίνακας(=στατικός) με την αναφορά σε δυναμικό. Οι παραπάνω λόγοι δικαιολογούν το γιατί προγραμματιστές γλωσσών υψηλού επιπέδου, και δεν τους ενδιαφέρει στην τελική, δεν γνωρίζουν όταν καλούν την new[] ας πούμε του τι γίνεται πραγματικά στο σύστημα και είναι και ο λόγος που δεν χρησιμοποιούν αυστηρά τις ορολογίες.

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

Φιλικά πάντα.
Be open source. Knowledge belongs to the world.

sstergou

#25
Οι πίνακες στην ψευδογλώσσα είναι στατικές δομές δεδομένων που το μέγεθός τους καθορίζεται κατά την διάρκεια της εκτέλεσης. Και όλοι είναι ευχαριστημένοι.  :P

Σελ. 56
1) με τον όρο στατική δομή εννοούμε ότι το ακριβές μέγεθος κατά τη στιγμή της μετάφρασης. Είναι σωστό;

Σελ. 64 - Σειριακή αναζήτηση Ν στοιχείων
Δεδομένα //n, table, key//...

Αυτό είναι σύμφωνο με τον παραπάνω ορισμό;

σελ. 60 Μια στοίβα μπορεί να υλοποιηθεί πολύ εύκολα με την βοήθεια ενός μονοδιάστατου πίνακα.... μπορεί να υλοποιηθεί και με άλλο τρόπο δηλαδή;

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

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

Παράθεση από: potato στις 26 Μαΐου 2008, 01:08:14 ΜΜ


  Όταν λέμε σκέτο "πίνακες" εννοούμε τους στατικούς.

Αυτό πάλι τι είναι; Όταν λέμε σκέτο πίνακες μπορεί να εννοούμε και τον μαυροπίνακα της τάξης ή τις μήτρες των μαθηματικών ή τους στατικούς πίνακες της ΓΛΩΣΣΑΣ ή τους δυναμικούς της perl ή τους στατικούς της ψευδογλώσσας που όμως έχουν δυναμική συμπεριφορά.

potato

Παράθεση από: sstergou στις 26 Μαΐου 2008, 08:05:01 ΜΜ

Παράθεση από: potato στις 26 Μαΐου 2008, 01:08:14 ΜΜ


  Όταν λέμε σκέτο "πίνακες" εννοούμε τους στατικούς.

Αυτό πάλι τι είναι; Όταν λέμε σκέτο πίνακες μπορεί να εννοούμε και τον μαυροπίνακα της τάξης ή τις μήτρες των μαθηματικών ή τους στατικούς πίνακες της ΓΛΩΣΣΑΣ ή τους δυναμικούς της perl ή τους στατικούς της ψευδογλώσσας που όμως έχουν δυναμική συμπεριφορά.

Ίσως αν διαβάζατε καλύτερα τα ποστ που έκανα να καταλαβαίνατε πως το εννοώ.
Be open source. Knowledge belongs to the world.