Αποστολέας Θέμα: Απορία  (Αναγνώστηκε 226 φορές)

Ana geo

  • Νέος
  • *
  • Μηνύματα: 2
Απορία
« στις: 12 Ιουν 2021, 10:43:51 πμ »
Καλημέρα 
Θα ήθελα να ρωτήσω εάν
 Μια συνάρτηση  (υποπρόγραμμα) μπορεί να μην έχει καμία παράμετρο εισόδου;και
Εάν οι διαδικασίες ή οι συναρτήσεις μπορούν να έχουν ως παραμέτρους σταθερές; πχ
Κάλεσε διαδ(7,5,α)
Ευχαριστώ

Καλ. Ν.

  • Νέος
  • *
  • Μηνύματα: 2
Απ: Απορία
« Απάντηση #1 στις: 12 Ιουν 2021, 04:45:18 μμ »
Μία συνάρτηση ΠΡΕΠΕΙ να έχει τουλάχιστον μία παράμετρο. Όπως στα μαθηματικά δεν ορίζεται συνάρτηση χώρις όρισμα, έτσι και στην πληροφορική. Η διαδικάσια μπορεί να μην έχει παραμέτρους.

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

evry

  • Γενικός διαχειριστής
  • *****
  • Μηνύματα: 3569
  • to Iterate is human to Recurse divine
Απ: Απορία
« Απάντηση #2 στις: 12 Ιουν 2021, 05:53:29 μμ »
Μία συνάρτηση ΠΡΕΠΕΙ να έχει τουλάχιστον μία παράμετρο. Όπως στα μαθηματικά δεν ορίζεται συνάρτηση χώρις όρισμα, έτσι και στην πληροφορική. Η διαδικάσια μπορεί να μην έχει παραμέτρους.
Ισχύει μόνο στο μάθημα ΑΕΠΠ και όχι στην πληροφορική γενικά. Σε πολλές γλώσσες προγραμματισμού μπορείς άνετα να ορίσεις συνάρτηση που δεν δέχεται καμία παράμετρο.

Παράθεση
Η διαδικασία ΔΕΝ δέχεται σταθερές ως παραμέτρους
Στο τετράδιο μαθητή σελ. 99 έχει κλήση διαδικασίας με σταθερές.
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

Καλ. Ν.

  • Νέος
  • *
  • Μηνύματα: 2
Απ: Απορία
« Απάντηση #3 στις: 12 Ιουν 2021, 06:23:17 μμ »
Στο τετράδιο μαθητή σελ. 99 έχει κλήση διαδικασίας με σταθερές.

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

alkisg

  • Τεχνικός / καθαρίστρια
  • *****
  • Μηνύματα: 5919
    • Ο Διερμηνευτής της ΓΛΩΣΣΑΣ
Απ: Απορία
« Απάντηση #4 στις: 12 Ιουν 2021, 06:50:48 μμ »
Αυτό δηλαδή τι κακό έχει;

Κώδικας: ΓΛΩΣΣΑ
  1. ΠΡΟΓΡΑΜΜΑ ΈλεγχοςΤηςΓIΑ
  2. ΜΕΤΑΒΛΗΤΕΣ
  3.   ΛΟΓΙΚΕΣ: λ
  4. ΑΡΧΗ
  5.   λ <- ΓIΑΣανΤηςPascal
  6.   ΑΝ λ ΤΟΤΕ
  7.     ΓΡΑΨΕ "Σε αυτόν τον διερμηνευτή της ΓΛΩΣΣΑΣ, στο τέλος μια ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ 10, το ι είναι 10"
  8.   ΑΛΛΙΩΣ
  9.     ΓΡΑΨΕ "Σε αυτόν τον διερμηνευτή της ΓΛΩΣΣΑΣ, στο τέλος μια ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ 10, το ι είναι 11"
  10.   ΤΕΛΟΣ_ΑΝ
  11. ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
  12.  
  13. ΣΥΝΑΡΤΗΣΗ ΓIΑΣανΤηςPascal: ΛΟΓΙΚΗ
  14. ΜΕΤΑΒΛΗΤΕΣ
  15.   ΑΚΕΡΑΙΕΣ: ι
  16. ΑΡΧΗ
  17.   ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ 1
  18.   ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  19.   ΓIΑΣανΤηςPascal <- ι = 1
  20. ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

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

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

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

evry

  • Γενικός διαχειριστής
  • *****
  • Μηνύματα: 3569
  • to Iterate is human to Recurse divine
Απ: Απορία
« Απάντηση #5 στις: 12 Ιουν 2021, 07:10:08 μμ »
Έχει βάση το σκεπτικό σου, σίγουρα.

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

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

Δεν ξέρουμε τι είχαν οι συγγραφείς του βιβλίου στο μυαλό τους για αυτή την περίπτωση αλλά είναι σίγουρο ότι το επέτρεπαν.
Αυτό αποδεικνύεται από το παράδειγμα στην σελίδα 99 του τετραδίου μαθητή που παρέθεσα παραπάνω, το οποίο αν και εκτός ύλης, δείχνει ότι οι συγγραφείς θεωρούν ότι μπορείς να περάσεις σταθερά.
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr