-
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ş
Fonksiyonları değer ile çağırma (call by value) tekniğinde prensip, çağıran program ya da fonksiyondaki argümanlarla çağrılan fonksiyonda bunlara karşı gelen parametrelere, bellekte farklı yerlerin ayrılmasıdır.
Aşağıdaki programda, çağıran program - main; topla_1 adlı fonksiyona x, y ve z argüman değerlerini göndermektedir. Bu argüman değerleri sırası ile topla_1 fonksiyonundaki a, b, c parametreleri içine aktarılacaktır. Sonuçta topla_1 fonksiyonu gönderilen 3 argümanın toplamını hesaplayarak sonucu çağıran programa gönderir.
KOD BLOĞU:
int topla_1(int a,int b,int c);
#import <Foundation/Foundation.h>
int main(int argc,const char *argv[])
{
NSAutoreleasePool *pool=[[NSAutoreleasePool alloc] init];
int x,y,z,t;
x=1;
y=2;
z=3;
t=topla_1(x,y,z);
NSLog(@"\TOPLAM=%i\n",t);
NSLog(@"\nx=%i",x);
NSLog(@"\ny=%i",y);
NSLog(@"\nz=%i\n\n",z);
[pool drain];
return 0;
}
int topla_1(int a,int b,int c)
{
NSLog(@"\na=%i",a);
NSLog(@"\nb=%i",b);
NSLog(@"\nc=%i\n\n",c);
return a+b+c;
}
Çağıran program ve çağrılan fonksiyonla ilgili veri aktarımı ve paylaşımı şöyledir:
PROGRAMIN ÇIKTISI:
a=1
b=2
c=3
TOPLAM=6
x=1
y=2
z=3
Değer İle Çağırmada Fonksiyon İçinde Parametre Değerlerinin Değiştirilmesi:
Çağıran fonksiyon ya da programdan çağrılan fonksiyona değer ile veri aktarımında, çağrılan fonksiyon içinde parametre değerlerinde gerçekleştirilecek olan değişiklik, çağıran programda bu parametrelere karşı gelen argüman değerlerinde bir değişikliğe yol açmaz. Aşağıdaki örnek program bize bu konuda bir fikir verecektir.
KOD BLOĞU:
int topla_1(int a,int b,int c);
#import <Foundation/Foundation.h>
int main(int argc,const char *argv[])
{
NSAutoreleasePool *pool=[[NSAutoreleasePool alloc] init];
int x,y,z,t;
x=1;
y=2;
z=3;
t=topla_1(x,y,z);
NSLog(@"\TOPLAM=%i\n",t);
NSLog(@"\nx=%i",x);
NSLog(@"\ny=%i",y);
NSLog(@"\nz=%i\n\n",z);
[pool drain];
return 0;
}
int topla_1(int a,int b,int c)
{
a=a-1;
b=b-1;
c=c-2;
NSLog(@"\na=%i",a);
NSLog(@"\nb=%i",b);
NSLog(@"\nc=%i\n\n",c);
return a+b+c;
}
PROGRAMIN ÇIKTISI:
a=0
b=1
c=1
TOPLAM=2
x=1
y=2
z=3
AÇIKLAMA:
Çağıran program; x, y ve z argümanları ile sırasıyla 1, 2 ve 3 değerlerini çağrılan topla_1 fonksiyonuna göndermekte ve bunlar ilk anda aşağıdaki tabloda belirtilen durumu oluşturmaktadır:
Daha sonra fonksiyon içinde,
a=a-1;
b=b-1;
c=c-2;
Atama döngüleri ile a, b ve c parametreleri değiştirilmektedir. Bunun sonucunda bellekteki son durum aşağıdaki gibi olur:
Bunun sonucu olarak,
return a+b+c;
komutuyla çağıran programa 2 değeri gönderilerek
TOPLAM=2
ifadesi elde edilir. Bu tip bir programda isteğimiz 1+2+3 değerini hesaplatmaksa, elbette o sonucu elde edemeyiz. Bu nedenle, çağrılan fonksiyon içinde parametre değerlerinin değiştirilmesi söz konusu olunca çok dikkatli olmamız gerekir.