Merhaba, bu yazımda karar verme süreçlerinde kullandığımız If Else kavramlarını ele alacağız.
Bir önceki dersimizde bir hesap makinesi yapmıştık. aşağıdan göz atabilirsiniz. Şimdi biraz daha sistemi ileri taşıyıp bir IF ELSE Blogu ile daha düzenli hale getireceğiz.
Bir önceki yazıya aşağıdan erişebilirsiniz.
IF Sorgulama İfadesi THEN
KODLAR
ELSE
KODLAR
ENDIF;
Transaction İsmi : EDUTEST
Başlangıç Diyalogu : EDUD01D000
Oluşturacağımız Diyalog : EDUD01D002
Proje Tasarımı
Case: Sayı1 ve Sayı2 değerleri alınıp ISLEM kısmında girilen (+ – * /) değerlerine göre işleme tabi tutulacak. Doğru işlem girilmişse sonuç sonuc EditBox’ına yazdırılacak. Eğer işlem kısmına doğru işlem girilmediyse geçersiz işlem uyarısı verilecek.
Daha önceden bahsettiğim gibi Troia da özelleşmiş butonlarımız vardı. Butonumuzun boyutunu 28*28 durumuna getirip OK yazarsak aşağıdaki özelleşmiş buton kendisi oluşacaktır.
OBJECT:
INTEGER S1,
INTEGER S2,
STRING ISLEM1,
STRING MSSG,
INTEGER S3;
S1=SAYI1;
S2=SAYI2;
ISLEM1=ISLEM;
IF ISLEM1 == '+' THEN
S3=S1+S2;
SONUC=S3;
ELSE
IF ISLEM1 == '-' THEN
S3=S1-S2;
SONUC=S3;
ELSE
IF ISLEM1 == '*' THEN
S3=S1*S2;
SONUC=S3;
ELSE
IF ISLEM1 == '/' THEN
S3=S1/S2;
SONUC=S3;
ELSE
MSSG='Geçersiz İşlem';
SONUC=MSSG;
ENDIF;
ENDIF;
ENDIF;
ENDIF;
SHUTDOWN;
OK Click üzerinde durmamız gerekiyor.
Bir olayın 2’den fazla oluşabilecek durumu varsa İç içe if kullanmak gerekir. Çünkü farklı dillerde gördüğümüz elseif, ifelse gibi 2’den fazla durumu karşılaştırabilecek bir yapı Troia’da yoktur.
İç içe if kullanmanın yöntemi şudur.
IF DEĞER THEN
KODLAR
Else
IF DEĞER THEN
KODLAR
ELSE
IF DEĞER THEN
KODLAR
ELSE
KODLAR;
ENDIF;
ENDIF;
ENDIF;
Her IF bir ENDIF komutuyla bitmek zorundadır.
Kısaca birde kodları açıklayalım.
ISLEM2 den değer + gelirse yapacağı işlem belli. Eğer farklı gelirse bunu ELSE komutuyla yakalıyoruz o ELSE içinde yeni bir IF komutu ile gelen değer – mi sorusunu soruyoruz eğer böyle ise kendi ENDIF komutunu bulup çalışmayı durduracaktır. Bu şekilde değilse Çarpma, o da değilse Bölme işlemi yapılacaktır. Eğer tüm aramalar sonucunda istediğimiz değeri bulamadıysak en sondaki ELSE komutu gerçekleşecektir.
Bu kodlamamızda yoktu ama değinmemiz gereken bir kaç durum daha var bu yapıyla alakalı.
Eğer bir IF yapısı içinde birden fazla durumun kontrolü sağlanıp bunun sonucuna göre işlem yapılması gerekiyorsa şu şekilde yapılabilir.,
1. Eğer şartlar VE bağlacı ile bağlanmışsa
IF SORGU IFADESİ1 && SORGU İFADESİ2 && SORGU İFADESİ3 THEN
KODLAR;
ENDIF;
2. Eğer şartlar VEYA bağlacı ile bağlanması gerekiyorsa
IF SORGU IFADESİ1 || SORGU İFADESİ2 || SORGU İFADESİ3 THEN
KODLAR;
ENDIF;
3. Değerlerin eşit olmaması gibi bir durum aranıyorsa
IF Değer1 != Değer2 THEN
KODLAR;
ENDIF;
!= ifadesi eşit değil anlamını taşır.
4. İki değerin bir birinden büyüklüğü ya da eşitliği kontrol ediliyorsa
IF Değer1 >= Değer2 THEN
KODLAR;
ENDIF;
5. Küçüklüğü yada eşitliği kontrol ediliyorsa
IF Değer1 <= Değer2 THEN
KODLAR;
ENDIF;
Proje Ekranları
IF ELSE karar yapısı Troia’da bu şekildeydi.
Bir sonraki yazımda görüşmek üzere.