DERS-2 (Koşullu İfadeler, Aritmetik ve Birleşik Operatörler)

Geçen dersimizde temel girdi çıktı işlemleri ve değişken tanımlamayı görmüştük. Bu derste ise koşullu ifadeleri, aritmetik ve birleşik operatörleri öğreneceğiz. Koşullu ifadeler if, else ve else if den oluşur. Bunların kullanımını kodlar üzerinde anlatmak istiyorum.

Bunların dışında mod kullanımı ve açıklama satırlarının kullanımını da göreceğiz.

#include<stdio.h>
/* Çok satırlı bir açıklama örneği:
Bu şekilde bir slash ve yıldız karakterleri
içindeki yazılar çok satırlı açıklamalardır
ve derleyici tarafından dikkate alınmazlar.
Programcı kendisi veya kodu okuyacak
başkaları için bu satırları kullanır.
*/

int main(){
	int a; // Tek satırdan oluşan bir açıklama satırı
	printf("Bir rakam giriniz");
	scanf("%d",&a);
	if(a>0){
		printf("Girilen sayi pozitiftir");
	}
	return 0;
}

Yukarıdaki örneğimizde gene kullanacağımız temel kütüphane olan stdio.h kütüphanesini dahil ederek kodlamaya başladık. Ardından çok satırdan oluşan bir açıklama yazısı örneği gösterdik. int main(){ diyerek başla komutunu verdik. Kullanacağımız değişkenimizi tanımladıktan sonra printf ile kullanıcıya ne yapması gerektiğini söyledik ve scanf ile kullanıcının girdiği tam sayıyı a değişkeninin içine attık. Eğer kullanıcıya ondalık sayı girme imkanını vermek istiyorsak int a; değil float a; olarak tanımlamamız gerekirdi ve scanf() fonksiyonunun içinde “%d” yerine “%f” kullanmamız gerekirdi.

Neyse gelelim if’in kullanımına: if koşulunun içine parantez içinde (a>0) koşulunu koyduk ve ardından küme parantezi koyarak if’in içine hangi satırlar dahil onları belirledik ve if’in bittiği yeri yine küme parantezi ile kapadık. Burada eğer a değişkeni 0′dan büyükse if’in içine gir ve içindeki komutları çalıştır dedik. İf’in içindeki komut zaten basit bir komut. Eğer girilen sayı 0′a eşit veya 0′dan küçük olsaydı if’in içine girmeden direk if’ten sonraki satır çalışacaktı ve burada da if’ten sonraki satır return 0; yani bitti komutu =) Yani eğer a değişkeni pozitif bir sayı değilse program hiçbirşey yapmadan kapanacaktı.

Şimdi else’in kullanımına gelelim:

#include<stdio.h>
int main(){
	int a;
	printf("Bir rakam giriniz");
	scanf("%d",&a);
	if(a>0){
		printf("Girilen sayi pozitiftir");
	}
	else{
		printf("Girilen sayi pozitif degildir.");
	return 0;
}

Burada dikkat edilirse else’in içine bir koşul yazılmıyor. If’in içindeki koşul dışında kalan tüm koşullar else’e aittir çünkü. Else’in üstünde bulunan if’teki koşul gerçekleşmiyorsa mutlaka else’in içine girilir. If’teki koşul gerçekleşiyor ise bu sefer else’e hiç bakılmadan direk else’in dışında kalan kod işletilir. İkisinden yalnızca birine girilir ve mutlaka ikisinden birine girilir.

Bir de else if var. Bu da eğer 2 den fazla kıyaslama yapmak istiyorsak kullanılır. Şöyleki:

#include<stdio.h>
int main(){
	int a;
	printf("Bir rakam giriniz");
	scanf("%d",&a);
	if(a>0){
		printf("Girilen sayi pozitiftir");
	}
	else if (a==0){ // Eşittir'in kullanımına DİKKAT!
		printf("Girilen sayi 0'dır");
	}
	else{
		printf("Girilen sayi negatiftir");
	}
	return 0;
}

Burada görüldüğü gibi else if’in içine bir koşul yazabiliyoruz. Else if için aslında Türkçe bir karşılık yazarsak, öyle değilde böyleyse anlamına gelir. Yukarıdaki kodda eğer a 0′dan büyükse “Girilen sayi pozitiftir” yazdırıyoruz, eğer 0′dan büyük değilde 0′a eşitse “Girilen sayi 0′dır” yazdırıyoruz. Eğer her iki koşulda sağlanmıyorsa geriye zaten bir tek a’nın negatif olma durumu kalıyor ki biz de ona uygun olarak “Girilen sayi negatiftir” yazdırıyoruz. Bu arada eşittirin kullanımına dikkat tek eşittir atama görevi görür yani soldaki değişkene sağdaki değeri atar, iki eşittir ise kıyaslama yapar.

Bu arada ilişkisel operatörleri de gösterelim:

Büyüktür
== Eşittir
= Büyük eşittir
!= Eşit değildir

Birde birleşik operatörler vardır:

|| veya
&& ve
! değil

Bu operatörlerin mantıksal doğruluk tablosu da şu şekildedir:

p q p&&q p||q !p
0 0 0 0 1
0 1 0 1 1
1 0 0 1 0
1 1 1 1 0

Şimdi hem bu birleşik operatörlerin kullanımını göstereceğim hem de if, else kullanarak bu birleşik operatörleri örnekleyeceğim.

Örneğin girilen bir sayı hem 30′dan büyük hemde tek sayımı bunu görelim. Bu arada bir sayının tek mi çift mi olduğunu bulmak için modüler aritmetiği kullanabiliriz ve sayının mod2si eğer 1 ise sayı tektir 0 ise sayı çifttir. Mod operatörü % ile gösterilirir. Örneğimizde mod operatörünün kullanımınıda göreceğiz. Önce bu soruyu iç içe if kullanarak çözeceğim:

#include<stdio.h>
int main(){
	int a;
	printf("Bir sayi giriniz");
	scanf("%d",&a);
	if(a>30){
		//30'dan büyükse buraya giriyor program ve burada bir if daha kullanacağız
		if(a%2==1){
			printf("Sayi hem 30'dan buyuk hemde tek sayidir");
		}
		else{
			printf("Sayi hem 30'dan buyuk hemde cift sayidir");
		}
	}
	else{
		printf("Sayi 30'dan kucuktur");
	}
	return 0;

}

Şimdi de bunu birleşik operatörler kullanarak çözelim.

#include<stdio.h>
int main(){
	int a;
	printf("Bir sayi giriniz");
	scanf("%d",&a);
	if(a>30 && a%2==1){
		printf("Sayi hem 30'dan buyuk hemde tek sayidir");
	}
	return 0;
}

Bunu iç içe 2 tane if kullanarak çözmüştük bir önceki örnekte.

Şimdi de bir sayı çift mi veya 30′dan büyük mü ona bakalım.

#include<stdio.h>
int main(){
	int a;
	printf("Bir sayi giriniz");
	scanf("%d",&a);
	if(a>30 || a%2==0){
		printf("Sayi 30dan buyuk veya çifttir);
	}
	return 0;
}
#include<stdio.h>
int main(){
	int a;
	printf("Bir sayi giriniz");
	scanf("%d",&a);
	if(a>30){
		printf("Sayi 30dan buyuk veya çifttir);
	}
	else if(a%2==0){
		printf("Sayi 30dan buyuk veya çifttir);
	}
	return 0;
}

Ve koşulunun gerçekleşmesi için && operatörünü her iki yanındaki koşulun da sağlanması gerekiyor. Veya koşulunun gerçekleşmesi içinse || operatörünün solundaki veya sağındaki bir koşulun sağlanması yeterlidir. 2 koşul birlikte sağlansa da olur.

Yorum Yapın