Šioje pamokoje sužinosite apie įvairius metodus, kurių galite imtis, kad išspręstumėte tą pačią problemą naudodami funkcijas.
Šios 4 toliau pateiktos programos patikrina, ar vartotojo įvestas sveikasis skaičius yra pirminis skaičius, ar ne.
Visų žemiau pateiktų programų išvestis yra ta pati, ir kiekviename pavyzdyje sukūrėme vartotojo apibrėžtą funkciją. Tačiau požiūris, kurio pasirinkome kiekviename pavyzdyje, yra skirtingas.
1 pavyzdys: nepateikti jokie argumentai ir grąžinimo vertė
#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()
Funkcija trunka įvestį iš vartotojo, patikrina, ar tai yra pirminis skaičius, ar ne ir rodo ant ekrano.
Tušti skliausteliai funkcijos checkPrimeNumber();
viduje esančiame sakinyje main()
rodo, kad funkcijai neperduodamas joks argumentas.
Funkcijos grąžinimo tipas yra void
. Taigi iš funkcijos negrąžinama jokia vertė.
2 pavyzdys: nepateikti jokie argumentai, bet grąžinimo vertė
#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; )
Tuščios skliausteliuose n = getInteger();
sakinyje nurodoma, kad funkcijai neperduodamas nė vienas argumentas. Iš funkcijos grąžinta vertė priskiriama n.
Čia getInteger()
funkcija paima vartotojo įvestį ir grąžina ją. Kodas, skirtas patikrinti, ar skaičius yra pagrindinis, ar ne, yra main()
funkcijos viduje .
3 pavyzdys: argumentas perduotas, bet grąžos vertės nėra
#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); )
Vartotojo įvestas sveikasis skaičius perduodamas checkPrimeAndDisplay()
funkcijai.
Čia checkPrimeAndDisplay()
funkcija patikrina, ar perduotas argumentas yra pirminis skaičius, ar ne, ir parodo atitinkamą pranešimą.
4 pavyzdys: argumentas perduotas ir grąžinimo vertė
#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; )
Vartotojo įvestis perduodama checkPrimeNumber()
funkcijai.
Į checkPrimeNumber()
funkcija patikrina, ar praėjo argumentas yra svarbiausias, ar ne.
Jei perduotas argumentas yra pirminis skaičius, funkcija grąžina 0. Jei perduotas argumentas yra ne pirminis skaičius, funkcija grąžina 1. Grąžinimo vertė priskiriama vėliavos kintamajam.
Priklausomai nuo to, ar vėliava yra 0, ar 1, iš main()
funkcijos išspausdinamas atitinkamas pranešimas .
Kuris požiūris yra geresnis?
Na, tai priklauso nuo problemos, kurią bandote išspręsti. Šiuo atveju geriau perduoti argumentą ir grąžinti reikšmę iš funkcijos (4 pavyzdys).
Funkcija turėtų atlikti tam tikrą užduotį. checkPrimeNumber()
Funkcija nesiima įvestį iš vartotojo, nei ji rodo atitinkamą pranešimą. Jis tik patikrina, ar skaičius yra pagrindinis, ar ne.