Mikä on funktio C: ssä?
C-ohjelmoinnin toiminto on uudelleenkäytettävä koodilohko, joka helpottaa ohjelman ymmärtämistä, testaamista ja jota on helppo muokata muuttamatta kutsuvaa ohjelmaa. Toiminnot jakavat koodin ja moduloivat ohjelmaa parempien ja tehokkaampien tulosten saavuttamiseksi. Lyhyesti sanottuna suurempi ohjelma on jaettu useisiin alaohjelmiin, joita kutsutaan funktioksi
Kun jaat suuren ohjelman eri toimintoihin, kutakin toimintoa on helppo hallita erikseen. Aina kun ohjelmassa tapahtuu virhe, voit helposti tutkia vialliset toiminnot ja korjata vain nämä virheet. Voit helposti soittaa ja käyttää toimintoja tarvittaessa, mikä säästää automaattisesti aikaa ja tilaa.
Tässä opetusohjelmassa opit-
- Kirjasto Vs. Käyttäjän määrittelemät toiminnot
- Toimintoilmoitus
- Toiminnon määrittely
- Toimintakutsu
- Funktion argumentit
- Vaihteleva soveltamisala
- Staattiset muuttujat
- Rekursiiviset toiminnot
- Sisäiset toiminnot
Kirjasto Vs. Käyttäjän määrittelemät toiminnot
Jokaisella C-ohjelmalla on ainakin yksi toiminto, joka on päätoiminto, mutta ohjelmassa voi olla mikä tahansa määrä toimintoja. Pääfunktio () C: ssä on ohjelman lähtökohta.
C-ohjelmoinnissa toiminnot on jaettu kahteen tyyppiin:
- Kirjastotoiminnot
- Käyttäjän määrittelemät toiminnot
Ero kirjaston ja käyttäjän määrittämien funktioiden välillä C: ssä on, että meidän ei tarvitse kirjoittaa koodia kirjastofunktiolle. Se on jo läsnä otsikkotiedostossa, jonka sisällytämme aina ohjelman alkuun. Sinun tarvitsee vain kirjoittaa funktion nimi ja käyttää sitä yhdessä oikean syntaksin kanssa. Printf, scanf ovat esimerkkejä kirjastotoiminnosta.
Käyttäjän määrittämä toiminto on eräänlainen toiminto, johon meidän on kirjoitettava funktion runko ja kutsuttava funktio aina, kun vaadimme toimintoa suorittamaan jonkin toiminnon ohjelmassa.
Käyttäjä kirjoittaa aina käyttäjän määrittämän funktion C: ssä, mutta myöhemmin se voi olla osa C-kirjastoa. Se on merkittävä etu C-ohjelmoinnille.
C-ohjelmointitoiminnot on jaettu kolmeen toimintaan, kuten
- Toimintoilmoitus
- Toiminnon määrittely
- Toimintakutsu
Toimintoilmoitus
Toimintoilmoitus tarkoittaa ohjelman nimen kirjoittamista. Se on pakollinen osa toimintojen käyttämisessä koodissa. Funktiodeklaraatiossa määritämme vain funktion nimen, jota aiomme käyttää ohjelmassa muuttuja-ilmoituksen tavoin. Emme voi käyttää toimintoa, ellei sitä ole ilmoitettu ohjelmassa. Toimintoilmoitusta kutsutaan myös nimellä "Funktion prototyyppi ".
Funktion ilmoitukset (kutsutaan prototyypiksi) tehdään yleensä pääfunktion () yläpuolella ja ne ovat yleisessä muodossa:
return_data_type function_name (data_type arguments);
- Return_data_type : on tietotyyppi arvosta toiminta palautui takaisin kutsuvan julkilausuman.
- Function_name : seuraa suluissa
- Argumenttien nimet ja niiden tietotyyppideklaroinnit sijoitetaan vaihtoehtoisesti sulkeisiin.
Tarkastellaan seuraavaa ohjelmaa, joka näyttää, kuinka kuutio-funktio ilmoitetaan kokonaisluku-muuttujan kuutioarvon laskemiseksi
#include/*Function declaration*/int add(int a,b);/*End of Function declaration*/int main() {
Muista, että funktio ei välttämättä palauta arvoa. Tässä tapauksessa käytetään avainsanaa void.
Esimerkiksi funktio output_message-ilmoitus ilmoittaa, että funktio ei palauta arvoa: void output_message ();
Toiminnon määritelmä
Funktion määrittely tarkoittaa vain funktion rungon kirjoittamista. Funktion runko koostuu lauseista, jotka suorittavat tietyn tehtävän. Funktiorunko koostuu yhdestä tai lauseista. Se on myös pakollinen osa toimintoa.
int add(int a,int b) //function body{int c;c=a+b;return c;}
Toimintakutsu
Funktiokutsu tarkoittaa toiminnon kutsumista aina, kun sitä tarvitaan ohjelmassa. Aina kun kutsumme toimintoa, se suorittaa toiminnon, jota varten se on suunniteltu. Toimintokutsu on valinnainen osa ohjelmaa.
result = add(4,5);
Tässä on täydellinen koodi:
#includeint 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;}
Tuotos:
Addition:30
Funktion argumentit
Funktion argumentteja käytetään tarvittavien arvojen vastaanottamiseen funktion kutsulla. Ne sovitetaan sijainnin mukaan; ensimmäinen argumentti välitetään ensimmäiselle parametrille, toinen toiselle parametrille ja niin edelleen.
Oletusarvoisesti argumentit välitetään arvon mukaan , jossa kopio tiedoista annetaan kutsutulle funktiolle. Todellisuudessa välitetty muuttuja ei muutu.
Tarkastelemme seuraavaa ohjelmaa, joka osoittaa arvon välittämät parametrit:
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);}
Ohjelman tulos on:
5 + 10 = 15
Muista, että funktioiden lisäämistä varten välitetyt a: n ja b: n arvoja ei muutettu, koska vain sen arvo välitettiin parametriin x.
Vaihteleva soveltamisala
Muuttujan laajuus tarkoittaa muuttujien näkyvyyttä ohjelman koodissa.
C: ssä funktion sisällä ilmoitetut muuttujat ovat paikallisia kyseiselle koodilohkolle, eikä niihin voida viitata funktion ulkopuolella. Kaikkien toimintojen ulkopuolelle ilmoitetut muuttujat ovat kuitenkin globaaleja ja käytettävissä koko ohjelmasta. Vakioihin, jotka on ilmoitettu #define -ohjelman yläosassa, pääsee koko ohjelmasta. Tarkastellaan seuraavaa ohjelmaa, joka tulostaa globaalin muuttujan arvon sekä pää- että käyttäjän määrittämästä toiminnosta:
#includeint 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);}
Tulos:
from the main function : global =1348from user defined function : global =1348
Keskustelemme ohjelman yksityiskohdista:
- Ilmoitamme kokonaislukumäärän globaalimuuttujan, jonka alkuarvo on 1348.
- Julistamme ja määritämme test () -funktion, joka ei ota argumentteja eikä palauta arvoa. Tämä toiminto tulostaa vain globaalimuuttuja-arvon osoittaakseen, että globaaleja muuttujia voidaan käyttää missä tahansa ohjelmassa.
- Tulostamme globaalin muuttujan päätoiminnon sisällä.
- Kutsumme testifunktiota ordessa tulostamaan globaalin muuttujan arvo.
C: ssä, kun argumentit välitetään funktion parametreille, parametrit toimivat paikallisin muuttujina, jotka tuhoutuvat funktiosta poistuttaessa.
Kun käytät globaaleja muuttujia, käytä niitä varoen, koska ne voivat johtaa virheisiin ja ne voivat muuttua missä tahansa ohjelmassa. Ne tulisi alustaa ennen käyttöä.
Staattiset muuttujat
Staattisilla muuttujilla on paikallinen laajuus. Ne eivät kuitenkaan tuhoudu poistuttaessa toiminnosta. Siksi staattinen muuttuja säilyttää arvonsa ikuisesti ja siihen pääsee, kun funktio syötetään uudelleen. Staattinen muuttuja alustetaan ilmoitettaessa ja tarvitsee etuliitteen staattinen.
Seuraava ohjelma käyttää staattista muuttujaa:
#includevoid 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 ++; }
Ohjelma näyttää:
Hi number 1Hi number 2Hi number 3Hi number 4Hi number 5
Rekursiiviset toiminnot
Tarkastellaan luvun 6 laskentakerrointa! = 6 * 5 * 4 * 3 * 2 * 1.
Tämä laskenta tehdään toistuvasti laskevana tosiasiana * (tosiasia -1), kunnes tosiasia on 1.
Rekursiivinen toiminto on toiminto, joka kutsuu itseään ja sisältää poistumistilan rekursiivisten puheluiden lopettamiseksi. Faktorialluvun laskennassa poistumistapa on tosiasiallisesti yhtä suuri kuin 1. Rekursio toimii "pinoamalla" puheluita, kunnes lähtevä ehto on totta.
Esimerkiksi:
#includeint 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));}
Ohjelma näyttää:
The factorial of 6 is 720
Tässä keskustelemme ohjelman yksityiskohdista:
- Julistamme rekursiivisen tekijäfunktion, joka ottaa kokonaislukuparametrin ja palauttaa parametrin faktorialin. Tämä funktio kutsuu itseään ja pienentää lukua, kunnes poistuminen tai perusedellytys saavutetaan. Kun ehto on tosi, aiemmin luodut arvot kerrotaan keskenään ja lopullinen kerroinarvo palautetaan.
- Deklaroidaan ja alustetaan kokonaislukumuuttuja arvolla "6" ja tulostetaan sitten sen kerroinarvo kutsumalla laskentatoiminto.
Harkitse seuraavaa kaaviota, jotta ymmärrät paremmin rekursiivisen mekanismin, joka koostuu funktion kutsumisesta itseksi, kunnes perustapaus tai pysäytystila saavutetaan, ja sen jälkeen keräämme edelliset arvot:
Sisäiset toiminnot
Toimintoa C-ohjelmoinnissa käytetään useimmin käytettyjen ohjeiden tallentamiseen. Sitä käytetään ohjelman modulointiin.
Aina kun toimintoa kutsutaan, käskyosoitin siirtyy funktion määrittelyyn. Funktion suorittamisen jälkeen käskyosoitin palaa takaisin lausekkeeseen, josta se hyppäsi funktion määrittelyyn.
Aina kun käytämme toimintoja, tarvitsemme ylimääräisen osoittimen pään siirtyäksesi funktion määrittelyyn ja palataksemme lauseeseen. Tällaisten osoitinpäiden tarpeen poistamiseksi käytämme sisäisiä toimintoja.
Inline-toiminnossa toimintokutsu korvataan suoraan todellisella ohjelmakoodilla. Se ei hyppää mihinkään lohkoon, koska kaikki toiminnot suoritetaan sisäisen toiminnon sisällä.
Inline-toimintoja käytetään enimmäkseen pieniin laskelmiin. Ne eivät sovellu, kun kyseessä on suuri tietojenkäsittely.
Sisäinen toiminto on samanlainen kuin normaali toiminto, paitsi että avainsana inline sijoitetaan funktion nimen eteen. Sisäiset toiminnot luodaan seuraavalla syntaksilla:
inline function_name (){//function definition}
Kirjoitetaan ohjelma sisäisen toiminnon toteuttamiseksi.
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();}
Tuotos:
Addition: 30
Yllä oleva ohjelma osoittaa inline-toiminnon käytön kahden numeron lisäämiseen. Kuten näemme, olemme palauttaneet lisäyksen kahteen numeroon inline-funktiossa vain kirjoittamatta ylimääräisiä rivejä. Toimintakutsun aikana olemme juuri välittäneet arvot, joille meidän on suoritettava lisäys.
Yhteenveto
- Toiminto on mini- tai alaohjelma.
- Toimintoja käytetään ohjelman modulointiin.
- Kirjasto ja käyttäjän määrittelemät toiminnot ovat kahdenlaisia.
- Funktio koostuu ilmoituksesta, funktion rungosta ja funktiokutsuosasta.
- Toimintoilmoitus ja elin ovat pakollisia.
- Toimintakutsu voi olla valinnainen ohjelmassa.
- C-ohjelmassa on ainakin yksi toiminto; se on päätoiminto ().
- Jokaisella toiminnolla on nimi, palautusarvon tietotyyppi tai mitätöinti, parametrit.
- Jokainen toiminto on määriteltävä ja ilmoitettava C-ohjelmassa.
- Muista, että C-funktion tavalliset muuttujat tuhoutuvat heti, kun lopetamme funktiokutsun.
- Funktiolle välitettyjä argumentteja ei muuteta, koska ne välittivät arvon ei osoitteen mukaan.
- Muuttujan laajuutta kutsutaan muuttujien näkyväksi ohjelmassa
- C-ohjelmoinnissa on globaaleja ja paikallisia muuttujia