• Web sitemizin içeriğine ve tüm hizmetlerimize erişim sağlamak için Web sitemize kayıt olmalı ya da giriş yapmalısınız. Web sitemize üye olmak tamamen ücretsizdir.
  • Sohbetokey.com ile canlı okey oynamaya ne dersin? Hem sohbet et, hem mobil okey oyna!
  • Soru mu? Sorun mu? ''Bir Sorum Var?'' sistemimiz aktiftir. Paylaşın beraber çözüm üretelim.

iOS Eğitimlerine Başlarken...

LeGoLaS

Onursal Üye
Üyelik Tarihi
1 Ağu 2008
Konular
4,885
Mesajlar
16,461
MFC Puanı
15,790
Gösterge İfadeleri ve Değerleri



Aşağıdaki Objective C programı gösterge ifadelerini ve değerlerini gösteriyor:

#import <Foundation/Foundation.h> int main(int argc, char* argv[]){ NSAutoreleasePool *pool=[[NSAutoreleasePool alloc] init]; int k; char x[5]="abcd"; int *p,*q; char *z; q=(int*) 0x0065fdfe; k=45; z=x; p=&k; NSLog(@"\nk=%i",k); NSLog(@"\nk nin adresi=%p\n",p); NSLog(@"\nq gostergesinin degeri=%p\n",q); NSLog(@"\nx dizisinin baslangic adresi=%p\n",x); NSLog(@"\nz gostergesinin degeri=%p\n\n",z); [pool drain]; return 0;}

PROGRAMIN ÇIKTISI:
cikti_0.png
 

LeGoLaS

Onursal Üye
Üyelik Tarihi
1 Ağu 2008
Konular
4,885
Mesajlar
16,461
MFC Puanı
15,790
Operatörlerin Öncelikleri ve Birleşme Sıraları



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
Öncelik sırası
Soldan sağa
Birincil
( )​
– > . En yüksek Sağdan sola Tekli (unary) Cast operatörü sizeof & [adres operatörü] * [Adresi verilene erişim] – + ∼ ++ –– ! 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 exclusive OR ^ Soldan sağa Bit düzeyinde inclusive 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 , En düşük İş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 * 12ifadesinde ç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:[cpp]#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:
a.png


İ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

 

LeGoLaS

Onursal Üye
Üyelik Tarihi
1 Ağu 2008
Konular
4,885
Mesajlar
16,461
MFC Puanı
15,790
İkili Aritmetiksel Operatörler





Operatör
Sembolü
Kullanılışı
İşlem sonucu
Çarpma
*
a*b
a ile b’nin çarpımı​
Bölme
/
a/b
a’nın b’ye bölümü​
Kalan
%
a%b
a’nın b’ye bölümünden kalan​
Toplama
+
a+b
a’nın b ile toplanması​
Çıkarma

a-b
b’nin a’dan çıkarılması​

*, / ve % operatörleri + ve‘ye göre önceliklidir. *, /, + ve operatörlerinin int veya float (double) türde operand kabul etmelerine karşılık kalan operandları sadece int türde operand olarak kabul eder. %operandı bölmede kalanı hesaplar.

ÖRNEK:
17 % 3 işleminin sonucunda 2 değeri (17’nin 3 ile bölümünden kalan) elde edilir.
ANSI standardı, kalan ve bölme operatörleri arasında aşağıdaki bağıntının bulunmasını zorunlu kılar:
a = a % b + (a /b) *b (a ve b tamsayı)

Aşağıdaki programda bu operatörlerin kullanımıyla ilgili ifadeleri görüyoruz. Parantezlerle önceliklerin değiştirilebileceğini tekrar hatırlatalım.

#import <Foundation/Foundation.h> int main(int argc, char* argv[]){ NSAutoreleasePool *pool=[[NSAutoreleasePool alloc] init]; int a, b, c; float p, q, r, x, y, z, k; a=7; b=4; c=15; p=2.7; q=13.8; r=12.45; x= a % b * 15 - c / b * a ; y= a * 2 % (b + 1) - c / (a +b) ; z=x / y * a - b ++ * --c ; k=p -q / (r +z) * (q -r) + b++ * z ; NSLog(@"\nx= %f \n", x) ; NSLog(@"\ny= %f \n", y) ; NSLog(@"\nz= %f \n", z) ; NSLog(@"\nk= %f \n", k) ;}

SONUÇ:
x= 24.0000000
y= 3.0000000
z= 0.0000000
k= 1.203614

x değeri
7 % 4 * 15 – 15 / 4 * 7
3 * 15 – 3 * 7
45 – 21
24

y değeri
7 * 2 % (4 + 1 ) – 15 / (7 + 4)
14 % 5 – 15 / 11
4 – 1
3

z değeri
24 / 3 * 7 – 4++ * --15 ,
8 * 7 – 4 * 14
56 – 56
0 olarak hesaplanır.
k’nın değerini de siz kontrol ediniz.
 

LeGoLaS

Onursal Üye
Üyelik Tarihi
1 Ağu 2008
Konular
4,885
Mesajlar
16,461
MFC Puanı
15,790
Aritmetiksel Atama Operatörleri



Operatör
Sembolü
Kullanılışı
İşlem sonucu
Atama
=
x = y
y’nin değerini x’e ata​
Topla-ata
+ =
x + = y
x + y’nin değerini x’e ata​
Çıkar-ata
- =
x = y
x y’nin değerini x’e ata​
Çarp-ata
* =
x * = y
x * y’nin değerini x’e ata​
Böl-ata
/ =
x / = y
x / y’nin değerini x’e ata​
Kalanını ata
% =
x % = y
x % y’nin değerini x’e ata​

Tablodan kolayca anlayacağımız üzere, x + = y ifadesi x = x + y ifadesine, x % = y ifadesi de x = x % y ifadesine denktir. = operatörünün atama amacı ile kullanıldığını biliyoruz. Sembolün sol tarafındaki operand bir sol taraf operandı (left hand operand, Lvalue) olmalıdır.
Sol taraftaki operand (değişken, dizi elemanı, yapı elemanı vb.) sağ taraftaki operandın değerini bellekte saklar.
ÖRNEK:
int k ;
double l ;
l = k = 13.72 ;

Yukardaki komutlar ile, = sembolünün birleşme özelliği sağdan sola olduğu için,
( l = (k = 13.72)) ;
sırasıyla atamalar yapılarak k ve l’nin değerleri 13 olarak bulunur (k bir int’dir). Sonuçlar, aşağıdaki program yardımıyla test edilmiştir:

#import <Foundation/Foundation.h>int main(int argc, char* argv[]){ NSAutoreleasePool *pool=[[NSAutoreleasePool alloc] init]; int k; double l; l = k = 13.72; NSLog(@"\nl=%f",l); NSLog(@"\nk=%i",k);}
PROGRAMIN ÇIKTISI:
l=13.000000
k=13


C programı içinde;
x = x * 10 ;
şeklindeki bir ifade x * = 10 ; şeklinde yazılabilir. Kodu bu şekilde yazmak, hata olasılığını azaltır, okunabilirliği artırır ve ayrıca derleyicinin daha etkin bir şekilde nesne kodu (object code) üretmesini sağlar.
Bu operatörler kullanılırken önceliklere dikkat edilmelidir.

ÖRNEK:
x = x * 5 – 2 ; ifadesi x * = 5 – 2 ; ile aynı değildir. Çıkarma () operatörü, atamalardan daha yüksek öncelikli, çarpma da çıkarmadan yüksek öncelikli olduğu için ifade aşağıdaki gibi yorumlanır.

1.ifade
x = x * 5 – 2 ;
x = ( (x * 5) – 2) ;

2.ifade
x * = 5 – 2 ;
x*=(5-2);
x = x * (5 – 2) ;

Aşağıdaki programda bu tür operatörlerin yer aldığı ifadeleri ve sonuçları görüyoruz:


#import <Foundation/Foundation.h> int main(int argc, char* argv[]){ NSAutoreleasePool *pool=[[NSAutoreleasePool alloc] init]; int a, b, c, x; float y, z; a = 5; b = 8; c = 7; x = 2; y = 7.4; z = 12.35; a += b + c - z ; b /= y * z + a * b ; c %= x + a ; z -= x * c + a ; a *= b + (c *= x) ; NSLog(@"\na = %i \n", a); NSLog(@"\nb = %i\n", b); NSLog(@"\nc = %i \n", c); NSLog(@"\nz = %f \n", z); return 0;}

SONUÇ:
a = 98
b = 0
c = 14
z = -8.650000
 

LeGoLaS

Onursal Üye
Üyelik Tarihi
1 Ağu 2008
Konular
4,885
Mesajlar
16,461
MFC Puanı
15,790
Devamı gelecektir bilgiler alıntıdır bu eğitim içeriğini hazırlayan geleceğiyazanlar ekibine bilgilendirmelerinden dolayı teşekkürlerimizi sunuyoruz.


 

LeGoLaS

Onursal Üye
Üyelik Tarihi
1 Ağu 2008
Konular
4,885
Mesajlar
16,461
MFC Puanı
15,790
Rica ederim Berkay karşimm daha neler ekleyeceğiz takip eden biri olarak tan MF appele destek olacaz yakında :D
 
Üyelik Tarihi
24 Tem 2015
Konular
48
Mesajlar
447
MFC Puanı
2,220
bende Apple'ciyim konulara destek veririm ilgimi çekmiştir apple her zaman :)
 
Üst