Τι είναι μια συνάρτηση στο C;
Η λειτουργία στον προγραμματισμό C είναι ένα επαναχρησιμοποιήσιμο μπλοκ κώδικα που κάνει ένα πρόγραμμα πιο κατανοητό, ελέγχει και μπορεί εύκολα να τροποποιηθεί χωρίς να αλλάξει το πρόγραμμα κλήσης. Οι λειτουργίες διαιρούν τον κώδικα και διαμορφώνουν το πρόγραμμα για καλύτερα και αποτελεσματικά αποτελέσματα. Εν ολίγοις, ένα μεγαλύτερο πρόγραμμα χωρίζεται σε διάφορα υποπρογράμματα που καλούνται ως συναρτήσεις
Όταν διαιρείτε ένα μεγάλο πρόγραμμα σε διάφορες λειτουργίες, γίνεται εύκολη η διαχείριση κάθε λειτουργίας ξεχωριστά. Κάθε φορά που παρουσιάζεται σφάλμα στο πρόγραμμα, μπορείτε εύκολα να ερευνήσετε ελαττωματικές λειτουργίες και να διορθώσετε μόνο αυτά τα σφάλματα. Μπορείτε εύκολα να καλέσετε και να χρησιμοποιήσετε λειτουργίες όποτε απαιτούνται, κάτι που οδηγεί αυτόματα στην εξοικονόμηση χρόνου και χώρου.
Σε αυτό το σεμινάριο, θα μάθετε-
- Βιβλιοθήκη Vs. Λειτουργίες που καθορίζονται από το χρήστη
- Δήλωση λειτουργίας
- Ορισμός λειτουργίας
- Κλήση λειτουργίας
- Επιχειρήματα Λειτουργίας
- Μεταβλητό εύρος
- Στατικές μεταβλητές
- Αναδρομικές συναρτήσεις
- Ενσωματωμένες συναρτήσεις
Βιβλιοθήκη Vs. Λειτουργίες που καθορίζονται από το χρήστη
Κάθε πρόγραμμα «C» έχει τουλάχιστον μία λειτουργία που είναι η κύρια λειτουργία, αλλά ένα πρόγραμμα μπορεί να έχει οποιονδήποτε αριθμό λειτουργιών. Η κύρια () συνάρτηση στο C είναι ένα σημείο εκκίνησης ενός προγράμματος.
Στον προγραμματισμό «C», οι συναρτήσεις χωρίζονται σε δύο τύπους:
- Λειτουργίες βιβλιοθήκης
- Λειτουργίες που καθορίζονται από το χρήστη
Η διαφορά μεταξύ της βιβλιοθήκης και των λειτουργιών που καθορίζονται από το χρήστη στο C είναι ότι δεν χρειάζεται να γράψουμε έναν κωδικό για μια λειτουργία βιβλιοθήκης. Είναι ήδη παρόν μέσα στο αρχείο κεφαλίδας το οποίο συμπεριλαμβάνουμε πάντα στην αρχή ενός προγράμματος. Απλώς πρέπει να πληκτρολογήσετε το όνομα μιας συνάρτησης και να τη χρησιμοποιήσετε μαζί με τη σωστή σύνταξη. Printf, scanf είναι τα παραδείγματα μιας λειτουργίας βιβλιοθήκης.
Ενώ, μια συνάρτηση που καθορίζεται από τον χρήστη είναι ένας τύπος συνάρτησης στον οποίο πρέπει να γράψουμε ένα σώμα μιας συνάρτησης και να καλέσουμε τη συνάρτηση όποτε χρειαζόμαστε τη λειτουργία για να εκτελέσουμε κάποια λειτουργία στο πρόγραμμά μας.
Μια συνάρτηση που καθορίζεται από τον χρήστη στο C γράφεται πάντα από τον χρήστη, αλλά αργότερα μπορεί να είναι μέρος της βιβλιοθήκης «C». Είναι ένα μεγάλο πλεονέκτημα του προγραμματισμού «C».
Οι συναρτήσεις προγραμματισμού C χωρίζονται σε τρεις δραστηριότητες όπως,
- Δήλωση λειτουργίας
- Ορισμός λειτουργίας
- Κλήση λειτουργίας
Δήλωση λειτουργίας
Δήλωση λειτουργίας σημαίνει τη σύνταξη ονόματος ενός προγράμματος. Είναι υποχρεωτικό μέρος για τη χρήση συναρτήσεων σε κώδικα. Σε μια δήλωση συνάρτησης, απλώς καθορίζουμε το όνομα μιας συνάρτησης που πρόκειται να χρησιμοποιήσουμε στο πρόγραμμά μας, όπως μια μεταβλητή δήλωση. Δεν μπορούμε να χρησιμοποιήσουμε μια συνάρτηση αν δεν δηλωθεί σε ένα πρόγραμμα. Μια δήλωση συνάρτησης ονομάζεται επίσης " Πρωτότυπο λειτουργίας ".
Οι δηλώσεις συνάρτησης (που ονομάζονται πρωτότυπο) γίνονται συνήθως πάνω από την κύρια συνάρτηση () και έχουν τη γενική μορφή:
return_data_type function_name (data_type arguments);
- The return_data_type : είναι ο τύπος δεδομένων της συνάρτησης τιμής που επιστρέφεται στη δήλωση κλήσης.
- Το function_name : ακολουθείται από παρενθέσεις
- Τα ονόματα των επιχειρημάτων με τις δηλώσεις τύπου δεδομένων τους τοποθετούνται προαιρετικά εντός των παρενθέσεων.
Θεωρούμε το ακόλουθο πρόγραμμα που δείχνει τον τρόπο δήλωσης μιας συνάρτησης κύβου για τον υπολογισμό της τιμής κύβου μιας ακέραιας μεταβλητής
#include/*Function declaration*/int add(int a,b);/*End of Function declaration*/int main() {
Λάβετε υπόψη ότι μια συνάρτηση δεν επιστρέφει απαραίτητα μια τιμή. Σε αυτήν την περίπτωση, χρησιμοποιείται η λέξη-κλειδί κενό.
Για παράδειγμα, η δήλωση συνάρτησης output_message υποδεικνύει ότι η συνάρτηση δεν επιστρέφει μια τιμή: void output_message ();
Ορισμός λειτουργίας
Ο ορισμός συνάρτησης σημαίνει απλώς τη σύνταξη του σώματος μιας συνάρτησης. Ένα σώμα μιας συνάρτησης αποτελείται από δηλώσεις που πρόκειται να εκτελέσουν μια συγκεκριμένη εργασία. Ένα σώμα συναρτήσεων αποτελείται από ένα μόνο ή ένα μπλοκ δηλώσεων. Είναι επίσης υποχρεωτικό μέρος μιας συνάρτησης.
int add(int a,int b) //function body{int c;c=a+b;return c;}
Κλήση λειτουργίας
Κλήση λειτουργίας σημαίνει κλήση μιας λειτουργίας όποτε απαιτείται σε ένα πρόγραμμα. Κάθε φορά που καλούμε μια συνάρτηση, εκτελεί μια λειτουργία για την οποία είχε σχεδιαστεί. Μια κλήση λειτουργίας είναι ένα προαιρετικό μέρος ενός προγράμματος.
result = add(4,5);
Εδώ είναι ο πλήρης κωδικός:
#includeint add(int a, int b); //function declarationint main(){int a=10,b=20;int c=add(10,20); //function callprintf("Addition:%d\n",c);getch();}int add(int a,int b) //function body{int c;c=a+b;return c;}
Παραγωγή:
Addition:30
Επιχειρήματα Λειτουργίας
Τα ορίσματα μιας συνάρτησης χρησιμοποιούνται για τη λήψη των απαραίτητων τιμών από την κλήση συνάρτησης. Ταιριάζουν με τη θέση. το πρώτο όρισμα μεταφέρεται στην πρώτη παράμετρο, το δεύτερο στη δεύτερη παράμετρο και ούτω καθεξής.
Από προεπιλογή, τα ορίσματα μεταβιβάζονται από την τιμή στην οποία ένα αντίγραφο των δεδομένων δίνεται στη λειτουργία που ονομάζεται. Η μεταβλητή που πέρασε πραγματικά δεν θα αλλάξει.
Θεωρούμε το ακόλουθο πρόγραμμα που δείχνει παραμέτρους που έχουν περάσει από την τιμή:
int add (int x, int y);int main() {int a, b, result;a = 5;b = 10;result = add(a, b);printf("%d + %d\ = %d\n", a, b, result);return 0;}int add (int x, int y) {x += y;return(x);}
Η έξοδος του προγράμματος είναι:
5 + 10 = 15
Λάβετε υπόψη ότι οι τιμές των a και b μεταβιβάστηκαν για να προσθέσετε τη συνάρτηση δεν άλλαξαν επειδή μόνο η τιμή της μεταβιβάστηκε στην παράμετρο x.
Μεταβλητό εύρος
Μεταβλητό εύρος σημαίνει την ορατότητα των μεταβλητών μέσα σε έναν κώδικα του προγράμματος.
Στο C, οι μεταβλητές που δηλώνονται μέσα σε μια συνάρτηση είναι τοπικές σε αυτό το μπλοκ κώδικα και δεν μπορούν να αναφέρονται εκτός της συνάρτησης. Ωστόσο, οι μεταβλητές που δηλώνονται εκτός όλων των λειτουργιών είναι καθολικές και προσβάσιμες από ολόκληρο το πρόγραμμα. Οι σταθερές που δηλώνονται με #define στην κορυφή ενός προγράμματος είναι προσβάσιμες από ολόκληρο το πρόγραμμα. Θεωρούμε το ακόλουθο πρόγραμμα που εκτυπώνει την τιμή της καθολικής μεταβλητής τόσο από την κύρια όσο και από τη λειτουργία που ορίζεται από τον χρήστη:
#includeint global = 1348;void test();int main() {printf("from the main function : global =%d \n", global);test () ;return 0;}void test (){printf("from user defined function : global =%d \n", global);}
Αποτέλεσμα:
from the main function : global =1348from user defined function : global =1348
Συζητάμε τις λεπτομέρειες του προγράμματος:
- Δηλώνουμε μια ακέραια μεταβλητή globale με 1348 ως αρχική τιμή.
- Δηλώνουμε και ορίζουμε μια δοκιμαστική συνάρτηση που δεν λαμβάνει επιχειρήματα ούτε επιστρέφει μια τιμή. Αυτή η συνάρτηση εκτυπώνει μόνο την τιμή μεταβλητής globale για να δείξει ότι οι καθολικές μεταβλητές είναι προσβάσιμες οπουδήποτε στο πρόγραμμα.
- Εκτυπώνουμε την καθολική μεταβλητή μέσα στην κύρια συνάρτηση.
- Καλούμε τη δοκιμαστική συνάρτηση για να εκτυπώσουμε την καθολική μεταβλητή τιμή.
Στο C, όταν τα ορίσματα μεταβιβάζονται σε παραμέτρους συνάρτησης, οι παράμετροι ενεργούν ως τοπικές μεταβλητές που θα καταστραφούν κατά την έξοδο από τη συνάρτηση.
Όταν χρησιμοποιείτε καθολικές μεταβλητές, χρησιμοποιήστε τις με προσοχή γιατί μπορεί να οδηγήσουν σε σφάλματα και μπορούν να αλλάξουν οπουδήποτε σε ένα πρόγραμμα. Πρέπει να προετοιμαστούν πριν από τη χρήση.
Στατικές μεταβλητές
Οι στατικές μεταβλητές έχουν τοπικό εύρος. Ωστόσο, δεν καταστρέφονται κατά την έξοδο από τη λειτουργία. Επομένως, μια στατική μεταβλητή διατηρεί την τιμή της για πάντα και μπορεί να προσεγγιστεί όταν η συνάρτηση εισαχθεί ξανά. Μια στατική μεταβλητή αρχικοποιείται όταν δηλώνεται και χρειάζεται το πρόθεμα στατικό.
Το ακόλουθο πρόγραμμα χρησιμοποιεί μια στατική μεταβλητή:
#includevoid say_hi();int main() {int i;for (i = 0; i < 5; i++) { say_hi();}return 0;}void say_hi() {static int calls_number = 1;printf("Hi number %d\n", calls_number);calls_number ++; }
Το πρόγραμμα εμφανίζει:
Hi number 1Hi number 2Hi number 3Hi number 4Hi number 5
Αναδρομικές συναρτήσεις
Εξετάστε το παραγοντικό ενός αριθμού που υπολογίζεται ως εξής 6! = 6 * 5 * 4 * 3 * 2 * 1.
Αυτός ο υπολογισμός γίνεται ως επανειλημμένος υπολογισμός γεγονότος * (γεγονός -1) έως ότου το γεγονός ισούται με 1.
Μια αναδρομική συνάρτηση είναι μια συνάρτηση που καλείται και περιλαμβάνει μια κατάσταση εξόδου προκειμένου να ολοκληρωθούν οι αναδρομικές κλήσεις. Στην περίπτωση του υπολογισμού του παραγοντικού αριθμού, η συνθήκη εξόδου ισούται με το 1. Η επανάληψη λειτουργεί με "στοίβαξη" κλήσεων έως ότου ισχύει η συνθήκη εξόδου.
Για παράδειγμα:
#includeint factorial(int number);int main() {int x = 6;printf("The factorial of %d is %d\n", x, factorial(x));return 0;}int factorial(int number) {if (number == 1) return (1); /* exiting condition */elsereturn (number * factorial(number - 1));}
Το πρόγραμμα εμφανίζει:
The factorial of 6 is 720
Εδώ, συζητάμε λεπτομέρειες προγράμματος:
- Δηλώνουμε την αναδρομική συντελεστή συντελεστή που λαμβάνει μια ακέραια παράμετρο και επιστρέφει την παραγοντική αυτής της παραμέτρου. Αυτή η συνάρτηση θα καλέσει τον εαυτό της και θα μειώσει τον αριθμό έως ότου επιτευχθεί η έξοδος ή η συνθήκη βάσης. Όταν η συνθήκη είναι αληθής, οι τιμές που έχουν δημιουργηθεί προηγουμένως πολλαπλασιάζονται μεταξύ τους και επιστρέφεται η τελική παραγοντική τιμή.
- Δηλώνουμε και αρχικοποιούμε μια ακέραια μεταβλητή με την τιμή "6" και στη συνέχεια εκτυπώνουμε την παραγοντική της τιμή καλώντας τη συντελεστή μας.
Εξετάστε το παρακάτω γράφημα για να κατανοήσετε περισσότερο τον αναδρομικό μηχανισμό που συνίσταται στην κλήση της συνάρτησης μόνη της έως ότου επιτευχθεί η βασική περίπτωση ή η κατάσταση διακοπής και μετά από αυτό, συλλέγουμε τις προηγούμενες τιμές:
Ενσωματωμένες συναρτήσεις
Η λειτουργία στον προγραμματισμό C χρησιμοποιείται για την αποθήκευση των πιο συχνά χρησιμοποιούμενων οδηγιών. Χρησιμοποιείται για τη διαμόρφωση του προγράμματος.
Κάθε φορά που καλείται μια συνάρτηση, ο δείκτης εντολών μεταβαίνει στον ορισμό της συνάρτησης. Μετά την εκτέλεση μιας συνάρτησης, ο δείκτης εντολών επιστρέφει στη δήλωση από όπου πήγε στον ορισμό της συνάρτησης.
Όποτε χρησιμοποιούμε συναρτήσεις, απαιτούμε μια επιπλέον κεφαλή δείκτη για να μεταβούμε στον ορισμό της συνάρτησης και να επιστρέψουμε στη δήλωση. Για την εξάλειψη της ανάγκης τέτοιων κεφαλών δείκτη, χρησιμοποιούμε ενσωματωμένες συναρτήσεις.
Σε μια ενσωματωμένη συνάρτηση, μια κλήση συνάρτησης αντικαθίσταται απευθείας από έναν πραγματικό κωδικό προγράμματος. Δεν μεταβαίνει σε κανένα μπλοκ, επειδή όλες οι λειτουργίες εκτελούνται εντός της λειτουργίας inline.
Οι ενσωματωμένες συναρτήσεις χρησιμοποιούνται κυρίως για μικρούς υπολογισμούς. Δεν είναι κατάλληλα όταν πρόκειται για μεγάλους υπολογιστές.
Μια ενσωματωμένη συνάρτηση είναι παρόμοια με την κανονική συνάρτηση εκτός από το ότι η λέξη-κλειδί inline βρίσκεται πριν από το όνομα της συνάρτησης. Οι ενσωματωμένες συναρτήσεις δημιουργούνται με την ακόλουθη σύνταξη:
inline function_name (){//function definition}
Ας γράψουμε ένα πρόγραμμα για να εφαρμόσουμε μια ενσωματωμένη συνάρτηση.
inline int add(int a, int b) //inline function declaration{return(a+b);}int main(){int c=add(10,20);printf("Addition:%d\n",c);getch();}
Παραγωγή:
Addition: 30
Το παραπάνω πρόγραμμα δείχνει τη χρήση μιας ενσωματωμένης συνάρτησης για την προσθήκη δύο αριθμών. Όπως μπορούμε να δούμε, έχουμε επιστρέψει την προσθήκη σε δύο αριθμούς στη λειτουργία inline μόνο χωρίς να γράψουμε επιπλέον γραμμές. Κατά τη διάρκεια της κλήσης συνάρτησης μόλις περάσαμε τιμές στις οποίες πρέπει να κάνουμε προσθήκη.
Περίληψη
- Η συνάρτηση είναι ένα μίνι πρόγραμμα ή ένα υποπρόγραμμα.
- Οι λειτουργίες χρησιμοποιούνται για τη διαμόρφωση του προγράμματος.
- Η βιβλιοθήκη και ορίζεται από τον χρήστη είναι δύο τύποι λειτουργιών.
- Μια συνάρτηση αποτελείται από μια δήλωση, ένα σώμα λειτουργίας και ένα μέρος κλήσης συνάρτησης.
- Η δήλωση λειτουργίας και το σώμα είναι υποχρεωτικά.
- Μια κλήση λειτουργίας μπορεί να είναι προαιρετική σε ένα πρόγραμμα.
- Το πρόγραμμα C έχει τουλάχιστον μία λειτουργία. είναι η κύρια λειτουργία ().
- Κάθε συνάρτηση έχει ένα όνομα, τύπο δεδομένων τιμής επιστροφής ή κενό, παραμέτρους.
- Κάθε συνάρτηση πρέπει να καθοριστεί και να δηλωθεί στο πρόγραμμα C.
- Λάβετε υπόψη ότι οι συνηθισμένες μεταβλητές σε μια συνάρτηση C καταστρέφονται μόλις βγούμε από την κλήση συνάρτησης.
- Τα ορίσματα που μεταβιβάστηκαν σε μια συνάρτηση δεν θα αλλάξουν επειδή δεν πέρασαν από την τιμή κανένας από τη διεύθυνση.
- Το εύρος μεταβλητών αναφέρεται ως ορατότητα των μεταβλητών μέσα σε ένα πρόγραμμα
- Υπάρχουν παγκόσμιες και τοπικές μεταβλητές στον προγραμματισμό Γ