1 / 25

Fonksiyonlar

Fonksiyonlar. Fonksiyon Tanımı Değer Döndürmeyen Fonksiyonlar Değer Döndüren Fonksiyonlar Çok Parametreli Fonksiyonlar Değişken Kapsamları Çok Fonksiyonlu Programlar. Fonksiyon Tanımı.

yan
Download Presentation

Fonksiyonlar

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Fonksiyonlar Fonksiyon Tanımı Değer Döndürmeyen Fonksiyonlar Değer Döndüren Fonksiyonlar Çok Parametreli Fonksiyonlar Değişken Kapsamları Çok Fonksiyonlu Programlar

  2. Fonksiyon Tanımı Karmaşık ve uzun programları, küçük, basit ve belirli bir amacı olan program parçalarına bölebiliriz. Belirli bir işi yapan bu program parçalarına fonksiyon adı verilir. main ana fonksiyondur.

  3. Fonksiyon Tanımı Örnek: İki fonksiyondan oluşan bir program

  4. Fonksiyon Tanımı Fonksiyon Başlığı döndürme_tipi fonksiyon_ismi (parametre_ listesi)

  5. Örnek:Girilen iki sayıdan büyük olanını bulan max fonksiyonu #include <stdio.h> int max(int a, int b) { if (a>b) return a; else return b; } main() {int i=10; int j=15; int k; k=max(i,j); printf("maksimum deger=%d",k); return 0; }

  6. Fonksiyon Tanımı Fonksiyon Prototipi Fonksiyon başlığına benzer, cümle sonunda noktalı virgül vardır. Fonksiyon prototipi program başında yer almalıdır. Böylece, derleyici, fonksiyon prototipini gördüğünde fonksiyon ismini tanır. int topla(int a);veya int topla(int);

  7. Değer Döndürmeyen Fonksiyonlar Parametresiz Fonksiyonlar Parametreler, fonksiyonların çağırıldıkları yerden veri almasını sağlayan değişkenlerdir. Parametresiz, değer döndürmeyen fonksiyonlar çağırıldıkları yerden bir veri almayan ve herhangi bir veri geri döndürmeyen fonksiyonlardır.

  8. Değer Döndürmeyen Fonksiyonlar ParametreliFonksiyonlarçağırıldıkları yerden veri alan ama herhangi bir veri geri döndürmeyen tip fonksiyonlardır.

  9. Değer Döndüren Fonksiyonlar Parametresiz Fonksiyonlarçağırıldıkları yere bir değer döndüren veçağırıldıkları yerden bir veri almayan fonksiyonlardır.

  10. Değer Döndüren Fonksiyonlar Parametreli Fonksiyonlar hem çağırıldığı yerden değer alan, hem de çağırıldığı yere değer döndüren fonksiyonlardır.

  11. Çok Parametreli Fonksiyonlar Fonksiyon Başlığı Fonksiyonu çağırma cümlesi

  12. Çok Parametreli Fonksiyonlar

  13. Değişken Kapsamı Değişken kapsamı, bir değişkenin tanımının programın hangi bölümünde geçerli olduğunu veya tanındığını gösterir. Yerel kapsam, değişkenin tanımlandığı fonksiyona ait olduğunu ve değişkene sadece tanımlandığı fonksiyon içinden erişilebilindiğini gösterir. Bu tip değişkenlerin tanımı fonksiyon içinde yapılır ve bu değişkenler fonksiyonun bitiminde bellekten silinirler. Genel kapsamlı bir değişken, fonksiyonların dışında tanımlanır ve tanımlamanın yapılmasından sonra yazılmış tüm fonksiyonlar tarafından tanınır ve kullanılır.

  14. Değişken Kapsamı

  15. Değişken Kapsamı f() fonksiyonu çağırıldığında Çıktı 10 5 3 30 11 4 10 5 5 f() fonksiyonu içinde

  16. Çok Fonksiyonlu Programlar Bir program birden fazla fonksiyondan oluşursa, main() fonksiyonu, istenen fonksiyonu çağırabilir veya bir fonksiyon başka bir fonksiyonu çağırabilir. #include <stdio.h> int faktoriyel (int k); int kombinasyon (int n, int r); int main(void) { int k,s,cevap; printf(“Iki tamsayi giriniz:”); scanf(“%d%d”,&k,&s); cevap=kombinasyon(k,s); printf("Kombinasyon=%3d ",cevap); return(0); } int faktoriyel (int k) /*Faktoriyel hesabi*/ { int i, s=1; for(i=1;i<=k;++i) s*=i; return (s); } int kombinasyon (int n, int r) /*Kombinasyon hesabi*/ { int s; s=faktoriyel(n)/(faktoriyel(r)*faktoriyel(n-r)); return (s); }

  17. Değişkenlerin Kullanım Hakları • Global(Genel) veri tanımlamaları: • Programın en üstünde main dahil hiçbir blok içerisinde yer almayacak şekilde yapılan tüm tip tanımlamaları bütün ifadeler için globaldir. • Global değişkenler kendinden sonra kodlanan her C komutu içinde kullanılabilirler. • Global değişkenler program bellekte var olduğu sürece varlıklarını sürdürürler. • Herhangi bir fonksiyonun bu değişkene atadığı bilgiye bir diğer fomksiyon rahatlıkla ulaşabildiği için alt programlar ve fonksiyonlar arasında veri transferinde kullanılabilirler

  18. float c(); //prototip int x; void a() { } int y; void b() { } float c() { } main() { } Burada verilen programda x ve y değişkenlerinin geçerliliği her fonksiyon için geçerli değildir. X değişkeni tüm fonksiyonların üstünde tanımlandığı için programın her yerinde kullanılabilirken , y değişkeni a() alt programının altında tanımlandığı için sadece b(), c() alt programları ve main için geçerlidir. a() alt programı için tanımsızdır. Prototipler sadece fonksiyona giriş/çıkış tiplerinin ne olduğunu derleyiciye bildirirken fonksiyon içinde kullanılacak değişkenler hakkında bilgiye sahip değildirler. C() fonksiyonu x ve y değişkenleinden sonra tanımlandığı için her iki değişkenide kullanabilir. Global değişken kullanım örneği

  19. Lokal (Yerel) veri tanımlamaları • Fonksiyonlar dahil herhangi bir blok içersinde yer alan tüm değişken tanımlamaları yerel tanımlamalardır. • Bu tür değişkenler sadece tanımlandıkları blok içerisinde veya bu blok içinde yer alan diğer alt bloklar içersinde kullanılabilirler. • Lokal değişkenlerin ömrü, bloğun icra edilme süresi kadardır. • Lokal olarak tanımlanmış bir değişken ile global olarak tanımlanmış bir değişkenin aynı olması halinde her iki değişkende farklı bir değişken olarak ele alınır. • Lokal değişkene yapılan atamalardan global değişken etkilenmez. Bloğun icrası bittiğinde lokal değişken iptal edileceğinden global değişken yine kullanım hakkını ele geçirir.

  20. Lokal değişken kullanım örneği: #include <stdio.h> int x=5; ----------------- global tanımlama void a() { int x=7;----------------- lokal tanımlama printf(“ %d “,x); { int x=9;-------------- blok içinde lokal değişken printf(“ %d”, x); } printf(“ %d ”,x); } main() { printf(“ %d”, x); a(); printf(“ %d \n”,x); } Program çıktısı: 5 7 9 7 5

  21. Yerel değişkenleri varlığının korunması • Belli bir bilginin sadece bir fonksiyon veya blok tarafından kullanılması fakat bloğun icrası bittiğinde değerin kaybolmayıp bloğun tekrar icrasına kadar korunması gerektiğinde değişken isminin önünde static anahtar kelimesi kullanılır. • Global değişkenlerin önünde static anahtar kelimesinin kullanılması gerekmez.

  22. #include <stdio.h> int y=3; void a() { static int x=0; printf(" statik x \'in su anki degeri: %d dir\n",x); ++x; } main() {while (y>0) {printf("y\'nin degeri: %d dir\n",y); y--; a(); } } #include <stdio.h> int y=3; void a() { int x=0; printf(" statik x \'in su anki degeri: %d dir\n",x); ++x; } main() {while (y>0) {printf("y\'nin degeri: %d dir\n",y); y--; a(); } } Static anahtar kullanımına örnek Ekran çıktısı: y’nin değeri 3’dir statik x’in değeri 0’dir y’nin degeri 2’dir statik x’in değeri 1’di, y’nin degeri 1’dir statik x’in degeri 2’dir Ekran çıktısı: y’nin değeri 3’dir statik x’in değeri 0’dir y’nin degeri 2’dir statik x’in değeri 0’di, y’nin degeri 1’dir statik x’in degeri 0’dir

  23. Sabit tanımlama (Const) • Const(sabit): değeri programın çalışması boyunca değiştirilemez const tip Belirleyici =değeri; const float PI=3.14; Tip belirtilmez ise tam sayı kabul edilir

  24. Örnek: #include <stdio.h> main() { const float PI=3.14; float r, Alan; scanf(“%f”,r); alan=PI*r*r; printf(“Alan=%f”,alan); }

  25. Öz Yinemeli Fonksiyonlar (Recursive Functions) • Kendini çağıran fonksiyonlardır • Örneğin: Faktoriyel hesabı long fact(long i) { if( i<2) return 1; else return i* fact (i-1); } Örnegin: n=4 için fonksiyonun kendisini çağırdığı satır şöyledir: 4* fakt(3), 3*fact(2), 2*fact(1) 24=4*6 3*2 2*1

More Related