$1.99 Domains* at GoDaddy.com

C Programlama Conditional Operator ( ? )

c_programlama-165Türkçe karşılık bulamadığım bir baÅŸka C kavramı da, Conditional Operator. Aslında mot a mot çeviri yaparsam, koÅŸullu operatör anlamına geliyor. Ama ÅŸu ana kadar gördüğümüz birçok yapıyı da bu ÅŸekilde tanımlamak mümkünken, koÅŸullu operatör ifadesini kullanmayı pek tercih etmiyorum. Neyse lafı uzatmayalım…

Conditional Operator, if-else ile tamamen aynı yapıdadır. Hiçbir farkı yoktur. Tek farkı koda bakıldığında anlaşılmasının biraz daha zor oluÅŸudur. Bir de if – else gibi yazıyla ifade edilmez. Onun yerine soru iÅŸareti (?) ve iki nokta üst üste ( : ) kullanarak yazarız. AÅŸağıdaki tabloda if else yapısıyla karşılaÅŸtırılmalı olarak, Conditional Operator verilmiÅŸtir:

if-else Yapısı Conditional Operator ( ? ) Yapısı
if( koÅŸul ) {
	if_komut(lar)
}
else {
	else_komut(lar)
}
koÅŸul?if_komut(lar):else_komutlar
Conditional Operator ( ? ) Akış Diyagramı
sm_conditional_operator

Şimdi de aynı programı, hem if-else, hem de conditional operator kullanarak yazalım:

/*
Girilen tam sayının
10'dan büyük olup
olmadığını gösteren
program
*/
#include<stdio.h>
int main( void )
{
	int sayi;
	printf("Lütfen bir sayı giriniz> ");
	scanf("%d",&sayi);
	if( sayi > 10 )
		printf("Sayı 10'dan büyüktür\n");
	else
		printf("Sayı 10'dan küçüktür veya 10'a eşittir\n");
	return 0;
}

Şimdi de aynı programı conditional operator kullanarak yazalım:

/*
Girilen tam sayının
10'dan büyük olup
olmadığını söyleyen
program
*/
#include<stdio.h>
int main( void )
{
	int sayi;
	printf("Lütfen bir sayı giriniz> ");
	scanf("%d",&sayi);
	( sayi > 10 ) ? printf("Sayı 10'dan büyüktür\n"):
			printf("Sayı 10'dan küçüktür veya 10'a eşittir\n");
	return 0;
}

Program gördüğünüz gibi biraz daha kısaldı.

Conditional Operator’ler pek kullanmayı sevmediÄŸim bir yapıdır. Çünkü kodun kısa olmasından çok, anlaşılabilir olması önemli. Ve conditional operator kullanmak ne yazık ki, kodu daha karmaşık hale getiriyor. UNIX filozofisinde bir ÅŸeyi akıllıca yapacağınıza, temiz/açık yapın diye bir yaklaşım mevcut. Belki bu yüzden veya belki de tembellik, conditional operator’lere alışamadım gitti… :)

Kategoriler: C Programlama, Yazılım

Tags: , ,

Yorumlar

Yorum Yok

Yorumunuzu Ekleyin

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