Karar Verme: Eşitlik ve Karşılaştırma Operatörleri
if yapısı içindeki koşullar, Şekil 2.12'de özetlenen eşitlik operatörleri ve karşılaştırma operatörleriyle sağlanır. Karşılaştırma operatörleri aynı seviyede önceliğe sahiptir ve soldan sağa doğru işlerler. Eşitlik operatörü, karşılaştırma operatörlerinden daha düşük önceliğe sahiptir ve soldan sağa doğru işler. [Not: C'de bir koşul 0(yanlış) ya da 0'dan farklı (doğru) bir değer üreten herhangi bir deyim olabilir. Bu konuyla ilgili bir çok uygulamayı kitap boyunca göreceğiz.
Operatörler C'deki karşılığı C'de örneği C'de anlamı |
|||
eşitlik operatörleri |
|||
| = | = | x = = y | x eşittir y |
| = | != | x != y | x eşit değildir y |
| karşılaştırma operatörleri | |||
| > | > | x > y | x büyüktür y |
| < |
< |
x<y |
x küçüktür y |
| ≥ | >= | x>=y | x büyük vey eşit y ye |
| ≤ | <= | x<=y | x küçük veya eşit y ye |
Şekil 2.12 Eşitlik ve karşılaştırma operatörleri
Genel Programlama Hataları 2.16
==, !=, >= ve <= operatörlerinin arasında boşluk kullanılması yazım hatasına sebep olur.
Genel Programlama Hataları 2.17
!=, >=, <= operatörlerinin ters çevrilerek =!, =>, =< şeklinde kullanılması yazım hatasına sebep olur.
Genel Programlama Hataları 2.18
== operatörünün = ile karıştırılması.
Bu karışıklığı önlemek için eşitlik operatörü "çift eşittir" olarak, atama operatörü ise "atama" olarak okunmalıdır. İleride göreceğimiz üzere, bu iki operatörün karıştırılması kolaylıkla giderilebilecek bir yazım hatası yanında oldukça önemli mantık hatalarında sebep olur.
Genel Programlama Hataları 2.19
if yapısındaki koşulu belirten parantezlerin sağına noktalı virgül ( ;) koymak
Şekil 2.13, kullanıcı tarafından girilen iki sayıyı karşılaştırmak için altı if yapısı kullanmaktadır. Eğer herhangi bir if yapısı içindeki koşul gerçekleşirse, o if yapısıyla ilgili printf fonksiyonu çalıştırılır. Program ve bu programın üç örneğe göre çıktıları aşağıdaki şekilde gösterilmiştir.
1 /* Şekil 2.13: prog02_13.c
2 if yapılarını, karşılaştırma ve eşitlik
3 operatörlerini kullanmak */
4 #include <stdio.h>
5
6 int main( )
7 {
8 int sayi1, sayi2;
9
10 printf( "İki tamsayı girin\n" );
11 printf( "Bu iki sayının karşılaştırması yapılacaktır: " );
12 scanf( "%d%d", &sayi1, &sayi2 ); /* iki sayının alınması */
13
14 if ( sayi1 == sayi2 )
15 printf( "%d eşittir %d\n", sayi1, sayi2 );
16
17 if ( sayi1 != sayi2 )
18 printf( " %d eşit değildir %d\n ", sayi1, sayi2 );
19
20 if ( sayi1 < sayi2 )
21 printf( "%d küçüktür %d\n", sayi1, sayi2 );
22
23 if ( sayi1 > sayi2 )
24 printf( "%d büyüktür %d\n", sayi1, sayi2 );
25
26 if ( sayi1 <= sayi2 )
27 printf( "%d küçüktür yada eşittir %d\n",
28 sayi1, sayi2 );
29
30 if ( sayi1 >= sayi2 )
31 printf( "%d büyüktür yada eşittir %d\n",
32 sayi1, sayi2 );
33
34 return 0; /* program başarılı bir şekilde sona ermiştir */
35 }
İki tamsayı girin
Bu iki sayının karşılaştırması yapılacaktır: 3 7
3 eşit değildir 7
3 küçüktür 7
3 küçüktür yada eşittir 7İki tamsayı girin
Bu iki sayının karşılaştırması yapılacaktır: 22 12
22 eşit değildir 12
22 büyüktür 12
22 büyüktür yada eşittir 12İki tamsayı girin
Bu iki sayının karşılaştırması yapılacaktır: 7 7
7 eşittir 7
7 küçüktür yada eşittir 7
7 büyüktür yada eşittir 7
Şekil 2.13 Eşitlik operatörleri ve karşılaştırma operatörlerini kullanmak
Şekil 2.13'teki programın, iki tamsayıyı almak için scanf (12.satır) kullandığına dikkat ediniz. Her dönüşüm belirteci, içinde değerin saklanacağı, ilgili bir argümana sahiptir. İlk %d, bir değeri sayi1 değişkeni içinde tutulacak şekle dönüştürür ve ikinci %d, bir değeri sayi2 içinde tutulacak bir şekle dönüştürür. Her if ifadesini içeriden başlatmak ve her if yapısının altına ve üstüne bir satır boşluk yerleştirmek, programın okunurluğunu arttırır. Ayrıca, Şekil 2.13'teki her if ifadesi içinde tek bir ifade yer aldığına da dikkat ediniz. 3.ünitede birden çok ifadeyi içeren gövdeye sahip if ifadelerini nasıl yazacağımızı göreceğiz.
İyi Programlama Alıştırmaları 2.12
if yapısının gövdesi içindeki ifadeleri içeriden başlatmak.
İyi Programlama Alıştırmaları 2.13
Programlarda her kontrol yapısından önce ve sonra boş bir satır kullanmak programın okunulabilirliğini arttırır.
İyi Programlama Alıştırmaları 2.14
Bir satırda birden fazla ifade bulunmamalıdır.
İyi Programlama Alıştırmaları 2.15
Uzun bir ifade birden çok satır sürebilir. Eğer bir ifade birden fazla satır sürecekse, ifadeyi mantıklı noktalardan ayırmak gerekir. (örneğin virgüllerle ayrılmış bir listede virgülden sonra) Eğer bir ifade birden çok satır sürüyorsa, ifadenin sürdüğü tüm satırlar içeriden başlatılmalıdır.
İyi Programlama Alıştırmaları 2.16
Birden fazla operatör içeren deyimler yazdığınızda operatör önceliklerini gösteren tabloya bakınız. Deyimin içindeki operatörlerin uygun biçimde kullanıldığından emin olunuz. Eğer karmaşık bir deyim içinde hesaplama sırasından emin olamazsanız, sırayı istediğiniz şekle getirmek için (matematikte olduğu gibi) parantezleri kullanın. C'in bazı operatörlerinin (örneğin atama operatörü ( = ) gibi ) soldan sağa değil de, sağdan sola doğru işlediğini gözden kaçırmayın.
Şekil 2.13'teki yorum satırı 3 satır sürmüştür. C programlarında, tab, yeni satır ve boşluklar gibi boşluk karakterleri ihmal edilir. Bu sebepten, ifadeler ve yorumlar birden fazla satır sürebilir.Ancak tanıtıcıları ayırmak doğru değildir.
Şekil 2.14, bu ünitede gösterilen operatörlerin önceliklerini listelemektedir. Operatörlerin önceliği yukarıdan aşağıya gidildikçe azalmaktadır. Eşit işaretininde bir operatör olduğuna dikkat ediniz. Bütün bu operatörler, atama operatörü ( = ) hariç, soldan sağa doğru işlerler. Atama operatörü ( = ), sağdan sola doğru işler.
Bu ünitedeki C programlarında kullandığımız bazı kelimeler ( int,return ve if ), bu dilin anahtar kelimeleridir. C'deki tüm anahtar kelimeleri Şekil 2.15'te bulabilirsiniz. Derleyici için bu kelimelerin özel anlamları vardır. Bu yüzden, programcı bu kelimeleri değişken isimleri gibi tanıtıcılar biçiminde kullanmamaya dikkat etmelidir. Bu kitapta tüm anahtar kelimeleri açıklayacağız.
Operatörler İşleyişleri
( ) soldan sağa
* / % soldan sağa
+ - soldan sağa
< <= > >= soldan sağa
= = != soldan sağa
= sağdan sola
Şekil 2.14 Şu ana kadar anlatılan operatörlerin öncelikleri ve işleyişleri
Anahtar kelimeler
auto double int struct
break else long switch
case enum register typedef
char extern return union
const float short unsigned
continue for signed void
default goto sizeof volatile
do if static while
Şekil 2.15 C'nin anahtar kelimeleri
Bu ünitede, C programlama dilinin, verileri ekrana yazdırma, kullanıcıdan verileri alma, işlemler yapma ve kararlar verme gibi önemli bir çok özelliğini tanıttık. 3.ünitede yapısal programlamayı öğrendikçe bu tekniklerin üzerine devam edeceğiz. İçeriden başlatma tekniklerini daha yakından tanıyacak ve ifadelerin hangi sırada çalıştırılacaklarına ( buna akış kontrolü denir) nasıl karar vereceğimizi çalışacağız.
Genel Programlama Hataları 2.20
scanf ifadesi içindeki dönüşüm belirteçleri arasına (asla gerekmemesine rağmen) virgül yerleştirmek.
Bilinmesi Gerekli
Arduino

Arduino ile bilgisayar programlarınızı gerçek dünyaya taşıyabilirsiniz.
İlk Transistör

Bell laboratuvarlarında icat edilen ilk transistör







