Q Basic ' de Kontrol Blogları

35 views
Skip to first unread message

yunuse...@gmail.com

unread,
Nov 11, 2008, 4:47:12 PM11/11/08
to myo-programlama
Kontrol blokları
Programlama dillerinde döngüler ve akış kontrol komutları çok sık
kullanılır. Programları program yapan esas kısımlar bu komutlarla
sağlanır. Qbasicde diğer programlama dillerindekine benzer yapıda
döngüler ve mantıksal karşılaştırmalar yapılabilir.

IF ... THEN ... ELSE
Mantıksal karşılaştırma için kullanılır. Karşılaştırma işlemin
sonucunda bir değer döner bu değer ya mantıksal DOĞRU dur ya da
mantıksal YANLIŞ. Lise 1 deyken matematik dersinde 1 ve 0 lar ile,
doğru ve yanlışlar ile işlemler yapardık. Birçok kişide ne işe yarıyor
bunlar diye söylenip dururlardı. Demek ki bir gerekliliği varmış. İşte
onlar burada gerekecek, isterseniz MANTIK ile ilgili kısımları bir
daha gözden geçirin. :)

Mantıksal karşılaştırma için basit bir örnek:

IF A = 40 THEN B = 40
Burada A değişkenin değeri 40 ise B nin değeri de 40 olacaktır. Eğer A
nın değeri 40 dan farklı ise bu satırın hiçbir etkisi olmayacaktır.

Bir başka kullanımı:

A = 25
IF A > 40 THEN M$ ="Sayı 40 dan büyük" ELSE M$= "Sayı 40 dan küçük"
PRINT M$
Üstte A değişkeninin değerinin 40 dan büyük olup olmadığı kontrol
ediliyor. Mantıksal karşılaştırmanın sonucunda ancak iki değer
dönebilir. DOĞRU veya YANLIŞ. Doğru olması durumunda THEN den sonraki
işlem yapılır, YANLIŞ olması durumunda ise ELSE den sonraki işlem. A
ya 25 aktardığımız için A>40 mantıksal karşılaştırmanın sonucu YANLIŞ
olacaktır. Çünkü 25, 40dan büyük değil. Bu durumda M$ a "Sayı 40 dan
küçük" değeri aktarılır.

DÜŞÜN: Üstteki programı denedikten sonra A = 40 olsaydı sonuç ne
olurdu? diye düşünüp cevabı bulmaya çalışın. Sonra Qbasicde deneyerek
düşündüğünüzü kontrol edin.

IF A = 40 .... ' A , 40 a eşit mi?
IF A > 40 .... ' A , 40 dan büyük mü?
IF A < 40 .... ' A , 40 dan küçük mü?
IF A <> 40 .... ' A , 40 a eşit değilse
IF A <= 40 .... ' A , 40 a eşit ya da 40 dan küçük mü?
IF A >= 40 .... ' A , 40 a eşit ya da 40 dan büyük mü?
IF A ' A nın değeri 0 dan farklı mı?
IF NOT A ' A nın değili DOĞRU mu?
IF ile karşılaştırma yaptığımızda dönen değerlere göre çok sayıda
komut yürüteceksek aşağıdaki yapıyı kullanırız. Bu şekilde kullanımda
karşılaştırma bloğunu bitiren END IF kullanmak zorundayız.

IF A > 40 THEN
'doğruysa yapılacaklar
....
....
ELSE
'Yanlışsa yapılacaklar
....
....
END IF
Örnek :

INPUT "ADINIZ " ; AD$
IF AD$ = "MESUT" THEN
PRINT "SİZİN ADINIZ MESUT"
ELSE
PRINT "SİZİN ADINIZ MESUT DEĞİL"
END IF
İç içe IF.
INPUT A
IF A > 40 THEN
IF A < 60 THEN
PRINT "SAYI 40 ile 60 arasında"
ELSE
PRINT "SAYI 60 yada 60dan büyük"
END IF
ELSE
IF A = 40 THEN
PRINT "SAYI 40a eşit"
ELSE
PRINT "SAYI 40dan küçük"
END IF
END IF
Mantıksal karşılaştırmalar
Şimdiye kadar bir satırda bir değişkeni karşılaştırdık. Bazen birkaç
değişkenin karşılaştırılıp sonucunun alınması gerekebilir.

INPUT A
IF A>10 AND A<20 THEN PRINT "SAYI 10 ile 20 arasında"
INPUT A
IF A<10 OR A>50 THEN PRINT "SAYI 10 ile 50 arasında değil"
' yani sayı 10 dan küçük ya da 50 den büyük
Mantıksal karşılaştırmalarda kullanılacak terimler: AND , OR , XOR ,
EQV, IMP, NOT

Değer Mantıksal karşılaştırma ve sonucu
X Y NOT
X X
AND
Y X
OR
Y X
XOR
Y X
EQV
Y X
IMP
Y
1 1 0 1 1 0 1 1
1 0 0 0 1 1 0 0
0 1 1 0 1 1 0 1
0 0 1 0 0 0 1 1

1 -> Mantıksal Doğru
0 -> Mantıksal Yanlış
Bu terimlerden faydalanarak bitsel karşılaştırma da yapılabilir.
PRINT (155 AND 160)
yazdığımızda 128 sonucunu alırız. Çünkü 155 in 2 li sayı düzenindeki
karşılığı 10011011, 160 ınki ise 10100000. İkisini alt alta yazıp
bitlerini AND ile karşılaştırdığımızda

10011011
10100000
--------
10000000
çıkar. O da 128 e eşittir. Desimal sayıları 2 li sayıya çevirmek için
Hesap makinasını Bilimsel görünüme getirerek kullanabilirsiniz.. Dec =
Decimal(10 lu sayı), Bin = Binary (2 li sayı), Hex = Hexadecimal (16
lı sayı)

ELSEIF, SELECT CASE
IF in bir başka kullanımı

INPUT "1 ile 3 arasında sayı girin " ; A
IF A = 1 THEN
PRINT "SAYI = 1"
ELSEIF A = 2 THEN
PRINT "SAYI = 2"
ELSEIF A = 3 THEN
PRINT "SAYI = 3"
ELSE
PRINT "HATALI SAYI"
END IF
Bunun yerine buna benzer yapıya sahip anlaşılırlığı ve kodlaması kolay
olan SELECT CASE yapısı kullanılır.

INPUT "1 ile 3 arasında sayı girin " ; A
SELECT CASE A
CASE 1
PRINT "SAYI = 1"
CASE 2
PRINT "SAYI = 2"
CASE 3
PRINT "SAYI = 3"
CASE ELSE
PRINT "HATALI SAYI"
END SELECT
Reply all
Reply to author
Forward
0 new messages