ΣΥΝΑΡΤΗΣΗ - ΔΙΑΔΙΚΑΣΙΑ

Ξεκίνησε από klitos, 13 Φεβ 2006, 09:44:45 ΠΜ

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

klitos

Συναδελφοι ... στην ΔΙΑΔΙΚΑΣΙΑ, συμφωνα με το σχολικό βιβλίο, μπορούμε να χρησιμοποιούμε ΟΛΕΣ τις εντολές που χρησιμοποιούμε στο κυρίως πρόγραμμα. Στις συναρτήσεις, απο οτι γνωρίζω, ΔΕΝ μπορούμε να χρησιμοποιούμε τις εντολες ΔΙΑΒΑΣΕ και ΓΡΑΨΕ. Οταν ειναι απαραίτητο να χρησιμοποιήσουμε αυτές τις δυο εντολές τότε ειμαστε υποχρεωμένοι να "κατασκευάζουμε" σαν υποπρόγραμμα ΔΙΑΔΙΚΑΣΙΑ και οχι ΣΥΝΑΡΤΗΣΗ. Προσφατα σε βιβλία σχετικά με το μάθημα βρήκα ασκήσεις και παραδείγματα που αναγράφουν στο κυρίως σώμα της ΣΥΝΑΡΤΗΣΗΣ  την εντολή ΔΙΑΒΑΣΕ ...Μήπως γνωρίζετε κατι τις ....????
κλητος χατζηγεωργιου

P.Tsiotakis


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

2. Τα βοηθήματα του μαθήματος δεν αποτελούν σημείο αναφοράς για το μάθημα. Μόνο το ΔΙΔΑΚΤΙΚΟ ΠΑΚΕΤΟ - όσες ατέλειες κι αν έχει

(ελπίζω να μην έχω κάνει και γω τέτοια πατατούλα)

andreas_p

Πιστεύω ότι μπορείς αλλά προφανώς δεν έχει νόημα.
Χρησιμοποιούμε ΣΥΝΑΡΤΗΣΗ μόνο για τον υπολογισμό και επιστροφή ΜΙΑΣ τιμής με το όνομά της και όχι για εισαγωγή (ΔΙΑΒΑΣΕ) ή εμφάνιση στοιχείων (ΓΡΑΨΕ). Γιατί αν θέλαμε κάτι τέτοιο απλά θα κάναμε χρήση ΔΙΑΔΙΚΑΣΙΑΣ.

Ανδρέας

EleniK

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

Ήθελα να ρωτήσω μέσα στην ίδια ενότητα, στο βιβλίο αναφέρεται (διορθώστε με αν κάνω λάθος) ότι ένα υποπρόγραμμα μπορεί να καλέσει ένα άλλο. Μια διαδικασία μπορεί να καλέσει συνάρτηση, μια συνάρτηση μπορεί να καλέσει μια διαδικασία; Μέχρι τώρα το απέτρεπα για κάποιο λόγο, αλλά δεν είμαι και σίγουρη. Εσεις τι γνώμη έχετε;
Ελένη Κοκκίνου
Καθηγήτρια Πληροφορικής, ΠΕ19

P.Tsiotakis


Σελίδα 215, βιβλίο μαθητή: "Κάθε διαδικασία ή συνάρτηση μπορεί να καλείται από το κύριο πρόγραμμα ή από άλλη διαδικασία ή συνάρτηση..."

Νομίζω οτι είσαι σαφές...

alkisg

...και γεννάται το ερώτημα: εφόσον μια συνάρτηση μπορεί να καλέσει μια διαδικασία, και η διαδικασία μπορεί να περιλαμβάνει ΓΡΑΨΕ, γιατί άραγε η ίδια η συνάρτηση να μην περιλαμβάνει ΓΡΑΨΕ;

Πάντως σε ασκήσεις που βάζουμε στους μαθητές (και στα βοηθήματα κτλ) νομίζω θα είναι καλύτερα να κρατήσουμε τις συναρτήσεις στο επίπεδο του βιβλίου, δηλαδή για απλούς υπολογισμούς, χωρίς είσοδο/έξοδο...

bagelis1

Να γραφεί υποπρόγραμμα που διαβάζει την ακτίνα ενός κύκλου.

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

klitos_1

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

andreas_p


dozb

#9
Καλησπέρα σε όλους
Όσον αφορά στην ερώτηση του συναδέλφου, μπορείς πιστεύω, να χρησιμοποιήσεις τη ΔΙΑΒΑΣΕ για να δώσεις τιμή σε μια μεταβλητή που χρειάζεσαι στη ΣΥΝΑΡΤΗΣΗ,  αλλά όχι για να δώσεις τιμή σε κάποια από τις τυπικές πραμέτρους, μια που δεν μπορείς να επιστρέψεις την τιμή της στο κυρίως πρόγραμμα... (!!!!)

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



P.Tsiotakis

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

Άρα, στην ουσία δεν μπορεί να χρησιμοποιηθεί. Επομένως, δεν χρειάζεται να είναι στις παραμέτρους...

Το αν επιτρέπεται ή όχι είναι ένα άλλο θέμα. Ίσως η παραπάνω σκέψη αρκεί...


klitos

Συνάδελφε dozb
1ο Αν θεωρήσουμε οτι ο ρόλος της ΣΥΝΑΡΤΗΣΗΣ ειναι να υπολογίζει και να επιστρέφει μια τιμή τότε δεν μπορείς να χρησιμοποιήσεις την ΔΙΑΒΑΣΕ μεσα στην ΣΥΝΑΡΤΗΣΗ. Αν πρέπει να δώσεις μια τιμη σε μια μεταβλητή τότε πρέπει να φροντίσει το ΠΡΟΓΡΑΜΜΑ να την μεταβιβάσει. Διαφορετικά αν μπορούσαμε να χρησιμοποιήσουμε την ΔΙΑΒΑΣΕ τοτε θα μπορούσαμε να χρησιμοποιήσουμε και την ΓΡΑΨΕ ( αφού θα την χρειαζόμασταν για να περιγράψουμε το τι πρόκειται να πληκτρολογηθεί ) ...αρα θα μπορούμε να χρησιμοποιούμε ολες τις εντολές ( πράγμα που επιτρέπεται στις ΔΙΑΔΙΚΑΣΙΕΣ )
2ο Οσον αφορα την ερωτηση σου για τις μεταβλητές που περνάνε σε μια συνάρτηση αυτές πρέπει να ειναι ορισμένες ( να εχουν πάρει τιμή ) διαφορετικά θα ειναι απροσδιόριστες ... συμφωνώ δηλαδή με τον ptsiotaki

κλητος
κλητος χατζηγεωργιου

dozb

"τότε θα είναι απροσδιόριστη και η τιμή της εντός της συνάρτησης."
Στις Διαδικασίες όμως επιτρέπεται, έτσι?

alkisg

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

Προφανώς οι παράμετροι εξόδου δε χρειάζεται να αρχικοποιηθούν.

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

klitos

Συνάδελφε dozb
Ναι ... ετσι ακριβως ειναι . Στις ΔΙΑΔΙΚΑΣΙΕΣ επιτρεπεται αυτη η απροσδιοριστια των μεταβλητών εξόδου, επειδή θα χρησιμοποιηθούν για να μεταφερθεί το αποτέλεσμα στο κυρίως ΠΡΟΓΡΑΜΜΑ.
κλητος χατζηγεωργιου