ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ

Ξεκίνησε από ΝΙΚΟΣ ΧΑΤΖΗΓΙΑΝΝΑΚΗΣ, 27 Φεβ 2004, 09:10:30 ΜΜ

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

ΝΙΚΟΣ ΧΑΤΖΗΓΙΑΝΝΑΚΗΣ

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

Πάντως στον διερμηνευτή της "Γλώσσας" του Αλκη υλοποιείται με αναφορά

tommy

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

alkisg

#2
Νίκο στον διερμηνευτή ΔΕΝ έχει γίνει υλοποίηση με αναφορά, αλλά με αντιγραφή. Πιστεύω ότι αυτόν τον μηχανισμό εννοεί η περιγραφή του σχολικού βιβλίου.
Ο μηχανισμός της αντιγραφής δεν υπάρχει ούτε στην basic ούτε στην pascal.

Εξηγώ σύντομα τις διαφορές των τριών αυτών μηχανισμών. Έστω ότι δηλώνουμε μια συνάρτηση
[glossa]Συνάρτηση Αύξησε(χ): Ακέραια[/glossa]η οποία αυξάνει το χ κατά 1 και ταυτόχρονα επιστρέφει την νέα τιμή του. Έστω ακόμα ότι την καλούμε από το κυρίως πρόγραμμα:
[glossa] α <-- Αύξησε(1)
β <-- 3
γ <-- Αύξησε(β)[/glossa]
Πέρασμα παραμέτρων με τιμή σημαίνει ότι κατά την Αύξησε(β) η τιμή του β δεν θα αλλάξει και θα παραμείνει 3.
Πέρασμα παραμέτρων με αναφορά σημαίνει ότι η Αύξησε(1) δεν είναι αποδεκτή, αφού μόνο οι μεταβλητές μπορούν να περαστούν με αναφορά και όχι οι σταθερές όπως είναι το 1.
Πέρασμα παραμέτρων με αντιγραφή σημαίνει ότι όλο το παραπάνω πρόγραμμα είναι αποδεκτό. Η τιμή της σταθεράς 1 θα αντιγραφεί στην τοπική μεταβλητή χ της συνάρτησης, το χ θα αυξηθεί αλλά φυσικά δεν θα μπορέσει να επιστρέψει την αλλαγμένη τιμή του στο κυρίως πρόγραμμα. Δηλαδή ενώ το α θα γίνει 2, η σταθερά 1 δεν θα γίνει 2 (εννοείται). Αν όμως περαστεί η τιμή της μεταβλητής β στην τοπική μεταβλητή χ με αναφορά, τότε και το β θα γίνει 4 και το γ θα γίνει επίσης 4.

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

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

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

Εννοείται βέβαια ότι αν η εκπαιδευτική κοινότητα καταλήξει σε κάποιο διαφορετικό συμπέρασμα (ή δοθεί διαφορετική διευκρίνηση από το Υπουργείο) θα τροποποιήσω κατάλληλα τον διερμηνευτή.

P.Tsiotakis

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

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

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

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

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

Οι απορίες έχουν έννοια στην υλοποίηση του διερμηνευτή ή της γλωσσομάθειας ή αντίστοιχου άλλου περιβάλλοντος για την ΓΛΩΣΣΑ

Με εκτίμηση,

ΧΑΤΖΗΓΙΑΝΝΑΚΗΣ ΝΙΚΟΣ

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

Αυτο που ειπα είναι οτι στο διερμηνευτή περνιουνται με αντιγραφή και στις δύο περιπτώσεις.

Εμείς τι διδάσκουμε ?

Μπορεί μια συνάρτηση να αλλάξει τις τιμές στις παραμέτρους τις ?

Ναι είναι ψιλά γράμματα αλλά δε μπορούμε να δίνουμε και αόριστες ερμηνίες

P.Tsiotakis

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

Αόριστη ερμηνεία είναι ό,τι δεν βασίζεται σε θεωρία ή παραδείγματα του βιβλίου

Με εκτίμηση,

tanius_nik

Χαιρετώ κι εγώ αυτήν την ψηφιακή κοινότητα,  ;) 8)
την οποία την βρίσκω πολύ σημαντική. Τώρα τελευταία ανακάλυψα αυτήν την κοινότητα και δηλώνω ενθουσιασμένη.
Να συστηθώ κι εγώ λοιπόν. Λέγομαι Τάνια και ζώ στην Λευκάδα.
Διδάσκω το μάθημα αυτό και το βρίσκω καταπληκτικό σαν αντικείμενο,
Όμως για το βιβλίο ας μην εκφραστώ καλύτερα  :furious3:

Βρίσκομαι στο κεφάλαιο 10 και ζητώ την γνώμη σας για τις ασκήσεις στο ΔΤ2
Για πχ το βιβλίο του καθηγητή και κάποιο άλλο βοήθημα που έχω την λύνει έτσι:
Α)
ΔΙΑΔΙΚΑΣΙΑ Τετράγωνο (Χ2)
ΠΡΑΓΜΑΤΙΚΕΣ Χ,Χ2
ΑΡΧΗ
ΔΙΑΒΑΣΕ Χ
Χ2<-Χ^2
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ Τετράγωνο

Προσωπικά πιστεύω ότι είναι λάθος. Όμως πώς να το διδάξεις στους μαθητές σου που πρέπει να γράψουν Πανελλήνιες??
Δηλαδή επειδή διαβάζει το χ , θεωρεί ότι γίνεται εισαγωγή δεδομένων και άρα είναι διαδικασία? Το ίδιο κάνει και στο Β&Γ
Εσείς τι λέτε για αυτό?

P.Tsiotakis

#7
Αγαπητή Τάνια,

Σου προτείνω να δημιουργήσεις λογαριασμό στο στέκι για καλύτερη οργάνωση

Σύμφωνα με το βιβλίο συνάρτηση είναι ο τύπος υποπρογράμματος που δέχεται τιμές και επιστρέφει μετά από την επεξεργασία τους ΜΙΑ τιμή. Ο,τιδήποτε άλλο είναι διαδικασία (τύπος υποπρογράμματος που κάνει ό,τι και ένα πρόγραμμα).
Άρα, δεν πρόκειται να δούμε ποτέ στο τμήμα εντολών μιας συνάρτησης τις εντολές ΔΙΑΒΑΣΕ και ΓΡΑΨΕ

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

Βέβαια το συγκεκεριμένο παράδειγμα ΜΕ ΑΛΛΗ ΕΚΦΩΝΗΣΗ θα έπρεπε να υλοποιείται με συνάρτηση την οποία παραθέτω στην ιστοσελίδα http://users.kor.sch.gr/ptsiotakis/aepp/aepp_ask/ch10/aepp_ask10_1.htm παράδειγμα 10.1.4.

Τάνια δεν ξέρω αν σε κάλυψα. Ή αν υπάρχει διαφορετική άποψη από τα 173 (!!!) εγγεγραμμένα μέλη του forum και λοιπούς μη εγγεγραμμένους αναγνώστες με χαρά αναμένω να την ακούσω

Με την γνωστή εκτίμηση,

Γιώργος

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


xaidi

ΣΥΜΦΩΝΩ ΑΠΟΛΥΤΑ ΜΕ ΤΟΥΣ ΠΑΡΑΠΑΝΩ ΑΛΛΑ ΝΟΜΙΖΩ ΠΩΣ ΤΟ ΚΟΜΜΑΤΙ
ΔΙΑΔΙΚΑΣΙΑ Τετράγωνο (Χ2)  ΕΙΝΑΙ ΛΑΘΟΣ ΘΑ ΕΠΡΕΠΕ ΝΑ ΕΙΝΑΙ

ΔΙΑΔΙΚΑΣΙΑ Τετράγωνο (Χ)

ΘΑ ΣΟΥ ΠΡΟΤΕΙΝΑ ΤΑΝΙΑ ΝΑ ΜΠΕΙΣ ΣΤΗΝ ΙΣΤΟΣΕΛΙΔΑ ΤΟΥ ΠΑΝΑΓΙΩΤΗ. ΕΧΕΙ ΠΟΛΥ ΕΝΔΙΑΦΕΡΟΝ ΥΛΙΚΟ.
Ευχαριστώ,

xaidi

ΔΙΑΔΙΚΑΣΙΑ Διαίρεσε_Μιγαδικούς (α, β, γ, δ, πραγμ_πηλίκο, μιγαδ_πηλίκο)

ΜΕΤΑΒΛΗΤΕΣ

    ΠΡΑΓΜΑΤΙΚΕΣ : α, β, γ, δ, πραγμ_πηλίκο, μιγαδ_πηλίκο

ΑΡΧΗ

    πραγμ_πηλίκο <- (α * γ + β * δ) / (γ^2 + δ^2)

    μιγαδ_πηλίκο <- (β * γ - α * δ) / (γ^2 + δ^2)

ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

ΤΟ ΠΑΡΑΠΑΝΩ ΕΙΝΑΙ ΕΝΑ ΛΥΜΕΝΟ ΚΟΜΜΑΤΙ ΑΣΚΗΣΗΣ ΑΠΟ ΤΗΝ ΣΕΛΙΔΑ ΣΟΥ . ΘΑ ΜΠΟΡΟΥΣΕΣ ΣΕ ΠΑΡΑΚΑΛΩ ΝΑ ΜΟΥ ΕΞΗΓΗΣΕΙΣ ΤΟ ΚΟΜΜΑΤΙ  "(α, β, γ, δ, πραγμ_πηλίκο, μιγαδ_πηλίκο)"?
Ευχαριστώ,

tanius76


Καταρχήν παιδιά, Γιώργο και Παναγιώτη, ευχαριστώ
για τις απαντήσεις σας.

Η αλήθεια είναι Παναγιώτη από το δικό σου site, είδα την άσκηση και προβληματίστικα..

Καταπληκτική η δουλεία σου και πού χρήσιμη για μένα!

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

P.Tsiotakis

Xaidi δεν έχει δίκιο, το σωστό είναι ΔΙΑΔΙΚΑΣΙΑ Τετράγωνο(Χ2) αφού αυτή η παράμετρος θα επιστραφεί όχι η Χ

Για την άλλη ερώτηση, αναφέρεσαι στην ιστοσελίδα http://users.kor.sch.gr/ptsiotakis/aepp/aepp_ask/tet_math/aepp_tm10.htm που προτείνω τις λύσεις για τις ασκήσεις του τετραδίου μαθητή και στην άσκηση ΔΕ3.

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

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

Με εκτίμηση,

xaidi

#13
ΤΟ ΠΡΟΒΛΗΜΑ ΜΟΥ ΕΙΝΑΙ ΤΟ ΕΞΗΣ: ΣΥΜΦΩΝΑ ΜΕ ΤΟ ΒΙΒΛΙΟ "Η ΛΙΣΤΑ ΠΑΡΑΜΕΤΡΩΝ ΕΙΝΑΙ ΜΙΑ ΛΙΣΤΑ ΜΕΤΑΒΛΗΤΩΝ ΤΩΝ ΟΠΟΙΩΝ ΟΙ ΤΙΜΕΣ.....ΤΗΣ ΔΙΑΔΙΚΑΣΙΑΣ. (ΣΕΛ 214)
ΣΤΗΝ ΠΑΡΑΠΑΝΩ ΔΙΑΔΙΚΑΣΙΑ ΔΗΛΩΝΕΙΣ ΟΛΕΣ ΤΙΣ ΜΕΤΑΒΛΗΤΕΣ. ΣΤΗΝ ΕΠΟΜΕΝΗ ΔΙΑΔΙΚΑΣΙΑ ΔΗΛΩΝΕΙΣ ΤΙΣ ΜΕΤΑΒΛΗΤΕΣ "ΕΙΣΟΔΟΥ". ΜΕ ΠΟΙΑ ΑΙΤΙΟΛΟΓΙΑ ΚΑΘΕ ΦΟΡΑ ΦΙΛΤΡΑΡΕΙΣ ΤΙ ΔΗΛΩΝΕΙΣ? ΑΝ ΚΑΤΑΛΑΒΑΙΝΩ ΚΑΛΑ ΣΥΜΦΩΝΑ ΜΕ ΤΟ ΒΙΒΛΙΟ ΤΙΣ ΔΗΛΩΝΟΥΜΕ ΟΛΕΣ.(?)
ΔΙΑΔΙΚΑΣΙΑ Υπολογισμός_ΦΠΑ (Τιμή, συντ_ΦΠΑ)

ΜΕΤΑΒΛΗΤΕΣ

     ΠΡΑΓΜΑΤΙΚΕΣ : Τιμή, συντ_ΦΠΑ, ποσό_ΦΠΑ, τελ_τιμή

ΑΡΧΗ

     Ποσό_ΦΠΑ <- Τιμή * συντ_ΦΠΑ

     τελ_τιμή <- Τιμή + Ποσό_ΦΠΑ

     ΓΡΑΨΕ 'Το ποσό ΦΠΑ είναι, Ποσό_ΦΠΑ, και η τελική τιμή του προϊόντος είναι', τελ_τιμή

ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ
ΙΣΩΣ ΕΓΩ ΔΕΝ "ΠΙΑΝΩ" ΚΑΤΙ.

Ευχαριστώ,

P.Tsiotakis

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

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

Δεν τις δηλώνουμε όλες. Δηλώνουμε μόνο αυτές που είναι εισόδου και αυτές που είναι εξόδου (αν υπάρχουν σε μια διαδικασία)

Υπάρχει κάτι άλλο;

Με εκτίμηση,