Αποστολέας Θέμα: Παράμετροι Έκφραση  (Αναγνώστηκε 3893 φορές)

Νίκη

  • Νέος
  • *
  • Μηνύματα: 4
Παράμετροι Έκφραση
« στις: 31 Ιαν 2015, 06:05:50 μμ »
Γνωρίζω πως έχει συζητηθεί στο παρελθόν, αλλά θα ήθελα μια πρόσφατη απάντηση στο ερώτημα: "Μπορεί η παράμετρος ή οι παράμετροι στην κλήση μιας διαδικασίας να είναι μια έκφραση;" Π.χ:
.........
α<-5
β<-10
Κάλεσε Δ1(α+1, β)
.........

Ευχαριστώ.

petrosp13

  • Ομάδα Νέου Λυκείου
  • *
  • Μηνύματα: 2160
Απ: Παράμετροι Έκφραση
« Απάντηση #1 στις: 31 Ιαν 2015, 08:29:32 μμ »
Όχι, γιατί δεν μπορεί να γίνει αντιγραφή των παραμέτρων από την διαδικασία προς τα πίσω
Παπαδόπουλος Πέτρος
Καθηγητής Πληροφορικής

evry

  • Γενικός διαχειριστής
  • *****
  • Μηνύματα: 3044
  • to Iterate is human to Recurse divine
Απ: Παράμετροι Έκφραση
« Απάντηση #2 στις: 31 Ιαν 2015, 08:48:45 μμ »
Δεν είναι ξεκάθαρο αν αυτό είναι σωστό ή λάθος.
Από την στιγμή που η ΓΛΩΣΣΑ δεν ορίζεται αυστηρά στο σχολικό βιβλίο μπορούμε να υποθέσουμε ότι θέλουμε. Για παράδειγμα το παρακάτω τρέχει μια χαρά στον διερμηνευτή της ΓΛΩΣΣΑΣ που αν δεν κάνω λάθος ανήκει στο πακέτο Αλγοριθμική που θεωρείται το εγκεκριμένο από το Υπουργείο λογισμικό του μαθήματος

Κώδικας: Pascal
  1. ΠΡΟΓΡΑΜΜΑ τεστ
  2. ΜΕΤΑΒΛΗΤΕΣ
  3.   ΑΚΕΡΑΙΕΣ: Α, Β, Δ
  4. ΑΡΧΗ
  5.   Α <- 10
  6.   Β <- 20
  7.   ΚΑΛΕΣΕ Γ(Α + 4, Β + 5)
  8.   ΓΡΑΨΕ Α, Β
  9.  
  10. ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
  11.  
  12. ΔΙΑΔΙΚΑΣΙΑ Γ(Χ, Υ)
  13. ΜΕΤΑΒΛΗΤΕΣ
  14.   ΑΚΕΡΑΙΕΣ: Χ, Υ
  15. ΑΡΧΗ
  16.   Χ <- 3*Χ
  17.   Υ <- 3*Υ
  18. ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ
  19.  

Το μόνο βέβαιο είναι ότι αποκλείεται να κόψει για αυτό βαθμολογητής στις εξετάσεις.
« Τελευταία τροποποίηση: 31 Ιαν 2015, 09:13:54 μμ από evry »
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

sstergou

  • Γενικός διαχειριστής
  • *****
  • Μηνύματα: 983
  • Program or be Programmed
    • pseudoglossa.gr
Απ: Παράμετροι Έκφραση
« Απάντηση #3 στις: 31 Ιαν 2015, 08:58:57 μμ »
Είναι και το γνωστό παράδειγμα με τους πύργους του Ανόι που αν θυμάμαι καλά χρησιμοποιεί και αυτό σταθερές.
Στάθης Στέργου - sstergouATgmailDOTcom - http://www.pseudoglossa.gr

alkisg

  • Τεχνικός / καθαρίστρια
  • *****
  • Μηνύματα: 4755
    • alkisg@im.sch.gr
    • Ο Διερμηνευτής της ΓΛΩΣΣΑΣ
Απ: Παράμετροι Έκφραση
« Απάντηση #4 στις: 31 Ιαν 2015, 09:08:32 μμ »
Και οι πύργοι του Ανόι και το αναδρομικό παραγοντικό χρησιμοποιούν σταθερές/εκφράσεις. Αφού υπάρχουν σχετικά παραδείγματα στο βιβλίο δεν νομίζω ότι τίθεται θέμα.
http://alkisg.mysch.gr/ΓΛΩΣΣΑ/Μεταβίβαση_παραμέτρων/

evry

  • Γενικός διαχειριστής
  • *****
  • Μηνύματα: 3044
  • to Iterate is human to Recurse divine
Απ: Παράμετροι Έκφραση
« Απάντηση #5 στις: 31 Ιαν 2015, 09:14:44 μμ »
κάνετε λάθος και οι δυο.
Αυτά είναι εκτός ύλης!!  :D
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

petrosp13

  • Ομάδα Νέου Λυκείου
  • *
  • Μηνύματα: 2160
Απ: Παράμετροι Έκφραση
« Απάντηση #6 στις: 31 Ιαν 2015, 09:28:41 μμ »
Άρα η αντιγραφή προς τα πίσω που διδάσκουμε πάει περίπατο;;;;;
Παπαδόπουλος Πέτρος
Καθηγητής Πληροφορικής

Γιάννης Αναγνωστάκης

  • Ομάδα Νέου Λυκείου
  • *
  • Μηνύματα: 795
Απ: Παράμετροι Έκφραση
« Απάντηση #7 στις: 31 Ιαν 2015, 09:53:07 μμ »
παιδιά δεν έχει νόημα να επιστρέφει τιμή σε έκφραση

Δηλαδή να γράψω
a<--5
b<--10
ΚΑΛΕΣΕ Δ1(a+b)


και η διαδικασία να έχει κάτι τετοιο ας πουμε

ΔΙΑΔΙΚΑΣΙΑ Δ1(χ)
..
χ<--10
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

μου λέτε δηλαδή ότι το a+b θα κάνει 10 μετά;; Και πόσο θα είναι το a και πόσο το b;;;


evry

  • Γενικός διαχειριστής
  • *****
  • Μηνύματα: 3044
  • to Iterate is human to Recurse divine
Απ: Παράμετροι Έκφραση
« Απάντηση #8 στις: 31 Ιαν 2015, 10:00:18 μμ »
τι εννοείς δεν έχει νόημα;
το παρακάτω παράδειγμα που παραθέτω είναι λάθος;

Κώδικας: Pascal
  1. ΠΡΟΓΡΑΜΜΑ ΠΑΡΑΜΕΤΡΟΙ
  2. ΜΕΤΑΒΛΗΤΕΣ
  3.   ΑΚΕΡΑΙΕΣ: Α, Β, Γ, Δ, Σ
  4. ΑΡΧΗ
  5.   Α <- 5 ,   Β <- 10 ,   Γ <- 15 ,   Δ <- 20
  6.   ΚΑΛΕΣΕ ΑΘΡΟΙΣΜΑ(Α + Β, Γ + Δ, Σ)
  7.   ΓΡΑΨΕ Σ
  8. ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
  9.  
  10. ΔΙΑΔΙΚΑΣΙΑ ΑΘΡΟΙΣΜΑ(Α, Β, Σ)
  11. ΜΕΤΑΒΛΗΤΕΣ
  12.   ΑΚΕΡΑΙΕΣ: Α, Β, Σ
  13. ΑΡΧΗ
  14.   Σ <- Α + Β
  15. ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ
  16.  

παιδιά δεν έχει νόημα να επιστρέφει τιμή σε έκφραση
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

Γιάννης Αναγνωστάκης

  • Ομάδα Νέου Λυκείου
  • *
  • Μηνύματα: 795
Απ: Παράμετροι Έκφραση
« Απάντηση #9 στις: 31 Ιαν 2015, 10:04:16 μμ »
τι εννοείς δεν έχει νόημα;
το παρακάτω παράδειγμα που παραθέτω είναι λάθος;

Κώδικας: Pascal
  1. ΠΡΟΓΡΑΜΜΑ ΠΑΡΑΜΕΤΡΟΙ
  2. ΜΕΤΑΒΛΗΤΕΣ
  3.   ΑΚΕΡΑΙΕΣ: Α, Β, Γ, Δ, Σ
  4. ΑΡΧΗ
  5.   Α <- 5 ,   Β <- 10 ,   Γ <- 15 ,   Δ <- 20
  6.   ΚΑΛΕΣΕ ΑΘΡΟΙΣΜΑ(Α + Β, Γ + Δ, Σ)
  7.   ΓΡΑΨΕ Σ
  8. ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
  9.  
  10. ΔΙΑΔΙΚΑΣΙΑ ΑΘΡΟΙΣΜΑ(Α, Β, Σ)
  11. ΜΕΤΑΒΛΗΤΕΣ
  12.   ΑΚΕΡΑΙΕΣ: Α, Β, Σ
  13. ΑΡΧΗ
  14.   Σ <- Α + Β
  15. ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ
  16.  

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

evry

  • Γενικός διαχειριστής
  • *****
  • Μηνύματα: 3044
  • to Iterate is human to Recurse divine
Απ: Παράμετροι Έκφραση
« Απάντηση #10 στις: 31 Ιαν 2015, 10:09:22 μμ »
Δεν ξέρω αν το κατάλαβες, αλλά το δικό σου παράδειγμα επέκτεινα.
Θεωρείς ότι μόνο στη Σ αντιγράφεται πίσω τιμή και όχι στις  παραμέτρους Α και Β?

η Σ δεν έχει αρχική τιμή για αυτό θεωρητικά δεν υπάρχει πρόβλημα..Λύσε μου τώρα και το δικό μου παράδειγμα
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

Γιάννης Αναγνωστάκης

  • Ομάδα Νέου Λυκείου
  • *
  • Μηνύματα: 795
Απ: Παράμετροι Έκφραση
« Απάντηση #11 στις: 31 Ιαν 2015, 10:14:45 μμ »
Δεν ξέρω αν το κατάλαβες, αλλά το δικό σου παράδειγμα επέκτεινα.
Θεωρείς ότι μόνο στη Σ αντιγράφεται πίσω τιμή και όχι στις  παραμέτρους Α και Β?


Άρα συμφωνούμε....

evry

  • Γενικός διαχειριστής
  • *****
  • Μηνύματα: 3044
  • to Iterate is human to Recurse divine
Απ: Παράμετροι Έκφραση
« Απάντηση #12 στις: 31 Ιαν 2015, 10:18:22 μμ »
ναι συμφωνούμε σε δυο πράγματα:
1) όλες οι παραμέτροι αντιγράφονται πίσω
2) μπορείς να περάσεις σταθερές και εκφράσεις ως παραμέτρους σε διαδικασία από τη στιγμή που υπάρχει παράδειγμα στο βιβλίο
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

Γιάννης Αναγνωστάκης

  • Ομάδα Νέου Λυκείου
  • *
  • Μηνύματα: 795
Απ: Παράμετροι Έκφραση
« Απάντηση #13 στις: 31 Ιαν 2015, 10:20:05 μμ »
ναι συμφωνούμε σε δυο πράγματα:
1) όλες οι παραμέτροι αντιγράφονται πίσω
2) μπορείς να περάσεις σταθερές και εκφράσεις ως παραμέτρους σε διαδικασία από τη στιγμή που υπάρχει παράδειγμα στο βιβλίο

Στο δευτερο διαφωνώ, με βάση το παράδειγμα που σου έφερα πιο πάνω

evry

  • Γενικός διαχειριστής
  • *****
  • Μηνύματα: 3044
  • to Iterate is human to Recurse divine
Απ: Παράμετροι Έκφραση
« Απάντηση #14 στις: 31 Ιαν 2015, 10:39:23 μμ »
Το παράδειγμα που αναφέρεις δεν αποδεικνύει τίποτα, γιατί δεν ξέρουμε πως υλοποιείται ο μηχανισμός μεταβίβασης παραμέτρων στην ΓΛΩΣΣΑ.
Για παράδειγμα μπορείς να πεις τι θα εμφανίσει το παρακάτω πρόγραμμα;
Κώδικας: Pascal
  1. ΠΡΟΓΡΑΜΜΑ ΠΑΡΑΜΕΤΡΟΙ
  2. ΜΕΤΑΒΛΗΤΕΣ
  3.   ΑΚΕΡΑΙΕΣ:  Σ
  4. ΑΡΧΗ
  5.   Σ <- 1
  6.   ΚΑΛΕΣΕ ΛΑΘΟΣ(Σ, Σ, Σ)
  7.   ΓΡΑΨΕ Σ
  8. ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
  9.  
  10. ΔΙΑΔΙΚΑΣΙΑ ΛΑΘΟΣ(Α, Β, Σ)
  11. ΜΕΤΑΒΛΗΤΕΣ
  12.   ΑΚΕΡΑΙΕΣ: Α, Β, Σ
  13. ΑΡΧΗ
  14.   Σ <- Α + Β
  15.   Β <- Α
  16.   Α <- 0
  17. ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ
  18.  

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

Γιάννης Αναγνωστάκης

  • Ομάδα Νέου Λυκείου
  • *
  • Μηνύματα: 795
Απ: Παράμετροι Έκφραση
« Απάντηση #15 στις: 31 Ιαν 2015, 11:07:46 μμ »
Το παράδειγμα που αναφέρεις δεν αποδεικνύει τίποτα, γιατί δεν ξέρουμε πως υλοποιείται ο μηχανισμός μεταβίβασης παραμέτρων στην ΓΛΩΣΣΑ.
Για παράδειγμα μπορείς να πεις τι θα εμφανίσει το παρακάτω πρόγραμμα;
Κώδικας: Pascal
  1. ΠΡΟΓΡΑΜΜΑ ΠΑΡΑΜΕΤΡΟΙ
  2. ΜΕΤΑΒΛΗΤΕΣ
  3.   ΑΚΕΡΑΙΕΣ:  Σ
  4. ΑΡΧΗ
  5.   Σ <- 1
  6.   ΚΑΛΕΣΕ ΛΑΘΟΣ(Σ, Σ, Σ)
  7.   ΓΡΑΨΕ Σ
  8. ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
  9.  
  10. ΔΙΑΔΙΚΑΣΙΑ ΛΑΘΟΣ(Α, Β, Σ)
  11. ΜΕΤΑΒΛΗΤΕΣ
  12.   ΑΚΕΡΑΙΕΣ: Α, Β, Σ
  13. ΑΡΧΗ
  14.   Σ <- Α + Β
  15.   Β <- Α
  16.   Α <- 0
  17. ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ
  18.  

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

Το αντιλαμβάνομαι διαφορετικά από σένα

Θεωρώ ότι το διδακτικό πακέτο, όπως και σε άλλα θέματα, έχει αφήσει φοβερές ασάφειες

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

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

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


evry

  • Γενικός διαχειριστής
  • *****
  • Μηνύματα: 3044
  • to Iterate is human to Recurse divine
Απ: Παράμετροι Έκφραση
« Απάντηση #16 στις: 31 Ιαν 2015, 11:17:46 μμ »
Ο μηχανισμός που αναφέρει το βιβλίο δεν είναι η κλήση με αναφορά.
Στην κλήση με αναφορά δεν έχεις αντίγραφα, εδώ έχεις.
Ο τρόπος του βιβλίου αν θες να το ψάξεις στην βιβλιογραφία είναι γνωστός σαν copy-restore ή value-result. καμία σχέση με call by reference
Συναντιέται σε κάποιες εκδόσεις της Fortran και στην Ada, μόνο που εκεί ορίζονται οι παράμετροι σαν in/out ενώ στο βιβλίο μας όχι.

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

Το θέμα έχει ξανασυζητηθεί, δες εδώ
http://alkisg.mysch.gr/steki/index.php?topic=2622.msg22700#msg22700
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

Γιάννης Αναγνωστάκης

  • Ομάδα Νέου Λυκείου
  • *
  • Μηνύματα: 795
Απ: Παράμετροι Έκφραση
« Απάντηση #17 στις: 31 Ιαν 2015, 11:44:49 μμ »
Ο μηχανισμός που αναφέρει το βιβλίο δεν είναι η κλήση με αναφορά.
Στην κλήση με αναφορά δεν έχεις αντίγραφα, εδώ έχεις.
Ο τρόπος του βιβλίου αν θες να το ψάξεις στην βιβλιογραφία είναι γνωστός σαν copy-restore ή value-result. καμία σχέση με call by reference
Συναντιέται σε κάποιες εκδόσεις της Fortran και στην Ada, μόνο που εκεί ορίζονται οι παράμετροι σαν in/out ενώ στο βιβλίο μας όχι.

Το θέμα έχει ξανασυζητηθεί, δες εδώ
http://alkisg.mysch.gr/steki/index.php?topic=2622.msg22700#msg22700

Έγραψα ο "αντίστοιχος" , δεν είπα ότι είναι ο ίδιος, σε σχέση με την συνάρτηση

Σε κάθε περίπτωση, σέβομαι αλλά διαφωνώ με την άποψη σου...


petrosp13

  • Ομάδα Νέου Λυκείου
  • *
  • Μηνύματα: 2160
Απ: Παράμετροι Έκφραση
« Απάντηση #18 στις: 31 Ιαν 2015, 11:54:35 μμ »
Εγώ πάλι δεν κατάλαβα
Οι διαδικασίες αντιγράφουν όλες τις παραμέτρους πίσω, ανεξάρτητα από το αν είναι δεδομένα ή αποτελέσματα
Έτσι νόμιζα δηλαδή

ΚΑΛΕΣΕ Χημεία(α+1)

ΔΙΑΔΙΚΑΣΙΑ Χημεία(χ)

Όταν η διαδικασία τελειώνει, πού αντιγράφεται η τιμή της παραμέτρου χ;

Εφόσον δεν υπάρχει τρόπος δήλωσης (όπως στην pascal) για το ποιες παράμετροι θα πρέπει να αντιγραφούν πίσω, είναι νομίζω λάθος να θεωρούμε δεκτή την κλήση διαδικασιών με παραμέτρους είτε σταθερές, είτε εκφράσεις
« Τελευταία τροποποίηση: 01 Φεβ 2015, 01:39:47 πμ από petrosp13 »
Παπαδόπουλος Πέτρος
Καθηγητής Πληροφορικής

alkisg

  • Τεχνικός / καθαρίστρια
  • *****
  • Μηνύματα: 4755
    • alkisg@im.sch.gr
    • Ο Διερμηνευτής της ΓΛΩΣΣΑΣ
Απ: Παράμετροι Έκφραση
« Απάντηση #19 στις: 01 Φεβ 2015, 08:33:20 πμ »
Οι διαδικασίες αντιγράφουν όλες τις παραμέτρους πίσω, ανεξάρτητα από το αν είναι δεδομένα ή αποτελέσματα

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

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

petrosp13

  • Ομάδα Νέου Λυκείου
  • *
  • Μηνύματα: 2160
Απ: Παράμετροι Έκφραση
« Απάντηση #20 στις: 01 Φεβ 2015, 12:00:21 μμ »
Πάλι θα μπερδεύουμε τους μαθητές; το "αν μπορούν" πιστεύετε ότι θα γίνει εύκολα κατανοητό από το σύνολο των μαθητών που αντιμετωπίζει γενικότερα προβλήματα στα υποπρογράμματα; η εντύπωση που είχα ηταν ότι οι συναρτήσεις υπάρχουν λόγω της μεγάλης ποικιλίας του τρόπου κλήσης τους. Ποιο το νόημα τότε αφού περιορίζουμε σχεδόν τα μισά πλεονεκτήματα τους;

Να υποθέσω ότι είναι δεκτό και το παρακάτω;

ΚΑΛΕΣΕ διαμάχη(πληροφορική(Α,Β) ,χημεία(Γ,Δ))
Παπαδόπουλος Πέτρος
Καθηγητής Πληροφορικής

sstergou

  • Γενικός διαχειριστής
  • *****
  • Μηνύματα: 983
  • Program or be Programmed
    • pseudoglossa.gr
Απ: Παράμετροι Έκφραση
« Απάντηση #21 στις: 01 Φεβ 2015, 12:10:16 μμ »
Δεν μπορούμε όμως να κρίνουμε αν κάτι είναι σωστό ή όχι με βάση το αν το καταλαβαίνουν οι μαθητές.

Νομίζω το παράδειγμα που δίνεις είναι σωστό.

Δεν κατάλαβα όμως, σε ποια πλεονεκτήματα αναφέρεσαι και πως αυτά περιορίζονται;
Στάθης Στέργου - sstergouATgmailDOTcom - http://www.pseudoglossa.gr

petrosp13

  • Ομάδα Νέου Λυκείου
  • *
  • Μηνύματα: 2160
Απ: Παράμετροι Έκφραση
« Απάντηση #22 στις: 01 Φεβ 2015, 12:13:35 μμ »
Εννοώ ότι μόνο μια συνάρτηση θα μπορούσε να καλείται με παραμέτρους που να είναι εκφράσεις ή σταθερές (ακόμα και άλλες συναρτήσεις), λόγω του ότι δεν αντιγράφονταν οι παράμετροι πίσω
Αν αυτό γίνεται και με διαδικασίες, γιατί να γράψω συνάρτηση πέρα του ότι μπορώ να την καλέσω πχ σε μια έκφραση;

ΥΓ. Το αναφέρω απλά γιατί πολλά παιδιά, όταν μαθαίνουν ότι ένα υποπρόγραμμα μπορεί να υλοποιηθεί πάντα με διαδικασία, διαγράφουν τις συναρτήσεις από το μυαλό τους. Δεν πρέπει να υπάρχει ισχυρός αντίλογος;
Παπαδόπουλος Πέτρος
Καθηγητής Πληροφορικής

sstergou

  • Γενικός διαχειριστής
  • *****
  • Μηνύματα: 983
  • Program or be Programmed
    • pseudoglossa.gr
Απ: Παράμετροι Έκφραση
« Απάντηση #23 στις: 01 Φεβ 2015, 12:44:32 μμ »
Σϊγουρα έτσι είναι όσον αφορά τους μαθητές.

Κάποια από τα παραδείγματα που χρησιμοποιώ εγώ είναι τα εξής:
1) Αφού όλες οι επαναλήψεις μπορούν να γίνουν με όσο, γιατί χρειαζόμαστε τις υπόλοιπες επαναληπτικές δομές; Φυσικά για λόγους ευκολίας.
2) Να γραφεί υποπρόγραμμα που να βρίσκει το μέγιστο τριών αριθμών χρησιμοποιώντας ένα ήδη υπάρχον (το οποίο πρέπει να υλοποιηθεί) που βρίσκει το μέγιστο δύο αριθμών
Κώδικας: [Επιλογή]
Συνάρτηση μεγ3(α, β , γ): Πραγματική
...
    μεγ3 <- μεγ2(μεγ2(α, β), γ)
Τέλος_συνάρτησης
Όσοι επιλέγουν διαδικασία μπλέκουν στα διαδικαστικά.
Στάθης Στέργου - sstergouATgmailDOTcom - http://www.pseudoglossa.gr

evry

  • Γενικός διαχειριστής
  • *****
  • Μηνύματα: 3044
  • to Iterate is human to Recurse divine
Απ: Παράμετροι Έκφραση
« Απάντηση #24 στις: 01 Φεβ 2015, 12:55:38 μμ »
Ακριβώς, ο λόγος που επιλέγουμε συναρτήσεις δεν είναι τεχνικός αλλά έχει να κάνει με την εκφραστική τους δύναμη.
Εκτός από το μέγιστο που είπε ο Στάθης και είναι ένα παράδειγμα σύνθεσης συναρτήσεων, ένα παράδειγμα που χρησιμοποιώ για να δείξω τη διαφορά είναι αυτό της απόλυτης τιμής
Τους αφήνω να επιλέξουν συνάρτηση ή διαδικασία και στη συνέχεια τους ζητάω να υπολογίσουν κάποια πολύπλοκη παράσταση όπως η παρακάτω:

| |α - β| + |γ + δ| | / | |γ-δ| + |κ - λ| |
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

itt

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 425
  • Real stupidity beats ΑΙ any time
Απ: Παράμετροι Έκφραση
« Απάντηση #25 στις: 01 Φεβ 2015, 01:33:30 μμ »
Εννοώ ότι μόνο μια συνάρτηση θα μπορούσε να καλείται με παραμέτρους που να είναι εκφράσεις ή σταθερές (ακόμα και άλλες συναρτήσεις), λόγω του ότι δεν αντιγράφονταν οι παράμετροι πίσω
Αν αυτό γίνεται και με διαδικασίες, γιατί να γράψω συνάρτηση πέρα του ότι μπορώ να την καλέσω πχ σε μια έκφραση;

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

programmer

  • Θαμώνας
  • ***
  • Μηνύματα: 44
Απ: Παράμετροι Έκφραση
« Απάντηση #26 στις: 06 Φεβ 2015, 08:26:37 μμ »
(((((((((Γνωρίζω πως έχει συζητηθεί στο παρελθόν, αλλά θα ήθελα μια πρόσφατη απάντηση στο ερώτημα: "Μπορεί η παράμετρος ή οι παράμετροι στην κλήση μιας διαδικασίας να είναι μια έκφραση;" Π.χ:
.........
α<-5
β<-10
Κάλεσε Δ1(α+1, β)
.........

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

programmer

  • Θαμώνας
  • ***
  • Μηνύματα: 44
Απ: Παράμετροι Έκφραση
« Απάντηση #27 στις: 06 Φεβ 2015, 08:30:54 μμ »
((((((
Εγώ πάλι δεν κατάλαβα
Οι διαδικασίες αντιγράφουν όλες τις παραμέτρους πίσω, ανεξάρτητα από το αν είναι δεδομένα ή αποτελέσματα
Έτσι νόμιζα δηλαδή

ΚΑΛΕΣΕ Χημεία(α+1)

ΔΙΑΔΙΚΑΣΙΑ Χημεία(χ)

Όταν η διαδικασία τελειώνει, πού αντιγράφεται η τιμή της παραμέτρου χ;)
ΠΟΥ8ΕΝΑ ΔΕΝ ΑΝΤΙΓΡΑΦΕΤΑΙ ΟΤΑΝ ΕΙΝΑΙ ΣΕ ΤΕΤΟΙΑ ΜΟΡΦΗ.ΤΟ α ΜΑΛΙΣΤΑ ΜΕΝΕΙ ΑΜΕΤΑΒΛΗΤΟ ΚΑΙ ΔΕΝ ΑΛΛΑΖΕΙ ΟΤΑΝ ΕΙΝΑΙ ΕΤΣΙ.ΑΝ ΗΤΑΝ
ΚΑΛΕΣΕ ΧΗΜΕΙΑ(Α) ΔΙΑΔΙΚΑΣΙΑ ΧΗΜΕΙΑ(Χ) ΤΟΤΕ 8Α ΑΛΛΑΖΕ.ΑΛΛΑ ΟΠΩΣ ΤΟ ΕΧΕΙΣ ΕΣΥ ΕΙΝΑΙ ΔΕΚΤΟ ΑΠΛΑ Η Α ΔΕΝ 8Α ΑΛΛΑΞΕΙ ΠΙΑ
Εφόσον δεν υπάρχει τρόπος δήλωσης (όπως στην pascal) για το ποιες παράμετροι θα πρέπει να αντιγραφούν πίσω, είναι νομίζω λάθος να θεωρούμε δεκτή την κλήση διαδικασιών με παραμέτρους είτε σταθερές, είτε εκφράσεις