KSP KSP Sistem Fonksiyonları Yükleme İletişim Haberler Hakkımda

Seçim Yapma

Programlarımızda her zaman kodları belli bir sıra ile çalıştırmak istemeyiz.Bazen kodun bir parçasını ancak belirli koşullar gerçekleşirse çalıştırmak isteriz.

Bir örnek üzerinde anlatmak duruma daha iyi hakim olmanızı sağlayabilir :

Daha önceki Araba sınıfımızdan bir değişken tanımlayalım.


Araba benim_arabam;

....
....		// bu kısımda benim_arabam ile ilgili değerleri başlatmış olalım.

Örneğin arabanın motoruna göre vergi alınsın. Aşağıda görüleceği gibi araba hacminin değerini belirli değerlerle karşılaştırarak bizi ilgilendiren seçimleri yapıyoruz.


tam vergi;
 

eğer (benim_arabam.mtr.motor_gücü < 1600)
{
	vergi = 500;
	YAZ "6 Aylık 500 TL ödeyeceksiniz.";	
}	
	
yoksa (benim_arabam.mtr.motor_gücü > 1600 && benim_arabam.mtr.motor_gücü < 2500)	
	vergi = 1000;
	
yoksa (benim_arabam.mtr.motor_gücü == 1000)	
{
	vergi = 300;
	YAZ "Blok kullanımını göstermek için...";
}	
	
yoksa (0)
	YAZ "Burayı hiçbir zaman yazmayacak çünkü yanlış olarak değerlendirilecek.";	
	
hiçbiri 
	YAZ "Hata : motor kapasitesi belirtilmemiş !" ;


...............	// seçim sonrası kodun başladığı yer.
	

Yukarıdaki örnekte görüldüğü gibi anahtar kelimelerimiz eğer , yoksa , hiçbiri dir.

Bu anahtar kelimelerden sonra gelen parantez içinde bize yanlış(0) veya doğru(1) değerini verecek herhangi bir ifade veya değer değerlendirilir.

Seçim ifadesinin kullanımı

Burada eğer , yoksa veya hiçbiri ile ifade edilen durumlara seçim diyoruz.


eğer (durum)  kod;
eğer (durum)  blok

eğer (durum)  kod; 	yoksa (başka_durum) kod;    ...bir veya birden çok yoksa ifadesi..... 
eğer (durum)  blok 	yoksa (başka_durum) blok    ...bir veya birden çok yoksa ifadesi..... 

eğer (durum)  kod;     yoksa (başka_durum) kod;     ...bir veya birden çok yoksa ifadesi.....  hiçbiri kod;
eğer (durum)  blok     yoksa (başka_durum) blok     ...bir veya birden çok yoksa ifadesi.....  hiçbiri blok

eğer (durum)  kod;     hiçbiri kod;
eğer (durum)  blok     hiçbiri blok

Burada "durum" ve "başka_durum" dediğimiz değer herhangi bir şekilde 0 veya 1 değerini verecek sayısal veya mantıksal operatörün kullanıldığı bir ifadedir.

Örnekteki kodun değerlendirilmesi

eğer ifadesindeki parantez içindeki ifade doğru(1) çıkarsa program parantezden hemen sonra gelen "kodu" yoksa "bloku" çalıştırır.

Yanlış(0) çıkarsa :

  1. kendinden sonra yoksa blokları varsa bunları değerlendirerek ilerler. Doğru olan varsa o yoksa'ya ait "kodu veya bloku" çalıştırır ve diğer seçimleri atlar (hiçbiri dahil. Sonraki bloklarda doğru değerlendirmeler olsa bile çalıştırmaz. Bu sebeple kodunuzun mantığını iyi kurmanız gerekir

    Doğru olan kodu çalıştırdıktan sonra seçim sonrası koda ilerler.

  2. Diğer seçimler çalışmadığı taktirde hiçbiri bloku varsa başka seçenek olmadığından bunu çalıştırır.

  3. Yukarıdaki ikisi de yoksa hemen seçim sonrası koda ilerler.

**** Bu şekilde yanlış değerlere adanmış kod parçaları çalıştırılmaz.


Seçim ve tekrar ifadeleri mantıksal operatörlerle bir araya geldiğinde yapay zekanın çok güçlü temellerini oluştururlar.

Değişkenlerin kullanılması

Bazen bir verinin mevcut olup olmadığını anlamak için eğer ifadesini kullanabiliriz.

Örneğin:

 
/*
Özellikle XML elemanlarını tararken bu özellik kullanışlı olabilir.
Kabaca bir örnek verecek olursak
*/

xml_düğüm nod;
nod = xml_ilkdüğümal();

/*Burada eğer nod elemanı dökümandan alınabilirse blok içindeki ifade yazdırılabilecektir.
Aksi halde veri yoksa program bloğu atlayacaktır. 
Böylece programınızın sebepsiz yere hata vermesini de engellemiş olursunuz.
Ayrıca hata ayıklarken de (debugging) bu özelliği kullanabilirsiniz.
*/

eğer (nod)
{
  YAZ "Nod ismi : " + nod.isim();
}