Typy uživatelsky definovaných funkcí v programování C.

V tomto kurzu se dozvíte o různých přístupech, které můžete použít k řešení stejného problému pomocí funkcí.

Tyto 4 níže uvedené programy kontrolují, zda je celé číslo zadané uživatelem prvočíslo nebo ne.

Výstup všech těchto níže uvedených programů je stejný a v každém příkladu jsme vytvořili uživatelsky definovanou funkci. Přístup, který jsme zvolili v každém příkladu, je však jiný.

Příklad 1: Žádné předané argumenty a žádná návratová hodnota

 #include void checkPrimeNumber(); int main() ( checkPrimeNumber(); // argument is not passed return 0; ) // return type is void meaning doesn't return any value void checkPrimeNumber() ( int n, i, flag = 0; printf("Enter a positive integer: "); scanf("%d",&n); for(i=2; i <= n/2; ++i) ( if(n%i == 0) ( flag = 1; ) ) if (flag == 1) printf("%d is not a prime number.", n); else printf("%d is a prime number.", n); ) 

checkPrimeNumber()Funkce má vstup od uživatele, zkontroluje, zda je to prvočíslo nebo ne, a zobrazí na obrazovce.

Prázdné závorky v checkPrimeNumber();příkazu uvnitř main()funkce označují, že funkci není předán žádný argument.

Návratový typ funkce je void. Z funkce tedy není vrácena žádná hodnota.

Příklad 2: Nebyly předány žádné argumenty, ale návratová hodnota

 #include int getInteger(); int main() ( int n, i, flag = 0; // no argument is passed n = getInteger(); for(i=2; i<=n/2; ++i) ( if(n%i==0)( flag = 1; break; ) ) if (flag == 1) printf("%d is not a prime number.", n); else printf("%d is a prime number.", n); return 0; ) // returns integer entered by the user int getInteger() ( int n; printf("Enter a positive integer: "); scanf("%d",&n); return n; ) 

Prázdné závorky v n = getInteger();příkazu označují, že funkci není předán žádný argument. A hodnota vrácená z funkce je přiřazena n.

Zde getInteger()funkce převezme vstup od uživatele a vrátí jej. Kód pro kontrolu, zda je číslo prvočíslo nebo ne, je uvnitř main()funkce.

Příklad 3: Argument předán, ale žádná návratová hodnota

 #include void checkPrimeAndDisplay(int n); int main() ( int n; printf("Enter a positive integer: "); scanf("%d",&n); // n is passed to the function checkPrimeAndDisplay(n); return 0; ) // return type is void meaning doesn't return any value void checkPrimeAndDisplay(int n) ( int i, flag = 0; for(i=2; i <= n/2; ++i) ( if(n%i == 0)( flag = 1; break; ) ) if(flag == 1) printf("%d is not a prime number.",n); else printf("%d is a prime number.", n); ) 

Celočíselná hodnota zadaná uživatelem se předá checkPrimeAndDisplay()funkci.

Zde checkPrimeAndDisplay()funkce zkontroluje, zda je předaný argument prvočíslo nebo ne, a zobrazí příslušnou zprávu.

Příklad 4: Argument předán a návratová hodnota

 #include int checkPrimeNumber(int n); int main() ( int n, flag; printf("Enter a positive integer: "); scanf("%d",&n); // n is passed to the checkPrimeNumber() function // the returned value is assigned to the flag variable flag = checkPrimeNumber(n); if(flag == 1) printf("%d is not a prime number",n); else printf("%d is a prime number",n); return 0; ) // int is returned from the function int checkPrimeNumber(int n) ( int i; for(i=2; i <= n/2; ++i) ( if(n%i == 0) return 1; ) return 0; ) 

Vstup od uživatele je předán checkPrimeNumber()funkci.

Tyto checkPrimeNumber()funkce kontroluje, zda je předán argument je prvočíslo nebo ne.

Pokud je předaným argumentem prvočíslo, vrátí funkce 0. Pokud je předaný argument jiné než prvočíslo, vrátí funkce 1. Návratová hodnota je přiřazena proměnné příznaku.

V závislosti na tom, zda je příznak 0 nebo 1, je z main()funkce vytištěna příslušná zpráva .

Který přístup je lepší?

Záleží na problému, který se snažíte vyřešit. V tomto případě je lepší předání argumentu a vrácení hodnoty z funkce (příklad 4).

Funkce by měla provádět konkrétní úkol. checkPrimeNumber()Funkce nebere vstup od uživatele, ani se zobrazí odpovídající zpráva. Kontroluje pouze to, zda je číslo prvočíslo nebo ne.

Zajímavé články...