Funkcije v programiranju C s primeri: rekurzivno, vstavljeno

Kazalo:

Anonim

Kaj je funkcija v C?

Funkcija v programiranju C je blok kode za večkratno uporabo, ki olajša razumevanje, preizkušanje programa in ga je mogoče enostavno spremeniti brez spreminjanja klicnega programa. Funkcije delijo kodo in modulirajo program za boljše in učinkovitejše rezultate. Skratka, večji program je razdeljen na različne podprograme, ki se imenujejo funkcije

Ko velik program razdelite na različne funkcije, postane enostavno upravljanje vsake funkcije posebej. Vsakič, ko pride do napake v programu, lahko zlahka raziščete napačne funkcije in popravite samo te napake. Funkcije lahko preprosto pokličete in uporabite kadar koli so potrebne, kar samodejno prihrani čas in prostor.

V tej vadnici boste izvedeli-

  • Knjižnica vs. Uporabniško določene funkcije
  • Izjava o funkciji
  • Opredelitev funkcije
  • Klic funkcije
  • Argumenti funkcije
  • Spremenljiv obseg
  • Statične spremenljivke
  • Rekurzivne funkcije
  • Vgrajene funkcije

Knjižnica vs. Uporabniško določene funkcije

Vsak program 'C' ima vsaj eno funkcijo, ki je glavna funkcija, lahko pa ima program poljubno število funkcij. Glavna () funkcija v C je izhodišče programa.

Pri programiranju 'C' so funkcije razdeljene na dve vrsti:

  1. Knjižnične funkcije
  2. Uporabniško določene funkcije

Razlika med knjižnico in uporabniško določenimi funkcijami v C je, da nam ni treba pisati kode za funkcijo knjižnice. Prisotna je že v zaglavni datoteki, ki jo vedno vključimo na začetku programa. Vtipkati morate samo ime funkcije in ga uporabiti skupaj z ustrezno sintakso. Printf, scanf so primeri knjižnične funkcije.

Uporabniško določena funkcija je vrsta funkcije, pri kateri moramo napisati telo funkcije in poklicati funkcijo, kadar koli od funkcije zahtevamo, da izvede nekaj operacij v našem programu.

Uporabniško določeno funkcijo v jeziku C vedno napiše uporabnik, pozneje pa je lahko del knjižnice 'C'. To je velika prednost programiranja 'C'.

Funkcije programiranja C so razdeljene na tri dejavnosti, kot so:

  1. Izjava o funkciji
  2. Opredelitev funkcije
  3. Klic funkcije

Izjava o funkciji

Izjava o funkciji pomeni pisanje imena programa. Je obvezen del za uporabo funkcij v kodi. V izjavi funkcije samo določimo ime funkcije, ki jo bomo v našem programu uporabili kot izjavo spremenljivke. Funkcije ne moremo uporabljati, če ni navedena v programu. Deklaracija funkcije se imenuje tudi " Prototip funkcije ".

Deklaracije funkcij (imenovane prototip) se običajno izvedejo nad glavno () funkcijo in imajo splošno obliko:

return_data_type function_name (data_type arguments);
  • Return_data_type : je podatkovni tip funkcije vrednosti vrne nazaj k kliče izjavo.
  • FUNCTION_NAME : sledi oklepajih
  • Imena argumentov z njihovimi izjavami podatkovnega tipa so neobvezno vstavljena v oklepaje.

Upoštevamo naslednji program, ki prikazuje, kako razglasiti funkcijo kocke za izračun vrednosti kocke celoštevilčne spremenljivke

#include /*Function declaration*/int add(int a,b);/*End of Function declaration*/int main() {

Upoštevajte, da funkcija ne vrne nujno vrednosti. V tem primeru se uporabi ključna beseda void.

Na primer, izjava funkcije output_message označuje, da funkcija ne vrne vrednosti: void output_message ();

Opredelitev funkcije

Opredelitev funkcije pomeni samo pisanje telesa funkcije. Telo funkcije je sestavljeno iz stavkov, ki bodo izvedli določeno nalogo. Telo funkcije je sestavljeno iz enega ali bloka stavkov. Prav tako je obvezen del funkcije.

int add(int a,int b) //function body{int c;c=a+b;return c;}

Klic funkcije

Klic funkcije pomeni klic funkcije, kadar koli je to potrebno v programu. Kadarkoli pokličemo funkcijo, ta izvede operacijo, za katero je bila zasnovana. Funkcijski klic je neobvezen del programa.

 result = add(4,5);

Tu je popolna koda:

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

Izhod:

Addition:30

Argumenti funkcije

Argumenti funkcije se uporabljajo za sprejem potrebnih vrednosti s klicem funkcije. Ujemajo se po položaju; prvi argument se posreduje prvemu parametru, drugi drugemu parametru itd.

Argumenti se privzeto posredujejo po vrednosti, v kateri se izbrani funkciji dodeli kopija podatkov. Dejansko posredovana spremenljivka se ne bo spremenila.

Upoštevamo naslednji program, ki prikazuje parametre, posredovane po vrednosti:

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

Rezultat programa je:

5 + 10 = 15 

Upoštevajte, da vrednosti a in b, posredovane funkciji dodajanja, niso bile spremenjene, ker je bila v parameter x posredovana le njena vrednost.

Spremenljiv obseg

Spremenljiv obseg pomeni vidnost spremenljivk znotraj kode programa.

V C so spremenljivke, ki so deklarirane znotraj funkcije, lokalne za ta blok kode in nanje ni mogoče sklicevati zunaj funkcije. Vendar so spremenljivke, ki so deklarirane zunaj vseh funkcij, globalne in dostopne iz celotnega programa. Konstante, označene z #define na vrhu programa, so dostopne iz celotnega programa. Upoštevamo naslednji program, ki natisne vrednost globalne spremenljivke iz glavne in uporabniško določene funkcije:

#include int 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);}

Rezultat:

from the main function : global =1348from user defined function : global =1348

Podrobnosti programa obravnavamo:

  1. Za začetno vrednost razglasimo celoštevilčno spremenljivko globale s 1348.
  2. Deklariramo in definiramo funkcijo test (), ki niti ne sprejema argumentov niti ne vrne vrednosti. Ta funkcija natisne vrednost globalne spremenljivke samo, da dokaže, da je do globalnih spremenljivk mogoče dostopati kjer koli v programu.
  3. Globalno spremenljivko natisnemo znotraj glavne funkcije.
  4. Za tiskanje vrednosti globalne spremenljivke pokličemo testno funkcijo v orde.

Ko se argumenti posredujejo parametrom funkcije v C, parametri delujejo kot lokalne spremenljivke, ki bodo uničene ob izhodu iz funkcije.

Ko uporabljate globalne spremenljivke, jih uporabljajte previdno, ker lahko povzročijo napake in se lahko spremenijo kjer koli v programu. Pred uporabo jih je treba inicializirati.

Statične spremenljivke

Statične spremenljivke imajo lokalni obseg. Vendar se ob izhodu iz funkcije ne uničijo. Zato statična spremenljivka za vedno ohrani svojo vrednost in je do nje mogoče dostopati ob ponovnem vnosu funkcije. Statična spremenljivka se inicializira, ko je deklarirana in potrebuje predpono static.

Naslednji program uporablja statično spremenljivko:

#include void 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 ++; } 

Program prikaže:

Hi number 1Hi number 2Hi number 3Hi number 4Hi number 5

Rekurzivne funkcije

Razmislite o faktorju števila, ki se izračuna tako, kot sledi 6! = 6 * 5 * 4 * 3 * 2 * 1.

Ta izračun se izvede kot večkratno izračun dejstva * (dejstvo -1), dokler dejstvo ni enako 1.

Rekurzivna funkcija je funkcija, ki se sama pokliče in vključuje pogoj izstopa, da zaključi rekurzivne klice. Pri izračunu faktorske številke je pogoj izstopa dejstvo enako 1. Rekurzija deluje tako, da "zloži" klice, dokler izhodni pogoj ne izpolni.

Na primer:

#include int 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));} 

Program prikaže:

 The factorial of 6 is 720 

Tu razpravljamo o podrobnostih programa:

  1. Izjavimo svojo rekurzivno faktorijelsko funkcijo, ki zavzame celoštevilčni parameter in vrne faktorijel tega parametra. Ta funkcija se bo poklicala in zmanjševala število, dokler ne bo dosežen izhodni ali osnovni pogoj. Ko je pogoj izpolnjen, se prej ustvarjene vrednosti pomnožijo in vrne se končna faktorijelna vrednost.
  2. Razglasimo in inicializiramo celoštevilčno spremenljivko z vrednostjo "6", nato pa s klicem naše faktorjske funkcije natisnemo njeno faktorjsko vrednost.

Razmislite o naslednjem grafikonu, da boste bolje razumeli rekurzivni mehanizem, ki je sestavljen iz klica funkcije samega sebe, dokler ni dosežen osnovni primer ali stanje zaustavitve, nato pa zberemo prejšnje vrednosti:

Vgrajene funkcije

Funkcija v programiranju C se uporablja za shranjevanje najpogosteje uporabljenih navodil. Uporablja se za modularizacijo programa.

Kadarkoli je funkcija poklicana, kazalec navodil skoči na definicijo funkcije. Po izvedbi funkcije se kazalec navodil vrne na stavek, od koder je skočil na definicijo funkcije.

Kadarkoli uporabljamo funkcije, potrebujemo dodatno glavo kazalca za skok na definicijo funkcije in vrnitev na stavek. Da bi odpravili potrebo po takih kazalnih glavah, uporabljamo vgrajene funkcije.

V vrstici funkcije funkcijski klic neposredno nadomesti dejanska programska koda. Ne skoči na noben blok, ker se vse operacije izvajajo znotraj funkcije inline.

Vgrajene funkcije se večinoma uporabljajo za majhne izračune. Niso primerni, kadar gre za veliko računalništvo.

Funkcija inline je podobna običajni funkciji, le da je ključna beseda inline postavljena pred imenom funkcije. Vstavljene funkcije so ustvarjene z naslednjo sintakso:

inline function_name (){//function definition}

Naj napišemo program za izvajanje vdelane funkcije.

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();}

Izhod:

Addition: 30

Zgornji program prikazuje uporabo vgrajene funkcije za seštevanje dveh števil. Kot lahko vidimo, smo dodatek na dve številki v funkciji inline vrnili samo brez pisanja dodatnih vrstic. Med klicem funkcije smo pravkar predali vrednosti, na katerih moramo izvesti seštevanje.

Povzetek

  • Funkcija je mini program ali podprogram.
  • Funkcije se uporabljajo za modularizacijo programa.
  • Knjižnična in uporabniško določena sta dve vrsti funkcij.
  • Funkcija je sestavljena iz izjave, telesa funkcije in dela klica funkcije.
  • Izjava o funkciji in telo sta obvezna.
  • Funkcijski klic je v programu lahko neobvezen.
  • Program C ima vsaj eno funkcijo; je glavna funkcija ().
  • Vsaka funkcija ima ime, podatkovni tip vrnjene vrednosti ali praznino, parametre.
  • Vsaka funkcija mora biti definirana in prijavljena v vašem programu C.
  • Upoštevajte, da se običajne spremenljivke v funkciji C uničijo takoj, ko zapustimo klic funkcije.
  • Argumenti, posredovani funkciji, se ne bodo spremenili, ker so jih podali po vrednosti noben po naslovu.
  • Obseg spremenljivke se imenuje vidnost spremenljivk v programu
  • V programiranju C obstajajo globalne in lokalne spremenljivke