-
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ş
Önceki bölümlerde incelediğimiz üzere operatörler cast operatörü, sizeof, adresini elde etme (&), adresi verilen veriye erişme (*), negatifini alma (–), pozitifini alma (+), bit düzeyinde tamamlayıcısını elde etme (∼), lojik olarak karşıtını alma (!), artım (++) ve azaltım (––) operatörleridir.
Bu başlık altında bunlardan negatifini alma (–), pozitifini alma (+), artım (++) ve azaltım (––) operatörlerini inceleyeceğiz.
Negatifini alma operatörü (–) tek bir operand üzerinde etkili olduğu için, iki operand ile işleme giren (–) sembolü ile karıştırılmamalıdır.
ÖRNEK:
#import <Foundation/Foundation.h>
int main(int argc, char* argv[])
{
NSAutoreleasePool *pool=[[NSAutoreleasePool alloc] init];
int x,y = -5;
x=16- -y;
NSLog(@"\nx=%i\n\n",x);
[pool drain];
return 0;
}
Bu programda x’in değeri 11 olarak bulunacaktır. –y, –(–5)=+5 olarak hesaplanır. 16’yı izleyen çıkarma operatörü (–) ile y’nin önündeki negatifini alma (–) operatörü arasında mutlaka bir boşluk olmalıdır. Aksi halde – ifadesi azaltım operatörü olarak algılanacaktır.
Operatör |
Sembolü |
Kullanılışı |
İşlem Sonucu |
---|---|---|---|
Tekli negatif alma |
– |
–a |
a’nın negatifini alır |
Son artım |
++ |
a++ |
Önce a’nın değerini al, kullan, sonra 1 artır. |
Ön artım |
++ |
++a |
Önce a’nın değerini 1 artır, sonra kullan. |
Son azaltım |
–– |
a–– |
Önce a’nın değerini al, kullan, sonra 1 azalt. |
Ön azaltım |
–– |
––a |
Önce a’nın değerini 1 azalt, sonra kullan. |
Son artım ve son azaltım operatörlerinde derleyici, değişkenin o andaki değerini bellekte geçici bir değişkene atayarak saklar. Sonra değişkenin değerini 1 artırır (son artım) veya 1 azaltır (son azaltım). Geçici değişkendeki değer ise, ifade içinde kullanılır.
ÖRNEK:
#import <Foundation/Foundation.h>
int main(int argc, char* argv[])
{
NSAutoreleasePool *pool=[[NSAutoreleasePool alloc] init];
int x=4, y=8, z;
z= x++ + y--;
NSLog(@"\nz= %i ..\n",z);
NSLog(@"\nx= %i ..\n",x);
NSLog(@"\ny= %i..\n",y);
[pool drain];
return 0;
}
PROGRAMIN ÇIKTISI:
z=12
x=5
y=7
Önce x ve y’nin o andaki değerleri geçici bellek alanlarına atanmış (4 ve 8), bu değerlerle ifade hesaplanmış (z=12) sonra x’in değeri 1 arttırılmış ve y’nin değeri 1 azaltılmıştır.
Ifadeyi z= x+++y–– ; şeklinde boşluksuz yazsak da sonuç değişmezdi. Derleyici bu durumda +++’nın mevcut operatörler içinde mümkün olan en uzununu (++) alır ve ifadeyi şu şekilde yorumlardı:
z=(x++) + y–– ;
Aynı ifadeyi z=x+++ veya y--- şeklinde yazsak da aynı sonucu elde ederdik.
Ön artım ve ön azaltım operatörleri kullanıldığında ise, önce artım (mevcut değere 1 ekleme) veya azaltım (mevcut değerden 1 çıkarma) gerçekleştirilir, sonra ifade hesaplanır.
ÖRNEK:
#import <Foundation/Foundation.h>
int main(int argc, char* argv[])
{
NSAutoreleasePool *pool=[[NSAutoreleasePool alloc] init];
int x,y,z,m;
x=10;
y=5;
z=16;
m= ++x - --y + z++;
NSLog(@"\nx = .. %i \n",x);
NSLog(@"\ny = .. %i \n",y);
NSLog(@"\nz = .. %i \n",z);
NSLog(@"\nm = .. %i \n",m);
[pool drain];
return 0;
}
PROGRAMIN ÇIKTISI:
Bu programda m ifadesini
m= ++x–––y + z++ ;
şeklinde yazmış olsaydık, derleyici tarafından (kullanılan derleyiciye göre);
Lvalue required in function main ()
veya,
error C2105: '++' needs l–value
hata mesajını alırdık. Bunun anlamı şudur: İfade; m=++x–– –y + z++ şeklinde yorumlanmış. ++x–– ifadesi ise sağdan sola birleşim özelliğine sahip olduğu için (bkz.öncelikler ve birleşimler tablosu) ++(x––) şeklinde yorumlanır. x–– işleminin nasıl yapılacağını hatırlayalım. Önce x’in bir kopyası geçici bir bellek alanına yerleştirilir. Sonra değeri 1 azaltılır. Geçici bellek alanına yüklenen değer için ++ operatörü geçersizdir. Çünkü ++ ve –– operatörleri sadece sürekli saklanan değişkenler (left hand value, Lvalue, = sembolünün solundaki değişken) için geçerli olduğundan bu hata mesajı alınmıştır.
Aşağıdaki programda ise artım ve azaltım operatörlerinin değişik kullanım biçimleri örneklenmiştir:
#import <Foundation/Foundation.h>
int main(int argc, char* argv[])
{
NSAutoreleasePool *pool=[[NSAutoreleasePool alloc] init];
int m,n,p,q;
m=4; n=2; p=10; q=8;
m= -m++ ;
n= n-- ;
p= --p ;
q= -++q ;
NSLog(@"\nm = %i \n",m);
NSLog(@"\nn = %i \n",n);
NSLog(@"\np = %i \n",p);
NSLog(@"\nq = %i \n",q);
[pool drain];
return 0;
}
SONUÇ: