C++ Functies met programmavoorbeelden

โšก Slimme samenvatting

Functies in C++ Groepeer gerelateerde instructies in herbruikbare, benoemde blokken die invoer ontvangen, deze verwerken en uitvoer retourneren. Programma's combineren ingebouwde bibliotheekfuncties met door de gebruiker gedefinieerde functies, die elk afzonderlijk worden gedeclareerd, gedefinieerd en aangeroepen om herhaling van code te voorkomen.

  • ๐Ÿงฉ Wat het is: Een functie groepeert instructies die parameters ontvangen, deze verwerken en een waarde retourneren, waardoor een gemeenschappelijke taak vanuit รฉรฉn blok wordt uitgevoerd.
  • ๐Ÿ“š Ingebouwde functies: De C++ De standaardbibliotheek bevat kant-en-klare functies zoals sqrt() die u direct kunt aanroepen zonder ze zelf te hoeven schrijven.
  • ๏ธ Door de gebruiker gedefinieerde functies: Programmeurs maken hun eigen functies, geven ze een unieke naam en roepen die code overal in het programma aan.
  • ๐Ÿ“ Verklaring en definitie: Een prototype definieert het retourtype, de naam en de argumenttypen; de definitie levert de functiebody.
  • ๐Ÿ“ž Aanroep en argumenten: Bij het aanroepen van een functie wordt de functiebody uitgevoerd; argumenten moeten qua aantal en type overeenkomen met de parameters, en standaardwaarden zijn toegestaan.
  • ๐Ÿค– AI-assistentie: GitHub Copilot en vergelijkbare hulpmiddelen bieden een basisstructuur. C++ Functiesignaturen, -body's en -aanroepen vanuit een korte opmerking.

C++ Functies

Waar is een functie in C++?

Een functie binnen C++ verwijst naar een groep instructies die invoer opneemt, deze verwerkt en een uitvoer retourneert. Het idee achter een functie is het combineren van algemene taken die herhaaldelijk worden uitgevoerd. Als u verschillende invoergegevens heeft, schrijft u niet opnieuw dezelfde code. U roept eenvoudigweg de functie aan met een andere set gegevens, parameters genaamd.

Elke C++ programma heeft minstens รฉรฉn functie, de functie main(). U kunt uw code in verschillende functies verdelen. Deze verdeling moet zodanig zijn dat elke functie een specifieke taak uitvoert.

Er zijn veel ingebouwde functies in de C++ standaard bibliotheek. Deze functies kunt u binnen uw programma aanroepen.

Waarom functies gebruiken?

Er zijn talloze voordelen verbonden aan het gebruik van functies. Deze omvatten:

  • Elke functie voegt gerelateerde code samen. Dit maakt het voor programmeurs gemakkelijker om code te begrijpen.
  • Functies maken het programmeren eenvoudiger door herhaling van code te elimineren.
  • Functies vergemakkelijken het hergebruik van code. U kunt dezelfde functie aanroepen om een โ€‹โ€‹taak uit te voeren in verschillende delen van het programma of zelfs buiten het programma.

Ingebouwde functies

In C++, bibliotheekfuncties zijn ingebouwd C++ functies. Om deze functies te gebruiken, roept u ze eenvoudigweg rechtstreeks op. U hoeft de functies niet zelf te schrijven.

Voorbeeld 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;
}

Output:

Uitgang van de C++ voorbeeld van de ingebouwde sqrt()-functie

Hier is een screenshot van de code:

C++ Code die de ingebouwde sqrt()-functie van cmath aanroept.

Code Uitleg:

  1. Neem het iostream-headerbestand op in ons programma om de functies ervan te gebruiken.
  2. Voeg de cmath-bibliotheek toe om de functies ervan te gebruiken. We willen de functie sqrt() gebruiken die daarin is gedefinieerd.
  3. Neem de std-naamruimte op in onze code om de klassen ervan te gebruiken zonder deze aan te roepen.
  4. Roep de functie main() aan. De programmalogica moet worden toegevoegd aan de hoofdtekst van deze functie.
  5. Declareer twee dubbele variabelen, num en squareRoot.
  6. Druk wat tekst af op de console. In de tekst wordt de gebruiker gevraagd een getal in te voeren.
  7. Lees gebruikersinvoer vanaf het toetsenbord. De invoer wordt de waarde van variabele num.
  8. Roep de bibliotheekfunctie sqrt() aan, die de vierkantswortel van een getal berekent. We hebben de parameter num aan de functie doorgegeven, wat betekent dat deze de vierkantswortel van num berekent. Deze functie is gedefinieerd in de cmath-bibliotheek.
  9. Druk het door de gebruiker ingevoerde getal, de wortel ervan en een andere tekst af op de console.
  10. Het programma moet waarde retourneren na succesvolle voltooiing.
  11. Einde van de hoofdtekst van de functie main().

Door de gebruiker gedefinieerde functies

C++ stelt programmeurs in staat hun eigen functies te definiรซren. Het doel van de functie is om gerelateerde code te groeperen. De code krijgt dan een unieke identificatie, de functienaam.

De functie kan vanuit elk ander deel van het programma worden aangeroepen/aangeroepen. Vervolgens voert het de code uit die in zijn hoofdtekst is gedefinieerd.

Voorbeeld 2:

#include <iostream>
using namespace std;

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

int main() {

	sayHello();

	return 0;
}

Output:

Uitgang van de C++ door de gebruiker gedefinieerde sayHello()-functie

Hier is een screenshot van de code:

C++ Code die een door de gebruiker gedefinieerde functie definieert en aanroept.

Code Uitleg:

  1. Neem het iostream-headerbestand op in ons programma om de functies ervan te gebruiken.
  2. Neem de std-naamruimte op in onze code om de klassen ervan te gebruiken zonder deze aan te roepen.
  3. Maak een door de gebruiker gedefinieerde functie met de naam SayHello().
  4. Druk wat tekst af op de console wanneer de functie SayHello() wordt aangeroepen.
  5. Einde van de hoofdtekst van de functie SayHello().
  6. Roep de functie main() aan. De programmalogica moet worden toegevoegd aan de hoofdtekst van deze functie.
  7. Roep/roep de functie met de naam SayHello() aan.
  8. Het programma moet waarde retourneren na succesvolle voltooiing.
  9. Einde van de hoofdtekst van de functie main().

De compiler moet een functie kennen voordat deze gebruikt kan worden.

Functieverklaring/Prototype

Als u een door de gebruiker gedefinieerde functie definieert na de functie main(), wordt de C++ compiler zal een fout retourneren. De reden hiervoor is dat de compiler de details van de door de gebruiker gedefinieerde functie niet kent. De details omvatten de naam, de typen argumenten en hun retourtypen.

In C++, de functiedeclaratie/prototype declareert een functie zonder body. Dit geeft de compiler details van de door de gebruiker gedefinieerde functie.

In de declaratie/prototype nemen we het retourtype, de functienaam en argumenttypen op. De namen van argumenten worden niet toegevoegd. Het toevoegen van de argumentnamen genereert echter geen fout.

C++ syntaxisdiagram voor functiedeclaratie/prototype

Functiedefinitie

Het doel van de functiedeclaratie is om de C++ compiler over de functienaam, het retourtype en parameters. Een functiedefinitie vertelt de C++ compiler over de functiebody.

C++ structuurdiagram van de functiedefinitie

Syntaxis

return_datatype function_name( parameters) {
   function body 
}

Uit het bovenstaande blijkt dat een functiedefinitie de functiekoptekst en hoofdtekst heeft. Hier volgt een uitleg van de parameters:

  • return_datatype - Sommige functies retourneren een waarde. Deze parameter geeft het gegevenstype van de retourwaarde aan. Sommige functies retourneren geen waarde. In dat geval is de waarde van deze parameter void.
  • function_name- Dit is de naam van de functie. De functienaam en parameters vormen de functiehandtekening.
  • Parameters - Dit betreft het type, de volgorde en het aantal functieparameters. Sommige functies hebben geen parameters.
  • functielichaam - dit zijn uitspraken die definiรซren wat de functie zal doen.

Functie-oproep:

Als een functie de opgegeven taak wil uitvoeren en uitvoer wil retourneren, moet deze worden aangeroepen. Wanneer u een functie aanroept, voert deze de instructies uit die in de hoofdtekst zijn toegevoegd.

Een functie wordt aangeroepen met de naam ervan. Als de functie parameters vereist, moeten de waarden daarvan tijdens de aanroep worden doorgegeven. Als de functie geen parameters vereist, hoeft u tijdens de aanroep geen waarden door te geven.

C++ Syntaxisdiagram voor functieaanroepen

Argumenten doorgeven

In C++, een argument/parameter zijn de gegevens die tijdens de aanroep aan een functie worden doorgegeven. De waarden moeten worden geรฏnitialiseerd op basis van hun respectieve variabelen.

Bij het aanroepen van een functie moeten de argumenten in aantal overeenkomen. Dit betekent dat de waarden die je doorgeeft gelijk moeten zijn aan het aantal parameters. Ook moeten de waarden qua gegevenstype overeenkomen met de parameters. Als de eerste parameter een geheel getal is, moet de waarde die eraan wordt doorgegeven ook een geheel getal zijn.

Je kunt standaardwaarden toewijzen aan functieparameters. Als je tijdens de functieaanroep geen waarde voor de parameter doorgeeft, wordt de standaardwaarde gebruikt.

Voorbeeld 3: Hoe u een functie schrijft en oproept

#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;
}

Output:

Uitgang van de C++ addFunc() functie die een som retourneert

Hier is een screenshot van de code:

C++ code die argumenten doorgeeft aan de addFunc() functie

Code Uitleg:

  1. Neem het iostream-headerbestand op in ons programma om de functies ervan te gebruiken.
  2. Neem de std-naamruimte op in onze code om de klassen ervan te gebruiken zonder deze aan te roepen.
  3. Declareer een functie met de naam addFunc() waaraan twee gehele parameters moeten doorgegeven worden. Hierdoor ontstaat het functieprototype.
  4. Roep de functie main() aan. De programmalogica moet worden toegevoegd aan de hoofdtekst van deze functie.
  5. Declareer drie gehele variabelen, x, y en som.
  6. Print wat tekst op de console. De tekst vraagt โ€‹โ€‹de gebruiker om twee getallen in te voeren.
  7. Lees de gebruikersinvoer van het toetsenbord. De gebruiker moet twee getallen invoeren voor variabelen x en y, gescheiden door spaties.
  8. Roep de functie addFunc() aan en geef de parameters x en y door. De functie zal op deze parameters werken en de uitvoer toewijzen aan de variabele sum.
  9. Druk de waarden van variabelen x, y en som af op de console naast andere tekst.
  10. De functie moet na succesvolle voltooiing een waarde retourneren.
  11. Einde van de hoofdtekst van de functie main().
  12. Functiedefinitie. We definiรซren de functie addFunc(). We zullen aangeven wat de functie zal doen binnen zijn lichaam, de { }.
  13. Het declareren van een integer-variabele met de naam addFunc.
  14. Het optellen van de waarden van de parameters num1 en num2 en het toewijzen van het resultaat aan de variabele addFunc.
  15. De functie addFunc() moet de waarde van de variabele addFunc retourneren.
  16. Einde van het functielichaam, dat wil zeggen de functiedefinitie.

Veelgestelde vragen

Bij een functieaanroep per waarde wordt het argument gekopieerd, waardoor wijzigingen binnen de functie geen invloed hebben op het origineel. Bij een functieaanroep per referentie wordt de variabele doorgegeven met een ampersand, waardoor de functie de waarde van de aanroeper direct kan wijzigen. C++ Standaard wordt er gebeld op basis van waarde.

Functie-overloading maakt het mogelijk dat meerdere functies dezelfde naam delen, maar verschillen in het aantal of het type van hun parameters. De compiler kiest de juiste versie uit de argumenten die je doorgeeft, waardoor de leesbaarheid van gerelateerde bewerkingen verbetert.

Een inline-functie vraagt โ€‹โ€‹de compiler om de functiebody bij elke aanroep in te voegen in plaats van een normale aanroep te doen. Dit kan de overhead verminderen voor kleine functies, hoewel de compiler de hint mogelijk negeert.

Een recursieve functie roept zichzelf aan en verdeelt een probleem in kleinere deelproblemen. Het heeft een basisgeval nodig dat de recursie stopt; anders worden de aanroepen oneindig herhaald en loopt de stack over. Faculteit is een klassiek voorbeeld.

Je geeft de parameter door als een pointer of een array van een bepaalde grootte en stuurt de lengte meestal apart mee, omdat de array wordt gereduceerd tot een pointer. Zie 'Passen'. arrays in C++ functies voor complete uitgewerkte voorbeelden.

Een functie retourneert direct รฉรฉn waarde, maar je kunt er meerdere retourneren met behulp van uitvoerreferentieparameters, een struct, een std::pair, een std::tuple of een std::vector. Gestructureerde bindingen pakken de geretourneerde tuple vervolgens uit op de plaats van de aanroep.

Ja. AI-codeerassistenten zetten een opmerking in gewone taal om in een complete code. C++ Ze geven suggesties voor de functie, zoals de signatuur, de body en het retourtype. Ook worden lange functies geherstructureerd, al moet je de gegenereerde logica wel controleren.

GitHub-copiloot automatisch aanvullen C++ Het programma analyseert functiedefinities, prototypes en aanroepen op basis van uw opmerkingen of namen, stelt overloads voor en schrijft unit tests. Het gebruikt de daarin opgenomen headers voor context, maar elke suggestie moet nog worden beoordeeld.

Vat dit bericht samen met: