case kullanımı...

Başlatan Veli B., 25 Haziran 2005, 18:13:28

Veli B.

PBP da, case, "nested if" (içiçe eğer) yerine kullanılan ve oldukça faydalı bir komuttur.
sözdizimi;
SELECT CASE var 
   CASE expr1 {, expr...} 
      statements 
   CASE expr2 {, expr...} 
      statements 
   {CASE ELSE statements} 
END SELECT


şeklinde ama detaylı olarak bakarsak;

SELECT CASE x
  CASE 1 
    y = 10 
  CASE 2, 3 
    y = 20
  CASE IS > 5 
    y = 100 
  CASE ELSE 
    y = 0 
END SELECT


burada x in alabileceği değer kümesini x={0,1,2,3,4,5,6,7,8} olarak belirleyelim. Bu küme sonucuna göre y nin alacağı değerleri inceleyelim.

x=0,4,5 için ;
ilk üç karşılaştırma sonucu true döndermediği için y=0 olacaktır.(CASE ELSE:Y=0 sebebi ile)

x=1 için;
ilk karşılaştırma sonucu true döndüğü için y=10 olacaktır.(CASE 1:y = 10  sebebi ile)

x=2,3 için;
ikinci karşılaştırma sonucu true döndüğü için y=20 olacaktır.( CASE 2, 3:y = 20 sebebi ile)

x=6,7,8 için;
üçüncü karşılaştırma sonucu true döndüğü için y=100 olacaktır.(CASE IS > 5:y = 100 sebei ile)
**********************************************************
dikkat edilmesi gereken bir nokta, aynı değer için iki karşılaştırmada true döndürecek ise ilk sıradaki karşılaştırmadan sonra rutin kırılır ve end select dışına çıkılır veya statement olarak dallanma verilmiş ise o adrese dallanılır.Bu programcının kontrolünde olan bir husustur.Dikkat yani :D

SpeedyX

Alıntı yapılan: "katana"
SELECT CASE x
  CASE 1 
    y = 10 
  CASE 2, 3 
    y = 20
  CASE IS > 5 
    y = 100 
  CASE ELSE 
    y = 0 
END SELECT


asm de de aslında şu işi yapar;
if x=1 then
   y=10
elseif x=2 or x=3 then
   y=20
elseif x>5 then
   y=100
else
   y=0
endif

pbp için case ve if...elseif...endif olayının hiçbir farkı yoktur. Bu yüzden aynı olan ilk ifadeyi işleyip sonlanır.
case olarak daha kısa yazılır güzel olur. şekilli olur. :)

HEXF2

@katana eyvallah hoca