Διαφορες συνάρτησης διαδικασίας

Ξεκίνησε από theoni, 17 Μαΐου 2017, 11:30:19 ΠΜ

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

theoni

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

petrosp13

1. Τρόπος κλήσης
2. Λογική παραμέτρων
3. Συντακτικό (τιμή στο όνομα συνάρτησης και δήλωση τύπου της)
4. Τρόπος αντιγραφής τιμών παραμέτρων
5. Το βασικότερο, συνάρτηση μόνο για ένα αποτέλεσμα
Παπαδόπουλος Πέτρος
Καθηγητής Πληροφορικής

meteo_xampos

6.Επιστροφή στην επόμενη γραμμή μετά τη κλήση στη διαδικασία, ενώ συνάρτηση επιστρέφει στην ίδια γραμμή
7. Επιτρέπεται Διάβασε και Γράψε στη Διαδικασία, στην συνάρτηση όχι...

bugman

#3
Μια σημαντική διαφορά είναι ότι μια συνάρτηση είναι στην ουσία μια τιμή σε μια έκφραση, και γίνεται να περαστεί σαν όρισμα στην ίδια, δηλαδή αν το Α(Χ) δίνει το Χ+1 τότε το Α(Α(Α(5))) θα δώσει το 8. Στις διαδικασίες δεν μπορούμε να περάσουμε σε όρισμα διαδικασία, χρειάζεται νέα γραμμή. Επίσης δεν μπορούμε να περάσουμε συνάρτηση με αναφορά, ούτε σε διαδικασία, ούτε σε συνάρτηση, αλλά μόνο τη τιμή της. Οι διαδικασίες δεν μπορούν να καλεστούν από συνάρτηση (ειδικά το θέλει έτσι η ΓΛΩΣΣΑ).
Όλες οι συναρτήσεις και οι διαδικασίες είναι θεατές σε όλο το πρόγραμμα, και υπάρχουν διαθέσιμες από την πρώτη εντολή.
Τα περί αναδρομής ή άλλα θέματα πχ κλήση του Α από το Β, και του Β από το Α συνέχεια, νομίζω είναι εκτός ύλης.
Γενικά πάντως οι συναρτήσεις οφείλουν για τα ίδια ορίσματα να επιστρέψουν την ίδια τιμή, και ειδικά στη ΓΛΩΣΣΑ ισχύει και για τις διαδικασίες αυτό, αλλά εδώ ή μια ή περισσότερες επιστρεφόμενες τιμές είναι τιμές με αναφορά. Όταν δίνουμε μεταβλητή Α σε διαδικασία  σημαίνει για αυτήν "άλλαξέ με μπορείς", ενώ αν δώσουμε την ίδια σε παρενθέσεις (Α), τότε θα δοθεί η τιμή, που προκύπτει από την αποτίμηση της παράστασης, άρα δεν θα υπάρχει πέρασμα με αναφορά, σίγουρα.

Δεν υπάρχουν γενικές/καθολικές μεταβλητές στη ΓΛΩΣΣΑ άρα δεν μπορούμε να κρατήσουμε τιμές για την επόμενη εκτέλεση, ώστε να έχουμε την όποια διαφοροποίηση αποτελέσματος, εκτός αν περνάμε μεταβλητές με αναφορά για το σκοπό αυτό, και αυτό μόνο στις διαδικασίες.

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

Δείτε πώς αλλάζει ο τρόπος που βλέπουμε το κώδικα με χρήση συνάρτησης και με χρήση διαδικασίας.
*Ένα σπάσιμο συνάρτησης θα ήταν πχ η ΣύνΈνα(Χ) που επιστρέφει το Χ+1, σε μια παράσταση Μ=10+ΣύνΈνα(Ζ)+50 χωρί την χρήση αυτής:
Μ=10
Μ1=Ζ+1
Μ=Μ+Μ1+50
Κάθε φορά θα θέλαμε μια μεταβλητή για το μερικό αποτέλεσμα και μετά να το δώσουμε ξανά. Εδώ είναι απλά ένα Χ+1, αλλά σε περίπτωση πολλών γραμμών κώδικα η παράσταση θα ξεκίναγε στη πρώτη γραμμή και θα τελείωνε ίσως στην επόμενη σελίδα, άρα δεν θα είχαμε την εικόνα της παράστασης. Έτσι ένας λόγος είναι η ωραιοποίηση του κώδικα, με παραστάσεις που θυμίζουν μαθηματικές εκφράσεις.
Αν τώρα ήθελε κανείς να κάνει εδώ χρήση διαδικασιών:
(έστω έχουμε ορίσει την Ζ και έχει τιμή, και έχει οριστεί και η Χ)
ΒάλεΤιμή Μ, 10
Χ=Ζ
ΒάλεΣυνΈνα Χ
ΒάλεΤιμή Μ, Μ+Χ+50
Εδώ τώρα χάνουμε λίγο την μπάλα, γιατί δεν ξέρουμε (δεν μας δείχνει το πρόγραμμα) τι αλλάζει τι, παρά μόνο εξάγουμε το συμπέρασμα από το όνομα. Εδώ το βάλετιμή προφανώς κάνει στο Μ να μπει το 10, το ΒάλεΣυνΈνα κάνει στο Χ να μπει η τιμή Χ+1, δηλαδή η τιμή Ζ+1, αφού το Χ πήρε τη τιμή του Ζ, και στο τέλος πάλι η ΒάλεΤιμή καλείται με τιμή την παράσταση Μ+Ζ+50.

Στην εκχώρηση/αλλαγή τιμής της Μ, με χρήση της συνάρτησης ΣυνΈνα(Ζ) είναι φανερό ότι η Ζ δεν αλλάζει (δεν έχουμε πέρασμα με αναφορά σε συνάρτηση), και σε μια γραμμή ο κώδικας είναι ευκολοδιάβαστος, συνοπτικός και επεξηγηματικός συνάμα.
Μ=10+ΣυνΈνα(Ζ)+50

theoni

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

petrosp13

Παπαδόπουλος Πέτρος
Καθηγητής Πληροφορικής

pagouris

Και εγω ρωτω τωρα... απο διερμηνευτή μευαγλωτιστη τι μπορει να πεσει; διαφορες;