C++ Λειτουργίες με Παραδείγματα Προγράμματος

⚡ Έξυπνη Σύνοψη

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

  • 🧩 Αυτό που είναι: Μια συνάρτηση ομαδοποιεί εντολές που δέχονται παραμέτρους, τις επεξεργάζονται και επιστρέφουν μια τιμή, εκτελώντας μια κοινή εργασία από ένα μπλοκ.
  • 📚 Ενσωματωμένες λειτουργίες: The C++ Η τυπική βιβλιοθήκη παρέχει έτοιμες συναρτήσεις όπως η sqrt() τις οποίες καλείτε απευθείας χωρίς να τις γράψετε.
  • ️ Συναρτήσεις που ορίζονται από τον χρήστη: Οι προγραμματιστές δημιουργούν τις δικές τους συναρτήσεις, τις ονομάζουν μοναδικά και καλούν αυτόν τον κώδικα από οπουδήποτε στο πρόγραμμα.
  • 📝 Δήλωση και ορισμός: Ένα πρωτότυπο δηλώνει τον τύπο επιστροφής, το όνομα και τους τύπους ορίσματος· ο ορισμός παρέχει το σώμα της συνάρτησης.
  • 📞 Κλήση και ορίσματα: Η κλήση μιας συνάρτησης εκτελεί το σώμα της. Τα ορίσματα πρέπει να ταιριάζουν με τις παραμέτρους σε αριθμό και τύπο και επιτρέπονται οι προεπιλογές.
  • 🤖 Βοήθεια AI: GitHub Copilot και παρόμοιοι βοηθοί scaffold C++ υπογραφές συναρτήσεων, σώματα και κλήσεις από ένα σύντομο σχόλιο.

C++ Συναρτήσεις

Τι είναι μια συνάρτηση σε C++?

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

Κάθε C++ Το πρόγραμμα έχει τουλάχιστον μία συνάρτηση, τη συνάρτηση main(). Μπορείτε να χωρίσετε τον κώδικά σας σε διαφορετικές συναρτήσεις. Αυτή η διαίρεση πρέπει να είναι τέτοια ώστε κάθε συνάρτηση να κάνει μια συγκεκριμένη εργασία.

Υπάρχουν πολλές ενσωματωμένες λειτουργίες στο C++ τυπική βιβλιοθήκη. Μπορείτε να καλέσετε αυτές τις συναρτήσεις μέσα στο πρόγραμμά σας.

Γιατί να χρησιμοποιήσετε λειτουργίες;

Υπάρχουν πολλά οφέλη που σχετίζονται με τη χρήση λειτουργιών. Αυτά περιλαμβάνουν:

  • Κάθε συνάρτηση τοποθετεί σχετικό κώδικα μαζί. Αυτό διευκολύνει τους προγραμματιστές να κατανοήσουν τον κώδικα.
  • Οι λειτουργίες διευκολύνουν τον προγραμματισμό εξαλείφοντας την επανάληψη κώδικα.
  • Οι λειτουργίες διευκολύνουν την επαναχρησιμοποίηση του κώδικα. Μπορείτε να καλέσετε την ίδια λειτουργία για να εκτελέσετε μια εργασία σε διαφορετικά τμήματα του προγράμματος ή ακόμα και εκτός προγράμματος.

Ενσωματωμένες Λειτουργίες

In C++, οι λειτουργίες της βιβλιοθήκης είναι ενσωματωμένες C++ λειτουργίες. Για να χρησιμοποιήσετε αυτές τις λειτουργίες, απλώς τις καλείτε/καλείτε απευθείας. Δεν χρειάζεται να γράψετε μόνοι σας τις συναρτήσεις.

Παράδειγμα 1:

#include <iostream>
#include <cmath>
using namespace std;
int main() {
	double num, squareRoot;
	cout << "Enter number: ";
	cin >> num;
	squareRoot = sqrt(num);
	cout << "The square root of " << num << " is: " << squareRoot;
	return 0;
}

Παραγωγή:

Έξοδος του C++ παράδειγμα ενσωματωμένης συνάρτησης sqrt()

Εδώ είναι ένα στιγμιότυπο οθόνης του κώδικα:

C++ κώδικας που καλεί την ενσωματωμένη συνάρτηση sqrt() από το cmath

Code Επεξήγηση:

  1. Συμπεριλάβετε το αρχείο κεφαλίδας iostream στο πρόγραμμά μας για να χρησιμοποιήσετε τις λειτουργίες του.
  2. Συμπεριλάβετε τη βιβλιοθήκη cmath για να χρησιμοποιήσετε τις λειτουργίες της. Θέλουμε να χρησιμοποιήσουμε τη συνάρτηση sqrt() που ορίζεται σε αυτήν.
  3. Συμπεριλάβετε τον χώρο ονομάτων std στον κώδικά μας για να χρησιμοποιήσετε τις κλάσεις του χωρίς να τον καλέσετε.
  4. Καλέστε τη συνάρτηση main(). Η λογική του προγράμματος πρέπει να προστεθεί στο σώμα αυτής της συνάρτησης.
  5. Δηλώστε δύο διπλές μεταβλητές, num και SquareRoot.
  6. Εκτυπώστε λίγο κείμενο στην κονσόλα. Το κείμενο ζητά από τον χρήστη να εισαγάγει έναν αριθμό.
  7. Διαβάστε τα δεδομένα χρήστη από το πληκτρολόγιο. Η είσοδος θα γίνει η τιμή της μεταβλητής num.
  8. Καλέστε τη συνάρτηση βιβλιοθήκης sqrt(), η οποία υπολογίζει την τετραγωνική ρίζα ενός αριθμού. Περάσαμε την παράμετρο num στη συνάρτηση, δηλαδή θα υπολογίσει την τετραγωνική ρίζα του num. Αυτή η συνάρτηση ορίζεται στη βιβλιοθήκη cmath.
  9. Εκτυπώστε τον αριθμό που εισήγαγε ο χρήστης, την τετραγωνική του ρίζα και κάποιο άλλο κείμενο στην κονσόλα.
  10. Το πρόγραμμα πρέπει να επιστρέψει τιμή μετά την επιτυχή ολοκλήρωση.
  11. Τέλος του σώματος της συνάρτησης main().

Λειτουργίες που καθορίζονται από το χρήστη

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

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

Παράδειγμα 2:

#include <iostream>
using namespace std;

void sayHello() {
	cout << "Hello!";
}

int main() {

	sayHello();

	return 0;
}

Παραγωγή:

Έξοδος του C++ συνάρτηση sayHello() οριζόμενη από τον χρήστη

Εδώ είναι ένα στιγμιότυπο οθόνης του κώδικα:

C++ ορισμός κώδικα και κλήση συνάρτησης οριζόμενης από τον χρήστη

Code Επεξήγηση:

  1. Συμπεριλάβετε το αρχείο κεφαλίδας iostream στο πρόγραμμά μας για να χρησιμοποιήσετε τις λειτουργίες του.
  2. Συμπεριλάβετε τον χώρο ονομάτων std στον κώδικά μας για να χρησιμοποιήσετε τις κλάσεις του χωρίς να τον καλέσετε.
  3. Δημιουργήστε μια συνάρτηση που ορίζεται από το χρήστη με το όνομα sayHello().
  4. Εκτυπώστε κάποιο κείμενο στην κονσόλα όταν καλείται η συνάρτηση sayHello().
  5. Τέλος του σώματος της συνάρτησης sayHello().
  6. Καλέστε τη συνάρτηση main(). Η λογική του προγράμματος πρέπει να προστεθεί στο σώμα αυτής της συνάρτησης.
  7. Κλήση/επίκληση της συνάρτησης με το όνομα sayHello().
  8. Το πρόγραμμα πρέπει να επιστρέψει τιμή μετά την επιτυχή ολοκλήρωση.
  9. Τέλος του σώματος της συνάρτησης main().

Ο μεταγλωττιστής πρέπει να γνωρίζει μια συνάρτηση πριν τη χρησιμοποιήσει.

Δήλωση συνάρτησης/Πρωτότυπο

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

In C++, η δήλωση συνάρτησης/πρωτότυπο δηλώνει μια συνάρτηση χωρίς σώμα. Αυτό δίνει στον μεταγλωττιστή λεπτομέρειες της συνάρτησης που ορίζει ο χρήστης.

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

C++ διάγραμμα σύνταξης δήλωσης συνάρτησης/πρωτότυπου

Ορισμός λειτουργίας

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

C++ διάγραμμα δομής ορισμού συνάρτησης

Σύνταξη

return_datatype function_name( parameters) {
   function body 
}

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

  • return_datatype- Ορισμένες συναρτήσεις επιστρέφουν τιμή. Αυτή η παράμετρος υποδηλώνει τον τύπο δεδομένων της τιμής που επιστρέφεται. Ορισμένες συναρτήσεις δεν επιστρέφουν τιμή. Σε αυτήν την περίπτωση, η τιμή αυτής της παραμέτρου καθίσταται void.
  • function_name- Αυτό είναι το όνομα της συνάρτησης. Το όνομα της συνάρτησης και οι παράμετροι αποτελούν την υπογραφή της συνάρτησης.
  • Παράμετροι - Αυτός είναι ο τύπος, η σειρά και ο αριθμός των παραμέτρων της συνάρτησης. Ορισμένες συναρτήσεις δεν έχουν παραμέτρους.
  • σώμα συνάρτησης- αυτές είναι δηλώσεις που ορίζουν τι θα κάνει η συνάρτηση.

Κλήση λειτουργίας

Για να εκτελέσει μια συνάρτηση την καθορισμένη εργασία και να επιστρέψει έξοδο, πρέπει να κληθεί. Όταν καλείτε μια συνάρτηση, εκτελεί τις εντολές που προστίθενται στο σώμα της.

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

C++ διάγραμμα σύνταξης κλήσης συνάρτησης

Περνώντας Επιχειρήματα

In C++, ένα όρισμα/παράμετρος είναι τα δεδομένα που μεταβιβάζονται σε μια συνάρτηση κατά την κλήση της. Οι τιμές πρέπει να αρχικοποιηθούν στις αντίστοιχες μεταβλητές τους.

Κατά την κλήση μιας συνάρτησης, τα ορίσματα πρέπει να ταιριάζουν σε αριθμό. Αυτό σημαίνει ότι οι τιμές που περνάτε πρέπει να είναι ίσες με τον αριθμό των παραμέτρων. Και πάλι, οι τιμές πρέπει επίσης να ταιριάζουν με τις παραμέτρους ως προς τον τύπο. Εάν η πρώτη παράμετρος είναι ακέραιος αριθμός, η τιμή που της περνάει πρέπει να είναι ακέραια.

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

Παράδειγμα 3: Πώς να γράψετε και να καλέσετε μια συνάρτηση

#include <iostream>
using namespace std;
int addFunc(int, int);
int main() {
	int x, y, sum;
	cout << "Enter two numbers: ";
	cin >> x >> y;
	sum = addFunc(x, y);
	cout <<"The sum of "<<x<< " and " <<y<<" is: "<<sum;
	return 0;
}
int addFunc(int num1, int num2) {
	int addFunc;
	addFunc = num1 + num2;
	return addFunc;
}

Παραγωγή:

Έξοδος του C++ Συνάρτηση addFunc() που επιστρέφει ένα άθροισμα

Εδώ είναι ένα στιγμιότυπο οθόνης του κώδικα:

C++ κώδικας που μεταβιβάζει ορίσματα στη συνάρτηση addFunc()

Code Επεξήγηση:

  1. Συμπεριλάβετε το αρχείο κεφαλίδας iostream στο πρόγραμμά μας για να χρησιμοποιήσετε τις λειτουργίες του.
  2. Συμπεριλάβετε τον χώρο ονομάτων std στον κώδικά μας για να χρησιμοποιήσετε τις κλάσεις του χωρίς να τον καλέσετε.
  3. Δηλώστε μια συνάρτηση με το όνομα addFunc() που λαμβάνει δύο ακέραιους αριθμούς. Αυτό δημιουργεί το πρωτότυπο της συνάρτησης.
  4. Καλέστε τη συνάρτηση main(). Η λογική του προγράμματος πρέπει να προστεθεί στο σώμα αυτής της συνάρτησης.
  5. Δηλώστε τρεις ακέραιες μεταβλητές, x, y και sum.
  6. Εκτυπώστε λίγο κείμενο στην κονσόλα. Το κείμενο ζητά από τον χρήστη να εισάγει δύο αριθμούς.
  7. Διαβάστε την είσοδο του χρήστη από το πληκτρολόγιο. Ο χρήστης θα πρέπει να εισάγει δύο αριθμούς για τις μεταβλητές x και y, διαχωρισμένους με κενό διάστημα.
  8. Καλέστε τη συνάρτηση addFunc() και περνώντας της τις παραμέτρους x και y. Η συνάρτηση θα λειτουργήσει με αυτές τις παραμέτρους και θα εκχωρήσει την έξοδο στο μεταβλητό άθροισμα.
  9. Εκτυπώστε τις τιμές των μεταβλητών x, y και sum στην κονσόλα μαζί με άλλο κείμενο.
  10. Η συνάρτηση πρέπει να επιστρέψει τιμή μετά την επιτυχή ολοκλήρωση.
  11. Τέλος του σώματος της συνάρτησης main().
  12. Ορισμός συνάρτησης. Ορίζουμε τη συνάρτηση addFunc(). Θα αναφέρουμε τι θα κάνει η συνάρτηση μέσα στο σώμα της, το { }.
  13. Δήλωση μιας ακέραιας μεταβλητής με το όνομα addFunc.
  14. Προσθήκη των τιμών των παραμέτρων num1 και num2 και αντιστοίχιση του αποτελέσματος στη μεταβλητή addFunc.
  15. Η συνάρτηση addFunc() θα πρέπει να επιστρέψει την τιμή της μεταβλητής addFunc.
  16. Τέλος του σώματος συνάρτησης, δηλαδή ορισμός συνάρτησης.

Συχνές Ερωτήσεις

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

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

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

Μια αναδρομική συνάρτηση καλεί τον εαυτό της, διασπώντας ένα πρόβλημα σε μικρότερα υποπροβλήματα. Χρειάζεται μια βασική περίπτωση που σταματά την αναδρομή. Διαφορετικά, οι κλήσεις επαναλαμβάνονται επ' αόριστον και υπερχειλίζουν τη στοίβα. Το παραγοντικό είναι ένα κλασικό παράδειγμα.

Μεταβιβάζετε την παράμετρο ως δείκτη ή πίνακα μεγέθους και συνήθως στέλνετε το μήκος της ξεχωριστά, επειδή ο πίνακας αποσυντίθεται σε δείκτη. Δείτε μεταβίβαση πίνακες σε C++ λειτουργίες για ολοκληρωμένα επεξεργασμένα παραδείγματα.

Μια συνάρτηση επιστρέφει μία τιμή απευθείας, αλλά μπορείτε να επιστρέψετε αρκετές χρησιμοποιώντας παραμέτρους αναφοράς εξόδου, μια δομή, ένα std::pair, μια std::tuple ή ένα std::vector. Στη συνέχεια, οι δομημένες συνδέσεις αποσυμπιέζουν την επιστρεφόμενη πλειάδα στην τοποθεσία κλήσης.

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

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

Συνοψίστε αυτήν την ανάρτηση με: