Μέγεθος πίνακα στην ψευδογλώσσα

Ξεκίνησε από Michael, 15 Ιαν 2008, 09:36:37 ΜΜ

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

gpapargi

Μιχάλη αν βρεις χρόνο διάβασε τη συζήτηση
https://alkisg.mysch.gr/steki/index.php?topic=988.0
περί αλγοριθμικής ποιότητας. Στην τρίτη σελίδα, τέταρτο μήνυμα από το τέλος γράφω και για το "Κάθε απάντηση επιστημονικά τεκμηριωμένη είναι αποδεκτή".

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


pgrontas

#31
Θα ήθελα να επανέρθουμε λίγο σε αυτό το θέμα γιατί πραγματικά δεν έχω βγάλει ένα συμπέρασμα για το τι είναι σωστό και τι όχι.

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

Όσο όνομα<>"τέλος" επανάλαβε
    Διάβασε βαθμός
    μ<-μ+1
    Β[ μ ]<-βαθμός
    ΟΝ[ μ ]<-όνομα
    Διάβασε όνομα
  Τέλος_επανάληψης


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


ΑΛΓΟΡΙΘΜΟΣ ΑΝΑΖΗΤΗΣΗ
ΔΕΔΟΜΕΝΑ //Α, Ν, ΣΤΟΙΧΕΙΟ//
ΒΡΕΘΗΚΕ <- ΨΕΥΔΗΣ
Κ<-0
ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν
ΑΝ Α[Ι] = ΣΤΟΙΧΕΙΟ ΤΟΤΕ
Κ<-Κ+1
Β[Κ] <- Ι
ΒΡΕΘΗΚΕ <- ΑΛΗΘΗΣ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΠΟΤΕΛΕΣΜΑΤΑ //Β, ΒΡΕΘΗΚΕ//
ΤΕΛΟΣ ΑΝΑΖΗΤΗΣΗ


Η χρήση του πίνακα είναι ίδια με την διαφορά ότι στην δεύτερη περίπτωση ΠΡΙΝ την εκτέλεση του αλγορίθμου υπάρχει ένα άνω όριο (Ν) στα στοιχεία του πίνακα Β, ενώ στην πρώτη ΠΡΙΝ την εκτέλεση δεν υπάρχει τέτοιο όριο (στην δεύτερη περίπτωση χρειάζεται πίνακας επειδή ο αλγόριθμος επιστρέφει περισσότερα από ένα στοιχεία)

Τελικά το άνω όριο είναι που δικαιολογεί την χρήση πίνακα ή τελικά και τα δύο είναι λάθος ή και τα δύο είναι σωστά στην χρήση του πίνακα στην ψευδογλώσσα;

Update: Επισημαίνω ότι το άνω όριο είναι το worst case scenario και οδηγεί στην δέσμευση περισσότερων θέσεων μνήμης από ότι τελικά θα χρειαστούν
Programs must be written for people to read, and only incidentally for machines to execute - Harold Abelson

P.Tsiotakis

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

Επομένως, είναι σαφέστατα ΛΑΘΟΣ η επίλυση της άσκησης με τη χρήση πίνακα.

Στο θέμα 3, ενιαίων 2007 (το θέμα με τα γραμματόσημα - ένα βήμα πριν) στα βαθμολογικά κέντρα κόπηκαν τουλάχιστον 2 μόρια σε όσουν το επίλυσαν με πίνακες. Ίσως κάποιοι βαθμολογητές να έκοψαν και περισσότερα. Εγώ ΔΕΝ ήμουν βαθμολογητής.

Δε μιλάμε για βέλτιστη λύση αλλά για λανθασμένη επίλυση.

pgrontas

Παράθεση από: Τσιωτάκης Παναγιώτης στις 31 Ιαν 2008, 04:07:39 ΜΜ
Επομένως, είναι σαφέστατα ΛΑΘΟΣ η επίλυση της άσκησης με τη χρήση πίνακα.

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

sstergou

Συγνώμη, αλλά εγώ γιατί μπερδεύομαι; Ελπίζω να με διαφωτίσετε!

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

ΠαράθεσηΕίναι σαφές και αδιαπραγμάτευτο οτι και στην ψευδογλώσσα, οι πίνακες έχουν σταθερό μέγεθος, προκαθορισμένο κατά τη στιγμή του προγραμματισμού τους = της συγγραφής του κώδικα. Δεν καθορίζεται το μέγεθος κατά την εκτέλεση του αλγορίθμου. Κι ας μην αποτυπώνεται στον ψευδοκώδικα κάποιο νούμερο.

δεν θα έπρεπε αντί για Ν στους αλγορίθμους να υπάρχει αριθμός;

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

Υπάρχει ένα άνω όριο στο Ν ή όχι. Αν ναι ποιο είναι αυτό;

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

Αν ο αλγόριθμος δουλεύει με 10 και με 10000 στοιχεία, αυτό σημαίνει ότι στην πρώτη περίπτωση σπαταλάμε 9990 θέσεις μνήμης;;

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

Michael

ΠαράθεσηΤελικά το άνω όριο είναι που δικαιολογεί την χρήση πίνακα ή τελικά και τα δύο είναι λάθος ή και τα δύο είναι σωστά στην χρήση του πίνακα στην ψευδογλώσσα;

Update: Επισημαίνω ότι το άνω όριο είναι το worst case scenario και οδηγεί στην δέσμευση περισσότερων θέσεων μνήμης από ότι τελικά θα χρειαστούν

Όπως το καταλαβαίνω, πράγματι η ύπαρξη αυτού του Ν που λειτουργεί ως άνω όριο είναι που κάνει τη διαφορά. Το ότι ο δεύτερος αλγόριθμος δεσμεύει Ν θέσεις μνήμης για τον πίνακα Β (περισσότερες απ’ όσες ίσως χρειαστούν τελικά), μάλλον δεν μας ενδιαφέρει και τόσο από τη στιγμή που, υποθέτω, δεν υπάρχει αποδοτικότερος εντός ύλης τρόπος για τη λύση της άσκησης.

P.Tsiotakis

- Σελ. 76: "Η πρώτη δομή που εξετάστηκε είναι η δομή του πίνακα μια στατική δομή με μέγεθος που δε μεταβάλλεται χρονικά"

- Σελ. 57: "Δίδεται ο δισδιάστατος πίνακας table με m γραμμές και n στήλες. Να βρεθεί ..."

- Σελ. 68: "Στον αλγόριθμο αυτό ως είσοδος δίνεται η μεταβλητή table με n ακεραίους που πρέπει να ταξινομηθούν"

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

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

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

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

Η οποία λέει: "Σου δίνω έναν πίνακα με κάποιες θέσεις, περιέγραψε μου τα βήματα ώστε να βρεις αυτό κι αυτό.... Μη ασχολείσαι με το πόσες θέσεις έχει ο πίνακας. Έστω Ν (που φυσικά εισάγεται στον αλγόριθμο), αφού όσες θέσεις και να έχει, τα βήματα είναι τα ίδια. Να ασχοληθείς με την ουσία που δεν είναι άλλη από αυτή καθ' αυτή την επεξεργασία".

Γι' αυτό κατά τη γνώμη μου η ΓΛΩΣΣΑ είναι τελείως περιττή....

P.Tsiotakis

Πως μπορεί να είναι σωστό, το:

Όσο όνομα<>"τέλος" επανάλαβε
    Διάβασε βαθμός
    μ<-μ+1
    Β[ μ ]<-βαθμός
    ΟΝ[ μ ]<-όνομα
    Διάβασε όνομα
  Τέλος_επανάληψης

αφού δεν είναι γνωστό το πλήθος των στοιχείων που εισάγονται?

Εκτός κι αν στην εκφώνηση υπάρχει κάποια υπόνοια για το μέγεθος (μαθητές τάξης ...).
Εξαρτάται φυσικά και από την επεξεργασία που πρέπει να πραγματοποιηθεί στα στοιχεία αυτά...

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

sstergou

#38
Συμφωνώ με όσα λέτε κύριε Τσιωτάκη.

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

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

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

ΠαράθεσηΓι' αυτό κατά τη γνώμη μου η ΓΛΩΣΣΑ είναι τελείως περιττή...

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

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

alkisg

Εμένα θα μου επιτρέψετε να επιμείνω, κι ας με πάρετε με τις ντομάτες, ότι δεν πρέπει να διαβάζουμε το βιβλίο σαν να είναι η Βίβλος.

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

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

Από την άλλη, ένας πίνακας var A[1000] στη Javascript δεν είναι στατική δομή, ακόμα κι αν το μέγεθός του είναι γνωστό κατά τη μεταγλώττιση, αφού εσωτερικά υλοποιείται με δυναμικό hash table και δεν έχει τις ιδιότητες των στατικών δομών. Μπορώ ακριβώς στην επόμενη γραμμή να πω A[2000] = 1.


Εγώ θα ήθελα να συμφωνούσαμε τουλάχιστον στις παρακάτω προτάσεις:
1) Στην ψευδογλώσσα και στη ΓΛΩΣΣΑ οι πίνακες είναι στατικές δομές.
2) Το μέγεθος ενός πίνακα στη ΓΛΩΣΣΑ θα πρέπει να είναι γνωστό κατά τη μεταγλώττιση.
3) Το μέγεθος ενός πίνακα στην ψευδογλώσσα δε χρειάζεται να είναι γνωστό κατά τη μεταγλώττιση. Μπορεί να οριστεί κατά την εκτέλεση (δηλαδή μέσω της εντολής Δεδομένα table, N).
4) Το αν οι πίνακες είναι στατικές δομές ή όχι δεν εξαρτάται από το αν το μέγεθός τους είναι γνωστό κατά τη μεταγλώττιση.

Οπότε με το (3) να μην κόβουμε μονάδες σε λύσεις όπως είναι η αναζήτηση (δεδομένα table, N) και με το (4) να μη ζητήσουμε ποτέ σε εξετάσεις τη σχετική παράγραφο του βιβλίου.

P.Tsiotakis

γιατί μιλάμε για μεταγλώττιση στην ψευδογλώσσα;

Άλκη το βλέπεις απο τη σκοπια της υλοποιησης για την προσπάθεια που κάνετε για διερμηνευτή εκτέλεσης ψευδογλώσσας;

alkisg

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

Π.χ. σε αυτό
Παράθεση από: Τσιωτάκης Παναγιώτης στις 31 Ιαν 2008, 04:07:39 ΜΜ
Είναι σαφές και αδιαπραγμάτευτο οτι και στην ψευδογλώσσα, οι πίνακες έχουν σταθερό μέγεθος, προκαθορισμένο κατά τη στιγμή του προγραμματισμού τους = της συγγραφής του κώδικα.

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

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

pgrontas

Παράθεση από: Τσιωτάκης Παναγιώτης στις 31 Ιαν 2008, 09:30:27 ΜΜ
Πως μπορεί να είναι σωστό, το:

Όσο όνομα<>"τέλος" επανάλαβε
    Διάβασε βαθμός
    μ<-μ+1
    Β[ μ ]<-βαθμός
    ΟΝ[ μ ]<-όνομα
    Διάβασε όνομα
  Τέλος_επανάληψης

αφού δεν είναι γνωστό το πλήθος των στοιχείων που εισάγονται?

Εκτός κι αν στην εκφώνηση υπάρχει κάποια υπόνοια για το μέγεθος (μαθητές τάξης ...).
Εξαρτάται φυσικά και από την επεξεργασία που πρέπει να πραγματοποιηθεί στα στοιχεία αυτά...

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

Παράθεση από: Τσιωτάκης Παναγιώτης στις 01 Φεβ 2008, 12:57:19 ΜΜ
γιατί μιλάμε για μεταγλώττιση στην ψευδογλώσσα;
Νομίζω ότι μιλάμε για το αν η ψευδογλώσσα είναι σαφώς ορισμένη ή όχι. Αν κάτι είναι σαφώς ορισμένο μπορεί να εκτελεστεί από άνθρωπο χωρίς αμφιβολίες και κατά συνέπεια και από υπολογιστή (μέσω μεταγλώττισης) κόκ.


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

gpapargi

Παράθεση από: alkisg στις 01 Φεβ 2008, 09:33:15 ΠΜ
Εμένα θα μου επιτρέψετε να επιμείνω, κι ας με πάρετε με τις ντομάτες, ότι δεν πρέπει να διαβάζουμε το βιβλίο σαν να είναι η Βίβλος.

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

Θα γράψω πως έχω τα πράγματα στο κεφάλι μου, χωρίς αυτό να σημαίνει ότι είναι και σωστά.

Υπάρχουν 2 διαφορετικά πράγματα:
Το ένα είναι η αφηρημένη δομή δεδομένων που λέγεται πίνακας
Το άλλο είναι η υλοποίησή του πίνακα σε κάποιο προγραμματιστικό περιβάλλον

Στην αφηρημένη δομή δεδομένων δεν ασχολούμαστε με λεπτομέρειες υλοποίησης. Ασχολούμαστε μόνο με τις επιτρεπόμενες λειτουργίες της δομής.

Με βάση αυτά καταλαβαίνω τα εξής:

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

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

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

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

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

Και πιστεύω πως πρέπει να μη δεχόμαστε σαν σωστές λύσεις στις οποίες δουλεύουν καλά σε επίπεδο ΑΔΔ αλλά δεν έχουν ελπίδα να περάσουν σε κάποιο αληθινό περιβάλλον.

Το τελευταίο είναι λίγο λεπτό. Μπορεί κάποιος να το παρεξηγήσει και να πει ότι «στην ψευδογλώσσα θεωρώ ότι το μέγεθος του πίνακα είναι άπειρο γιατί δουλεύω σε ΑΔΔ».
Δεν είναι όμως έτσι. Σε ΑΔΔ απλά δεν ασχολούμαστε με τα μεγέθη αλλά μόνο με τις λειτουργίες των δομών. Η ψευδογλώσσα δεν είναι ολοκληρωμένο περιβάλλον ανάπτυξης αλγορίθμων. Έχει πληρότητα στους αλγορίθμους αλλά δεν έχει πληρότητα στο χειρισμό των δομών. Είναι καλό εργαλείο για την αλγοριθμική επίλυση προβλημάτων γιατί βοηθάει στο πάρει ο μαθητής τον τρόπο σκέψης. Αλλά όταν τελικά πάει ο μαθητής να υλοποιήσει κάτι σε μηχανή τότε αυτό θα είναι αναγκαστικά σε κάποιο αληθινό υπαρκτό περιβάλλον και θα υπόκειται σε περιορισμούς υλοποίησης. Όταν λύνεις ένα πρόβλημα δεν είναι μόνο ο αλγόριθμος στο παιχνίδι. Είναι υποχρεωτικά και οι δομές δεδομένων. Αν η ψευδογλώσσα κάνει χρήση των ΑΔΔ τότε είναι άριστη για ανάπτυξη αλγορίθμων αλλά δεν έχει πληρότητα στο χειρισμό των δομών. Για να μη χάσουμε αυτό το εργαλείο πρέπει σιωπηλά να εφαρμόζουμε τους περιορισμούς του περιβάλλοντος που είναι «δίπλα»… στην προκειμένη περίπτωση της ΓΛΩΣΣΑΣ. 

Για μένα λοιπόν πρέπει να επιβάλουμε τους περιορισμούς της ΓΛΩΣΣΑΣ και στην ψευδογλώσσα, τουλάχιστο για παιδαγωγικούς σκοπούς. Θα ήταν μη ρεαλιστικό αλλά και μη παιδαγωγικό το να λύνουμε ασκήσεις πάνω σε ΑΔΔ αδιαφορώντας για το αν εφαρμόζονται στο διπλανό περιβάλλον. Επίσης θα θεωρούσα λάθος το να κάνουμε χρήση στατικής δομής στη ΓΛΩΣΣΑ και δυναμικής στην ψευδογλώσσα.
Άλλο πράγμα η «ΑΔΔ πίνακας» και άλλο ο «δυναμικός πίνακας». Το πρώτο είναι αφηρημένο μοντέλο στο οποίο δε μας νοιάζει το μέγεθος του πίνακα αλλά μόνο οι λειτουργία. Το δεύτερο είναι μια υλοποίηση στην οποία το μέγεθος υπάρχει και είναι κάτι απόλυτα συγκεκριμένο κάθε στιγμή αλλά που μπορεί να μεταβάλλεται. Είναι διαφορετικά πράγματα που απλά τυχαίνει να μοιάζουν στο χειρισμό. 

Κάπως έτσι τα καταλαβαίνω τα πράγματα, χωρίς να είμαι απόλυτος βέβαια.   

sstergou

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

Αυτό όμως πιστεύω ότι δεν είναι το θέμα.

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

Είναι ο ορισμός των στατικών δομών σωστός από την άποψη της πληροφορικής;

προφανώς το


Κώδικας: Ψευδογλώσσα
Όσο όνομα<>"τέλος" επανάλαβε
    Διάβασε βαθμός
    μ<-μ+1
    Β[ μ ]<-βαθμός
    ΟΝ[ μ ]<-όνομα
    Διάβασε όνομα
  Τέλος_επανάληψης



είναι λάθος από παιδαγωγική σκοπιά γιατί δεν ξέρουμε πόσα στοιχεία θα εισαχθούν. Είναι όμως λάθος συντακτικό;

Πόσο πρέπει να κοπεί;

Το

Κώδικας: Ψευδογλώσσα
Διάβασε ν

Για ι από 1 μέχρι ν
  Διάβασε Α[ι]
Τέλος_επανάληψης

Κάνε_κάποια_επεξεργασία_χωρίς_να_αλλάξεις_το_μέγεθος_του_Α

Για ι από 1 μέχρι ν
   Εμφάνισε Α[ι]
Τέλος_επανάληψης


Όμως δεν βρίσκω λόγο να είναι λάθος.
Ποια είναι η γνώμη σου;