Bu sayfadaki yazılar
Sayfanın metni
Sayfa 36
En Önemli Komut: if
Bütün programlama dillerinde karar mekanizmaları yaratabilmenin ilk yolu koşullu dallanmadır. Bu işe yarayan komut da if komutudur. Bu komutu kullanarak programımızın çeşitli bölümlerinde, içinde bulunulan duruma göre farklı davranabilme imkanımız olur. Hemen aşağıdaki örneğe bir bakın.
#include <iostream>
komut;
)
else
komut; komut;
Bu formda kullanıldığında ise iki kod bloğundan yalnızca biri çalıştırılıyor. Koşul doğru ise birinci kod bloğu çalışırken, yanlış ise ikinci kod bloğu çalışıyor. Bunun yanında if komutunu bazen de şu şekilde kullanabiliyoruz
if ( kosull int main() 1 komut; std::cout << “Issiz bir magarada ilerliyorsun. ” komut; << “Ileride bir citirti duydun. Ne yapacaksin?” << ) << “1- Kilicimi cekecegim” << std::endl else if ( kosul2 ) << “2- Aydinlatma buyusunu yapacagim” ex std:şendi; komut; komut;
int komut; Std::cin >> komut; if
( komut 1. )
// kilici cekti
std::cout << “Cok guclu bir canavar sana dogru â
Böyle kullandığımızda iki farklı koşulu test etmiş oluyoruz. Koşul1 ve koşul2'nin doğruluk durumlarına göre bu kod bloklar-
<< “ve sen birsey yapamadan seni oldurdu” Eğer koşul1 doğru ise, birinci blok çal-
) else if ( komut // buyu yapti std::cout << “Cok guclu bir canavar gordun.
-- 2 )
"m
<< “Fakat canavar aydinliktan korktu ve kact
€<€ std: tendi; )
else 1 // taninmayan komut stdı:cout << “Komut anlasilamadi” << )
return O;
Tamam kabul ediyorum biraz küçük ama yine de ilk text adventure oyununuz için fena sayılmaz :)
if komutunun en basit formunu anlatarak başlayalım
komut; komut;
( kosul )
Burada koşul doğru ise if komutunun hemen sonrasından gelen kod bloğu çalıştırılıyor (kod bloklarından geçen bölümde bahsetmiştik). Eğer koşul yanlış ise bu kod bloğu çalıştırılmadan atlanıyor. if komutunun bir başka formu ise şöyle
if
komut;
( kosul )
ışıyor ve diğer else if bölümlerine bakılmadan direkt if bloğunun sonuna atlanıyor. Yani bu şekilde bir adet if ve n adet else if satırı içeren bir if bloğunda en fazla bir kod bloğu çalışabilir. Koşullar sıra ile taranırken bir tanesi doğru olduğu anda, ona karşılık gelen kod bloğu çalıştırılır ve son else if'e karşılık gelen kod bloğundan bir sonra gelen komut ile devam edilir. Eğer koşulların hepsi yanlış ise kod bloklarından hiçbiri çalıştırılmaz.
Son olarak if komutunu görebileceğimiz bir format da şu:
( komut; komut;
( kosul1 )
) else if ( komut; komut;
( kosul2 )
)
else
( komut; komut;
Bu daha önce bahsettiğimiz iki formun birleşimi. Burada tahmin edebileceğiniz gibi önce koşul1 ardından koşul2 kontrol ediliyor. Bu ikisinden biri doğru ise ona karşılık gelen kod bloğu çalıştırılıyor. Eğer iki koşul da yanlış ise else bloğu çalıştırılıyor. Dikkat ederseniz if komutu bu şekilde kullanıldığı zaman içerdiği kod bloklarından biri mutlaka ama mutlaka çalışıyor.
Nitekim, yukarıdaki text adventure örneğimizde if komutunu bu şekilde kullandık. Şimdi if komutunun çalışmasında bu kadar kritik rol oynayan koşulların nasıl ifade edildiğine bir bakalım.
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 37
Koşullu İfadeler
Programımızda herhangi bir anda içinde bulunulan durumu anlamak için koşullu ifadeleri kullanırız. Koşullu ifadeler genelde şöyle şeylerdir:
1. değeri 5 mi?
2. k değişkeninin değeri 10'dan küçük mü?
Bu ifadelerden en sık kullandığımız kuşkusuz eşitlik kontrolüdür. Bunu text adventure örneğimizde de kullandık.
komut --
Burada çok dikkat etmeniz gereken bir nokta eşitlik kontrolü için bir değil iki kere = karakterinin kullanılması. Yani = değil == kullanıyoruz. En sık kullanılan karşılaştırma operatörlerine bakacak olursak:
1. a>b: a, b'den büyük mü?
2. a>-b:a, b'den büyük veya eşit mi? 3. a<b:a, b'den büyük mü? 4. a<-b:a, b'den büyük veya eşit mi? 5. a--b:a,b'ye eşit mi? 6. farklı mı?
Yeni
bir tip: bool
Bu noktada hemen önemli bir standart tipi daha tanıtıyoruz. int ve std::string'den sonra üçüncü öğrendiğimiz tip bool. Bool tipinden tanımlanan değişkenler içlerinde 'doğru' veya 'yanlış' olmak üzere iki değerden birini taşıyabilirler. Başka bir deyişle, bool tipinden bir değişkenin değeri ya 'doğru' ya 'yanlış'tır. Tabii programlarımızda bu iki değerin İngilizce karşılıkları olan 'true' ve 'false' ifadelerini kullanıyoruz. Örneğin
bool programSonu; programSonu false;
programSonu true;
if ( programSonu )
std::cout << “Gule güle”
)
Bu teorik örnekte önce programSonu adında ve bool tipinde bir değişken tanımlıyoruz. Ardından bu değişkene hemen false değeri veriyoruz. Daha sonra programımızın ilerilerinde bir yerde bu değişkeni true yapıyoruz. Dikkat ederseniz if komutunda koşul olarak yukarıda gördüğümüz koşullu ifadelerden biri yerine direkt olarak bool tipindeki değişkeni kullanabiliyoruz.
Bunun sebebi aslında koşullu ifadelerde geçen < veya == gibi gösterimlerin de aslında birer operatör oluşu. Az önce operatörlerin nasıl bir veya iki argüman alıp bunlar üzerinde bir işlem yapıp sonuç olarak bir değer döndürdüğünden bahsetmiştik. İşte < ve == gibi karşılaştırma operatörleri de karşılaştırdıkları iki değeri argüman olarak alır, vaat ettikleri karşılaştırmayı yapar ve sonucu bool tipinden geçici bir değişken olarak döndürürler. Yani aslında if komutunun gerçekte beklediği şey bool tipinde bir değerdir. Karşılaştırma operatörlerinin bütün yaptığı argümanları arasında istenen karşılaştırmayı yapıp sonucu bool olarak döndürmektir.
if ( Biliyorum bu noktada pek çok yeni şey öğrendiniz ve yoruldunuz.
Ancak artık daha hızlanabileceğimiz bir noktadayız. İsterseniz bir ara verip geri gelin.
Döngülere başlangıç: while
Döngüler bir kod bloğunun, bir takım koşullara bağlı olarak tekrar tekrar çalıştırılması ile elde edilir. İlk olarak while komutuna bakalım.
while ( kosul )
komut; komut;
Burada kolaylıkla anlayacağınızı tahmin ettiğim şekilde, while komutu sayesinde koşul doğru olduğu müddetçe kod bloğu tekrar tekrar çalıştırılacak. Burada değinmemiz gereken şey koşulun hangi zamanlarda kontrol edildiği. While komutuna programımızın akışı ilk geldiğinde koşul kontrol edilir. Bu noktada koşul yanlış ise kod bloğu komple atlanarak bir sonraki komuttan devam edilir. Eğer koşul doğru ise kod bloğu çalıştırılır. Kod bloğundaki son komut da işletildikten sonra, koşul yine kontrol edilir. Bu esnada eğer koşul hala doğru ise tekrar kod bloğunun ilk komutundan başlanarak kod bloğu bir kez daha çalıştırılır. Bu şekilde kod bloğunun her sonuna gelişimizde koşul tekrar kontrol edilir ve doğru kaldığı sürece kod bloğu tekrar tekrar çalıştırılır. Aşağıdaki iki örneğe bakınca koşulun kontrol edilmesi anının neden önemli olduğunu daha iyi anlayacaksınız.
int i while
(
0; i
(il-
5 ) komut1; komut2;
Bu örnekte önce i adlı tamsayı değişkenimiz tanımlanıp sıfıra eşitleniyor. Ardından while döngüsüne giriyoruz. İlk önce koşula bakılıyor. i değişkeninin değeri şu an beş değil. Bu yüzden koşul doğru. Öyleyse döngünün içindeki komutlar çalışmaya başlıyor. Çalıştıktan sonra i++ komutu ile değişkenin değeri bir artırılıyor. Ardından komut2 çalışıyor. Sonra tekrar koşul kontrol ediliyor. i hala beşe eşit değil ve koşul doğru. Tekrar döngüye giriyoruz. Bu döngüde 5 kere döndükten sonra en sonunda i değişkeninin değeri 5'e eşit oluyor ve i != 5 koşulu artık yanlış hale geliyor. Bu noktada döngüden çıkılıyor ve sonraki komuttan devam ediliyor.