Zamanınız sınırlı, başkalarının hayatını yaşayarak bunu ziyan etmeyin.

9 Eylül 2014 Salı

Program Organizasyonu


    C programlama dili ile yazılmış programların bir çoğu çok sayıda dosyaya bölünerek yazılmıştır.
    Bu yöntemin en çok kullanıldığı yer birden fazla yazılımcının olduğu projelerdir.
    Her programcı kendine verilen işi yapan bir program parçası oluşturur.
    Projenin sonunda ise bu dosyalar birbirine entegre edilerek proje tamamlanır.Bu konuyla ilgili bilmemiz gereken önemli iki nokta vardır.Bunlar :
    A)Arayüz ( İnterface ) :
    Kütüphane dosyalarında olan makroların,fonksiyon imzalarının ve sabitlerin oluşturduğu bir bütündür.
    Bir yazılım ekibi , başkaları tarafından tasarlanılan modülü kullanırlarken arka planda ne iş yaptığı ile ilgilenmezler.
    İşte bu modüllerin birleştirilmesiyle ortaya program çıkar.
    B)Implementasyon :
    Örneğin bir projede siz kullanıcıda tarafından girilen sayının faktöriyelini bulmakla yükümlüsünüz.
    Bunu önceki kodlarımızda gördüğünüz gibi iki şekilde yaptık.Yinelemeli ve iteratif bir şekilde.
    Örneğin bir yinelemeli yöntem ile fonksiyonumuzu oluşturduk.Karşı taraf bunu iteratif bir hale dönüştürse bile bizim kodumuzu değiştirmemize gerek kalmaz.
    Bu paradigmaya program to interface (arayüzler kullanılarak programlama) denir.
    Bu paradigmayı kullanan sistemlere gevşek sistem denir ve bir sistem ne kadar gevşekse o kadar modülerdir.
    Arayüz Ve İmplementasyon Farkı :
 
    Arayüz içinde fonksiyonları ve verileri bulundurur.
    Implementasyon ise o fonksiyonların arka planda ne iş yaptığına bakılmasıdır.
    Yukarıdaki saati kullanan kişi için önemli olan şey saatin arayüzü yani saattir.
    Kullanıcı dişlilerin nasıl çalıştığını yada gücünü nereden aldığınu önemsemez.
    .h Uzantılı Kütüphane Dosyalarının Yapısı :
    Bu dosyalar .c uzantılı kaynak dosyaları arasında ortak bir bilginin tek bir noktada tanımlanmasını sağlar.Bunlara örnek olarak şunları verebiliriz:
    Program sabitleri,
    Makro tanımları,
    Fonksiyon imzaları.
    Dikkat etmeniz gerek en önemli şeylerden birisi arayüzler fonksiyonlara tanımlama yapılmamasıdır.Fonksiyonun sadece imzasını belirtmeniz gerekir.Bu arada aynı şey .c uzantılı dosyaların başka dosyalara dahil edilmemesinde de geçerlidir.
    .c Uzantılı Kaynak Dosyalarının Yapısı :
    Bu dosyalar kütüphane dosyalarının içerdiği bütün özelliklere sahiptir.Bu dosyalar genellikle implementasyon,kütüphane dosyaları ise arayüz dosyaları olarak adlandırılırlar.
    Birden Fazla Dosyadan Oluşan C Programları :
    Daha öncede bahsettiğim gibi büyük programlar ekip çalışması sonucu ortaya çıkarlar.Görev dağılımı yapılır ve her yazılımcı kendine verilen modülü oluşturur.Bunlar birleştirilere günümüz programları ortaya çıkar.
    Büyük yazılımları tek bir dosya içerisinde yürütmek mümkün olsa bile bu verimli bir yöntem değildir.
    Birden Fazla Dosyadan Oluşan C Programlarının Derlenmesi :
    A)Komut Satırı Kullanarak Derleme :
    Kullandığımız işletim sistemine göre komutlarla dosyanın projemizin bulunduğu dizine gideriz.
    Aşağıdaki kod yardımıyla klasördeki .c uzantılı dosyaların derlenip .o uzantılı nesne dosyaları oluşturmasını sağlarız.
    gcc –c *.c
    Aşağıdaki kod yardımıyla oluşan nesne dosyalarını birbirine bağlayıp bir program içinde çalıştırırız.
    Gcc – faktöriyel.exe *.0 –lm
    Yukarıdaki 3 2 komut verildikten sonra faktoriyel.exe komutu ile programımızı çalıştırabiliriz.
    B)Make Aracını Kullanarak Derleme :
    Basit projeler komut satırı kullanılması sıkıntı oluşturabilir.100 dosyadan oluşan bir projemiz var ise bunların birbiriyle bağlantısı biraz zor olduğundan make aracını kullanmak daha mantıklıdır.
    Makefile Kavramı :
    Make aracı arkaplanda oluşturduğu makefile adı verilen konfigürasyon dosyası ile modüllerin birbirine bağlanmasını , derlenmesini gerçekleştirir.
    Şimdi görsellerle olayı aydınlatmaya çalışacağım.2.resim makefile dosyasına aittir.



    Hedef ( Target ) :
    Hedefler make komutunun birbirinden bağımsız olarak çalıştırabileceği komut gruplarını listeler.
    Yukarıdaki makefile dosyasında 4 hedef bulunmaktadır.
    Örneğin yukarıdaki clean hedefini make clean komutu ile çalıştırırsak bütün .o uzantılı dosyaların silinmesini emreder.
    Kural ( Rule ) :
    Belli bir hedef çalıştırıldığında hangi dosyalara ihtiyaç duyulduğu belirtilen alana kural denir.Eğer dosyaya ihtiyaç yoksa kural alanı boş bırakılabilir.
    Komut ( Command ) :
    Kural bölümünde dosyalar belirlendikten sonra o dosyalara neler yapılacağının ya da dosya tanımlamazsa arka planda hangi işlerin gerçekleşeceğinin belirtildiği alandır.
    Bunlara ek olarak ise bazı sabitlerde yukarıda görülmektedir.CC=gcc gibi.Bu derlemenin nasıl yapacağının bizim seçmemiz için yapılmıştır.Örneğin gcc değilde bcc olsaydı programımız Borland C Compiler ile derlenecekti.
    Make Komutunun Kullanımı :
    Şimdi hangisini hedef alacaksam o komutu vereceğim.Ben terminalde make Makeornek komutunu verdim.
    Şimdi aşağıdaki resimle konuyu kavramaya çalışalım.

Hiç yorum yok:

Yorum Gönder