Kategoriler
C

C Programlama Dili – Koşullu (Conditional) İfadeler

C ve diğer birçok dilde şartların sağlanıp sağlanmadığını kontrol etmek için if yapısı kullanılır.

5.1)If

#include <stdio.h>

/*program 5.1*/
/*if tanimalama*/

int main() 
{
	if(kosulumuz)
		calisacakkomut;
	return 0;
}

If koşulumuzdan sonra tek bir satır komut çalışacaksa yukarıdaki gibi tanımlayabiliriz.Ama if koşulumuzdan sonra birden fazla komut çalışacaksa bunları süslü parantez {} içine almalıyız.

#include <stdio.h>

/*program 5.2*/
/*if tanimalama*/

int main() 
{
	if(kosulumuz)
	{
		calisacakkomut1;
		calisacakkomut2;
		calisacakkomut3;
	}
	return 0;
}

Hemen ufak birkaç örnek yapalım.

Kullanıcının girdiği değer 20’den büyükse ekrana girdiğiniz sayı 20’den büyüktür yazan program.

#include <stdio.h>

/*program 5.3*/

int main() 
{
	int girilen_sayi;
	printf("Bir sayi giriniz\n");
	scanf("%d",&girilen_sayi);
	if(girilen_sayi>20)
		printf("Girilen sayi 20'den buyuktur");
	return 0;
}

Klavyeden girilen karakterin ‘a’ olup olmadığını kontrol eden program.

#include <stdio.h>

/*program 5.4*/

int main() 
{
	char girilen_karakter;
	printf("Bir karakter giriniz\n");
	scanf("%c",&girilen_karakter);
	if(girilen_karakter=='a')
		printf("Girdiginiz karakter a dir");
	return 0;
}

Klayveden girilen sayının çift olup olmadığını bulan program.

#include <stdio.h>

/*program 5.5*/

int main() 
{
	int girilen_sayi;
	printf("Bir sayi giriniz");
	scanf("%d",&girilen_sayi);
	if(girilen_sayi%2==0)  
	/*girilen_sayi%2==0 ise sayı 2'ye bölünebiliyordur dolayısıyla çifttir*/
		printf("Girilen sayi cifttir");
	return 0;
}

 

5.2)If-Else

Bazı durumlarda sadece koşulun sağlandığına bakmak yetmez.Aksi durumda yaptıracağımız bazı işlemler işlemler olabilir.Bu durumlarda if-else yapısını kullanırız.Mesela program 5.5’de sadece sayının çift olduğu durumları kontrol ettik ama tek olduğu durumlarda işlem yapmadık.Şimdi if-else kullanarak tek olduğu durumda da ekrana girilen sayı tektir yazdıralım.

#include <stdio.h>

/*program 5.6*/

int main() 
{
	int girilen_sayi;
	printf("Bir sayi giriniz");
	scanf("%d",&girilen_sayi);
	if(girilen_sayi%2==0)  
	/*girilen_sayi%2==0 ise sayı 2'ye bölünebiliyordur dolayısıyla çifttir*/
		printf("Girilen sayi cifttir");
	else
		printf("Girilen sayi tektir");
	/*girilen_sayi%2==0 değil ise sayı 2'ye bölünmüyordur dolayısıyla tektir*/
	return 0;

Girilen iki sayının birbirine bölünmesi işleminde de bir sayı sıfıra bölünemeyeceği için bunu kontrol edilmesi gerekir.Aşağıdaki örnekte bunu inceleyelim.

#include <stdio.h>

/*program 5.7*/

int main() 
{
	int bolunen,bolum,sonuc;
	printf("Bolunecek sayiyi giriniz\n");
	scanf("%d",&bolunen);
	printf("Sayi kaca bolunecek\n");
	scanf("%d",&bolum);
	if(bolum==0) //eğer bölüm sıfır ise işlem yapılmaz ekrana uyarı verir.
		printf("Sayi sifira bolunemez\n");
	else //bölüm sıfır değil ise aşağıdaki işlemler yapılır
		{
			sonuc=bolunen/bolum;
			printf("Sonuc: %d",sonuc);
		}
	return 0;
}

Çıktılar:

[one_half]5.7_cikti[/one_half][one_half_last]5.7_cikti2[/one_half_last]

Kullanıcının girdiği vize ve final notuna göre dersten kalıp veya geçtiğini ekrana yazdıran program(vize*0.4+final*0.6 sonucu 50’nin üzerinde ise geçti altında ise kaldı yazacak başka hiçbir şart kontrol edilmeyecek)

#include <stdio.h>

/*program 5.8*/

int main() 
{
	double vize,final,ortalama;
	printf("Vize notunuzu girin:");
	scanf("%lf",&vize);
	printf("Final notunuzu girin:");
	scanf("%lf",&final);
	ortalama=vize*0.4+final*0.6;
	if(ortalama>50)
		printf("Dersten gectiniz");
	else
		printf("Dersten kaldiniz");
	return 0;
}

 

5.3)İç içe geçmiş yapılar

Şimdiye kadar öğrendiğimiz bilgilerle sadece iki durumu kontrol edebiliyoruz.Peki ikiden fazla durum söz konusu ise ve her duruma göre farklı bir işlem yapacak isek ne yapmalıyız? Bu gibi durumlar için iç içe geçmiş yapılardan yararlanırız.

5.3.1)İf-else if Merdiveni

Örnek kullanım

#include <stdio.h>

/*program 5.9*/
/*if-else if örnek kullanımı*/
int main() 
{
	if(koşul1)
		{
			komut1;
		}
	else if(koşul2)
		{
			komut2;
		}
		.
		.
	else(sonkosul)
		{
			sonkomut;
		}
		
	return 0;
}

 

Klavyeden girilen iki sayıyı kıyaslayan program.

#include <stdio.h>

/*program 5.10*/
int main() 
{
	int sayi1,sayi2;
	printf("ilk sayiyi girin:");
	scanf("%d",&sayi1);
	printf("\nikinci sayiyi girin:");
	scanf("%d",&sayi2);
	if(sayi1>sayi2)
		printf("\nilk sayi buyuktur");
	else if(sayi2>sayi1)
		printf("\nikinci sayi buyuktur");
	else
		printf("\nSayilar birbirine esittir");
	return 0;
}
5.3.2)Switch-case ifadesi

Switch-case yapısı if-else if ifadesine benzer ama aralarında fark vardır.If-else if yapısında belirli bir aralığı kontrol ederken switch-case ifadesinde ise direk değerlerin bir şeylere eşit olup olmadığını kontrol edebilirsiniz.

#include <stdio.h>

/*program 5.11*/
/*switch-case tanımlama*/

int main() 
{
	swtich(degiskenimiz)
	{
		case sabit1:
			calisacakkomut1;
		break;
		case sabit2:
			calisacakkomut2;
		break;
		.
		.
		.
		default:
			printf("Bilinmeyen deger");
	}
	return 0;
}

Dört işlem yapan bir program yazalım.

#include <stdio.h>

/*program 5.12*/
/*dört işlem yapan program*/

int main() 
{
	double x,y,sonuc;
	char islem;
	printf("Yapilacak islemi giriniz\n");
	scanf("%lf%c%lf",&x,&islem,&y);
	
	switch(islem)
	{
		case '+':
			sonuc=x+y;
		break;
		case '-':
			sonuc=x-y;
		break;
		case '*':
			sonuc=x*y;
		case '/':
			sonuc=x/y;
		break;
		default:
			printf("Hata olustu\n");
		
	}
	printf("Sonuc=%lf dir\n",sonuc);
	return 0;
}

 

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.