Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Bölüm 5 - Fonksiyonlar index 5.1Giriş 5.2C de Program.

Benzer bir sunumlar


... konulu sunumlar: "© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Bölüm 5 - Fonksiyonlar index 5.1Giriş 5.2C de Program."— Sunum transkripti:

1 © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Bölüm 5 - Fonksiyonlar index 5.1Giriş 5.2C de Program Modülleri 5.3Math Kütüphanesindeki Fonksiyonlar 5.4Fonksiyonlar 5.5Fonksiyon Tanımlamaları 5.6Fonksiyon Prototipleri 5.7Öncü (Header) Dosyalar 5.8Fonksiyonları Çağırma: Değere Göre ve Referansa Göre çağırmak 5.9Rastgele Sayılar Üretme 5.10Örnek: Şans Oyunu 5.11Depolama Sınıfları 5.12Faaliyet Alanı Kuralları 5.13Yineleme 5.14Yineleme kullanımına örnek: Fibonacci Serisi 5.15Yineleme vs. Tekrar

2 © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Amaçlar Bu bölümde öğreneceklerimiz: –Fonksiyon adı verilen, küçük parçalarla modüler programların nasıl oluştuğunu anlamak.. –C standart kütüphanesinde yaygın olarak kullanılan matematik fonksiyonlarını tanıma –Yeni Fonksiyonlar oluşturabilme. –Fonksiyonlar arası bilgi geçişi için kullanılan mekanizmaları(yöntemleri) anlama. –Rastgele sayı üreterek simülasyon tekniklerini tanıma –Kendi kendini çağıran fonksiyonları yazmak ve nasıl kullanılacaklarını anlamak.

3 © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 5.1Giriş Böl ve Zaptet (Parçalara ayırma (bölme) ve Bütün elde etme) –Çok küçük parçalardan veya bileşenlerden bir program oluşturma Bu çok küçük parçalar modüller olarak adlandırılır –Her bir parça orijinal programa göre daha kolay yönetilebilir (programın bütününe göre)

4 © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 5.2C de Program Modülleri Fonksiyonlar –C de modüller –Programlar kullanıcı tarafından tanımlanmış fonksiyonlar ile kütüphanedeki fonksiyonları birleştirir C’nin standart kütüphanesi fonksiyonların geniş türlerine sahiptir Fonksiyon çağırma –Fonksiyon çağrıları Fonksiyon adı ve argümanları (Veri) tedarik eder Fonksiyon operasyonları veya işlemleri gerçekleştirir Fonksiyon sonucu döndürür. –Fonksiyon çağırma analojisi Patron işçiye görevini tamamlamasını söyler ( bitip bitmediğini sorar ) –İşçi bilgileri alır, görevini yapar ve sonucu patrona döndürür –Bilgi gizlidir: Patron yapılan işin detaylarını bilmez

5 © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 5.2 C de Program Modülleri Fig. 5.1 Patron/İşçi arasındaki hiyerarşik ilişki

6 © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 5.3 Matematik Kütüphanesindeki Fonksiyonlar Math kütüphanesindeki fonksiyonlar –Yaygın olarak kullanılan matematiksel hesaplamalar –#include Çağrılan Fonksiyonları biçimlendirme –FonksiyonAdı( argüman ); Eğer çoklu argüman varsa listeleri virgül kullanarak ayır –printf( "%.2f", sqrt( ) ); Sqrt fonksiyonunu çağırır, girilen değerin karekök’ünü geriye döndürür. Bütün Matematik fonksiyonları verileri “ double” olarak geri döndürür. –Argümanlar sabit, değişken veya ifade olabilir.

7 © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 5.3Math. Kütüphanesinin Fonksiyonları

8 © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 5.4Fonksiyonlar Foksiyonlar –Programı modüler hale getirir. –Yerel değişkenler, fonksiyonların içerisinde tanımlanır. Sadece tanımlandığı fonksiyon tarafından bilinir –Parametreler Fonksiyonlar arasındaki bilgi alışverişi Yerel değişkenler Fonksiyonların yararları –Bölme ve Zaptetme Yönetilebilir program geliştirme –Yazılımı yeniden kullanabilme Varolan fonksiyonları yeni programlar için blok olarak inşa etme Soyutlama – içsel detayları gizleme (kütüphane fonksiyonları) –Kodları tekrar yazmayı engelleme

9 © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 5.5Fonksiyon Tanımları Fonksiyon Tanımlama biçimleri return-değer-tipi fonksiyon adı( parametre-listesi ) { bildirimler ve ifadeler } –Fonksiyon adı: herhangi geçerli tanımlayıcı –Veri tipi döndürme: sonucun veri tipi void – fonksiyonlar geriye değer döndürmez –Parametre-listesi: parametreleri belirtilmiş, virgülle ayrılmış listedir Her parametrenin tipi belirtilmek zorundadır belirtilmezse int kabul edilir.

10 © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 5.5 Fonksiyon Tanımlama Fonksiyon Tanımlama biçimleri (devam) return-değer-tipi fonksiyon adı( parametere-listesi ) { bildirimler ve ifadeler } –Bildirimler ve ifadeler: fonksiyonun gövdesi Değişkenler blokların içinde tanımlanabilir (kısıtlanabilir) Fonksiyonlar diğer fonksiyonların içinde tanımlanamaz. –Geri dönüş kontrolu Eğer boş değer geri dönüyorsa (hiç bir değer dönmüyorsa) –return; –veya, sağ paranteze ulaşıncaya kadar Eğer bir değer geri dönüyorsa –return ifade(geri dönecek değer) ;

11 Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig05_03.c (Part 1 of 2)

12 Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig05_03.c (Part 2 of 2) Program çıktısı

13 Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig05_04.c (Part 1 of 2)

14 Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig05_04.c (Part 2 of 2) Program çıktısı Uc sayi giriniz: Maximum : 85 Uc sayi giriniz : Maximum : 85 Uc sayi giriniz : Maximum : 85

15 © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 5.6Fonksiyon Prototipleri Fonksiyon prototipi –Fonksiyon adı –Parametreler – fonksiyonun içinde tuttuğu değerler –Return type – fonksiyonun veri dönüşü tipi (varsayılan int ) –Eğer fonksiyon tanımı programın içerisinde yer almazsa, prototipe ihtiyaç duyulur –Prototip ile fonksiyonlar int maksimum( int x, int y, int z ); 3 integer sayı içerir int değeri döndürür Geçiş kuralları ve dönüşümler –Kendinden küçük tiplere dönüşümler hata oluşturabilir.

16 © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 5.6Fonksiyon Prototipleri

17 © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 5.7Öncü (Header) Dosyalar Öncü Dosyalar –Kütüphane fonksiyonları için fonksiyon prototipleri içerir –,, vs... –Yükleme... #include #include Öncü dosya düzenleme –Fonksiyonlarla dosya oluşturma –filename.h olarak kayıt etme. –# include "filename.h“ ile başka dosyalara yükleme –Fonksiyonları tekrar kullanma.

18 © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 5.7Öncü Dosyalar

19 © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 5.8Fonksiyon çağırma: Değere Göre ve Referansa Göre Değere göre –Argümanın kopyası fonksiyona gönderir. –Kopyayı değiştirmek, orijinal değişkenin değerini etkilemez –Fonksiyonun argüman’ı değiştirmeye ihtiyaç duymadığı zaman kullanılmalıdır. Önemli sorunların oluşmasını engeller Referansa göre –Orijinal argümanı gönderir. –Argümanı değiştirmek, orijinal değişkenin değerini etkiler –Sadece güvenilir fonksiyonlar ile kullanılmalı Öncelikle, değere göre çağırma yöntemiyle örnekler yapılacak

20 © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 5.9Rasgele Sayılar Üretme rand fonksiyonu –yükle –0 ve RAND_MAX (en az ) arasında sayı “random” geri döndürme. i = rand(); –Pseudorandom (sözde rastgele) Öceden sırası belirlenmiş rastgele sayılar Her fonksiyon çağrılmasında aynı dizi tekrar eder. Derecelendirme (Scaling) –1 ile n arasında random sayı alma 1 + ( rand() % n ) rand() % n 0 ile n–1 arasında bir sayı döndürür 1 ile n arasında random sayıya 1 ekleme yapar. 1 + ( rand() % 6) –1 and 6 arasında sayı

21 Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig05_07.c

22 Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Program çıktısı

23 Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig05_08.c (Part 1 of 3)

24 Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig05_08.c (Part 2 of 3)

25 Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig05_08.c (Part 3 of 3) Program Çıktısı Face Frequency

26 © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 5.9 Rasgele Sayılar Üretme srand fonksiyonu (rastgeleselleştirme) – –Farklı bir sırada rasgele sayılar oluşturulmasını sağlar –Unsigned(işaretsiz) tipte bir tamsayıyı argüman olarak kullanır srand( seed ); –srand( time( NULL ) );/*yükle */ time( NULL ) –Program çalıştırıldığı sırada saatin saniye cinsinde oluşturur –Çekirdeği rastgeleleştirir.

27 Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig05_09.c (Part 1 of 2)

28 Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig05_09.c (Part 2 of 2) Program Çıktısı Enter seed: Enter seed: Enter seed:

29 © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 5.10Örnek: Şans Oyunu Barbut(craps) similasyonu Kurallar –İki zar atılır (toplamına bakılır) İlk atışta 7 veya 11 ise oyuncu kazanır. İlk atışta 2, 3, veya 12 ise oyuncu kaybeder. İlk atışta 4, 5, 6, 8, 9, 10 ise oyuncunun puanı olarak saklanır. –Kazanmak için ilk atışta aldığı puanı, tekrar atması gerekir. Kendi puanını atmadan önce 7 gelirse kaybeder.

30 Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig05_10.c (Part 1 of 4)

31 Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig05_10.c (Part 2 of 4)

32 Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig05_10.c (Part 3 of 4)

33 Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig05_10.c (Part 4 of 4)

34 Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Program Çıktısı Atilan zarlar = 11 Oyuncu kazandi Atilan zarlar = 5 Puaniniz 5 Atilan zarlar = 8 Atilan zarlar = 3 Atilan zarlar = 5 Oyuncu kazandi Atilan zarlar = 2 Oyuncu kaybetti Atilan zarlar = 5 Puaniniz 5 Atilan zarlar = 7 Oyuncu kaybetti

35 © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved Depolama Sınıfları Depolama sınıfı belirteçleri –Depolama süresi – objenin hafızada kalma süresi –Faaliyet alanı – objenin programda referans edildiği yer –Bağlama – objenin hangi kaynak dosyada geçerli olacağını belirler (dahası bölüm 14’de) Otomatik depolama –Objeler bildirildikleri bloklar içerisinde oluşturulur ve yok edilir –auto: yerel değişkenler için varsayılan auto double x, y; –register: yerel deişkenleri yüksek hızdaki register’lara koymaya çalışır. Otomatik değişkenler için kullanılabilir register int counter = 1;

36 © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved Depolama Sınıfları Statik Depolama –Bütün programın işlenmesi esnasında varolan değişkenler –static: fonksiyonun içinde tanımlanan yerel değişkenler Fonksiyondaki işlem bittikten sonra değerini saklar Sadece ait olduğu fonksiyon tarafından bilinir –extern: global değişkenler ve fonksiyonlar için varsayılan Herhangi bir fonksiyon tarafından bilinir

37 © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 5.12Faaliyet Alanı Kuralları Dosya faaliyet alanı –Fonksiyonun dışında tanımlanmış tanıtıcı tüm fonksiyonlar tarafında bilinir –Global değişkenler, fonksiyon tanımları ve fonksiyon prototipleri için kullanılır Fonksiyon faaliyet alanı –Fonksiyonun gövdesi içerisinde referans edilebilir –Sadece etiketler için kullanılabilir ( start:, case:, etc.)

38 © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 5.12Faaliyet alanı kuralları Blok faaliyet alanı –Tanıtıcı bloğun içerisinde tanımlanır Blok faaliyet alanı tanımlamada başlar, küme parantezine(}) ulaşıldığında sona erer. –Değişkenler, fonksiyon parametreleri, fonksiyonların yerel değişkenleri için kullanılır –Dış bloktaki tanıtıcı iç bloktaki tanıtıcıyla aynı isme sahip ise, dış bloktaki tanıtıcı iç blok sona erene kadar saklanır Fonksiyon prototipi faaliyet alanı –Parametre listesindekiler için kullanılır

39 Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig05_12.c (Part 1 of 3)

40 Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig05_12.c (Part 2 of 3)

41 Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig05_12.c (Part 3 of 3)

42 Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Program Output main’deki ana blok değişkeni x= 5 iç bloktaki yerel x değişkeni 7 main’deki ana blok değişkeni x= 5 yerel() fonksiyonuna girerken x in değeri 25 yerel() fonksiyonundan cikmadan önce x’in değeri 26 statikYerel() fonksiyonuna girerken x=50 statikYerel() fonksiyonundan cikarken x=51 genel() fonksiyonuna girerken x=1 genel() fonksiyonuna cikarken x=10 yerel() fonksiyonuna girerken x in değeri 25 yerel() fonksiyonundan cikmadan önce x’in değeri 26 statikYerel() fonksiyonuna girerken x=51 statikYerel() fonksiyonundan cikarken x=52 genel() fonksiyonuna girerken x=10 genel() fonksiyonuna cikarken x=100 main’deki yerel x=5

43 © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 5.13Yineleme Yineleme Fonksiyonları –Kendi kendini çağıran fonksiyonlar –Temel durumda çözülebilir –Bir problemi parçalara ayırır Ne yapacağını bildiği parça Ne yapacağını bilmediği parça –Ne yapacağını bilmediği parça orijinal probleme benzer –Fonksiyon ne yapacağını bilmediği parçayı çözmek için kendisinin bir kopyasını başlatır. –En sonunda temel durum çözülür Tıkalı yerleri yakalar, yukarı doğru çalışır ve bütün problemi çözer

44 © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 5.13Yineleme Örnek: faktoriyel –5! = 5 * 4 * 3 * 2 * 1 –Dikkat!!! 5! = 5 * 4! 4! = 4 * 3!... –Faktoriyel yineleme ile de cözülebilir –Temel durumu çöz ( 1! = 0! = 1 ) sonra yerine koy 2! = 2 * 1! = 2 * 1 = 2; 3! = 3 * 2! = 3 * 2 = 6;

45 © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved Yineleme

46 Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig05_14.c (Part 1 of 2)

47 Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig05_14.c (Part 2 of 2) 1! = 1 2! = 2 3! = 6 4! = 24 5! = 120 6! = 720 7! = ! = ! = ! =

48 © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 5.14Yineleme kullanımına örnek: Fibonacci Serisi Fibonacci serisi: 0, 1, 1, 2, 3, 5, 8... –Her sayı kendinden önceki iki sayının toplamıdır –Yinelemeyle çözülebilir: fib( n ) = fib( n - 1 ) + fib( n – 2 ) –fibonacci fonksiyonu için kod long fibonacci( long n ) { if (n == 0 || n == 1) // temel durum return n; else return fibonacci(n - 1) + fibonacci(n – 2); }

49 © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved Yineleme kullanımına örnek: Fibonacci Serisi Yineleme Setinin Fibonacci fonksiyonunu çağırması f( 3 ) f( 1 ) f( 2 ) f( 1 )f( 0 )return 1 return 0 return + +

50 Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig05_15.c (Part 1 of 2)

51 Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig05_15.c (Part 2 of 2) Program Output Bir sayi giriniz: 0 Fibonacci( 0 ) = 0 Bir sayi giriniz: 1 Fibonacci( 1 ) = 1 Bir sayi giriniz: 2 Fibonacci( 2 ) = 1 Bir sayi giriniz: 3 Fibonacci( 3 ) = 2 Bir sayi giriniz: 4 Fibonacci( 4 ) = 3

52 Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Program Output (continued) Bir sayi giriniz: 5 Fibonacci( 5 ) = 5 Bir sayi giriniz: 6 Fibonacci( 6 ) = 8 Bir sayi giriniz: 10 Fibonacci( 10 ) = 55 Bir sayi giriniz: 20 Fibonacci( 20 ) = 6765 Bir sayi giriniz: 30 Fibonacci( 30 ) = Bir sayi giriniz: 35 Fibonacci( 35 ) =

53 © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved Yineleme kullanımına örnek: Fibonacci Serisi

54 © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 5.15Yineleme vs. Tekrar Tekrarlama –Tekrar : döngü yapısı –Yineleme: tekrarlı fonksiyon çağırır Sınır –Tekrar: döngü koşul şartı yanlış oluncaya.. –Yineleme: temel durum gerektirir Her ikisi de sonsuz döngüye sahip olabilir Denge –İyi yazılım mühendisliği(yineleme) ve performans(tekrar) arasında seçim yapmak…

55 © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved Yineleme vs. Tekrar


"© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Bölüm 5 - Fonksiyonlar index 5.1Giriş 5.2C de Program." indir ppt

Benzer bir sunumlar


Google Reklamları