iOS 101Başlangıç seviyesi derslerde iOS uygulama geliştirme ortamını detaylı olarak inceliyoruz.

Tüm Eğitimleri Aldın mı? Kendini sınamanın tam zamanı

Haydi Sınava Gir

Şarta Bağlı Derleme İşlemi: #if Komutu

Kategori : Mobil | Lisans : Creative Commons (by-nc-sa) | En son 11.05.2016 tarihinde güncellendi
Eğitmen : Geleceği Yazanlar Ekibi
Etiketler : obj-c if komutu obj-c şarta bağlı komut

Objective-C ön işlemcisi, #if komutu sayesinde bazı Objective-C program satırlarının bir şarta bağlı olarak derlenmesine olanak sunar. Bu olanak aşağıdaki durumlarda son derecede yararlıdır:

  1. Bazı tanımlar, birtakım koşullara bağlı olarak ifade edilebiliyorsa, bu tür tanımları #if komutuyla koşullu olarak gerçekleştirmek programın taşınabilirliğini arttırır.
  2. Programın bazı satırlarının derlenmesi ve çalıştırılması sadece programın geliştirilme aşamalarında gerekli olup, program son şeklini aldıktan sonra bu tür satırların program listesine dahil edilmesi gerekmeyebilir. Örneğin, bir matematiksel hesaplama işlemleri dizisini gerçekleştiren programda, geliştirme aşamasında, hesaplamaların doğruluğunu kontrol edebilmek için hesaplamanın ekrana yazdırılması yararlı olabilir. Oysa program son şeklini alıp hesaplamaların doğru yapıldığı kanıtlandıktan sonra ara adımların yazdırılmasına gerek yoktur. Bu tür program satırları da #if komutu yardımıyla program listesine katılabilir ya da derleme listesinden çıkartılabilir.

Örneğin;

     #if    Koşul(Sabit)

           satır 1

     #else

           satır 2

     #endif

satırlarıyla, koşul doğruysa ya da sabitin değeri 0’dan farklıysa satır 1 derlenir ve çalıştırılır; aksi takdirde koşul yanlışsa ya da sabitin değeri 0 ise, bu durumda da satır 2 derlenir ve çalıştırılır.

 

ÖRNEK PROGRAM:

 

#define GELIS  1
#import <Foundation/Foundation.h>

int main(int argc, char* argv[])
{
    NSAutoreleasePool *pool=[[NSAutoreleasePool alloc] init];

    float s,say,ek,eb;
    int i,n;
    s=0;
    ek=1.7e38;
    eb=-1.7e38;
    NSLog(@"\nSAYI MIKTARI");
    scanf("%d",&n);
    for(i=1; i<=n; i++)
    {
        NSLog(@"\nSAYIYI GIRINIZ");
        scanf("%f",&say);
        s=s+say;
        if (say<ek)
            ek=say;
        else if(say>eb)
            eb=say;

       #if GELIS
            NSLog(@"\nTOPLAM=%8.1f",s);
            NSLog(@"\nEN KUCUK SAYI=%8.1f",ek);
            NSLog(@"\nEN BUYUK SAYI=%8.1f",eb);
       #endif
    }
    NSLog(@"\n\nSAYILARIN TOPLAMI=%8.1f",s);
    NSLog(@"\nEN KUCUK SAYI=%8.1f",ek);
    NSLog(@"\nEN BUYUK SAYI=%8.1f",eb);
    [pool drain];
    return 0;
}

 

PROGRAM ÇIKTISI:

SAYI MIKTARI
2
SAYIYI GIRINIZ
3
TOPLAM=     3.0
EN KUCUK SAYI=     3.0
EN BUYUK SAYI=-169999997607218212453866206899682148352.0
SAYIYI GIRINIZ
5
TOPLAM=     8.0
EN KUCUK SAYI=     3.0
EN BUYUK SAYI=     5.0

SAYILARIN TOPLAMI=     8.0
EN KUCUK SAYI=     3.0
EN BUYUK SAYI=     5.0

 

 

AÇIKLAMA:

GELIS sabiti #define komutuyla 1 olarak atandığı için,  #if komutunun koşulu doğru olacak ve for döngüsü içindeki printf fonksiyonları çalışacaktır.

GELIS sabiti aşağıdaki gibi 0 yapılırsa,

#define GELIS  0

o takdirde aşağıdaki çıktı elde edilecektir:

 

SAYI MIKTARI
2
SAYIYI GIRINIZ
3
SAYIYI GIRINIZ
5

SAYILARIN TOPLAMI=     8.0
EN KUCUK SAYI=     3.0
EN BUYUK SAYI=     5.0