Standart C Programlama Dili


1.9. Örnek Programlar

Bu kısımdaki örnek programlar, ne işe yaradıkları hakkında kendi kendilerini açıklayacak şekilde yazılmışlardır, ancak henüz anlatılmamış—if ve while gibi—bazı deyimler ve işleçler içerirler. Bunların anlamlarını ortaya çıkarmak için, okuyucu, eski programlama deneyimlerine dayanarak bir kestirimde bulunabilir.

Örnek Program 1

Bu programda kullanılan _getche fonksiyonu, bir standart girdi fonksiyonu olmadığı için, dosya sonu kontrolü MS-DOS standardına uygun olarak control+z karakteri kullanılarak yapılmaktadır. Not: _getche fonksiyonunun kullanımından dolayı, bu program C89 ve C99 C Standardına uygun değildir.

 1.  /* * * * * * * * * * * * * * * * * * * * *\
 2.   *                                       *
 3.   * Bu program, CONTROL+Z girilinceye     *
 4.   * kadar, klavyeden girilen her karak-   *
 5.   * terin ASCII kodunu verir.             *
 6.   *                                       *
 7.  \* * * * * * * * * * * * * * * * * * * * */
 8.
 9.  #include <stdio.h>
10.  #include <conio.h>
11.  int main (void)
12.  {
13.    int  c;
14.    const char  ctrlz = 26;  /* ASCII ond. kodu 26 (CONTROL+Z) */
15.
16.    printf("\nBazi kontrol karakterleri disinda,"
17.      "\ngirilen karakterin kodu goruntulenecek.");
18.    while (1) {
19.  /* Ekrana yansitarak bir klavye tusunu oku.
20.   * CONTROL+Z'ye basilmissa programi bitir.
21.   */
22.      printf("\nBir karakter girin: ");
23.      if ((c = _getche()) == ctrlz)
24.        break;
25.  /* Girilen karakterle ayni satirda ondalik, onaltili
26.   * ve sekizli olarak ASCII kodunu goruntule.
27.   */
28.      printf(", ondalik: %d, onaltili: %x, sekizli:  %o",c,c,c);
29.    } /* while */
30.    return 0;
31.  } /* main */

Örnek Program 2

 1.  /* * * * * * * * * * * * * * * * * * * * * * * * * * *\
 2.   *                                                   *
 3.   * Bu program, -1 girilinceye kadar, klavyeden       *
 4.   * girilen ondalik sayilari kabul eder, daha sonra,  *
 5.   * girilen sayilarin agirlikli toplamini, ortala-    *
 6.   * masini ve varyansini hesaplayip goruntuler.       *
 7.   *                                                   *
 8.   * Uyari: Cok buyuk sayilarin ve rakam olmayan       *
 9.   * karakterlerin girilmesi sorun yaratabilir.        *
10.   *                                                   *
11.  \* * * * * * * * * * * * * * * * * * * * * * * * * * */
12.
13.  #include <stdio.h>
14.  #define AGIRLIK 1.0
15.  /* Eger veri degerleri agirlikli olarak hesaplanacaksa,
16.   * agirliga farkli bir deger verin.
17.   */
18.
19.  int main (void)
20.  {
21.    int    sayi;
22.    int    adet = 0;
23.    double kn_sayi, toplam = 0.0, karelerin_toplami = 0.0;
24.    double ortalama = 0.0, varyans = 0.0;
25.
26.    printf("\nToplam, ortalama ve varyans hesaplayan  program."
27.      "\n\nLutfen ilk sayiyi (veya cikmak icin -1) girin: ");
28.    scanf("%d", &sayi);
29.    /* Girilen sayi olumsuzsa programi bitir. */
30.    while (sayi >= 0) {
31.      adet++;   /* Sayaci artir */
32.      /* Sayiyi double'a cevirip AGIRLIK'la carp. */
33.      kn_sayi = (double)sayi * AGIRLIK;
34.      /* Yeni toplami ve karelerin toplamini hesapla. */
35.      toplam += kn_sayi;
36.      karelerin_toplami += kn_sayi * kn_sayi;
37.      /* Yeni ortalama ve varyansi hesapla. */
38.      ortalama = toplam / (double)adet;
39.      varyans =  ortalama*ortalama-karelerin_toplami/(double)adet;
40.      if (varyans < 0.0)
41.        varyans = -varyans;
42.      /* Hesaplanan degerleri goruntule. */
43.      printf("\nAdet = %d", adet);
44.      printf(", toplam = %.2f", toplam);
45.      printf(", ortalama = %.2f", ortalama);
46.      printf(", varyans = %.2f", varyans);
47.      /* Bir sonraki sayiyi al. */
48.      printf("\nLutfen bir sonraki sayiyi "
49.        "(veya cikmak icin -1) girin: ");
50.      scanf("%d", &sayi);
51.    } /* while */
52.
53.  /* En son hesaplanan degerleri bir daha ve degisik
54.   * bir bicimde goruntule.
55.   */
56.    printf("\nVerilerin adedi : %12d", adet);
57.    printf("\nToplam          : %15.2f", toplam);
58.    printf("\nOrtalama        : %15.2f", ortalama);
59.    printf("\nVaryans         : %15.2f\n", varyans);
60.    return 0;
61.  } /* main */