Δεν είναι περίεργο που ονόμασα αυτό το άρθρο "Λειτουργίες ως αναπόσπαστο μέρος του προγραμματισμού", γιατί χωρίς αυτές, κατά τη γνώμη μου, καμία γλώσσα δεν έχει το δικαίωμα να υπάρχει. Τι είναι αυτό? Μια συνάρτηση είναι το κύριο δομικό στοιχείο ενός καλογραμμένου προγράμματος. Όχι μόνο διευκολύνει την ανάγνωση του κώδικα, αλλά και αλλάζει ριζικά την ιδέα του δομημένος προγραμματισμός. Με τη βοήθεια συναρτήσεων, μπορείτε να επαναχρησιμοποιήσετε μεμονωμένα μέρη του προγράμματος μεταβιβάζοντάς τους τυχόν παραμέτρους. Κανένα σοβαρό πρόγραμμα δεν μπορεί να φανταστεί κανείς χωρίς αυτό το θαύμα του προγραμματιστικού στοιχείου.

Θα σας πω εν συντομία πώς λειτουργεί. Μια συνάρτηση είναι ένα μπλοκ εντολών που μπορεί να καλέσει το πρόγραμμά σας. Κατά την πρόσβαση στην κεφαλίδα αυτού του μπλοκ (όνομα συνάρτησης), εκτελείται και εκτελεί ορισμένες ενέργειες που καθορίζονται από τον προγραμματιστή. Μετά από αυτό, αυτό το μπλοκ επιστρέφει την τιμή που έλαβε και τη μεταβιβάζει στο κύριο πρόγραμμα. Επιτρέψτε μου να εξηγήσω στην πράξη.

Σε γενικές γραμμές, όλα μοιάζουν έτσι. Θα εξηγήσω εν συντομία. Δημιουργούμε κάποια μεταβλητή και της εκχωρούμε το αποτέλεσμα της εκτέλεσης της συνάρτησης myfunc, η οποία με τη σειρά της υπολογίζει την τιμή του τετραγωνισμού κάποιου αριθμού. Οι λειτουργίες δεν εκτελούνται αμέσως κατά την εκκίνηση του προγράμματος, αλλά μόνο όταν καλούνται. Ίσως λίγο μπερδεμένο, αλλά έτσι είναι.

Πώς να καλέσετε μια συνάρτηση;

Για να καλέσετε μια συνάρτηση, πρέπει να τη δημιουργήσετε. Αν και υπάρχουν και ενσωματωμένες λειτουργίες. Για παράδειγμα, αυτό: cos, sin, md5, count, absκαι ούτω καθεξής. Για να τα καλέσετε, χρειάζεται μόνο να αντιστοιχίσετε την επιθυμητή τιμή στη μεταβλητή.

Ένα όρισμα συνάρτησης είναι η τιμή που του μεταβιβάζετε όταν το καλείτε. Τα ορίσματα συνάρτησης τοποθετούνται σε παρένθεση. Όταν δημιουργείτε μια συνάρτηση, καθορίζετε τα ονόματα υπό όρους των ορισμάτων. Στη συνέχεια, αυτά τα ονόματα μπορούν να χρησιμοποιηθούν στο σώμα της συνάρτησης ως τοπικές μεταβλητές. Ας επιστρέψουμε στις λειτουργίες που δημιουργεί ο ίδιος ο χρήστης. Αυτό γίνεται πολύ εύκολα. Αρχικά, δημιουργείται το σώμα της συνάρτησης:

Λειτουργία hello() ( echo "Hello, world!";)

Τότε το λέμε. Και αν δεν έχει παραμέτρους, τότε απλώς βάζουμε παρενθέσεις. Για να καλέσουμε αυτή τη συνάρτηση, χρησιμοποιούμε μόνο τη γραμμή: Χαίρετε();. Οποιαδήποτε συνάρτηση μπορεί επίσης να επιστρέψει μια τιμή χρησιμοποιώντας δεσμευμένη λέξη ΕΠΙΣΤΡΟΦΗ. Αυτή η δήλωση τερματίζει την εκτέλεση της συνάρτησης και στέλνει την τιμή επιστροφής στο καλούν πρόγραμμα. συνάρτηση sum($first, $second) ($r=$first + $second; return $r;) echo sum(2,5); το αποτέλεσμα της εκτέλεσης του προγράμματος θα είναι ίσο με 7. Τοπικές και καθολικές μεταβλητές

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

$per="Dima"; function primer() // Do: τοπική μεταβλητή έξοδος ( echo "My name is ".$per; ) echo primer();

Σε αυτήν την περίπτωση, στην οθόνη θα εμφανιστεί η φράση "My name is". Αυτό σημαίνει ότι μέσα στη συνάρτηση primer, δημιουργήθηκε η μεταβλητή $per και, από προεπιλογή, εκχωρήθηκε μηδενική τιμή. Για να αποφύγετε τέτοιου είδους εμπλοκές, πρέπει να χρησιμοποιήσετε τον χειριστή παγκόσμια. Ας διορθώσουμε τον παραπάνω κώδικα ανάλογα:

$per="Dima"; function primer() // Εκτελεί: καθολική μεταβλητή έξοδος ( global $per; echo "My name is ".$per; ) echo primer();

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

Συναρτήσεις με δύο ή περισσότερα ορίσματα

Μερικά από τα ορίσματα που μεταβιβάζονται σε μια συνάρτηση μπορούν να γίνουν προαιρετικά, καθιστώντας τη συνάρτηση λιγότερο απαιτητική. Το παρακάτω παράδειγμα το δείχνει ξεκάθαρα:

... γραμματοσειρά συνάρτησης ($text, $size=5) // Do: μέγεθος γραμματοσειράς εξόδου ( echo " ".$text.""; ) font("Γεια
",1); γραμματοσειρά ("Γεια
",2); γραμματοσειρά ("Γεια
",3); γραμματοσειρά ("Γεια
",4); γραμματοσειρά ("Γεια
",5); γραμματοσειρά ("Γεια
",6); γραμματοσειρά ("Γεια
");

Από προεπιλογή, το μέγεθος της γραμματοσειράς είναι 5. Αν παραλείψουμε τη δεύτερη παράμετρο της συνάρτησης, τότε θα είναι ίση με αυτήν την τιμή.

συμπέρασμα

Πριν σας αποχαιρετήσω, θέλω να επιστήσω την προσοχή σας σε μια συμβουλή. Συνίσταται στην τοποθέτηση όλων των συναρτήσεων που έχετε γράψει σε ένα αρχείο (για παράδειγμα, function.php). Και στη συνέχεια, στο αρχείο όπου πρέπει να καλέσετε τη συνάρτηση, πρέπει απλώς να συμπεριλάβετε το function.php και όλα θα είναι έτοιμα για χρήση. Αυτό θα διευκολύνει πολύ την κατανόηση της λογικής του προγράμματός σας. Για να συνδεθείτε, χρησιμοποιήστε:

include_once("function.php");

require_once("function.php");

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

Συναρτήσεις έναντι αριθμών.Η γλώσσα VB έχει τις ακόλουθες μαθηματικές συναρτήσεις: κοιλιακούς(Χ) - Υπολογισμός ενότητας. τετρ(Χ) - υπολογισμός της τετραγωνικής ρίζας, έναtn(Χ) - υπολογισμός της εφαπτομένης του τόξου. cos(Χ) - υπολογισμός συνημιτόνου. αμαρτία(Χ) - υπολογισμός του ημιτόνου. ηλιοκαμένος(Χ) - υπολογισμός της εφαπτομένης. κούτσουρο(Χ) - υπολογισμός του φυσικού λογάριθμου, exp(Χ) - υπολογισμός του εκθέτη, όπου Χ- όρισμα συνάρτησης αριθμητικού τύπου. Για να υπολογίσετε τις τιμές των συναρτήσεων που απουσιάζουν στη γλώσσα VisualBasic, είναι απαραίτητο να χρησιμοποιήσετε τύπους γνωστούς από τα μαθηματικά.

Εκφραση y= στο VB θα γραφόταν ως εξής: y=sin(x^2)+sqr(tan(x))*(x+5) ^ (1/5).

Το όρισμα συνάρτησης πρέπει να γραφτεί σε παρένθεση.

Λειτουργίες για τη μετατροπή μιας τιμής από έναν τύπο σε άλλο.Η γλώσσα προγραμματισμού VB παρέχει λειτουργίες για την αλλαγή του τύπου δεδομένων μιας τιμής. Για παράδειγμα, υπάρχει μια μεταβλητή a τύπου Double και μια μεταβλητή s τύπου String.

Για να γράψετε μια μεταβλητή a σε μια μεταβλητή s, είναι απαραίτητο να εκτελέσετε μια μετατροπή τύπου S=CStr(a) και να γράψετε μια μεταβλητή s σε μια μεταβλητή a–a=CDbl(s).

Συναρτήσεις VB για μετατροπή τύπου τιμής:

CStr - μετατροπή σε συμβολοσειρά.

CByte - μετατροπή σε Byte.

Cint - μετατροπή σε Ακέραιο.

CLng - μετατροπή σε Long.

CSng - μετατροπή σε Single.

CDbl - μετατροπή σε διπλό.

2.6. Αναπαράσταση διαφόρων τύπων δεδομένων στη μνήμη του υπολογιστή

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

Το στοιχειώδες κελί της μνήμης του υπολογιστή έχει μήκος 8 bit (bytes). Κάθε byte έχει τον δικό του αριθμό (λέγεται διεύθυνση). Η μεγαλύτερη ακολουθία bit που ένας υπολογιστής μπορεί να επεξεργαστεί συνολικά ονομάζεται λέξη μηχανής. Το μήκος μιας λέξης μηχανής εξαρτάται από το μήκος της λέξης του επεξεργαστή και μπορεί να είναι 16, 32, 64 bit κ.λπ.

Κωδικοποίηση χαρακτήρων. Ένα byte είναι αρκετό για την κωδικοποίηση χαρακτήρων. Σε αυτήν την περίπτωση, μπορούν να αναπαρασταθούν 256 χαρακτήρες (με δεκαδικούς κωδικούςαπό 0 έως 255). Το σύνολο χαρακτήρων των προσωπικών υπολογιστών που είναι συμβατοί με τον υπολογιστή IBM είναι συνήθως μια επέκταση του κώδικα ASCII (American Standard Code for Information Interchange - ο τυπικός αμερικανικός κώδικας για την ανταλλαγή πληροφοριών). Επί του παρόντος, χρησιμοποιούνται επίσης αναπαραστάσεις χαρακτήρων σε δύο byte.

Αναπαράσταση ακεραίων στο συμπλήρωμα δύο.Το εύρος τιμών εξαρτάται από τον αριθμό των bits μνήμης που διατίθενται για την αποθήκευσή τους. Η μνήμη n-bit μπορεί να αποθηκεύσει διαφορετικές τιμές Για παράδειγμα, οι τιμές του τύπου Integer βρίσκονται στην περιοχή από -32768 (-2 15) έως 32767 (2 15 - 1) και 2 byte (16 bit) εκχωρούνται για την αποθήκευσή τους. τύπου Long - στην περιοχή από -2 31 έως 2 31 - 1 και βρίσκονται σε 4 byte (32 bit).

Για την ανυπόγραφη αναπαράσταση ακεραίων δυαδικών αριθμών ποικίλλουν από 0 έως
, και σε υπογεγραμμένη παράσταση - από
πριν
. Στους σύγχρονους υπολογιστές, συνηθίζεται να επιλέγουμε το μήκος n του πλέγματος bit των ακεραίων ως πολλαπλάσιο του 8 (δηλ. έναν ακέραιο αριθμό byte).

Στην περίπτωση αναπαράστασης μιας ποσότητας με πρόσημο, το αριστερό (υψηλότερο) ψηφίο υποδεικνύει θετικό αριθμό αν περιέχει μηδέν και αρνητικό αν περιέχει ένα.

Τα ψηφία αριθμούνται από τα δεξιά προς τα αριστερά, ξεκινώντας από το 0. Στην εικ. Το .2.2 δείχνει την αρίθμηση των bit σε μια λέξη μηχανής δύο byte.

Ρύζι. 2.2. Hκλιμάκωση bit σε μια λέξη μηχανής δύο byte

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

Για παράδειγμα, εάν ο αριθμός 37 (10) = 100101 (2) δηλωθεί ως ακέραιος αριθμός (με δεκαέξι μπιτ), τότε ο άμεσος κώδικάς του είναι 0000000000100101 και εάν είναι μια μεγάλη τιμή (με υπογραφή τριάντα δύο μπιτ), τότε ο άμεσος κωδικός του είναι. Για πιο συμπαγή συμβολισμό, η δεκαεξαδική αναπαράσταση του κώδικα χρησιμοποιείται συχνότερα. Οι κωδικοί που προκύπτουν μπορούν να ξαναγραφούν ως 0025 (16) και 00000025 (16) αντίστοιχα.

Ο πρόσθετος κωδικός ενός αρνητικού ακέραιου αριθμού μπορεί να ληφθεί χρησιμοποιώντας τον ακόλουθο αλγόριθμο:

    σημειώστε τον άμεσο κωδικό της ενότητας του αριθμού.

    αναστρέψτε το (αντικαταστήστε τα με μηδενικά, τα μηδενικά με ένα).

    προσθέστε ένα στον αντίστροφο κώδικα.

Για παράδειγμα, ας γράψουμε τον κώδικα συμπληρώματος των δύο -37, ερμηνεύοντάς τον ως μια τιμή Long (υπογεγραμμένη σε 32 bit):

    ο άμεσος κωδικός για τον αριθμό 37 είναι ?

    αντίστροφος κωδικός?

    πρόσθετος κωδικός ή FFFFFFDB (16) .

Όταν λαμβάνετε έναν αριθμό με τον πρόσθετο κωδικό του, πρώτα απ 'όλα, είναι απαραίτητο να προσδιορίσετε το πρόσημο του. Εάν ο αριθμός αποδειχθεί θετικός, τότε απλώς μεταφράστε τον κωδικό του σε δεκαδικό σύστημα αριθμών. Σε περίπτωση αρνητικού αριθμού, πρέπει να εκτελεστεί ο ακόλουθος αλγόριθμος:

    αφαιρέστε τον αριθμό 1 από τον κωδικό.

    αντιστροφή κώδικα?

    μεταφραστεί σε μετρικό σύστημαυπολογισμός. Γράψτε τον αριθμό που προκύπτει με το σύμβολο μείον.

Παραδείγματα.Ας γράψουμε τους αριθμούς που αντιστοιχούν σε πρόσθετους κωδικούς:

    0000000000010111. Εφόσον το μηδέν γράφεται στο πιο σημαντικό bit, το αποτέλεσμα θα είναι θετικό. Αυτός είναι ο κωδικός για τον αριθμό 23.

    1111111111000000. Ο κωδικός ενός αρνητικού αριθμού αναγράφεται εδώ. Εκτελούμε τον αλγόριθμο: 1) 1111111111000000 (2) - 1 (2) = 1111111110111111 (2) ; 2) 0000000001000000; 3) 1000000 (2) = 64 (10) . Απάντηση: -64.

Σκοπός: 1) μελετήστε τους κανόνες για την περιγραφή των συναρτήσεων. 2) αποκτήστε τις δεξιότητες χρήσης συναρτήσεων κατά τη σύνταξη προγραμμάτων σε C++.

Θεωρητικές πληροφορίες

Η κύρια μονάδα προγραμμάτων στη γλώσσα C++ είναι μια συνάρτηση.

Λειτουργία- ένα λογικά ολοκληρωμένο, με συγκεκριμένο τρόπο σχεδιασμένο τμήμα ενός προγράμματος που έχει όνομα. Οι συναρτήσεις σάς επιτρέπουν να διαιρέσετε μεγάλες υπολογιστικές εργασίες σε μικρότερες.

Κάθε πρόγραμμα C++ περιέχει απαραίτητα μια συνάρτηση που ονομάζεται main, η οποία είναι το σώμα του προγράμματος. Για όλες τις άλλες συναρτήσεις, εάν υπάρχουν στο πρόγραμμα, θα πρέπει να δηλωθούν πρωτότυπα - σχηματικές αναπαραστάσεις που λένε στον μεταγλωττιστή το όνομα και τη μορφή κάθε συνάρτησης του προγράμματος.

Σύνταξη για πρωτότυπο συνάρτησης με παραμέτρους:

return_value_type function_name (list_of_parameters_with_indication_of_types);

Οι συναρτήσεις στη C++ είναι τυπικές (βιβλιοθήκη) και μπορούν να προγραμματιστούν από το χρήστη.

Τυποποιημένα χαρακτηριστικά

Περιγραφές τυπικών συναρτήσεων βρίσκονται σε αρχεία που περιλαμβάνονται στο πρόγραμμα χρησιμοποιώντας την οδηγία #include. Τέτοια αρχεία ονομάζονται κεφαλίδα. έχουν την προέκταση h.

Η αναφορά ενός ονόματος συνάρτησης στο κύριο πρόγραμμα ονομάζεται κλήση συνάρτησης.

Η κλήση συναρτήσεων οδηγεί στην εκτέλεση κάποιων ενεργειών ή στον υπολογισμό κάποιας τιμής, η οποία στη συνέχεια χρησιμοποιείται στο πρόγραμμα.

y=sin(x); //συνάρτηση υπολογισμού ημιτόνου

Ορισμός συνάρτησης

Γενικά, οι συναρτήσεις ορίζονται ως εξής:

return_value_type function_name (πληκτρολογήστε parameter_name,...,type parameter_name)

λειτουργία_σώμα

Προγραμματιζόμενα χαρακτηριστικά

Οι λειτουργίες που δημιουργεί ο ίδιος ένας προγραμματιστής απλοποιούν τη διαδικασία γραφής προγραμμάτων, επειδή:

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

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

Παράδειγμα9 .1. Ας δημιουργήσουμε μια συνάρτηση που εκτυπώνει 65 χαρακτήρες "*" στη σειρά. Για να λειτουργήσει αυτή η λειτουργία σε κάποιο πλαίσιο, περιλαμβάνεται στο πρόγραμμα εκτύπωσης επιστολόχαρτων. Το πρόγραμμα αποτελείται από συναρτήσεις: main() και stars().

// επιστολόχαρτο

#περιλαμβάνω

const int Limit=65;

void stars(void); // πρωτότυπο συνάρτησης stars().

cout<<"Moscow Institute of Electronic Engineering"<

// Καθορισμός της συνάρτησης stars().

για (count=1; count<=Limit; count++)

Εξετάσαμε ένα παράδειγμα μιας απλής συνάρτησης που δεν έχει ορίσματα και δεν επιστρέφει τιμές.

Παράμετροι συνάρτησης

Εξετάστε τη χρήση των παραμέτρων συνάρτησης ως παράδειγμα.

Παράδειγμα9. 2. Ας γράψουμε τη συνάρτηση space(), του οποίου το όρισμα θα είναι ο αριθμός των κενών που πρέπει να εκτυπώσει αυτή η συνάρτηση.

#define διεύθυνση " Zelenograd"

#define όνομα "Ινστιτούτο Ηλεκτρονικής Μηχανικής της Μόσχας"

#define τμήμα "Πληροφορική και Προγραμματισμός"

const int LIMIT=65;

#περιλαμβάνω

κενό διάστημα (αριθμός int);

cout<

spaces=(LIMIT - strlen(όνομα))/2; // Υπολογίστε πόσο

// χρειάζονται κενά

cout<

space((LIMIT - strlen(τμήμα))/2); // το όρισμα είναι μια έκφραση

cout<

// Ορισμός της συνάρτησης stars().

για (count=1; count<=LIMIT; count++)

// Ορισμός της συνάρτησης space().

κενός χώρος (αριθμός int)

για (count=1; count<=number; count++)

Ο αριθμός της μεταβλητής ονομάζεται επίσημο όρισμα. Αυτή η μεταβλητή παίρνει τις τιμές του πραγματικού ορίσματος όταν καλείται η συνάρτηση. Με άλλα λόγια, επίσημο επιχείρημαείναι μια μεταβλητή στον ορισμό της καλούμενης υπορουτίνας, και πραγματικό επιχείρημα- τη συγκεκριμένη τιμή που εκχωρείται σε αυτή τη μεταβλητή από το καλούν πρόγραμμα.

Εάν απαιτούνται περισσότερα από ένα ορίσματα για την επικοινωνία με μια συγκεκριμένη συνάρτηση, τότε μαζί με το όνομα της συνάρτησης, μπορείτε να καθορίσετε μια λίστα ορισμάτων διαχωρισμένη με κόμματα:

void printnum (int i, int j)

(cout<<"Координаты точек”<< i << j <

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

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

Παρενέργεια

Λειτουργίες και Διαδικασίες

Σε ορισμένες γλώσσες προγραμματισμού (για παράδειγμα, στο Pascal), οι συναρτήσεις και οι διαδικασίες (υπορουτίνες που δεν επιστρέφουν τιμές) διακρίνονται σαφώς από τη σύνταξη της γλώσσας. Σε άλλες - για παράδειγμα, στη γλώσσα C - οι διαδικασίες είναι μια ειδική περίπτωση (υποσύνολο) συναρτήσεων που επιστρέφουν μια τιμή τύπου (ψευδότυπο) void - μια κενή τιμή.

Επιχειρήματα και Επιλογές

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

Λειτουργία χωρίς ορίσματα

Μια τέτοια συνάρτηση δεν απαιτεί ορίσματα.

δείτε επίσης

Συνδέσεις

  • Συναρτήσεις PHP. Σύνταξη και παραδείγματα χρήσης συναρτήσεων PHP

Ίδρυμα Wikimedia. 2010 .

Δείτε τι είναι η "Λειτουργία (προγραμματισμός)" σε άλλα λεξικά:

    Το Βικιλεξικό έχει το άρθρο "συνάρτηση" Η συνάρτηση είναι ένας πολυσημαντικός όρος που σημαίνει μια σχέση μεταξύ στοιχείων στα οποία μια αλλαγή σε ένα συνεπάγεται αλλαγή ... Wikipedia

    Μια συνάρτηση stub στον προγραμματισμό είναι μια συνάρτηση που δεν εκτελεί καμία ουσιαστική ενέργεια, επιστρέφει ένα κενό αποτέλεσμα ή δεδομένα εισόδου αμετάβλητα. Η αντίστοιχη αγγλική λέξη είναι stub. Χρησιμοποιείται: Για λόγους σαφήνειας όταν ... ... Wikipedia

    ανώτερη ψυχική λειτουργία: ανάκαμψη- (αποκατάσταση υψηλότερων νοητικών λειτουργιών) ένα τμήμα της νευροψυχολογίας αφιερωμένο στη μελέτη μηχανισμών και μεθόδων για την αποκατάσταση των λειτουργιών ανώτερων νοητικών λειτουργιών, που έχουν εξασθενήσει λόγω βλαβών του τοπικού εγκεφάλου του εγκεφάλου. Βασισμένο σε ιδέες για... Μεγάλη Ψυχολογική Εγκυκλοπαίδεια

    Ο μαθηματικός προγραμματισμός είναι ένας μαθηματικός κλάδος που μελετά τη θεωρία και τις μεθόδους για την επίλυση προβλημάτων εύρεσης ακραίων συναρτήσεων σε σύνολα πεπερασμένων διαστάσεων διανυσματικού χώρου που καθορίζεται από γραμμικούς και μη γραμμικούς περιορισμούς ... ... Wikipedia

    Στον τομέα της μηχανογράφησης, η έννοια των εργασιών προγραμματισμού δικτύου, ή αλλιώς αποκαλούμενη προγραμματισμός δικτύου, είναι αρκετά παρόμοια με τις έννοιες του προγραμματισμού υποδοχών και του προγραμματισμού πελάτη-διακομιστή, ... ... Wikipedia

    Μια συνάρτηση υψηλότερης τάξης είναι μια συνάρτηση που παίρνει άλλες συναρτήσεις ως ορίσματα ή επιστρέφει μια άλλη συνάρτηση ως αποτέλεσμα. Η βασική ιδέα είναι ότι οι συναρτήσεις έχουν την ίδια κατάσταση με άλλα αντικείμενα δεδομένων. ... ... Wikipedia

    ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑΤΙΚΩΝ- πολύπλοκα μαθηματικά. μοντέλα και μέθοδοι για την επίλυση προβλημάτων εύρεσης του άκρου (μέγιστου ή ελάχιστου) συναρτήσεων πολλών μεταβλητών υπό περιορισμούς με τη μορφή ανισοτήτων. Σημαίνει ότι οι μεταβλητές χαρακτηρίζουν ορισμένες πτυχές του μηχανισμού ... ... Ρωσική κοινωνιολογική εγκυκλοπαίδεια

    Μαθηματικός κλάδος που μελετά τα μαθηματικά. αφαιρέσεις προγραμμάτων, που αντιμετωπίζονται ως αντικείμενα που εκφράζονται σε επίσημη γλώσσα, με ορισμένες πληροφορίες και λογική. δομή και υπόκειται σε εκτέλεση σε αυτόματη. συσκευές. Π.τ........ Μαθηματική Εγκυκλοπαίδεια

    Μια συνάρτηση στον προγραμματισμό είναι ένας τύπος υπορουτίνας. Το χαρακτηριστικό που τη διακρίνει από άλλου είδους υπορουτίνες διαδικασίας είναι ότι η συνάρτηση επιστρέφει μια τιμή και η κλήση της μπορεί να χρησιμοποιηθεί στο πρόγραμμα ως έκφραση. Από την άποψη ... ... Wikipedia

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

Εάν είστε προγραμματιστής όπως εγώ, τότε πιθανότατα μάθατε πρώτα το παράδειγμα OOP. Η πρώτη σας γλώσσα ήταν η Java ή η C++ - ή, αν είστε τυχεροί, η Ruby, η Python ή η C# - επομένως πιθανότατα γνωρίζετε τι είναι οι κλάσεις, τα αντικείμενα, οι παρουσίες κ.λπ. Αυτό που σίγουρα δεν καταλαβαίνετε πολλά είναι τα βασικά αυτού του περίεργου παραδείγματος που ονομάζεται λειτουργικός προγραμματισμός, το οποίο διαφέρει σημαντικά όχι μόνο από το OOP, αλλά και από τον διαδικαστικό, τον προσανατολισμένο σε πρωτότυπα και άλλους τύπους προγραμματισμού.

Ο λειτουργικός προγραμματισμός γίνεται δημοφιλής - και για καλό λόγο. Το ίδιο το παράδειγμα δεν είναι καινούργιο: η Haskell είναι ίσως η πιο λειτουργική γλώσσα και ξεκίνησε τη δεκαετία του '90. Γλώσσες όπως οι Erlang, Scala, Clojure εμπίπτουν επίσης στον ορισμό του λειτουργικού. Ένα από τα κύρια πλεονεκτήματα του λειτουργικού προγραμματισμού είναι η δυνατότητα εγγραφής προγραμμάτων που λειτουργούν ταυτόχρονα (αν έχετε ήδη ξεχάσει τι είναι - ανανεώστε τη μνήμη σας διαβάζοντας) και χωρίς σφάλματα - δηλαδή τα αδιέξοδα και η ασφάλεια νημάτων δεν θα σας ενοχλήσουν.

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

Εισαγωγή: Όλες αυτές οι αρχές είναι προαιρετικές (πολλές γλώσσες δεν τις ακολουθούν πλήρως). Όλα είναι θεωρητικά και χρειάζονται για τον ακριβέστερο ορισμό του λειτουργικού παραδείγματος.

1. Όλες οι λειτουργίες είναι καθαρές

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

  1. Μια συνάρτηση που καλείται με τα ίδια ορίσματα επιστρέφει πάντα την ίδια τιμή.
  2. Δεν υπάρχουν παρενέργειες κατά την εκτέλεση της λειτουργίας.

Ο πρώτος κανόνας είναι σαφής - αν καλέσω τη συνάρτηση sum(2, 3), περιμένω ότι το αποτέλεσμα θα είναι πάντα 5. Μόλις καλέσετε τη συνάρτηση rand() ή αποκτήσετε πρόσβαση σε μια μεταβλητή που δεν ορίζεται στη συνάρτηση, παραβιάζεται η καθαρότητα της συνάρτησης και αυτό δεν επιτρέπεται στον λειτουργικό προγραμματισμό.

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

2. Όλες οι συναρτήσεις είναι πρώτης κατηγορίας και ανώτερης τάξης

Αυτή η έννοια δεν αποτελεί χαρακτηριστικό του FP (χρησιμοποιείται σε Javascript, PHP και άλλες γλώσσες) - αλλά είναι απαίτηση. Στην πραγματικότητα, η Wikipedia έχει ένα ολόκληρο άρθρο αφιερωμένο σε λειτουργίες πρώτης κατηγορίας. Για να είναι μια συνάρτηση πρώτης κατηγορίας, πρέπει να μπορεί να δηλωθεί ως μεταβλητή. Αυτό επιτρέπει τη λειτουργία της συνάρτησης ως κανονικού τύπου δεδομένων και εξακολουθεί να εκτελείται.

3. Οι μεταβλητές είναι αμετάβλητες

Όλα είναι απλά εδώ. Στον λειτουργικό προγραμματισμό, δεν μπορείτε να αλλάξετε μια μεταβλητή αφού έχει αρχικοποιηθεί. Μπορείτε να δημιουργήσετε νέες, αλλά δεν μπορείτε να αλλάξετε τις υπάρχουσες - και χάρη σε αυτό μπορείτε να είστε σίγουροι ότι καμία μεταβλητή δεν θα αλλάξει.

4. Σχετική διαφάνεια λειτουργιών

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

Ας υποθέσουμε ότι έχουμε μια συνάρτηση Java που προσθέτει 3 και 5:

Δημόσια int addNumbers()( return 3 + 5; ) addNumbers() // 8 8 // 8

Προφανώς, οποιαδήποτε κλήση σε αυτή τη συνάρτηση μπορεί να αντικατασταθεί από 8, πράγμα που σημαίνει ότι η συνάρτηση είναι σχετικά διαφανής. Ακολουθεί ένα παράδειγμα αδιαφανούς συνάρτησης:

Public void printText()( System.out.println("Hello World"); ) printText() // Δεν επιστρέφει τίποτα, αλλά εκτυπώνει το "Hello World"

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

5. Ο λειτουργικός προγραμματισμός βασίζεται στον λογισμό λάμδα

Ο λειτουργικός προγραμματισμός βασίζεται σε μεγάλο βαθμό σε ένα μαθηματικό σύστημα που ονομάζεται λογισμός λάμδα. Δεν είμαι μαθηματικός, επομένως δεν θα μπω σε λεπτομέρειες - αλλά θέλω να επισημάνω δύο βασικές αρχές του λογισμού λάμδα που αποτελούν την ίδια την έννοια του συναρτησιακού προγραμματισμού:

  1. Στον λογισμό λάμδα, όλες οι συναρτήσεις μπορούν να είναι ανώνυμες, αφού το μόνο σημαντικό μέρος της κεφαλίδας της συνάρτησης είναι η λίστα ορισμάτων.
  2. Όταν καλούνται, όλες οι συναρτήσεις περνούν από μια διαδικασία currying. Έχει ως εξής: εάν μια συνάρτηση καλείται με πολλά ορίσματα, τότε στην αρχή θα εκτελεστεί μόνο με το πρώτο όρισμα και θα επιστρέψει μια νέα συνάρτηση που περιέχει 1 όρισμα λιγότερο, το οποίο θα κληθεί αμέσως. Αυτή η διαδικασία είναι αναδρομική και συνεχίζεται μέχρι να εφαρμοστούν όλα τα ορίσματα, επιστρέφοντας το τελικό αποτέλεσμα. Δεδομένου ότι οι λειτουργίες είναι καθαρές, αυτό λειτουργεί.

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

συμπέρασμα

Ο λειτουργικός προγραμματισμός είναι μια πραγματική καταπόνηση του εγκεφάλου - αλλά είναι μια πολύ ισχυρή προσέγγιση και πιστεύω ότι η δημοτικότητά του μόνο θα αυξηθεί.

Εάν θέλετε να μάθετε περισσότερα σχετικά με τον λειτουργικό προγραμματισμό, τότε σας συμβουλεύουμε να δείτε τα παραδείγματα χρήσης των αρχών του FP σε JavaScript ( , ), καθώς και αυτό που είναι αφιερωμένο στη λειτουργική C#.