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: