-
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ş
Bir döngü yapısının içine başka bir döngü yapısının yerleştirilmesiyle elde edilen yapıya iç içe döngü (nested loop) adı verilir.
Objective-C dilinde, if döngülerini herhangi bir derinliğe kadar iç içe kullanmak nasıl mümkünse, döngü deyimlerini de iç içe kullanmak mümkün olur. İç içe döngülerde hatırlamamız gereken anahtar bilgi, önce içteki döngülerin tamamlanması gerektiğidir. Bu konuda aşağıdaki kural iç içe döngüler için daima geçerlidir:
Objective-C dilinde, if döngülerini herhangi bir derinliğe kadar iç içe kullanmak nasıl mümkünse, döngüleri de iç içe kullanmak mümkün olacaktır. İç içe döngülerde hatırlanacak anahtar bilgi, önce içteki döngülerin tamamlanması gerektiğidir. Bu konuda aşağıdaki kural iç içe döngüler için daima geçerlidir:
İç içe döngülerde, en içteki döngü en önce tamamlanır. |
ÖRNEK:
Aşağıdaki programda, dış döngü olan i parametreli döngü 5 kez çalışıyor (i=1, 2, 3, 4, 5). i’nin her değeri için ise içteki döngü 3 kez çalışıyor (j=1, 2, 3). Böylece aşağıdaki çıktı elde edilir:
#import <Foundation/Foundation.h>
int main(int argc, char* argv[])
{
NSAutoreleasePool *pool=[[NSAutoreleasePool alloc] init];
int i,j;
for (i=1; i<=5; i++)
{
NSLog(@"i=%i",i);
for (j=1; j<=3; j++)
NSLog(@"j=%i ",j);
NSLog(@"\n");
}
[pool drain];
return 0;
}
PROGRAMIN ÇIKTISI:
ÖRNEK: ÇARPIM TABLOSU PROGRAMI
1’den 10’a kadar sayılar için bir çarpım tablosu hazırlamak istiyoruz. Bunun için iç içe 2 döngü yeterlidir ve her iki döngünün de parametresi 1’den 10’a kadar değişecektir. Programın listesi şöyle:
#import <Foundation/Foundation.h>
int main(int argc, char* argv[])
{
NSAutoreleasePool *pool=[[NSAutoreleasePool alloc] init];
int i,j;
NSLog(@" 1 2 3 4 5 6 7 8 9 10 \n");
NSLog(@" ___________________________________________________________\n");
for (i =1 ; i<=10; i++)/* dış döngü*/
{
NSLog(@"%i| ",i);
for (j=1; j<=10; j++)/*iç döngü*/
NSLog(@" %i ",i*j);
NSLog(@"\n");
}
[pool drain];
return 0;
}
PROGRAMIN ÇIKTISI:
Her i değeri için, program önce i'yi yazdırır; sonra j'nin 10 değeri için döngü yaparak her iterasyon için i*j sonucunu yazdırır ve yeni bir satıra geçer.:
ÖRNEK:
Aşağıdaki seri toplamını hesaplayacak bir C++ programı yazalım:
1/ 2! + 1/3! + 1/4! +......+ 1/10!
Bu seri toplamını hesaplamak istediğimizde, iç içe iki döngü kullanmak gerektiğini hemen anlarız:
- Her adımda, bir toplama işlemi gerektiren, terimlerin toplanmasının gerekli olduğu bir döngü (Yukarıdaki tek döngü örneklerindeki 1 + 2 + 3 + ... + n toplamı örneğini hatırlayalım.)
- Yukarda belirtilen döngünün her parametre değeri için, o adımdaki faktöryeli hesaplatmak zorunda olduğumuz ve o nedenle yukardaki döngünün içinde yer alması gereken bir döngü.
Bu düşüncelerle, problemin çözümünü bulacak bir C++ programını aşağıdaki gibi yazabiliriz:
#import <Foundation/Foundation.h>
int main(int argc, char* argv[])
{
NSAutoreleasePool *pool=[[NSAutoreleasePool alloc] init];
double s,fakt;
int i,j;
s=0;
for (i=2; i<=10; i++)
{
fakt=1;
for (j=1; j<=i; j++)
fakt=fakt*j;
s=s+1/fakt;
NSLog(@"%f ",s);
}
NSLog(@"\nSERİ TOPLAMI=%f\n",s);
NSLog(@"\n");
[pool drain];
return 0;
}
PROGRAMIN ÇIKTISI:
Programın çalıştırılması sonucu i, j, s ve fakt değişkenlerinin alacağı değerlerle ilgili tabloya göz atalım:
DIŞ ÇEVRİM | İÇ ÇEVRİM | FAKTÖRİYEL | TOPLAM |
---|---|---|---|
i | j | fakt | s |
0 | |||
2 | 1 | 1 | 0 |
2 | 2 | 2 | 1/2 |
3 | 1 | 1 | 1/2 |
3 | 2 | 3 | 1/2 |
3 | 3 | 6(1.2.3=3!) | 1⁄2+1/6 |
4 | 1 | 1 | 1⁄2+1/6 |
4 | 2 | 2 | 1⁄2+1/6 |
4 | 3 | 6 | 1⁄2+1/6 |
4 | 4 | 24(1.2.3.4=4!) | 1⁄2+1/6+1/24 |
... | ... | ... | ... |
10 | 10 | 10! | 1⁄2+1/6+1/24+.. +1/20! |
SORU: Yukarıdaki seri toplamı, sadece bir tane for döngüsü kullanarak hesaplatabilir miyiz?
CEVAP: Evet. Yukardaki seri toplamını tek bir for döngüsü ile hesaplatan ve aynı sonuçları elde eden Objective C programının kod bloğu şöyle:
#import <Foundation/Foundation.h>
int main(int argc, char* argv[])
{
NSAutoreleasePool *pool=[[NSAutoreleasePool alloc] init];
double s,fakt;
int i;
s=0;
fakt=1;
for (i=2; i<=10; i++)
{
fakt=fakt*i;
s=s+1/fakt;
NSLog(@"%f ",s);
}
NSLog(@"\n");
NSLog(@"SERİ TOPLAMI=%f\n",s);
[pool drain];
return 0;
}
PROGRAMIN ÇIKTISI: