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

Basit Makro Tanımları

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 basit makro tanımları

 

Objective C dilinde makro, sembolik bir isim altında bir program parçası tanımlamak anlamına gelir. Bir makronun yazılışı şöyledir:

#define  MakroAdı   MakroKomutları

Makro tanımının en basit hali, MakroKomutları parçasının tek bir sabitten oluşmasıdır.

 

ÖRNEK:

Aşağıdaki Objective C programında, C ön işlemcisinin define direktifi ile PI adlı bir sabit tanımlanmış, değeri 3.14159 olarak atanmıştır. Bu sabit daha sonra program içinde kullanıldığında hep aynı değeri gönderecektir.

Sabitlerin bu şekilde define direktifi ile tanımlanması, C programının bir platformdan diğerine taşınabilirliğini sağlar:

 

#define PI  3.14159
#import <Foundation/Foundation.h>
 
int main(int argc, char* argv[])
{
    NSAutoreleasePool *pool=[[NSAutoreleasePool alloc] init];
 
    float r;
    NSLog(@"\nDairenin yari capini giriniz..");
    scanf("%f",&r);
    NSLog(@"\nDAIRENİN ALANI=%f",PI*r*r);
    NSLog(@"\nDAIRENIN CEVRESI=%f",2*PI*r);
    NSLog(@"\nPI=%f",PI);

    [pool drain];
    return 0;
}

 

 

PROGRAMIN ÇIKTISI:

Dairenin yari capini giriniz..5

DAIRENİN ALANI=78.539750

DAIRENIN CEVRESI=31.415900

PI=3.141590

 

Yukarıdaki program çıktısından da anlayacağımız gibi, bir string içinde PI’nin geçtiği yere sayısal değeri yerleştirilmiyor. Örneğin yukarıdaki programda NSLog içindeki “ “  sembolleri arasındaki string'de yer alan PI ifadesi ekrana aynen aktarılır.

Stringler de, define direktifi ile bir sabit olarak tanımlanabilirler.


 

ÖRNEK:

Aşağıdaki Objective C programında A sabiti “EINSTEIN MUSTESNA BIR DAHIDIR” şeklinde tanımlanıyor.

 

#define A "EINSTEIN MUSTESNA BIR DAHIDIR  "
#import <Foundation/Foundation.h>
 
int main(int argc, char* argv[])
{
    NSAutoreleasePool *pool=[[NSAutoreleasePool alloc] init];
 
    NLog(@" \n%s",A);

    [pool drain];
    return 0;
}

 

 

PROGRAMIN ÇIKTISI:

EINSTEIN MUSTESNA BIR DAHIDIR 

\   DEVAM SEMBOLÜ

 

Bir ön işlemci direktifine ait ifade bir sonraki satırda devam edecekse, önceki satırın sonuna \ sembolünü yerleştirerek bu sağlayabiliriz. Örneğin;

 

#define    GLOBAL_DIZI_BOYUTU       5\
12
ifadesi
 #define    GLOBAL_DIZI_BOYUTU     512
ifadesine denktir.

 


 

ÖRNEK:

Aşağıdaki örnek Objective C programı, ön işlemci direktifleri kullanarak C programının tamamen başka bir görünüm içine sokulabileceğini gösteriyor. Örneğin, aşağıdaki program, gerçekte bir Pascal programı listesini andırıyor. Böylece ön işlemci direktifleri kullanmanın bir işlevinin de C programlarına farklı anlatım biçimleri verebilmek olduğunu da vurgulamış olalım.

KOD BLOĞU:

 

#import <Foundation/Foundation.h>
#define PROGRAM  int main(int argc, char*\
argv[])
#define REAL float
#define FORMAT_GIRIS   "%f"
#define WHILE  while(
#define DO   )
#define BEGIN {
#define END }
#define READ  scanf
#define WRITE NSLog
#define FORMAT_CIKIS   "KARELER TOPLAMI=%10.3f\n"

PROGRAM
BEGIN
REAL sayi,toplam=0.0;
READ(FORMAT_GIRIS,&sayi);
WHILE sayi>=0 DO
BEGIN
toplam=toplam+sayi*sayi;
READ(FORMAT_GIRIS,&sayi);
END
WRITE(@FORMAT_CIKIS,toplam);
END

 

 

PROGRAMIN ÇIKTISI:

1

2

3

4

5

-1

KARELER TOPLAMI=55.000000

 

AÇIKLAMA:

Programda, bilgisayara klavyeden girilen 1’den 5’e kadar sayıların kareleri toplatılarak

12+22+32+42+52=55

değeri hesaplatılıyor.

Negatif bir sayı girişi ile de bilgisayara sayı giriş işlemi sona erdirilebiliyor.