21 Kasım 2016 Pazartesi

Örnek-3: Komut Satırından Girilen 2 Sayının Toplamı



Ya da Windows işletim sistemi için DOS komutu satırına geçilir ve ilgili exe uygulaması bulunarak aşağıdaki gibi program çalıştırılabilir:









Örnek-2: n Tane Sayının En Küçüğünü Bulan Fonksiyon

Öyle bir fonksiyon yazalım ki istediğimiz kadar sayıyı fonksiyona girdi (argüman) olarak verebilelim ve geriye değer olarak bu sayılardan en küçüğünü dönsün.


main() Fonksiyonuna Parametre Aktarımı
Ana programa yani main() fonksiyonuna parametre aktarımı, derlenmiş (çalıştırılabilir) bir program komut satırından (işletim sistemi ortamından) çalıştırılacağı zaman yapılır.
Parametre aktarımı, programın adı yazılıp bir boşluk bırakıldıktan hemen sonra yapılır.
Parametreler, komut satırından sayısal olarak girilse bile program içinde karakter topluluğu (string) olarak gelir.
Bu durumda, bu ifadeleri sayısal değerlere çeviren (atoi(), atol(), atof() gibi) fonksiyonlar kullanılır.


          int main(arguman_sayısı, arguman_vektörü)
          int  arguman_sayısı;
          char *arguman_vektörü[];
          {
    …..
             if(arguman_sayısı < ...){
                printf("Eksik parametre !\n");
                exit(1);
             }
             if(arguman_sayısı > ...){
                printf("Cok fazla parametre !\n");
                exit(1);
             }
             .
             ... arguman_vektörü[0] ... /* 1. eleman program adı  */
             ... arguman_vektörü[1] ... /* 2. eleman 1. parametre */
           }

Örnek-1: n Tane Sayının Toplamı

Öyle bir fonksiyon yazalım ki istediğimiz kadar sayıyı fonksiyona girdi (argüman) olarak verebilelim ve sonucunda bu sayıları toplasın.
Kaç sayı olacak? – 3 sayı? – 5 sayı ?
Normalde bu bilgi önemli mi?
Cevap: Evet
Ancak Esnek argümanlı fonksiyon ile argüman sayısı önemsiz hale gelecek.



Esnek Argümanlı Fonksiyonlar ve main() Fonksiyonuna Parametre Aktarımı

Aşağıdaki gibi üçüncü dereceden bir polinomu ele alalım:

P(x) = a + bx + cx2 + dx3

a, b, c, d katsayıları gerçel sayı sabitleridir.

x ise gerçel sayı türündeki bir değişkendir.

Bu polinomu temsil eden basit bir fonksiyonu nasıl tanımlarız?


P(x) = a + bx + cx2 + dx3

float p(float x, float a, float b, float c, float d)
{
    float p = a + b*x + c*x*x + d*x*x*x;
    return p;
}



Buna göre, x = 1.7'de,
        P(x) = 1 - 2x
değerini hesaplamak için bu fonksiyon aşağıdaki gibi çağırılmalıdır:

    sonuc = p(1.7, 1.0, -2.0, 0.0, 0.0);

Burada, kullanılmayan katsayılar için 0.0 değeri mutlaka fonksiyona geçirilmelidir.


Kullanılmayan argümanlar geçirilmeden de fonksiyonu çağırmak mümkündür.

C Programlama dili, kullanıcılarına argümanları esnek olarak geçirme imkanı verir.

Bunun anlamı, belli kurallar sağlandığında, p() fonksiyonunun aşağıdaki gibi çağrılabilmesidir:

           /*  x    a     b */
    sonuc = p(1.7, 1.0, -2.0);



Esnek argümanlar için 2 temel kural vardır:
Esnek argüman kullanımı isteğe bağlıdır.
Esnek argümanları oluşturan küme ardışık olarak listeye eklenmelidir.
Bu türden argümanlar, aşağıdaki gibi, fonksiyonun parametre listesi kısmında ... (3 nokta) ile belirtilir.

      double p(double x, int n, ...)
      {

      }



Esnek argümanlı fonksiyon tanımlaması yapabilmek için stdarg.h kütüphanesinde üç tane makro fonksiyon tanımlanmıştır.

İki Kelimeyi Birleştiren C Programı

Soru-3: Kullanıcı tarafından klavyeden girilen iki kelimeyi birleştiren bir C programı yazınız. İki kelimeyi birleştirmek için aşağıdaki fonksiyon prototipini dikkate alınız.

void KelimeBirlestir (char c1[], char c2[])