Tek bir if deyimi programın iki seçenekten birini seçmesine olanak sağlar. Fakat birçok pratik uygulamada tek bir if deyimi yetersiz kalır. Birinci kararı aldıktan sonra ikinci karar, ikinciden sonra üçüncü kararın alınması gerekebilir. Bu tipte bir program akışı, iç içe if deyimlerini (Nested if Statements) gerektirir. Diyelim üç tam sayıyı kabul eden ve bunların en küçüğünü bulan ve yazdıran bir program yazmak istiyoruz. İç içe if deyimleriyle programı aşağıdaki gibi yazabiliriz:
Konsol uygulaması şeklinde geliştirdiğimiz projenin kod sayfasında main fonksiyonunu aşağıdaki gibi oluşturalım:
#import <Foundation/Foundation.h>
int main(int argc, char* argv[])
{
NSAutoreleasePool *pool=[[NSAutoreleasePool alloc] init];
NSLog(@"BIRINCI SAYI,A...");
int a = 0;
scanf("%i",&a);
NSLog(@"BIRINCI SAYI,B...");
int b = 0;
scanf("%i",&b);
NSLog(@"BIRINCI SAYI,C...");
int c = 0;
scanf("%i",&c);
if (a<b)
{
if (a<c)
{
NSLog(@"EN KUCUK SAYI = %d", a);
}
else
{
NSLog(@"EN KUCUK SAYI = %d", c);
}
}
else if (b<c)
{
NSLog(@"EN KUCUK SAYI = %d", b);
}
else
{
NSLog(@"EN KUCUK SAYI = %d", c);
}
[pool drain];
return 0;
}
PROGRAMIN ÇIKTISI:
İç içe if deyimleri, her else’in doğru if ile uyuşması konusunda problem yaratır. Bu genellikle yakındaki else problemi adıyla anılır. Mesela yukarıdaki programda, ilki else, ikincisi if ile ilişkilidir. Genel kural şudur:
Bir else, kendisinden önce gelen en yakın if ile ilişkilidir. Bununla birlikte her bir if deyimi sadece bir else cümleciğine sahip olabilir. |