Συνάρτηση είναι ένας "μηχανισμός", ο οποίος δέχεται μία(*) ή περισσότερες εισόδους(inputs) και παράγει μια έξοδο(αποτέλεσμα-output) με βάση έναν κανόνα(rule).
(*)Τυπικά, υπάρχουν και συναρτήσεις χωρίς εισόδους.
Συνάρτηση | Κανόνας | |
---|---|---|
√x | ||
Παραδείγματα |
Συνάρτηση | Κανόνας | |
---|---|---|
|
||
Παραδείγματα |
Ο αλγόριθμος μιας συνάρτησης,
Οι συναρτήσεις που πληρούν αυτούς τους κανόνες λέγονται "αγνές"(pure functions).
- Κάθε ζωγραφίζει διαφορετική γραμμή.
- Κάθε δίνει στη μεταβλητή "αθροιστής" διαφορετική τιμή.
- Το αποτέλεσμα τους εξαρτάται από την προηγούμενη κατάσταση του προγράμματος.
- Ταυτόχρονα τη μεταβάλλουν, επηρεάζοντας το αποτέλεσμα των επόμενων εντολών.
ΕΝΤΟΛΕΣ
|
|
ΑΝΑΦΟΡΕΙΣ
|
|
ΚΑΤΗΓΟΡΗΜΑΤΑ
|
Είναι το είδος της πληροφορίας ενός δεδομένου.
Πεδίο ορισμού(domain) | Σύνολο τιμών(range) |
---|---|
Οι τύποι δεδομένων των εισόδων | Ο τύπος δεδομένων της εξόδου |
Θετικός αριθμός |
Θετικός αριθμός |
Αλφαριθμητικό ή χαρακτήρας ή αριθμός |
Θετικός αριθμός |
Αλφαριθμητικά ή χαρακτήρες |
Αλφαριθμητικό |
Αριθμός και αλφαριθμητικό |
Χαρακτήρας |
Η έξοδος των συναρτήσεων μπορεί να χρησιμοποιηθεί ως εισοδος σε άλλες συναρτήσεις, δημιουργώντας σύνθετες εκφράσεις.ΠΑΡΑΔΕΙΓΜΑΤΑ
Οι αλγόριθμοι των συναρτήσεων περιέχουν υποχρεωτικά μια εντολή, μέσω της οποίας επιστέφουν το αποτέλεσμα(έξοδο).
Η εντολή αυτή ολοκληρώνει τον αλγόριθμο της συνάρτησης(είναι η τελευταία που εκτελείται).
Στο Snap αντιστοιχεί στο μπλοκ .
Στις περισσότερες "επαγγελματικές" γλώσσες προγραμματισμού είναι η εντολή return .
Οι συναρτήσεις αποτελούν μηχανισμούς αφαίρεσης που συνδέονται με τη γενίκευση.
Τι θα επιστρέψει ως αποτέλεσμα η παρακάτω συνάρτηση αν η είσοδος ειναι το -2;
ΑΠΑΝΤΗΣΗ
Θα επιστρέψει 0, διότι θα εκτελεστεί η "δήλωσε" στο εσωτερικό της εντολής "αν".
Ο αλγόριθμος τερματίζει εκεί, χωρίς να εκτελεστεί η δεύτερη "δήλωσε".
- Πεδίο ορισμού: Οποιοσδήποτε τύπος.
- Σύνολο τιμών: Οποιοσδήποτε τύπος.
- Είσοδοι: Τα μήκη των κάθετων πλευρών.
- Πεδίο ορισμού: Θετικοί αριθμοί.
- Σύνολο τιμών: Θετικός αριθμός.
- Αλγόριθμος: Ελέγχονται οι τιμές εισόδου και εφαρμόζεται το Πυθαγόρειο θεώρημα.
- Είσοδος: Το Ν.
- Πεδίο ορισμού: Θετικός ακέραιος.
- Σύνολο τιμών: Θετικός ακέραιος.
- Αλγόριθμος: Το άθροισμα υπολογίζεται σε έναν αθροιστή("προσωρινό άθροισμα").
Η μεταβλητή αυτή δεν επηρεάζει το υπόλοιπο πρόγραμμα, διότι είναι γνωστή μόνο στον αλγόριθμο της συνάρτησης.
Οι μεταβλητές αυτές ονομάζονται τοπικές.
Η συνάρτηση επιπλέον ζωγραφίζει το τετράγωνο, δημιουργώντας παρενέργειες στο πρόγραμμα και αλλάζοντας την κατάστασή του.(κανόνας 5)
- Είσοδοι: Οι συντεταγμένες (x,y) του σημείου.
- Το αποτέλεσμα δεν εξαρτάται μόνο από την είσοδο αλλά και από τη θέση της μορφής. Έτσι:
- Οι ίδιες είσοδοι μπορεί να οδηγήσουν σε ΔΙΑΦΟΡΕΤΙΚΟ αποτέλεσμα(κανόνας 2).
- Επηρεάζεται από την προηγούμενη κατάσταση του προγράμματος(τις τιμές των μεταβλητών "x-θέση","y-θέση")(κανόνας 3).
Η είσοδος της συνάρτησης δε δίνεται ως παράμετρος, αλλά διαβάζεται από το πληκτρολόγιο.
Ο αλγόριθμος δημιουργεί έτσι παρενέργειες στο πρόγραμμα(κανόνας 5).
Επιπλέον ο αλγόριθμος αλλάζει την τιμή της μεταβλητής "μέσος όρος".
Η μεταβλητή αυτή ανήκει στο υπόλοιπο πρόγραμμα και ονομάζεται καθολική.
Παραβιάζεται έτσι ο κανόνας 4.
Μπορεί να δημιουργηθεί συνάρτηση που να υπολογίζει τη λύση της δευτεροβάθμιας εξισωσης αx2+βx+γ=0;
Η λύση της δευτεροβάθμιας εξίσωσης μπορεί να είναι δύο αριθμοί. Άρα παραβιάζεται ο κανόνας 1, που απαιτεί η συνάρτηση να παράγει μόνο ένα αποτέλεσμα(*).
Επιπλέον, μπορεί ως απάντηση να προκύψει η λέξη "αδύνατη". Δηλαδή έχουμε ένα σύνολο τιμών που περιλαμβάνει περισσότερους από ένα τύπους δεδομένων(αλφαριθμητικό και αριθμό). Κάποιες γλώσσες προγραμματισμού δεν επιτρέπουν κάτι τέτοιο.
(*) Σε επόμενη ενότητα θα γνωρίσεις τις λίστες που θα σου λύσουν αυτό το πρόβλημα.
Στον κλασικό προγραμματισμό οι συναρτήσεις δεν χρησιμοποιούνται αυτόνομα, αλλά πάντα ως είσοδοι σε εντολές.
Ο συναρτησιακός προγραμματισμός(functional programming), χρησιμοποιεί μόνο συναρτήσεις και μάλιστα αγνές.
Λόγω των χαρακτηριστικών τους, οι αγνές συναρτήσεις επιστρέφουν πάντα το ίδιο αποτέλεσμα, ανεξαρτήτως υπολογιστή.
Αυτό καθιστά το συναρτησιακό προγραμματισμό, ιδανικό στη συγγραφή προγραμμάτων που εκτελούνται σε πολλούς υπολογιστές ταυτόχρονα(parallel programming).