-
iOS Eğitimlerine Başlarken...
-
Objective-C Dilinde Kütüphaneler
-
Objective-C'de Sınıf Arayüzü (Class Interface) Nasıl Tanımlanır?
-
Objective-C Dilinde Veri Tipleri, İşlem Operatörleri ve Çeşitli İfadeler
-
Objective-C Dilinde Veri Tipleri, İşlem Operatörleri ve Çeşitli İfadeler Giriş
-
Sabitlerden Oluşan İfadeler
-
int Türü İfadeler
-
float Türündeki İfadeler
-
Gösterge İfadeleri
-
Gösterge İfadeleri ve Değerleri
-
Operatörlerin Öncelikleri ve Birleşme Sıraları
-
İkili Aritmetiksel Operatörler
-
Aritmetiksel Atama Operatörleri
-
İlişkisel Operatörler
-
Mantıksal Operatörler
-
Bit Düzeyinde İşlem Gören Operatörler
-
Öteleme Operatörleri
-
Bit Düzeyinde Mantıksal Operatörler
-
Bit Düzeyinde İşlem İçin Bir Örnek: Sınav Değerlendirme Programı
-
Bit Düzeyinde Atama Operatörleri
-
Cast Operatörü
-
sizeof Operatörü ve Bir Örnek Program
-
Tekli Operatörler
-
Koşul Operatörü
-
Bellek Operatörleri
-
Objective-C Dilinde Veri Tipleri, İşlem Operatörleri ve Çeşitli İfadeler Giriş
-
Kontrol Yapıları
-
Döngü (Loop) Oluşturma
-
Miras Alma (Inheritance), Çok Biçimlilik
-
Ön İşlemci Komutları ve Makrolar
-
Ön İşlemci Komutları ve Makrolar Giriş
-
Basit Makro Tanımları
-
Objective-C Ön İşlemcisi
-
Makrolarda Argümanlar
-
Önceden Tanımlanmış Değerlere Referans Verme
-
Gerçek Parametrelerde Bir Dizi İfadenin Kullanılması
-
Makro Tanımlamada # ve ## Operatörleri
-
Makro Tanımın İptal Edilmesi: undef Komutu
-
Dosya İçeriklerini Programa Katma: include Komutu
-
Şarta Bağlı Derleme İşlemi: #if Komutu
-
#ifdef Komutu
-
#ifndef Komutu
-
#error ve #pragma Direktifleri
-
Ön İşlemci Komutları ve Makrolar Giriş
-
Diziler ve Sözlük Nesneleri
-
Diziler ve Sözlük Nesneleri Giriş
-
Bir Dizi Nesnesi Oluşturmak
-
Dizideki Eleman Sayısını Bulmak
-
Bir Dizi Nesnesinin Elemanlarına Erişme
-
Dizi Elemanlarına Hızlı Numaralama (Fast Enumeration) Yöntemi ile Erişmek
-
Dizi Nesnesine Eleman Eklemek
-
Dizi Nesnesinde Araya Eleman Ekleme
-
Dizi Nesnesinin Bazı Elemanlarını Silme
-
Dizi Nesnelerini Sıralama
-
Diziler ve Sözlük Nesneleri Giriş
-
Fonksiyonlar
-
Fonksiyonlar Giriş
-
Objective C Dilinde Bir Fonksiyonun Yapısı
-
Fonksiyonların Tanımlanması
-
Fonksiyonlarla İlişkili Terimler
-
return Deyimi
-
Fonksiyon Çağrıları ile İlgili Örnek C Programları
-
Fonksiyon Çağırma Teknikleri
-
Fonksiyonları Değer ile Çağırma
-
Fonksiyonları Referans ile Çağırma
-
İki Boyutlu Dizinin Argüman Olarak Gönderilmesi
-
C Dilinde Özyineli (Rekürsif) Fonksiyonlar
-
Fonksiyonlar Giriş
-
Dinamik Bağlama, id Veri Tipi
-
Bellek Sınıfları
-
Dosya İşlemleri
-
Nesne Yönelimli Programlama
-
Algoritmaya Giriş
Aşağıdaki tabloda yer alan Objective-C dilindeki operatörlerin öncelik ve birleşme sıralarına göz atalım:
Birleşme |
Operatörün Türü |
Bu türde bulunan operatörler |
---|---|---|
Sağdan sola | Birincil | ( ) –> . |
Sağdan sola | Tekli (unary) | + - ! ~ ++ - - (type)* & sizeof |
Soldan sağa | Çarpımsal | * / % |
Soldan sağa | Toplamsal | + – |
Soldan sağa | Öteleme (shift) | << >> |
Soldan sağa | İlişkisel | < <= > >= |
Soldan sağa | Eşitlik Kontrolü | == != |
Soldan sağa | Bit düzeyinde AND | & |
Soldan sağa | Bit düzeyinde XOR | ^ |
Soldan sağa | Bit düzeyinde OR | | |
Soldan sağa | Lojik AND | && |
Soldan sağa | Lojik OR | || |
Sağdan sola | Koşul | ? : |
Sağdan sola | Atama | = += -= *= /= %=>>= <<= &= ^= |= |
Soldan sağa | Virgül | , |
İşlemlerde öncelik ve birleşme özellikleri son derece önemlidir. Geliştiricinin hesaplamak istediği ifadeyi doğru olarak tanımlaması bu kavramları iyi anlamış olmasına bağlıdır. Operatörlerin bazılarının diğerlerinden öncelikli olması demek, öncelikli operatörlere ait operandların gruplanarak diğerlerinden evvel işleme sokulması anlamına gelir.
Örneğin; 13 + 4 * 12 ifadesinde çarpma operatörü toplamaya göre öncelikli olduğu için önce 4 ve 12 operandları gruplanarak 4 * 12 işlemi yapılır, sonra 13 + 48 işlemi gerçekleştirilir. (13 + ( 4 * 12 )) Bu nedenle örnek ifadenin sonucu 204 değil, 61'dir. Öncelik sırası aynı olan operatörler arasında ise birleşme özelliği önem kazanır. Birleşme’nin soldan sağa olduğu operatörlerde, derleyici işlem sırasını en soldaki operatörden başlatarak sağa doğru ilerletir. Diğer grupta ise, tam tersi sırada işlemler yerine getirilir. Örneğin, aynı öncelikli operatörler için aşağıdaki işlemler birleşme özelliği sonucu farklı sonuçlar üretecektir:
#import <Foundation/Foundation.h>
int main(int argc, char* argv[])
{
NSAutoreleasePool *pool=[[NSAutoreleasePool alloc] init];
int a,b,c,d;
a=5;
b=8;
c=3;
d=a * b / c % a ;
NSLog(@"\nd=a * b / c a=%i\n", d);
d=a / b * c % a ;
NSLog(@"\nd=a / b * c a =%d", d);
d=a=b=c ;
NSLog(@"\nd=a=b=c=%i\n\n",d);
[pool drain];
return 0;
}
PROGRAMIN ÇIKTISI:
İlk iki ifadede * / % operatörlerinde birleşme soldan sağa doğru olduğu için, işlemler bu sırada ve tamsayı aritmetiği ile gerçekleştirilecektir. Sonuçlar 3 ve 0 olarak bulunur. Üçüncü ifadedeki = operatörlerinde birleşme sağdan sola doğru olduğu için, önce c’nin değeri b’ye atanır. b’nin değeri a’ya atanır. En son a’nın değeri d’ye atanarak sonuç 3 bulunur.
Parantezler kullanılarak öncelik sırası değiştirilebilir. Derleyici önce parantez içindeki işlemleri gerçekleştireceği için, kullanıcı istediği ifadeye göre uygun gruplamaları yapacak parantezler kullanabilir.
ÖRNEK:
15 – 24 / ((5 + 1) /( 4 – 1) + 3)
15 – 24 / (6 / ( 4 – 1) + 3)
15 – 24 / (6 / 3 + 3)
15 – 24 / (2 + 3)
15 – 24 / 5
15 – 4
Sonuç: 11