C++ Funksjoner med programeksempler

โšก Smart oppsummering

Funksjoner i C++ grupperer relaterte setninger i gjenbrukbare navngitte blokker som tar imot input, behandler den og returnerer output. Programmer kombinerer innebygde bibliotekfunksjoner og brukerdefinerte funksjoner, som hver er deklarert, definert og kalt for รฅ unngรฅ รฅ gjenta kode.

  • ๐Ÿงฉ Hva det er: En funksjon grupperer setninger som tar parametere, behandler dem og returnerer en verdi, og kjรธrer en felles oppgave fra รฉn blokk.
  • ๐Ÿ“š Innebygde funksjoner: Ocuco C++ Standardbiblioteket leverer ferdige funksjoner som sqrt() som du kaller direkte uten รฅ skrive dem.
  • ๐Ÿ› ๏ธ Brukerdefinerte funksjoner: Programmerere lager sine egne funksjoner, navngir dem unikt og pรฅkaller den koden fra hvor som helst i programmet.
  • ๐Ÿ“ Erklรฆring og definisjon: En prototype deklarerer returtypen, navnet og argumenttypene; definisjonen leverer funksjonsdelen.
  • ๐Ÿ“ž Anrop og argumenter: Nรฅr man kaller en funksjon, kjรธres brรธdteksten; argumenter mรฅ samsvare med parametere i antall og type, og standardverdier er tillatt.
  • ๐Ÿค– AI-hjelp: GitHub Copilot og lignende assistenter stillas C++ funksjonssignaturer, brรธdtekster og kall fra en kort kommentar.

C++ Funksjoner

Hva er en funksjon i C++?

En funksjon i C++ refererer til en gruppe utsagn som tar inn, behandler det og returnerer et utdata. Tanken bak en funksjon er รฅ kombinere vanlige oppgaver som gjรธres gjentatte ganger. Hvis du har forskjellige innganger, vil du ikke skrive den samme koden igjen. Du vil ganske enkelt kalle funksjonen med et annet sett med data kalt parametere.

hver enkelt C++ programmet har minst รฉn funksjon, main() funksjonen. Du kan dele koden inn i forskjellige funksjoner. Denne inndelingen bรธr vรฆre slik at hver funksjon utfรธrer en spesifikk oppgave.

Det er mange innebygde funksjoner i C++ standard bibliotek. Du kan kalle disse funksjonene i programmet ditt.

Hvorfor bruke funksjoner?

Det er mange fordeler forbundet med bruk av funksjoner. Disse inkluderer:

  • Hver funksjon setter relatert kode sammen. Dette gjรธr det lettere for programmerere รฅ forstรฅ kode.
  • Funksjoner gjรธr programmering enklere ved รฅ eliminere koderepetisjon.
  • Funksjoner forenkler kodegjenbruk. Du kan kalle den samme funksjonen for รฅ utfรธre en oppgave i forskjellige deler av programmet eller til og med utenfor programmet.

Innebygde funksjoner

In C++, bibliotekfunksjoner er innebygde C++ funksjoner. For รฅ bruke disse funksjonene, kaller du dem bare direkte. Du trenger ikke skrive funksjonene selv.

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

Utgang:

Utgang av C++ eksempel pรฅ innebygd sqrt()-funksjon

Her er et skjermbilde av koden:

C++ kode som kaller den innebygde sqrt()-funksjonen fra cmath

Code Forklaring:

  1. Inkluder iostream-headerfilen i programmet vรฅrt for รฅ bruke funksjonene.
  2. Inkluder cmath-biblioteket for รฅ bruke funksjonene. Vi รธnsker รฅ bruke funksjonen sqrt() definert i den.
  3. Inkluder std-navneomrรฅdet i koden vรฅr for รฅ bruke klassene uten รฅ kalle det.
  4. Kalle hoved()-funksjonen. Programlogikken skal legges til i hoveddelen av denne funksjonen.
  5. Deklarer to doble variable, num og kvadratrot.
  6. Skriv ut litt tekst pรฅ konsollen. Teksten ber brukeren skrive inn et tall.
  7. Les brukerinndata fra tastaturet. Inndata vil bli verdien av variabel num.
  8. Kall bibliotekfunksjonen sqrt(), som beregner kvadratroten av et tall. Vi ga parameteren num til funksjonen, noe som betyr at den vil beregne kvadratroten av num. Denne funksjonen er definert i cmath-biblioteket.
  9. Skriv ut nummeret som er angitt av brukeren, kvadratroten og annen tekst pรฅ konsollen.
  10. Programmet mรฅ returnere verdi ved vellykket gjennomfรธring.
  11. Slutten av hoveddelen av hoved()-funksjonen.

Brukerdefinerte funksjoner

C++ lar programmerere definere sine egne funksjoner. Hensikten med funksjonen er รฅ gruppere relatert kode. Koden fรฅr da en unik identifikator, funksjonsnavnet.

Funksjonen kan kalles/pรฅkalles fra en hvilken som helst annen del av programmet. Den vil deretter utfรธre koden som er definert i kroppen.

Eksempel 2:

#include <iostream>
using namespace std;

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

int main() {

	sayHello();

	return 0;
}

Utgang:

Utgang av C++ brukerdefinert sayHello()-funksjon

Her er et skjermbilde av koden:

C++ kode som definerer og kaller en brukerdefinert funksjon

Code Forklaring:

  1. Inkluder iostream-headerfilen i programmet vรฅrt for รฅ bruke funksjonene.
  2. Inkluder std-navneomrรฅdet i koden vรฅr for รฅ bruke klassene uten รฅ kalle det.
  3. Lag en brukerdefinert funksjon kalt sayHello().
  4. Skriv ut litt tekst pรฅ konsollen nรฅr sayHello()-funksjonen kalles.
  5. Slutten av brรธdteksten til sayHello()-funksjonen.
  6. Kalle hoved()-funksjonen. Programlogikken skal legges til i hoveddelen av denne funksjonen.
  7. Kalle/pรฅkall funksjonen kalt sayHello().
  8. Programmet mรฅ returnere verdi ved vellykket gjennomfรธring.
  9. Slutten av hoveddelen av hoved()-funksjonen.

Kompilatoren mรฅ kjenne en funksjon fรธr den brukes.

Funksjonserklรฆring/prototype

Hvis du definerer en brukerdefinert funksjon etter hoved()-funksjonen, vil C++ kompilatoren vil returnere en feil. ร…rsaken er at kompilatoren ikke kjenner detaljene til den brukerdefinerte funksjonen. Detaljene inkluderer navnet, typene argumenter og returtypene deres.

In C++, erklรฆrer funksjonserklรฆringen/prototypen en funksjon uten kropp. Dette gir kompilatoren detaljer om den brukerdefinerte funksjonen.

I deklarasjonen/prototypen inkluderer vi returtypen, funksjonsnavnet og argumenttypene. Navnene pรฅ argumentene er ikke lagt til. Men รฅ legge til argumentnavnene genererer ingen feil.

C++ funksjonsdeklarasjon/prototype syntaksdiagram

Funksjonsdefinisjon

Formรฅlet med funksjonserklรฆringen er รฅ fortelle C++ kompilator om funksjonsnavnet, returtypen og parametere. En funksjonsdefinisjon forteller C++ kompilator om funksjonskroppen.

C++ funksjonsdefinisjonsstrukturdiagram

syntax

return_datatype function_name( parameters) {
   function body 
}

Fra ovenstรฅende har en funksjonsdefinisjon funksjonens overskrift og brรธdtekst. Her er en forklaring av parametrene:

  • return_datatype โ€“ Noen funksjoner returnerer verdi. Denne parameteren angir datatypen til returverdien. Noen funksjoner returnerer ikke verdi. I sรฅ fall blir verdien til denne parameteren ugyldig.
  • funksjonsnavn- Dette er navnet pรฅ funksjonen. Funksjonsnavnet og parameterne danner funksjonssignaturen.
  • Parametre โ€“ Dette er typen, rekkefรธlgen og antallet funksjonsparametere. Noen funksjoner har ikke parametere.
  • funksjonskropp - dette er utsagn som definerer hva funksjonen skal gjรธre.

Funksjonsanrop

For at en funksjon skal utfรธre den angitte oppgaven og returnere utdata, mรฅ den kalles. Nรฅr du kaller en funksjon, utfรธrer den setningene som er lagt til i kroppen.

En funksjon kalles ved navn. Hvis funksjonen tar parametere, skal verdiene deres sendes under kallet. Hvis funksjonen ikke tar noen parametere, skal ingen verdi sendes under kallet.

C++ syntaksdiagram for funksjonskall

Bestรฅtte argumenter

In C++, et argument/parameter er dataene som sendes til en funksjon under kallet. Verdiene mรฅ initialiseres til sine respektive variabler.

Nรฅr du kaller en funksjon, mรฅ argumentene samsvare i antall. Dette betyr at verdiene du sender mรฅ vรฆre lik antall parametere. Igjen, verdiene mรฅ ogsรฅ samsvare med parameterne nรฅr det gjelder type. Hvis den fรธrste parameteren er et heltall, mรฅ verdien som sendes til den vรฆre et heltall.

Man kan tilordne standardverdier til funksjonsparametere. Hvis du ikke oppgir en verdi for parameteren under funksjonskallet, vil standardverdien bli brukt.

Eksempel 3: Hvordan skrive og kalle en funksjon

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

Utgang:

Utgang av C++ addFunc()-funksjonen returnerer en sum

Her er et skjermbilde av koden:

C++ kode som sender argumenter til addFunc()-funksjonen

Code Forklaring:

  1. Inkluder iostream-headerfilen i programmet vรฅrt for รฅ bruke funksjonene.
  2. Inkluder std-navneomrรฅdet i koden vรฅr for รฅ bruke klassene uten รฅ kalle det.
  3. Deklarer en funksjon kalt addFunc() som tar to heltallsparametere. Dette skaper funksjonsprototypen.
  4. Kalle hoved()-funksjonen. Programlogikken skal legges til i hoveddelen av denne funksjonen.
  5. Deklarer tre heltallsvariabler, x, y og sum.
  6. Skriv ut litt tekst pรฅ konsollen. Teksten ber brukeren skrive inn to tall.
  7. Les brukerinndataene fra tastaturet. Brukeren skal angi to tall for variablene x og y, atskilt med mellomrom.
  8. Kall funksjonen addFunc() og send parameterne x og y til den. Funksjonen vil operere pรฅ disse parameterne og tilordne utgangen til den variable summen.
  9. Skriv ut verdiene til variablene x, y og sum pรฅ konsollen sammen med annen tekst.
  10. Funksjonen mรฅ returnere verdi ved vellykket fullfรธring.
  11. Slutten av hoveddelen av hoved()-funksjonen.
  12. Funksjonsdefinisjon. Vi definerer funksjonen addFunc(). Vi vil angi hva funksjonen vil gjรธre i kroppen sin, { }.
  13. Erklรฆre en heltallsvariabel kalt addFunc.
  14. Legge til verdiene til parameterne num1 og num2 og tilordne resultatet til variabelen addFunc.
  15. AddFunc()-funksjonen skal returnere verdien til addFunc-variabelen.
  16. Slutt pรฅ funksjonskroppen, det vil si funksjonsdefinisjon.

Spรธrsmรฅl og svar

Call by value kopierer argumentet, slik at endringer i funksjonen ikke pรฅvirker originalen. Call by reference sender variabelen med et og-tegn, slik at funksjonen kan endre kallerens verdi direkte. C++ standardinnstillingen er รฅ kalle etter verdi.

Funksjonsoverbelastning lar flere funksjoner dele ett navn, men variere i antall eller type parametere. Kompilatoren velger riktig versjon fra argumentene du sender, noe som forbedrer lesbarheten for relaterte operasjoner.

En innebygd funksjon ber kompilatoren om รฅ sette inn brรธdteksten sin pรฅ hvert kallsted i stedet for รฅ foreta et vanlig kall. Dette kan redusere overhead for smรฅ funksjoner, selv om kompilatoren kan ignorere hintet.

En rekursiv funksjon kaller seg selv og deler opp et problem i mindre delproblemer. Den trenger et basistilfelle som stopper rekursjonen; ellers gjentar kallene seg for alltid og overfyller stakken. Faktorial er et klassisk eksempel.

Du sender parameteren som en peker eller en stรธrrelsesmatrise og sender vanligvis lengden separat, fordi matrisen henfaller til en peker. Se overfรธring arrayer i C++ funksjoner for fullstendige utarbeidede eksempler.

En funksjon returnerer รฉn verdi direkte, men du kan returnere flere ved hjelp av referanseparametere for utdata, en struct, et std::pair, en std::tuple eller en std::vector. Strukturerte bindinger pakker deretter ut den returnerte tuplen pรฅ kallestedet.

Ja. AI-kodingsassistenter gjรธr en kommentar i et enkelt sprรฅk om til en komplett C++ funksjon, som foreslรฅr signatur, brรธdtekst og returtype. De refaktorerer ogsรฅ lange funksjoner, men du bรธr gjennomgรฅ den genererte logikken.

GitHub Copilot autofullfรธringer C++ funksjonsdefinisjoner, prototyper og kall fra kommentarene eller navnene dine, foreslรฅr overbelastninger og lager utkast til enhetstester. Den bruker refererte overskrifter for kontekst, men alle forslag mรฅ fortsatt gjennomgรฅs.

Oppsummer dette innlegget med: