C Programlamada Kullanıcı Tanımlı Fonksiyon Türleri

Bu eğitimde, aynı problemi fonksiyonları kullanarak çözmek için kullanabileceğiniz farklı yaklaşımlar hakkında bilgi edineceksiniz.

Aşağıdaki bu 4 program, kullanıcı tarafından girilen tam sayının asal sayı olup olmadığını kontrol eder.

Aşağıdaki tüm bu programların çıktısı aynıdır ve her örnekte kullanıcı tanımlı bir işlev oluşturduk. Ancak her örnekte benimsediğimiz yaklaşım farklıdır.

Örnek 1: Hiçbir bağımsız değişken geçirilmedi ve dönüş değeri yok

 #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()Fonksiyon ekranda bir asal sayı olup olmadığını kontrol eder ya da olmasın ve görüntüler it, kullanıcıdan girdi alır.

İşlevin checkPrimeNumber();içindeki ifadedeki boş parantezler , main()işleve hiçbir argüman aktarılmadığını gösterir.

İşlevin dönüş türü void. Bu nedenle, işlevden hiçbir değer döndürülmez.

Örnek 2: Hiçbir bağımsız değişken geçirilmedi, ancak bir dönüş değeri

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

İfadedeki boş parantezler n = getInteger();, işleve hiçbir argüman aktarılmadığını gösterir. Ve fonksiyondan döndürülen değer n'ye atanır.

Burada getInteger()işlev kullanıcıdan girdi alır ve onu döndürür. Bir sayının asal olup olmadığını kontrol eden kod main()işlevin içinde yer alır .

Örnek 3: Bağımsız değişken geçti ancak dönüş değeri yok

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

Kullanıcı tarafından girilen tamsayı değeri checkPrimeAndDisplay()işleve aktarılır .

Burada checkPrimeAndDisplay()işlev, aktarılan bağımsız değişkenin asal sayı olup olmadığını kontrol eder ve uygun mesajı görüntüler.

Örnek 4: Değiştirilen bağımsız değişken ve bir dönüş değeri

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

Kullanıcıdan gelen girdi checkPrimeNumber()işleve aktarılır .

checkPrimeNumber()Fonksiyon kontrolleri geçti argüman asal olup olmadığını.

Aktarılan bağımsız değişken bir asal sayı ise işlev 0 değerini döndürür. Geçirilen bağımsız değişken asal olmayan bir sayı ise işlev 1 döndürür. Dönüş değeri bayrak değişkenine atanır.

Bayrağın 0 veya 1 olmasına bağlı olarak, main()işlevden uygun bir mesaj yazdırılır .

Hangi yaklaşım daha iyidir?

Çözmeye çalıştığınız soruna bağlı. Bu durumda, bağımsız değişken iletmek ve işlevden bir değer döndürmek (örnek 4) daha iyidir.

Bir işlev belirli bir görevi yerine getirmelidir. checkPrimeNumber()Fonksiyon kullanıcı girişi almaz ne de uygun mesajı gösterecektir. Yalnızca bir sayının asal olup olmadığını kontrol eder.

Ilginç makaleler...