Jenis Fungsi yang ditentukan pengguna dalam Pengaturcaraan C

Dalam tutorial ini, anda akan belajar tentang pendekatan yang berbeza yang dapat anda lakukan untuk menyelesaikan masalah yang sama dengan menggunakan fungsi.

Keempat program di bawah ini memeriksa sama ada bilangan bulat yang dimasukkan oleh pengguna adalah nombor perdana atau tidak.

Hasil dari semua program di bawah ini adalah sama, dan kami telah membuat fungsi yang ditentukan pengguna dalam setiap contoh. Walau bagaimanapun, pendekatan yang kita ambil dalam setiap contoh adalah berbeza.

Contoh 1: Tidak ada argumen yang diluluskan dan tidak ada nilai pulangan

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

Yang checkPrimeNumber()fungsi mengambil input daripada pengguna, cek sama ada ia adalah nombor perdana atau tidak dan memaparkan ia pada skrin.

Tanda kurung kosong dalam checkPrimeNumber();pernyataan di dalam main()fungsi menunjukkan bahawa tidak ada argumen yang diteruskan ke fungsi.

Jenis kembali fungsi adalah void. Oleh itu, tiada nilai dikembalikan dari fungsi.

Contoh 2: Tidak ada argumen yang diluluskan melainkan nilai kembali

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

Tanda kurung kosong dalam n = getInteger();pernyataan menunjukkan bahawa tidak ada argumen yang dihantar ke fungsi. Dan, nilai yang dikembalikan dari fungsi diberikan kepada n.

Di sini, getInteger()fungsi mengambil input dari pengguna dan mengembalikannya. Kod untuk memeriksa sama ada nombor utama atau tidak ada di dalam main()fungsi.

Contoh 3: Hujah diluluskan tetapi tiada nilai pulangan

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

Nilai integer yang dimasukkan oleh pengguna diteruskan ke checkPrimeAndDisplay()fungsi.

Di sini, checkPrimeAndDisplay()fungsi memeriksa sama ada argumen yang dilontarkan adalah nombor perdana atau tidak dan memaparkan mesej yang sesuai.

Contoh 4: Hujah diluluskan dan nilai pulangan

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

Input dari pengguna diteruskan ke checkPrimeNumber()fungsi.

The checkPrimeNumber()cek fungsi sama ada hujah yang diluluskan perdana atau tidak.

Sekiranya argumen lulus adalah nombor perdana, fungsi mengembalikan 0. Sekiranya argumen lulus adalah nombor bukan perdana, fungsi mengembalikan 1. Nilai kembali diberikan kepada pemboleh ubah bendera.

Bergantung pada sama ada bendera 0 atau 1, mesej yang sesuai dicetak dari main()fungsi.

Pendekatan mana yang lebih baik?

Baiklah, ini bergantung pada masalah yang anda cuba selesaikan. Dalam kes ini, meneruskan argumen dan mengembalikan nilai dari fungsi (contoh 4) lebih baik.

Fungsi harus melaksanakan tugas tertentu. Yang checkPrimeNumber()fungsi tidak mengambil input daripada pengguna dan juga tidak memaparkan mesej yang sesuai. Ia hanya memeriksa sama ada nombor itu utama atau tidak.

Artikel menarik...