IZTECH IEEE ComSoc Archives

C Course 2019-2020 - Fonksiyonlar ve Arrayler (Ön Bilgi) (Turkish)

November 26, 2019

Fonksiyonlar

Fonksiyonlar, düzenli ve tekrar kullanılabilir belli bir işlemi gerçekleştiren kod bloklarıdır. Bunları matematikteki fonksiyonlara benzetmemiz yanlış olmaz. Temelinde aynı mantık yatmaktadır.

Örnek olarak aşağıdaki fonksiyonu ele alalım.

f(x,y)=x+y+1f(x,y) = x + y + 1,      f:Z2Zf: \Z^2 \Rightarrow \Z

f(x,y)f(x,y) fonksiyonun tanım kümesi Z2\Z^2, görüntü kümesi ise Z\Z. Yaptığı işlem ise tam sayılar kümesinde tanımlı iki değişken olan xx ile yy'nin toplamının 1 fazlası.

Biz bu fonksiyonu C'de aşağıdaki şekilde ifade edebiliriz.

    int sum(int x, int y) {
        return x + y + 1;
    }

Fonkisyonumuz int türündeki x değişkeni ile int türünde y değişikenin 1 fazlasını döndürüyor. Dönen değer yine int olduğu için int sum yazdık.

Başka bir örnek olarak aşağıdaki fonksiyonu C'de yazalım. Geçersiz değer girildiğinde de sonuç olarak -1 döndürelim.

g(x,y)=x/yg(x,y) = x / y,      g:N×N+R+g: \N \times \N^+ \rightarrow \R^+

    double div(int x, int y) {
        if (x < 0 || y <= 0) return -1;
        return ((double) x) / y;
    }

Not: Sonsuz sayıda değeri bilgisayarda tutamayacağımız için en yakın veri tipini seçtik.

Not 2: unsigned int kullanmadık çünkü hatalara yol açabiliyor. (int yerine unsigned int yazıp, negatif değerlerin sonuçlarını printf ile yazdırabilirsin.)

Kendiniz de aşağıdaki fonksiyonun ne yaptığını ve neden void tipinde olduğunu anlamaya çalışın.

    void f(int i) {
        for (int j = 0; j < i; j++) {
            printf("*");
        }
    }

Arrayler

Array, önceden belirlenmiş sayıda aynı tipten veriyi bir arada tutabilen veri tipidir.

Örnek olarak şöyle bir int arrayi oluşturalım.

    int my_array[9] = {40, 55, 63, 17, 22, 68, 89, 97, 89};

Hafızada nasıl tutulduğunu anlamak için görselleştirirsek şöyle bir görsel çıkacak.

1d array

Arrayimizi tanımlarken boyutunun 9 olduğunu [9] diyerek belirtmiştik. Fakat ifadenin sağında açıkca yazdığımız için doğrudan [] desek de olur.

Ayrıca dikkatinizi çekmiştir ki indis diye bir tabir geçiyor ve bu ifade elemanlarımızı saymaya 0'dan başlıyor. Bunun sonucu my_array[1] dediğimizde ikinci elemana ulaşıyoruz.

Örnek olarak ilk elemanın değerini 1234 yapmak istersek de my_array[0] = 1234 diye yazıyoruz.