Επιχειρήματα μέσα από τα σχολικά βιβλία υπέρ της χρήσης πίνακα στο Γ

Ξεκίνησε από bagelis, 29 Μαΐου 2010, 01:20:01 ΜΜ

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

bagelis

Παράθεση από: ntzios kostas στις 31 Μαΐου 2010, 03:35:16 ΜΜ
Θα σας δώσω ένα πρόβλημα:
Να γίνει αλγόριθμος που να ταξινομεί τα στοιχεία μίας στοίβας Ν θέσεων με δεδομένα την κορυφή της top.
Απάντηση: Απωθώ τα στοιχεία της στοίβας σε έναν πίνακα, τα ταξινομώ και στη συνέχεια τα ωθώ παλι στη στοίβα.

Θα μπορούσα να ταξινομήσω τα στοιχεία της στοίβας κατευθείαν. Όχι βέβαια. Μα είναι αλγόριθμος. Ε και! Η δομή στοίβα έχει κάποιους κανόνες είτε είναι αλγόριθμος ή πρόγραμμα. Έτσι και ο Στατικός Πίνακας.

Παρεπιμπτώντος η στοίβα με βάση το σχολικό είναι στατική δομή... :) :D :D :D :D

batos

Παράθεση από: bagelis στις 31 Μαΐου 2010, 08:39:53 ΜΜ
Παρεπιμπτώντος η στοίβα με βάση το σχολικό είναι στατική δομή... :) :D :D :D :D

Βαγγέλη καλησπέρα.

Σχετικά με την στοίβα.....
Σε ποιο άλλο βιβλίο θεωρείται η στοίβα δυναμική;;

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

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

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

Τέλος, αν θεωρήσουμε όλες τις δομές δυναμικές, τότε ποιες είναι οι στατικές;






bagelis

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

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

lampros.mousselimis

Παραθέτω, ολοκληρωμένο τον συλλογισμό μου :

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

Κατά συνέπεια, αν θεωρούμε δυναμική παραχώρηση μνήμης, τις εντολές :

Αλγόριθμος Τάδε
Διάβασε Ν
Για i από 1 μέχρι Ν
   Διάβασε Α{i}
   Εμφάνισε Α{i}
Τέλος_επανάληψης
Τέλος Τάδε

δυστυχώς  θα πρέπει να θεωρήσουμε ώς δυναμική παραχώρηση μνήμης και το :

Αλγόριθμος Τάδε
Για i από 1 μέχρι 200
   Διάβασε Α{i}
   Εμφάνισε Α{i}
Τέλος_επανάληψης
Τέλος Τάδε

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



Επιπλέον :

Οι αλγόριθμοι, δεν εκτελούνται από τους υπολογιστές.

Τα ΠΡΟΓΡΑΜΜΑΤΑ, είναι αυτά που εκτελούνται από τους υπολογιστές. Γι'αυτό το λόγο και τα ΠΡΟΓΡΑΜΜΑΤΑ, είναι πιο αυστηρά διατυπωμένα.

Ο ορισμός του Αλγορίθμου αναφέρει :

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

Υπό αυτό το πρίσμα, όταν θέλω ο Αλγόριθμός μου να εκτελείται από έναν Η/Υ, θα πρέπει να προσέξω να τηρούνται όλα τα Αλγοριθμικά κριτήρια και επιπλέον, κάθε εντολή του Αλγορίθμου ή σχόλιο, να μετατρέπονται σε εκτελέσιμη οδηγία ή εκτελέσιμη εντολή του ΠΡΟΓΡΑΜΜΑΤΟΣ.

Όπως βέβαια καταλαβαίνετε το να γράψω :

Αλγόριθμος Τάδε
Δεδομένα//Α//
! Ο πίνακας, έχει δεσμεύσει 200 θέσεις μνήμης

Για i από 1 μέχρι 200
   Διάβασε Α{i}
   Εμφάνισε Α{i}
Τέλος_επανάληψης
Τέλος Τάδε

μεταφράζεται σε εντολές ΠΡΟΓΡΑΜΜΑΤΟΣ, ώς εξής :

ΠΡΟΓΡΑΜΜΑ Τάδε
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ : Α{200}, i
ΑΡΧΗ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 200
  ΔΙΑΒΑΣΕ Α{i}
  ΓΡΑΨΕ A{i}
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

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

Προφανώς και οι πίνακες όπως διδάσκονται στο Βιβλίο, είναι στατικές δομές.

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

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

batos

Παράθεση από: bagelis στις 01 Ιουν 2010, 12:06:04 ΠΜ
Κώστα έχει συζητηθεί παλαιότερα και το έχω συναντήσει και σε πολλά βιβλία (μου έρχονται δύο στο μυαλό: το βιβλίο στο πρώτο έτος πληροφορικής του ΕΑΠ και αυτό που είχα διδαχθεί στο πανεπιστήμιο, Δομές Δεδομένων, Μισυρλής).

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

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

Αν δεν συγκεκριμενοποιήσουμε, τι εννοούμε όταν αναφερόμαστε στα άπειρα αυτά πραγματάκια, θα έχουμε τα ίδια κάθε χρόνο.

Πρέπει να καταλήξουμε κάπου για το μέλλον του μαθήματος. Ένα νέο βιβλίο; Μια πραγματική γλώσσα (πχ JAVA);
Βαρέθηκα να ψάχνω όλο το βιβλίο μαθ., το τετρ.μαθ. και το βιβλίο καθ.,για να μαντέψω τι εννοεί κάθε φορά το βιβλίο.
Βαρέθηκα να ψάχνω σε βοηθητικά για να δω τι έχει καταλάβει ο συνάδελφος που το έγραψε.
Βαρέθηκα να βλέπω λάθη στο βιβλίο που δεν έχουν διορθωθεί εδώ και 10 χρόνια.
Βαρέθηκα να  διδάσκω το 6.2 σε 2 ώρες και να ευχαριστώ το θεό που δεν εξετάζομαι εγώ σε αυτά.
Βαρέθηκα να αδυνατώ να εξηγήσω στους μαθητές, γιατί διδάσκονται ψευδογλώσσα και ΓΛΩΣΣΑ.
Βαρέθηκα να βλέπω να βάζουν θέματα στις πανελλαδικές που είναι άγνωστο, ποια γνώση ή ικανότητα θέλουν να εξετάσουν.
Βαρέθηκα να βλέπω θέματα σπαζοκεφαλιές, όταν το βιβλίο δεν έχει τέτοια ή τα χαρακτηρίζει με **. 
Βαρέθηκα να πρέπει να τελειώσω τη ύλη μέχρι 25 Μαρτίου, όταν το διδακτικό έτος τελειώνει στα μέσα Μαΐου.

Vangelis

Παράθεση από: bagelis στις 31 Μαΐου 2010, 02:26:22 ΜΜ
Αν ρωτάς εμένα σαν Βαγγέλη τι θα διδάσκω του χρόνου στα παιδιά, θα κάνω ότι και φέτος:
Μην χρησιμοποιείται πίνακες αν δεν ξέρετε μέγεθος.

Και να σου πω και κάτι? Δεν νομίζω ότι οι περισσότεροι εδώ μέσα κάνουν κάτι άλλο.


Πες το βρε ανθρωπέ μου και μας έπρηξες με τόσα κατεβατά!
Μετα απο αυτό προτείνω να αλλάξεις το ποστ σε "Επιχειρήματα για τη μη χρήση πίνακα"

batos

Παράθεση από: lampros.mousselimis στις 01 Ιουν 2010, 12:17:36 ΠΜ
....

Όπως βέβαια καταλαβαίνετε το να γράψω :

Αλγόριθμος Τάδε
Δεδομένα//Α//
! Ο πίνακας, έχει δεσμεύσει 200 θέσεις μνήμης

Για i από 1 μέχρι 200
   Διάβασε Α{i}
   Εμφάνισε Α{i}
Τέλος_επανάληψης
Τέλος Τάδε

....

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

zaube

Σχετικά με το 3ο θεμα ΑΕΠΠ 2010:

Ορθή η χρηση πίνακα γιατί:

1) ΑΕΠΠ τετράδιο μαθητή σελ. 33 -"αραιός πίνακας"
  Το μέγεθος του αραιού πίνακα ορίζεται 3*n γιατί δεν ξέρουμε από πριν το πλήθος n των μη μηδενικών του δυσδιάστατου (το να υποθέσουμε ότι το μέγεθος του αραιού είναι γνωστό και ίσο με το μέγεθος του δυσδιάστατου*3 προκειμένου να εξασφαλίσουμε το μέγιστο δυνατό μέγεθος πίνακα, αναιρεί την όλη φιλοσοφία του αλγορίθμου που είναι "οικονομία θέσεων μνήμης"). Άρα το n (πλήθος μη μηδενικών) και κατ' επέκταση το 3*n (μέγεθος αραιού) είναι άγνωστο γιατί προφανώς ισούται με το πλήθος των μη μηδενικών στοιχείων του δυσδιάτατου*3 (κ' για να προλάβω όποιον πει 6*3, τα 6 μη μηδενικά δίνονται απλά σα παράδειγμα και σ'αυτήν την περίπτωση στα δεδομένα δε θα έγραφε n (που ορίζει εμμέσως το 3*n μέγεθος του πίνακα), θα 'γραφε απλά sparse (δεδομένος πίνακας μεγέθους 18))

2) ΑΕΠΠ Βιβλίο μαθητή σελ. 58 και θέμα Α4 Πανελληνίων 2010 - "Άθροισμα πίνακα"
Το μέγεθος του πίνακα ορίζεται mXn (άγνωστο δηλαδή). Τα m,n βρίσκονται στα Δεδομένα, δηλ. υποθέτουμε πως έχουν διαβαστεί (πιθανώς υπό την προϋπόθεση να 'ναι μικρότερα ή ίσα από κάποιους ακεραίους που θα ορίζουν το μέγεθος του πίνακα). Άλλωστε στην 1η μας επαφή με αυτού του είδους αναπαράσταση αλγορίθμων (όπου γίνεται χρήση εντολής Δεδομένα // //) στη σελ. 48 του σχολικού βιβλίου, τα m, n θεωρείται πως προέκυψαν από "είσοδο" (το αναφέρει παραπάνω στην ίδια σελίδα, στην επεξήγηση του αλγορίθμου σε φυσική γλώσσα). Άρα τα m,n έχουν υποτίθεται ήδη διαβαστεί, δηλ. έχουν εισαχθεί στον αλγόριθμο από εντολή εισόδου. Το ίδιο συμβαίνει και στο θέμα Γ 2010, όπου το πλήθος αγωνιζομένων (δηλ. το υποτιθέμενο μέγεθος του πίνακα) εισήχθη με εντολή εισόδου στον αλγόριθμο.

3) ΑΕΠΠ Βιβλίο μαθητή σελ. 64 - "Ταξινόμηση πίνακα"
Μέγεθος πίνακα n άγνωστο (ομοίως με παρατήρηση (2))

4) Θέματα ΑΕΠΠ Πανελληνίων 2005:

ΘΕΜΑ 3ο
Δίνεται πίνακας Α[Ν] ακέραιων και θετικών αριθμών, καθώς και πίνακας Β[Ν-1] πραγματικών και θετικών αριθμών.
Να γραφεί αλγόριθμος, ο οποίος να ελέγχει αν κάθε στοιχείο Β είναι ο μέσος όρος των στοιχείων Α και Α[i+1], δηλαδή αν Β = (Α + Α[i+1])/2.
Σε περίπτωση που ισχύει, τότε να εμφανίζεται το μήνυμα «Ο πίνακας Β είναι ο τρέχων μέσος του Α», διαφορετικά να εμφανίζεται το μήνυμα «Ο πίνακας Β δεν είναι ο τρέχων μέσος του Α».

Το παραπάνω είναι το 3ο θέμα των πανελληνίων του 2005. Το Ν είναι ή δεν είναι άγνωστο κύριοι; Άρα στη λύση έπρεπε το n να μπει στα Δεδομένα (θεωρώντας ότι έχει εισαχθεί με εντολή εισόδου); Το ότι στο θέμα Γ του 2010 το πλήθος των αγωνιζομένων εισάγεται με εντολή εισόδου από το μαθητή είναι ακριβώς το ίδιο με το να τοποθετηθεί στα Δεδομένα (όπου υποθέτουμε/κάνουμε την παραδοχή ότι εισήχθη ήδη με εντολή εισόδου).


gpapargi

Παράθεση από: gthal στις 31 Μαΐου 2010, 03:23:47 ΜΜ
Και το άλλο ερώτημα, αμέσως μετά από αυτό:
Θεωρείς ότι έχει νόημα τότε Γιώργο να τις έχουμε και τις δυο?
Και αν ναι, ποιο ?

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

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

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

Είναι αρκετό αυτό; Όχι.

Μέρος του αλγορίθμου δεν είναι μόνο οι ενέργειες, είναι και τα δεδομένα. Άρα πρέπει ο μαθητής να μάθει και για κάποιους περιορισμούς που υπάρχουν στα αληθινά περιβάλλοντα. Το σημαντικότερο από αυτά για μένα είναι το ζήτημα τω δομών δεδομένων. Οι δομές δεδομένων είναι συνυφασμένες με τον αλγόριθμο. Δε γίνεται να πεις ασχολούμαι μόνο με αλγορίθμους αλλά όχι με δομές. Θα δώσω 2 παραδείγματα για αυτό:
Πρώτον αν θέλουμε να βρούμε τα στοιχεία μιας λίστας που είναι πάνω από το μέσο όρο τους, πρέπει να προσπελάσεις κάθε στοιχείο πάνω από μια φορά,. Άρα θέλεις κάποια δομή δεδομένων που θα αποθηκεύσει τα στοιχεία και θα επιτρέπει το μαζικό χειρισμό τους. Θέλεις πίνακα.
Δεύτερον: Έστω ότι μιλάμε για διάσχιση λαβυρίνθου. Μια λύση είναι σε κάθε διασταύρωση να ακολουθείς ένα δρόμο και να αποθηκεύεις τους άλλους έτσι ώστε να βρεθείς σε αδιέξοδο να γυρίσεις πίσω και να πάρεις άλλο δρόμο. Εδώ θέλεις στοίβα. Ο συγκεκριμένος αλγόριθμος δε γίνεται να περπατήσει χωρίς στοίβα. Βλέπουμε λοιπόν ότι η δομή δεδομένων είναι κομμάτι του αλγορίθμου.

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

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

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

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

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

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

Με βάση το λόγο ύπαρξης του περιβάλλοντος θεωρώ αδιανόητο να δίνουμε λύσεις σε ψευδογλώσσα οι οποίες δεν μεταφέρονται στο προγραμματιστικό μας περιβάλλον. Θεωρώ λάθος επίσης να λέμε άλλο ΓΛΩΣΣΑ και άλλο ψευδογλώσσα διότι καταστρατηγούμε το βασικό σκοπό για τον οποίο υπάρχει το προγραμματιστικό περιβάλλον: Να φτιάξουμε ένα αλγόριθμο σε ψευδογλώσσα και στη συνέχεια να δούμε πως ο συγκεκριμένος αλγόριθμος και όχι κάποιος άλλος υλοποιείται στο προγραμματιστικό μας περιβάλλον.

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

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

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

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

Για να παρακάμψουμε το θέμα του μεγέθους των πινάκων στην ψευδογλώσσα χρησιμοποιούμε το Δεδομένα //χ,ψ// το οποίο σημαίνει ότι τα χ και ψ είναι γνωστά. Δε μας νοιάζει από πού είναι γνωστά γιατί αυτή τη στιγμή μας απασχολεί το κομμάτι της επεξεργασίας και όχι του αποθηκευτικού χώρου ή των δομών δεδομένων. Είναι όμως γνωστοί αριθμοί πχ 5, 10, 20 κλπ
Είναι γνωστά με την έννοια που ο φυσικός λέει «Σώμα εκτοξεύεται με γωνία φ από ύψος h και με αρχική ταχύτητα υ0. Να βρείτε το χρόνο t στον οποίο θα φτάσει στο έδαφος».  Τα φ, h και υ0 είναι γνωστά υπό την έννοια ότι ο άγνωστος t θα βρεθεί συναρτήσει αυτών. Δε δίνουμε τα νούμερά τους αλλά θεωρήστε ότι είναι γνωστά.

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



Σπύρος Δουκάκης

Θεωρώ χρήσιμη αυτή τη συζήτηση που γίνεται σε αυτό το θέμα.

Δεν θα γράψω για να πω τη θέση μου, αλλά για να αναφέρω το εξής:

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

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

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

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

sstergou

Καταρχήν χαίρομαι που γίνεται επιτέλους κουβέντα στο σωστό τόνο και χωρίς υπερβολές :)

Έχω να κάνω μερικές παρατηρήσεις.

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

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

Υπό αυτές τις προυποθέσεις μπορώ να συμμετάσχω σε οποιαδήποτε κουβέντα. Τώρα στο θέμα μας :

Παράθεση από: gpapargi στις 01 Ιουν 2010, 11:06:53 ΠΜ
Μέρος του αλγορίθμου δεν είναι μόνο οι ενέργειες, είναι και τα δεδομένα. Άρα πρέπει ο μαθητής να μάθει και για κάποιους περιορισμούς που υπάρχουν στα αληθινά περιβάλλοντα. Το σημαντικότερο από αυτά για μένα είναι το ζήτημα τω δομών δεδομένων. Οι δομές δεδομένων είναι συνυφασμένες με τον αλγόριθμο.

Σύμφωνοι.

Παράθεση από: gpapargi στις 01 Ιουν 2010, 11:06:53 ΠΜ
Το ερώτημα που τίθεται είναι: Είναι δυνατόν να δέχεσαι λύσεις που κάνουν χρήση αφηρημένων δομών δεδομέων; Μπορείς να μιλάς για άπειρους πίνακες; Έχει νόημα να μιλάς για πίνακες που δεν ξέρεις το μέγεθός τους; Όχι. Τα αληθινά περιβάλλοντα έχουν περιορισμούς και για να μην πετάμε στον αέρα θα πρέπει να δίνουμε λύσεις που είναι δυνατόν να υλοποιηθούν σε κάποιο περιβάλλον και θα σεβόμαστε τους περιορισμούς τους.

Γιώργο, αν στην ΓΛΩΣΣΑ μπορούσες να ορίσεις στατικό πίνακα μεγέθους Ν (όπως γίνεται σε ένα σωρό άλλα περιβάλλοντα) θα θεωρούσες τη λύση με πίνακες λάθος;

Ξαναλέω : η λύση του συγκεκριμένου προβλήματος δεν είναι αντίθετη με την στατικότητα των δομών και των πινάκων, είναι εφικτή και υλοποιήσιμη με στατικούς πίνακες. Απλά όχι στην ΓΛΩΣΣΑ. Το ίδιο συμβαίνει πάμπολλους αλγόριθμους από το βιβλίο "είναι υλοποιήσιμοι με στατικές δομές αλλά όχι στην ΓΛΩΣΣΑ". Γιατί λοιπόν οι αλγόριθμοι του βιβλίου είναι σωστοί ενώ αυτοί των μαθητών όχι;

Παράθεση από: gpapargi στις 01 Ιουν 2010, 11:06:53 ΠΜ
Έτσι είναι αναγκαίο να υπάρχει ένα προγραμματιστικό περιβάλλον στα πλαίσια του μαθήματος διαφορετικά οι μαθητές θα λύνουν ασκήσεις σε αφηρημένες δομές δεδομένων και θα νομίζουν ότι τις λύνουν σε πίνακες απείρων διαστάσεων ή δυναμικούς πίνακες ή δεν ξέρω εγώ τι άλλο.

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

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


Παράθεση από: gpapargi στις 01 Ιουν 2010, 11:06:53 ΠΜ
Θεωρώ ότι ο φίλος μου ο Στάθης (Στέργου), είναι λάθος που θεωρεί διαφορετικά πράγματα ΓΛΩΣΣΑ και ψευδογλώσσα. Θεωρεί ότι η ψευδογλώσσα κάνει χρήση δυναμικών πινάκων. Για μένα η ψευδογλώσσα χρησιμοποιεί απλά αφηρημένες δομές δεδομένων. Αυτά τα 2 είναι διαφορετικά. Στο ένα δε μας ενδιαφέρει η υλοποίηση του πίνακα (γιατί δεν είναι της παρούσας στιγμής) ενώ στο άλλο μας ενδιαφέρει, το υλοποιήσαμε και το κάναμε δυναμικά.

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

Η ψευδογλώσσα λοιπόν κάνει χρήση αφηρημένων δομών. Πως κρίνουμε λοιπόν την ορθότητα ενός αλγορίθμου;
Φαντάζομαι το κριτήριο είναι το εξής : Μπορεί ο αλγόριθμος να μετατραπεί σε πρόγραμμα με στατικές δομές;
Αν ναι είναι σωστός, αν όχι, υπάρχει λάθος.
Εδώ όμως έχω μια περίπτωση όπου ο αλγόριθμος μπορεί να μετατραπεί!

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

gpapargi

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

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

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

ΥΓ Αυτά που έγραψα για δυναμικούς πίνακες τα έγραψα με βάση μια παλιά τοποθέτηση σου. Αν θυμάμαι καλά πιστεύεις ότι η ψευδογλώσσα υποστηρίζει δυναμικούς πίνακες. Μπορεί να μη θυμάμαι καλά. 

sstergou

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

Με λίγα λόγια, δεν ξέρω για τους πίνακες αλλά οι απόψεις μου σίγουρα δεν είναι στατικές!
Aν πειστώ ότι κάτι έχω σκεφτεί στραβά το αλλάζω και ίσως να το έχω κάνει...

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

Το σημείο είναι το εξής :

ΠαράθεσηΣημείο αναφοράς είναι η ΓΛΩΣΣΑ όχι η C.

Εδώ είναι η διαφωνία μου,πιστεύω

α) Ότι η ΓΛΩΣΣΑ δεν είναι σημείο αναφοράς. Δεν ξέρω από που προκύπτει αυτό. Εννοείται ούτε η C.
β) Η ΓΛΩΣΣΑ δεν θα έπρεπε επίσης να είναι σημείο αναφοράς. Μπορώ να το αναλύσω αυτό. Κυρίως όμως συνοψίζεται στο ότι πιστεύω πολλά από τα χαρακτηριστικά της είναι παρωχημένα και άλλα αντιπαιδαγωγικά. Αν θες μπορούμε να ξεκινήσουμε άλλη κουβέντα σε αυτό το θέμα.
γ) Σημείο αναφοράς πρέπει να είναι η ΠΛΗΡΟΦΟΡΙΚΗ και οι σωστές παιδαγωγικές τεχνικές.

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

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

gpapargi

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

pgrontas

Στάθη ενώ συμφωνώ με αυτό
Παράθεση από: sstergou στις 01 Ιουν 2010, 02:38:28 ΜΜ
γ) Σημείο αναφοράς πρέπει να είναι η ΠΛΗΡΟΦΟΡΙΚΗ και οι σωστές παιδαγωγικές τεχνικές.
διαφωνώ με αυτό:
Παράθεση από: sstergou στις 01 Ιουν 2010, 02:38:28 ΜΜ
Δεν νομίζω λοιπόν ότι η λύση με πίνακα του συγκεκριμένου προβλήματος (γνωστός Ν αριθμός στοιχείων) έρχεται σε σύγκρουση με την πληροφορική.
Δεν θεωρείς ότι η αλγοριθμική σκέψη στο συγκεκριμένο πρόβλημα, προάγεται καλύτερα από την λύση χωρίς τον πίνακα;
Programs must be written for people to read, and only incidentally for machines to execute - Harold Abelson