$1.99 Domains* at GoDaddy.com

C Programlama İç içe geçmiş (Nested) İfadeler

c_programlama-170 Hatırlatmak için üzerinden geçersek, if ile bir ifadeyi kontrol ediyor ve doÄŸruysa, buna göre iÅŸlemler yapıyorduk. Bir de if – else yapısı vardı. if – else yapısında da, koÅŸulu gene kontrol ediyor, doÄŸruysa if bloÄŸunun altında kalanları yapıyorduk; yanlışsa, else bloÄŸunda olan kodlar iÅŸleme alınıyordu. Son derece basit bir mantık üzerine kurulmuÅŸ bu yapıyla, yapılamayacak kontrol yoktur. Ancak öyle durumlar vardır ki, if – else yapısı yeterli verimliliÄŸi sunamaz.

Diyelim ki, birden fazla kontrol yapmanız gereken bir durum oluÅŸtu. Hatta örnek vererek konuyu daha da somutlaÅŸtıralım. İstenilen bir programda, klavyeden size yaÅŸ bilgisi veriliyor. Siz de bu bilgiye göre, ÅŸayet yaÅŸ 18′den küçükse çocuk; 18-30 yaÅŸ arasında genç; 30-50 yaÅŸ arasında ortayaÅŸ diye bir mesaj bastırıyorsunuz. Basit bir program.

Şimdi bunu sadece if yapısıyla kuruyor olsaydık, her seferinde yaşın uygun aralıklara düşüp düşmediğini kontrol eder ve ona göre sonucu ekrana bastırırdık. Ama bu son derece verimsiz bir yöntem olurdu. Çünkü zaten yaş bilgisinin genç olduğuna dair bir karar vermişsek, sonrasında tutup bunun yaşlı olup olmadığını kontrol etmenin bir esprisi olmayacaktır. Verilebilecek en kötü cevabı aşağıda bulabilirsiniz:

/*
Sorulan soruya verilebilecek en
kötü cevap.
*/
#include<stdio.h>
int main( void )
{
	int girilen_yas;
	printf("Lütfen yaşınızı giriniz> ");
	scanf("%d",&girilen_yas);
	if( girilen_yas < 18 )
		printf("Daha çocuk yaştasınız, hayatın başındasınız.\n");
	if( girilen_yas >= 18 && girilen_yas <= 30 )
		printf("Gençliğin, güzelliği bambaşka!\n");
	if( girilen_yas > 30 && girilen_yas <= 50 )
		printf("Hepsini boÅŸverin, olgunluk ortayaÅŸta baÅŸlar!\n");
	return 0;
}

Yukarda ki kodu if – else kullanarak daha efektif hale getirebiliriz:

/*
if - else yapısıyla daha
efektif bir yapı
*/
#include<stdio.h>
int main( void )
{
	int girilen_yas;
	printf("Lütfen yaşınızı giriniz> ");
	scanf("%d",&girilen_yas);
	if( girilen_yas < 18 )
		printf("Daha çocuk yaştasınız, hayatın başındasınız.\n");
	else {
		if( girilen_yas >= 18 && girilen_yas <= 30 )
			printf("Gençliğin, güzelliği bambaşka!\n");
		else {
			if( girilen_yas > 30 && girilen_yas <= 50 )
				printf("Hepsini boÅŸverin, olgunluk ortayaÅŸta baÅŸlar!\n");
		}
	}
	return 0;
}

Yukardaki program daha efektif bir yapı sunmuÅŸ olmasına raÄŸmen, eÄŸer kontrol ettiÄŸimiz aralıkların sayısı çok fazla olsaydı, tam bir baÅŸbelası olacaktı! Çünkü if – else içinde, bir baÅŸka if – else bloÄŸu ve onun içinde bir baÅŸkası… bu böyle sürüp gidecekti. Kısacası performans olarak çok bir ÅŸey deÄŸiÅŸmese de, kodu yazan ve/veya okuyacak olan için tam bir eziyete dönüşecekti. İşte bu nedenlerle daha efektif yapılara ihtiyaç duyuyoruz.

Kategoriler: C Programlama, Yazılım

Tags: , , ,

Yorumlar

Yorum Yok

Yorumunuzu Ekleyin

Yorum eklemek için giris yapmalısınız.