1 / 21

C’de Program Modülleri

C’de Program Modülleri. Fonksiyonlar C’de modüllere fonksiyon denir. Programlar genellikle, programcının yazacağı fonksiyonlarla, standart C kütüphanesinde tanımlı fonksiyonların birleştirilmesi ile yazılır. C’ kütüphanesindeki fonksiyonlar çok çeşitlidir. Fonksiyon çağrıları

diem
Télécharger la présentation

C’de Program Modülleri

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. C’de Program Modülleri • Fonksiyonlar • C’de modüllere fonksiyon denir. • Programlar genellikle, programcının yazacağı fonksiyonlarla, standart C kütüphanesinde tanımlı fonksiyonların birleştirilmesi ile yazılır. • C’ kütüphanesindeki fonksiyonlar çok çeşitlidir. • Fonksiyon çağrıları • Fonksiyonları çağırırlar. • Fonksiyonun ismi ve argümanları(gerekli bilgiler) içerir. • Fonksiyon operasyonları veya işlemleri gerçekleştirir. • Fonksiyon sonuç döndürür. • Fonksiyon çağrı benzetimi: • Patron işçisine bir görev verir ve işin sonunda kendisine rapor vermesini ister. İşçi bilgileri alır, görevi yapar, sonucu geri bildirir.

  2. Matematik Kütüphanesindeki Fonksiyonlar • Matematik kütüphane fonksiyonlar • Programcının bazı genel matematik işlemlerini yapmasını sağlar. • #include<math.h> • Fonksiyonları çağırma formatı • Fonsiyonİsmi( Argüman ) • Eğer çoklu argüman varsa, virgülle ayrılmış argüman listesi yazarak kullanılır. • printf( "%.2f", sqrt( 900.0 ) ); • sqrt fonksiyonunu çağırmak, parantez içindeki girilen argümanın kare kökünün döndürür. • Tüm matematik fonksiyonlarının döndürdüğü veri tipi double’dır • Argümanlar sabit sayılar, değişkenler ya da deyimler olabilir.

  3. Sıklıkla Kullanılan Matematik Kütüphanesi Fonksiyonları-1

  4. Sıklıkla Kullanılan Matematik Kütüphanesi Fonksiyonları-2

  5. Fonksiyon Tanımları • Fonksiyon tanımlama formatı Geri dönüş tipi fonksiyon ismi ( parametre listesi){bildirimler ve ifadeler} • Fonksiyon ismi: herhangi bir geçerli tanıtıcı • Geri dönüş tipi: döndürülen sonuçların veri tipi(varsayılan int) • void tipi geri dönüş değer fonksiyonun herhangi bir değer geri döndürmeyeceğini gösterir. • Parametre listesi: virgülle ayrılmış liste, parametreleri bildirir. • Her parametre için parametre tipi belirtilmelidir. Eğer tip listelenmezse intolarak alınacaktır.

  6. Fonksiyon Tanımları • Fonksiyon tanımlama formatı(devam) Geri dönüş tipi fonksiyon ismi ( parametre listesi){bildirimler ve ifadeler} • Bildirimler ve ifadeler: fonksiyon gövdesi(blok) • Değişkenler bloklar içine tanımlanabilir ve yuvalanabilir. • Bir fonksiyon tanımı hiçbir koşul altında başka bir fonksiyon içinde yapılamaz. • Bir fonksiyonun çağrıldığı yere geri dönmesini kontrol etmek için 3 yol vardır: • Eğer bir fonksiyon bir sonuç ile geri dönmeyecekse, kontrol fonksiyonun en son parantezine ulaşıldığında ya da • return; ifadesinin çalıştırılmasıyla döndürülür. • Eğer fonksiyon bir sonuç ile geri dönecekse returndeyim; ifadesi, deyimin değerini çağırıcıya döndürür.

  7. #include <stdio.h> #include <conio.h> int maximum( int, int, int ); int main() { int a, b, c; printf( "3 tamsayigiriniz: " ); scanf( "%d%d%d", &a, &b, &c ); printf( "Maksimum: %d\n", maximum( a, b, c ) ); getch(); return 0; } int maximum( int x, int y, int z ) { int max = x; if ( y > max ) max = y; if ( z > max ) max = z; return max; } Fonksiyon prototipi Fonksiyon çağrısı Fonksiyon tanımı

  8. Fonksiyon Prototipleri • Fonksiyon prototipleri • Fonksiyon ismi • Parametreleri – Fonksiyon ne alacak. • Geri dönüş tipi – Fonksiyonun döndüreceği veri tipi(varsayılan int) • Fonksiyon çağrılarını onaylamakta kullanılır. • Bir fonksiyon prototipi int maximum( int x, int y, int z ); • 3 int alır. • 1 int döndürür. • Dönüştürme Kuralları ( Argümanların zorlanması) • Daha düşük tiplere dönüştürmek hatalara sebep olabilir.

  9. Veri Tipleri için Dönüşüm Hiyerarşisi

  10. Öncü(Header) Dosyalar • Öncü dosyalar • O kütüphanedeki her fonksiyon için prototiplerin yer alır. • <stdlib.h> , <math.h> …. • #include <filename> ile yüklenir. #include <math.h> • Programcı tarafından oluşturulan öncü dosyalar • Fonksiyonlarla oluşturulur. • Filename.h şeklinde kaydedilir. • Dahil etmek için #include "filename.h"

  11. Bazı Standart Kütüphane Öncü Dosyaları

  12. Fonksiyonları Çağırmak: Değere Göre ve Referansa Göre • Değerle çağırmak • Fonksiyona aktarılacak argümanı kopyalar. • Fonksiyonda ki değişiklikler orijinal olanı etkilemez. • Fonksiyonun argümanı değiştirmesi gerekmediğinde kullanılır. • Yanlışlık değişiklikleri önler. • Referansla çağırmak • Orijinal argümanı aktarır. • Fonksiyondaki değişiklikler orijinali etkiler. • Sadece güvenilir fonksiyonlarla kullanılır. • Şimdilik sadece, değere göre çağırma üzerine yoğunlaşacağız.

  13. Rasgele Sayılar Üretme • rand fonksiyonu • <stdlib.h>’ ı yükle • 0 ile RAND_MAX(en azından 32767) değeri arasında bir tamsayı yaratır. i = rand(); • Dereceldirme • 1 ile n arasında rasgele sayı alabilmek için 1+(rand()%n) • Rand()%n 0 ile n-1 arasında bir sayı döndürür. • Buna 1 eklemek 1ile n arasında bir rasgele sayı üretir. 1+(rand()%6) 1 ile 6 arasında sayı

  14. #include <stdio.h> #include <stdlib.h> #include <conio.h> int main() { inti; for ( i = 1; i <= 20; i++ ) { printf( "%10d", 1 + ( rand() % 6 ) ); if ( i % 5 == 0 ) printf( "\n" ); } getch(); return 0; }

  15. #include <stdio.h> #include <stdlib.h> #include <conio.h> int main() { int face, roll, frequency1 = 0, frequency2 = 0, frequency3 = 0, frequency4 = 0, frequency5 = 0, frequency6 = 0; for ( roll = 1; roll <= 6000; roll++ ) { face = 1 + rand() % 6; switch ( face ) { case 1: ++frequency1; break; case 2: ++frequency2; break; case 3: ++frequency3; break; case 4: ++frequency4; break; case 5: ++frequency5; break; case 6: ++frequency6; break; } } printf( "%s%13s\n", "Yüz", "Frekans" ); printf( " 1%13d\n", frequency1 ); printf( " 2%13d\n", frequency2 ); printf( " 3%13d\n", frequency3 ); printf( " 4%13d\n", frequency4 ); printf( " 5%13d\n", frequency5 ); printf( " 6%13d\n", frequency6 ); getch(); return 0; }

  16. Programı tekrar çalıştığında sonuçlar hep aynı çıkmaktadır. Öyleyse nasıl rassal olabilir? rand fonksiyonu gerçekte sahte rasgele sayılar üretir.. randfonksiyonunu tekrar tekrar çağırmak, rasgele gibi görünen bir dizi sayı oluşmasına sebep olur. Ancak bu dizi, program her çalıştırıldığında kendini tekrar etmektedir. Programın hataları tamamen ayıklandığında, her çalıştırılmada rasgele sayıların farklı bir dizisinin üretilmesi sağlatılabilir. Buna, rassallaştırmadenir ve standart kütüphane fonksiyonu olan srandsayesinde yapılır.

  17. Rasgele Sayılar Üretme • srand fonksiyonu • <stdlib.h> • unsignedtipte bir tamsayıyı argüman olarak kullanır ve randfonksiyonunu besleyerek, programın her çalıştırıldığında farklı bir dizide rasgele sayılar oluşturulmasını sağlar. srand(seed) • srand( time( NULL ) );/*load <time.h> */ • Time( NULL ): o anki saati saniye biçiminde oluşturur.

  18. #include <stdlib.h> #include <stdio.h> #include <conio.h> int main() { inti; unsigned seed; printf( "Beslemeyigirin: " ); scanf( "%u", &seed ); srand( seed ); for ( i = 1; i <= 10; i++ ) { printf( "%10d", 1 + ( rand() % 6 ) ); if ( i % 5 == 0 ) printf( "\n" ); } getch(); return 0; }

  19. Örnek: Şans Oyunu • Oyuncu iki zarı aynı anda atar. İki zarında altı yüzü vardır. Bu yüzlerde 1,2,3,4,5 ve 6 adet nokta bulunur. Zarlar durduktan sonra her iki zarında üste gelen yüzleri toplanır. Eğer toplam ilk atışta 7 ya da 11 ise oyuncu kazanır. Eğer toplam ilk atışta 2,3 ya da 12 gelirse (buna barbut denir) oyuncu kaybeder. Eğer ilk atışta toplam 4,5,6,8,9,10 ise bu toplam oyuncunun sayısı haline gelir. Kazanmak için oyuncu sayısını bulana kadar zarları atmaya devam eder. Zarları atmaya devam ederken kendi sayısı yerine 7 atarsa kaybeder.

  20. #include <stdio.h> #include <stdlib.h> #include <time.h> #include <conio.h> introllDice(void); int main() { intgameStatus, sum, myPoint; srand( time( NULL ) ); sum = rollDice( ); switch( sum ) { case 7: case 11: gameStatus= 1; break; case 2: case 3: case 12: gameStatus= 2; break; default: gameStatus= 0; myPoint = sum; printf( "Oyuncununkazanacagizar: %d\n", myPoint ); break; }

  21. while ( gameStatus == 0 ) { sum = rollDice( ); if ( sum == myPoint ) gameStatus = 1; else if ( sum == 7 ) gameStatus = 2; } if ( gameStatus == 1 ) printf( "Oyuncukazanadi\n" ); else printf( "Oyuncukaybettti\n" ); getch(); return 0; } introllDice(void) //rollDice fonksiyonu argüman almamaktadır. { //Bu sebepten, fonksiyon parametresi void kullanılmıştır. int die1, die2, workSum; die1 = 1 + ( rand() % 6 ); die2 = 1 + ( rand() % 6 ); workSum = die1 + die2; printf( "Oyuncununattigizar: %d + %d = %d\n", die1, die2, workSum ); return workSum; }

More Related