IF: ELSEIF olmadan çok koşullu mantık
TROIA'nın IF yapısı IF condition THEN ... ELSE ... ENDIF; şeklindedir. En çok şaşırtan nokta: ELSEIF yoktur. Üçüncü bir koşul eklemek istediğinizde ELSE bloğunun içine yeni bir IF yazmanız gerekir:
IF PUAN >= 90 THEN
NOT = 'AA';
ELSE
IF PUAN >= 70 THEN
NOT = 'BA';
ELSE
NOT = 'FF';
ENDIF;
ENDIF;
Ayrıca TROIA, && (ve) ve || (veya) operatörlerinde kısa devre (short-circuit) yapmaz — ilk koşul sonucu belirlemeye yetse bile ikinci koşul her zaman çalıştırılır. İkinci koşulda bir metod çağrısı varsa bu, beklenmedik bir yan etkiye (side effect) yol açabilir.
SWITCH: BREAK gerekmez
SWITCH ifadesi yalnızca bir değişken alır, ifade (expression) kabul etmez ve karşılaştırmayı metin (string) olarak yapar:
SWITCH DURUMKODU
CASE '1':
SONUC = 'Beklemede';
CASE '2', '3':
SONUC = 'Onaylandı';
DEFAULT:
SONUC = 'Bilinmiyor';
ENDSWITCH;
Diğer dillerin aksine TROIA'da BREAK gerekmez ve desteklenmez — her CASE bloğu kendiliğinden biter, bir sonrakine "düşmez" (fall-through yoktur).
WHILE, BREAK ve CONTINUE
Klasik döngü WHILE condition BEGIN ... ENDWHILE; şeklindedir. BREAK döngüyü tamamen keser, CONTINUE kalan bloğu atlayıp döngü başına döner:
LOCAL:
INTEGER I;
I = 0;
WHILE I < 10
BEGIN
I = I + 1;
IF I % 2 == 0 THEN
CONTINUE;
ENDIF;
IF I == 7 THEN
BREAK;
ENDIF;
SONUC = SONUC + I + ',';
ENDWHILE;
Sonuç
TROIA'nın akış kontrol komutları tanıdık görünür, ama ELSEIF yokluğu ve &&/||'nin kısa devre yapmaması, başka dillerden gelen geliştiricilerin en sık düştüğü iki tuzak.
Yorumlar (0)
Yorum Yaz