© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Fonksiyonlar –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
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Fonksiyon Tanımları Fonksiyon Tanımlama biçimleri return-değer-tipi function-name( parametere-listesi ) { bildirimler ve ifadeler } –Fonksiyon adı: herhangi geçerli tanımlayıcı –Veri tipi döndürme: sonucun veri tipi (varsayılan int ) void – fonksiyonlar geriye değer döndürmez –Parametre-listesi: parametreleri belirtilmiş, virgülle ayrılmış listedir A type must be listed explicitly for each parameter unless, the parameter is of type int Her parametre için parametre tipleri ayrı ayrı belirtilmelidir (eğer tipleri int değilse)
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Fonksiyon Tanımlama Fonksiyon Tanımlama biçimleri (devam) return-değer-tipi function-name( 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) ;
Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig05_03.c (Part 1 of 2)
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ı
Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig05_04.c (Part 1 of 2)
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ı Enter three integers: Maximum is: 85 Enter three integers: Maximum is: 85 Enter three integers: Maximum is: 85
© 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 şeyler –Return type – fonksiyonun veri dönüşü tipi (varsayılan int ) –Fonksiyonları onaylamakta kullanılır –Eğer fonksiyon prototipi programın içerisinde yer almazsa, prototipe ihtiyaç duyulur –Prototip ile fonksiyonlar int maksimum( int x, int y, int z ); 3 ints 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
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 5.6Fonksiyon Prototipleri
© 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.
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 5.7Öncü Dosyalar
© 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ı Şimdi, değere göre çağırmaya bakalım
© 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 “random” sayıların önceden ayarlanmış dizisi 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ı
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 5.9 Rasgele Sayılar Üretme srand fonksiyonu (rassallaştırma) – –Farklı bir dizide 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ığı esnadaki saniye cinsinde oluşturur –“(Randomizes) rasgele seçmeler" çekirdek
Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig05_07.c
Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Program çıktısı
Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig05_08.c (Part 1 of 3)
Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig05_08.c (Part 2 of 3)
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
Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig05_09.c (Part 1 of 2)
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:
© 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 İlk atışta 7 veya 11 (top.), oyuncu kazanır. İlk atışta 2, 3, veya 12 (top.), oyuncu kaybeder. İlk atışta 4, 5, 6, 8, 9, 10 – oyuncunun puanı –Kazanmak için kendi puanını 7 gelmeden önce tekrar atması gerekir.
Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig05_10.c (Part 1 of 4)
Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig05_10.c (Part 2 of 4)
Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig05_10.c (Part 3 of 4)
Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. fig05_10.c (Part 4 of 4)
Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Program Çıktısı Player rolled = 11 Player wins Player rolled = 5 Point is 5 Player rolled = 8 Player rolled = 3 Player rolled = 5 Player wins Player rolled = 2 Player loses Player rolled = 5 Point is 5 Player rolled = 7 Player loses