C'de büyük bir programı fonksiyon olarak bilinen temel yapı taşlarına bölebiliriz. Fonksiyon, {} tarafından çevrelenen programlama ifadeleri kümesini içerir. C programına yeniden kullanılabilirlik ve modülerlik sağlamak için bir işlev birden çok kez çağrılabilir. Yani fonksiyonların toplamının bir program oluşturduğunu söyleyebiliriz. Fonksiyon aynı zamanda şu şekilde de bilinir: prosedür veya altprogram diğer programlama dillerinde.
C'deki fonksiyonların avantajı
C fonksiyonlarının aşağıdaki avantajları vardır.
- Fonksiyonları kullanarak, bir programda aynı mantığı/kodu tekrar tekrar yazmaktan kaçınabiliriz.
- C fonksiyonlarını bir program içerisinde istenilen sayıda ve herhangi bir yerden çağırabiliriz.
- Büyük bir C programını birden fazla fonksiyona bölündüğünde kolaylıkla takip edebiliriz.
- Yeniden kullanılabilirlik, C işlevlerinin ana başarısıdır.
- Ancak, C programında işlev çağırma her zaman bir yüktür.
İşlev Yönleri
Bir C fonksiyonunun üç yönü vardır.
SN | C işlevi yönleri | Sözdizimi |
---|---|---|
1 | İşlev bildirimi | dönüş_tipi işlev_adı (bağımsız değişken listesi); |
2 | İşlev çağrısı | işlev_adı (argüman_listesi) |
3 | Fonksiyon tanımı | return_type function_name (bağımsız değişken listesi) {işlev gövdesi;} |
C dilinde fonksiyon oluşturmanın sözdizimi aşağıda verilmiştir:
return_type function_name(data_type parameter...){ //code to be executed }
Fonksiyon Türleri
C programlamada iki tür fonksiyon vardır:
Geri dönüş değeri
Bir C işlevi, işlevden bir değer döndürebilir veya döndürmeyebilir. İşlevden herhangi bir değer döndürmeniz gerekmiyorsa dönüş türü olarak void kullanın.
Fonksiyondan herhangi bir değer döndürmeyen basit bir C fonksiyonu örneğini görelim.
Dönüş değeri olmayan örnek:
void hello(){ printf('hello c'); }
Fonksiyondan herhangi bir değer döndürmek istiyorsanız int, long, char vb. herhangi bir veri tipini kullanmanız gerekir. Dönüş tipi fonksiyondan döndürülecek değere bağlıdır.
java'da otomatik kablolu nedir
Fonksiyondan int değeri döndüren basit bir C fonksiyonu örneğini görelim.
Dönüş değeri olan örnek:
sql'yi yayınla
int get(){ return 10; }
Yukarıdaki örnekte değer olarak 10 döndürmemiz gerekiyor, dolayısıyla dönüş türü int'tir. Kayan nokta değerini döndürmek istiyorsanız (örneğin, 10.2, 3.1, 54.5, vb.), yöntemin dönüş türü olarak float kullanmanız gerekir.
float get(){ return 10.2; }
Şimdi fonksiyonun değerini almak için fonksiyonu çağırmanız gerekiyor.
İşlev çağırmanın farklı yönleri
Bir fonksiyon herhangi bir argümanı kabul edebilir veya etmeyebilir. Herhangi bir değer döndürebilir veya döndürmeyebilir. Bu gerçeklere dayanarak, işlev çağrılarının dört farklı yönü vardır.
- argümansız ve dönüş değeri olmayan fonksiyon
- argümansız ve dönüş değeri olan fonksiyon
- argümanlı ve dönüş değeri olmayan fonksiyon
- argümanlarla ve dönüş değeriyle işlev
Argümansız ve dönüş değeri olmayan Fonksiyon örneği
örnek 1
#include void printName(); void main () { printf('Hello '); printName(); } void printName() { printf('Javatpoint'); }
Çıktı
Hello Javatpoint
Örnek 2
#include void sum(); void main() { printf(' Going to calculate the sum of two numbers:'); sum(); } void sum() { int a,b; printf(' Enter two numbers'); scanf('%d %d',&a,&b); printf('The sum is %d',a+b); }
Çıktı
Going to calculate the sum of two numbers: Enter two numbers 10 24 The sum is 34
Argümansız ve dönüş değeri olan Fonksiyon örneği
örnek 1
#include int sum(); void main() { int result; printf(' Going to calculate the sum of two numbers:'); result = sum(); printf('%d',result); } int sum() { int a,b; printf(' Enter two numbers'); scanf('%d %d',&a,&b); return a+b; }
Çıktı
Going to calculate the sum of two numbers: Enter two numbers 10 24 The sum is 34
Örnek 2: karenin alanını hesaplayan program
Java'da dönüş türü
#include int sum(); void main() { printf('Going to calculate the area of the square '); float area = square(); printf('The area of the square: %f ',area); } int square() { float side; printf('Enter the length of the side in meters: '); scanf('%f',&side); return side * side; }
Çıktı
Going to calculate the area of the square Enter the length of the side in meters: 10 The area of the square: 100.000000
Argümanlı ve dönüş değeri olmayan Fonksiyon örneği
örnek 1
#include void sum(int, int); void main() { int a,b,result; printf(' Going to calculate the sum of two numbers:'); printf(' Enter two numbers:'); scanf('%d %d',&a,&b); sum(a,b); } void sum(int a, int b) { printf(' The sum is %d',a+b); }
Çıktı
Going to calculate the sum of two numbers: Enter two numbers 10 24 The sum is 34
Örnek 2: Beş sayının ortalamasını hesaplayan program.
#include void average(int, int, int, int, int); void main() { int a,b,c,d,e; printf(' Going to calculate the average of five numbers:'); printf(' Enter five numbers:'); scanf('%d %d %d %d %d',&a,&b,&c,&d,&e); average(a,b,c,d,e); } void average(int a, int b, int c, int d, int e) { float avg; avg = (a+b+c+d+e)/5; printf('The average of given five numbers : %f',avg); }
Çıktı
Going to calculate the average of five numbers: Enter five numbers:10 20 30 40 50 The average of given five numbers : 30.000000
Argümanlı ve dönüş değeri olan Fonksiyon örneği
örnek 1
#include int sum(int, int); void main() { int a,b,result; printf(' Going to calculate the sum of two numbers:'); printf(' Enter two numbers:'); scanf('%d %d',&a,&b); result = sum(a,b); printf(' The sum is : %d',result); } int sum(int a, int b) { return a+b; }
Çıktı
Going to calculate the sum of two numbers: Enter two numbers:10 20 The sum is : 30
Örnek 2: Bir sayının tek mi çift mi olduğunu kontrol eden program
#include int even_odd(int); void main() { int n,flag=0; printf(' Going to check whether a number is even or odd'); printf(' Enter the number: '); scanf('%d',&n); flag = even_odd(n); if(flag == 0) { printf(' The number is odd'); } else { printf(' The number is even'); } } int even_odd(int n) { if(n%2 == 0) { return 1; } else { return 0; } }
Çıktı
Going to check whether a number is even or odd Enter the number: 100 The number is even
C Kütüphanesi İşlevleri
Kitaplık işlevleri, C'de gruplandırılan ve kitaplık adı verilen ortak bir yere yerleştirilen yerleşik işlevlerdir. Bu tür işlevler bazı belirli işlemleri gerçekleştirmek için kullanılır. Örneğin printf, konsolda yazdırmak için kullanılan bir kütüphane işlevidir. Kütüphane fonksiyonları derleyici tasarımcıları tarafından yaratılır. Tüm C standart kitaplık işlevleri, uzantıyla kaydedilen farklı başlık dosyalarında tanımlanır. .H . Bu başlık dosyalarında tanımlanan kütüphane fonksiyonlarından faydalanabilmek için bu başlık dosyalarını programımıza dahil etmemiz gerekmektedir. Örneğin, printf/scanf gibi kütüphane fonksiyonlarını kullanabilmek için standart giriş/çıkış ile ilgili tüm kütüphane fonksiyonlarını içeren başlık dosyası olan stdio.h'yi programımıza dahil etmemiz gerekmektedir.
En çok kullanılan başlık dosyalarının listesi aşağıdaki tabloda verilmiştir.
SN | Başlık dosyası | Tanım |
---|---|---|
1 | stdio.h | Bu standart bir giriş/çıkış başlık dosyasıdır. Standart giriş/çıkışla ilgili tüm kütüphane fonksiyonlarını içerir. |
2 | konyum.h | Bu bir konsol giriş/çıkış başlık dosyasıdır. |
3 | dize.h | Gets(), puts(), vb. gibi dizeyle ilgili tüm kütüphane işlevlerini içerir. |
4 | stdlib.h | Bu başlık dosyası malloc(), calloc(), çıkış() vb. gibi tüm genel kütüphane fonksiyonlarını içerir. |
5 | matematik.h | Bu başlık dosyası sqrt(), pow() vb. gibi matematik işlemleriyle ilgili tüm fonksiyonları içerir. |
6 | zaman.s | Bu başlık dosyası zamanla ilgili tüm fonksiyonları içerir. |
7 | ctype.h | Bu başlık dosyası tüm karakter işleme işlevlerini içerir. |
8 | stdarg.h | Değişken argüman fonksiyonları bu başlık dosyasında tanımlanmıştır. |
9 | sinyal.h | Tüm sinyal işleme fonksiyonları bu başlık dosyasında tanımlanmıştır. |
10 | setjmp.h | Bu dosya tüm atlama işlevlerini içerir. |
on bir | yerel ayar.h | Bu dosya yerel ayar işlevlerini içerir. |
12 | hata yok.h | Bu dosya hata işleme işlevlerini içerir. |
13 | iddia.h | Bu dosya teşhis işlevlerini içerir. |
C işlevlerine ilişkin ek ayrıntılar aşağıda verilmiştir:
C işlevleriyle ilgili birkaç ek bilgi vardır. Bunlardan bazıları aşağıdaki gibidir:
Modüler Programlama: yeteneği bölmek A büyük program C'deki işlevleri kullanmanın temel faydalarından biri, daha küçük, daha yönetilebilir modüllere dönüştürmektir. Her işlev, genel program yapısını düzene sokan ve netleştiren belirli bir işi veya işlevsellik bileşenini içerebilir. Bu modüler strateji, kodun yeniden kullanımını iyileştirir ve bakım ve hata ayıklamayı kolaylaştırır.
js'de base64 kod çözme
Kodun yeniden kullanımı: İşlevleri kullanarak, belirli bir algoritmayı veya mantık parçasını yalnızca bir kez oluşturabilir ve bunu programınız boyunca tekrar tekrar kullanabilirsiniz. Kodu çalıştırmanız gerektiğinde işlevi çağırabilirsiniz, böylece kodu başka bir yere kopyalama zorunluluğunuzdan kurtulursunuz. Sadece gelişimi hızlandırır aynı zamanda tutarlılığı garanti eder ve hata yapma olasılığını azaltır.
Kapsülleme ve Soyutlama: İşlevselliğin uygulanmasının ayrıntılarını gizleyen işlevler, bir düzeyde soyutlama sunar. Bir fonksiyon prototipinin arayüzü bir şekilde tanımlanabilir. başlık dosyası , gerçek uygulama ise farklı bir kaynak dosyada sağlanabilir. Programın diğer bölümleri, arayüz ve uygulamanın ayrılması nedeniyle dahili olarak nasıl uygulandığını anlamaya gerek kalmadan işlevi kullanabilir.
Kolay Program Bakımı: Bir program daha küçük işlevlere bölünürse daha kolay anlaşılabilir ve bakımı daha kolay yapılabilir. Her işleve belirli bir sorumluluk atama yeteneği, kodu daha okunabilir hale getirir ve sorun giderme ve hata ayıklamayı kolaylaştırır. Bir hata bulunursa veya bir değişiklik yapılması gerekiyorsa, programın diğer bölümlerini etkilemeden gerekli işleve odaklanabilirsiniz.
Geliştirilmiş İşbirliği: İşlevler, aynı proje üzerinde çalışan geliştiricilerin işbirliği yapmasına olanak tanır. Program, birden fazla ekip üyesinin üzerinde çalışabilmesi için işlevlere bölünebilir. farklı işlevler bir kerede. Arayüzler iyi belirlenmişse, geliştiriciler çalışmalarını işlevlere sorunsuz bir şekilde entegre edebilirler; bu da üretkenliği artırır ve etkili geliştirmeyi destekler.
Parametreyi geçmek: C'deki bir işleve argümanları veya verileri işleyebilmesi için gönderebilirsiniz. İşlev, bu girdileri kullanarak eylemler gerçekleştirebilir ve sonuçlar üretebilir. Programınızın genel çok yönlülüğünü artıracak parametreleri ileterek işlevlerin esnekliğini ve uyarlanabilirliğini artırabilirsiniz.
Dönüş Değerleri: İşlevler, değerleri kendilerini çağıran koda geri göndererek işlevin yürütme sonuçlarının iletilmesine olanak tanır. Fonksiyon içinde hesaplamalar veya veri manipülasyonu yaptıktan sonra döndürülen değeri programın diğer alanlarında kullanabilirsiniz. Dönüş değerleri bir sonucu hesaplamanız veya işlevin çıktısına bağlı olarak bir koşul oluşturmanız gerektiğinde özellikle yararlıdır.
Çözüm:
Sonuç olarak, fonksiyonlar C programlama için esastır çünkü programa organizasyon, yeniden kullanılabilirlik ve modülerlik . Geliştiriciler, büyük programları daha küçük işlevlere bölerek aynı kodu tekrar tekrar oluşturmaktan kaçınabilir, böylece kodu daha etkili ve bakımı daha kolay hale getirebilirler. Programın herhangi bir yeri bir işlevi çağırabilir, bu da esneklik sağlar ve kontrol akışını geliştirir.
beyan, çağrı , Ve tanım Fonksiyonların birçok özelliğinden sadece birkaçı. Derleyici, fonksiyon bildirimi ile bilgilendirilir. isim, argümanlar , Ve dönüş türü . ile veya olmadan bir fonksiyonu çağırmak mümkündür. parametreler ve ile veya olmadan geri dönüş değeri . Programcılar kodlarının okunabilirliğini ve optimizasyonunu geliştirmek için kullanıcı tanımlı işlevler oluştururken, C kütüphanesi işlevleri printf() Ve tarama() önceden ayarlanmış yetenekler sağlar.
Genel olarak işlevler, C programlamada önemli yapı taşlarıdır; daha fazla organizasyon, kodun yeniden kullanımı ve büyük programların basit takibi gibi faydalar sağlar. İşlev çağrıları bir miktar ek yük getirebilir, ancak avantajları, minimum performans düşüşünden daha ağır basmaktadır. Programcılar fonksiyonları anlayıp kullanarak etkili ve modüler C programları yazabilirler.