Δημοσίευση θεμάτων και λύσεων

Ξεκίνησε από andreas_p, 16 Φεβ 2007, 10:32:38 ΠΜ

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

andreas_p

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

Το παραθέτω  :

Μ_Ε <- (ΜΟ1+ΜΟ2)/2

και αμέσως μετά

ΛΕΠΤΑ <- Μ_Ε  DIV  60
ΔΕΥΤ  <-  Μ_Ε   MOD 60

Και κάτι άλλο.

Ερώτημα  :

Τις  εντολές

αρχή <- 1
τέλος <-- 20
ΚΑΛΕΣΕ   Εισαγωγή(Α, αρχή,τέλος)  ! διαβάζω στοιχεία για κομμάτι πίνακα

όπου  Α πίνακας  100 θέσεων 

μπορώ να τις αντικαταστήσω με την 

ΚΑΛΕΣΕ   Εισαγωγή(Α,  1, 20)

ορμώμενος  από το Τετρ. μαθητή σελ 106 
ΠΡΟΓΡΑΜΜΑ   Πύργοι_του_Ανόι     ;;;;;;

   


Παρακαλώ τις θέσεις σας.

Ανδρέας

gpapargi

Στο πρώτο υποθέτω εννοείς ότι τα DIV και MOD ορίζονται για ακεραίους.

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

Για να είμαι σαφής, αυτό που με χαλάει δεν είναι ότι στην ώρα της κλήσης της διαδικασίας μπορείς να βάλεις σταθερά (πχ κλήση με 3 σαν παράμετρο) ή πρέπει να κάνεις ενδεχομένως κάποιο υπολογισμό (κλήση με 3+5 σαν παράμετρο). Αυτό που με χαλάει είναι ότι με βάση το μηχανισμό που φαίνεται να ισχύει (pass by value result) κατά την επιστροφή (τερματισμός διαδικασίας) το περιεχόμενο της τυπικής παραμέτρου αντιγράφεται πίσω στο περιεχόμενο της πραγματικής. Με αυτό το σκεπτικό θα πρέπει να υπάρχει κάποιος αποθηκευτικός χώρος πίσω από την πραγματική παράμετρο για να υποδεχτεί την τιμή που θέλει να επιστρέψει η τυπική και άρα η πραγματική παράμετρος θα πρέπει να είναι μεταβλητή. Βέβαια ο Άλκης είχε πει ότι μπορεί απλά να αποδεσμεύσει τον αποθηκευτικό χώρο και όλα λύνονται. Επειδή αυτό με αναγκάζει να δώσω εξηγήσεις που ξεφεύγουν από το μάθημα (αντί για κατασκευή αλγορίθμου μπαίνω σε τεχνικές λεπτομέρειες υλοποίησης) θα με βόλευε αυτή τη στιγμή να έχει ξεφύγει από τους συγγραφείς. 

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

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

alkisg

Παράθεση από: Σελίδα 213 του βιβλίου
(Παράγραφος 10.5.1 Ορισμός και κλήση συναρτήσεων)
Η λίστα παραμέτρων είναι μια λίστα μεταβλητών, των οποίων οι τιμές μεταβιβάζονται στη συνάρτηση κατά την κλήση.
Με βάση το παραπάνω, δεν επιτρέπεται να περάσουμε σταθερές ή εκφράσεις σε συνάρτηση.
Όμως:
Παράθεση από: Σελίδα 223 του βιβλίου
Κώδικας: ΓΛΩΣΣΑ
Παραγοντικό <- Ν*Παραγοντικό(Ν-1)

Με βάση αυτό το παράδειγμα, επιτρέπεται να περάσουμε έκφραση (και επομένως και σταθερά) σαν παράμετρο σε συνάρτηση.

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

Σε παλιότερη επικοινωνία με τους συγγραφείς για τη μεταβίβαση παραμέτρων, μου είχαν προτείνει να υιοθετήσω τον μηχανισμό της basic, δηλαδή αν χρειάζεται να περαστεί παράμετρος και να μην επιστραφεί η τιμή της, να μπαίνει η παράμετρος σε παρενθέσεις, ώστε να γίνεται έκφραση, π.χ.
ΚΑΛΕΣΕ ΜιαΔιαδικασία(χ, (ψ))
Στο παραπάνω ΔΕΝ θα επιστραφεί η τιμή στη μεταβλητή ψ.
Αυτόν τον μηχανισμό υλοποίησα τελικά στο Διερμηνευτή, και πιστεύω ότι είναι συμβατός με το σκεπτικό του βιβλίου. Περισσότερα στη βοήθεια του Διερμηνευτή:
https://alkisg.mysch.gr/help/MetabibasnParametrwv.htm

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

Υ.Γ. με την ευκαιρία: έχω ακούσει και ακρότητες του στυλ "απαγορεύεται να γράφουμε εκφράσεις, πρέπει πρώτα να τις βάζουμε σε μεταβλητές και μετά να χρησιμοποιούμε τη ΓΡΑΨΕ". Ας μην μας κάνει τόσο υπερβολικούς ο φόβος των πανελλαδικών...

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