Yayınlama: 2000
Güncelleme: 15 Şubat 2021
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.
QuickBasic'te 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 Mantık konusunda 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 matematikteki MANTIK ile ilgili kısımları bir daha gözden geçirin. :)
Örnek 1:
IF A = 40 THEN B = 40A değişkenin değeri 40 ise B değişkeninin 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. B=40 işletilmeyecektir.
Örnek 2:
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 yapılır.A 'ya 25 aktardığımız için A>40 mantıksal karşılaştırmanın sonucu YANLIŞ olacaktır.
Çünkü 25, 40 'dan büyük değil.
Bu durumda M$ değişkenine "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 QuickBasic'te deneyerek cevabınızı kontrol edin.
Karşılaştırma operatörleri
Değişkenleri veya değerleri kıyaslama ile karşılaştırma yapmak için
kullanılacak operatörler:
Operatör | İşlem | Örnek |
---|---|---|
= | Eşit | X = Y |
<> | Eşit değil | X <> Y |
< | Küçüktür | X < Y |
> | Büyüktür | X > Y |
<= | Küçük ya da eşit | X <= Y |
>= | Büyük ya da eşit | X <= Y |
Örnekler:
Bu şekildeki kullanımda karşılaştırma bloğunu bitiren END IF kullanılmak zorundadır.
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?
Karakter karşılaştırma
IF "A" < "C" THEN PRINT "Doğru" ELSE PRINT "Yanlış"
Bu şekilde string değerler de kıyaslanabilir. Kıyaslamada değer olarak
karakterin ASCII karşılığı dikkate alınır.
ASCII tablosunda A karakterinin değeri 65,
C karakterinin değeri 67 olduğundan sonuç
Doğru çıkacaktır.
IF "a" < "A" THEN PRINT "Doğru" ELSE PRINT "Yanlış"
Sonuç Yanlış çıkacaktır. Çünkü a karakterinin değeri
97'dir
END IF
IF ile mantıksal karşılaştırma yapıldığında dönen değere göre çok
satırdan oluşan komutlar yürütülecekse aşağıdaki yapı kullanılır.
Bu şekildeki kullanımda karşılaştırma bloğunu bitiren END IF kullanılmak zorundadır.
IF A > 40 THEN 'doğruysa yapılacaklar .... .... ELSE 'Yanlışsa yapılacaklar .... .... END IF
Örnek 2'de tek satırda girilen kod aşağıdaki gibi yazılabilir.
Kodların yaptığı iş aynı olacaktır.
A = 25 IF A > 40 THEN M$ ="Sayı 40 dan büyük" ELSE M$= "Sayı 40 dan küçük" END IF PRINT M$Örnek 3:
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
IF bloğu içerisine tekrar bir başka IF bloğu oluşturabilirsiniz. Büyük
programlarda bu tür kodlamalarla sık karşılaşılır.
İç içe IF'lerin blokları birbirini kesmemelidir. Üst-ast hiyerarşisinde
olmalı.
INPUT A IF A > 40 THEN IF A < 60 THEN PRINT "SAYI 40 ile 60 arasında" ELSE PRINT "SAYI 60 ya da 60 dan büyük" END IF ELSE IF A = 40 THEN PRINT "SAYI 40 a eşit" ELSE PRINT "SAYI 40 dan küçük" END IF END IF
Mantıksal(logical) operatörler
Şimdiye kadar bir IF ile bir karşılaştırma yaptık. Bazen bir IF ile birden çok karşılaştırma yapılıp sonucunun alınması gerekebilir. Bu durumda karşılaştırma için mantıksal operatörler kullanılır.
Örnek:
AND : Ve
OR : Veya
XOR : Eşit değilse (EQV tersi) Dışlayıcı veya
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ükMantıksal karşılaştırmalarda kullanılacak terimler:
AND : Ve
OR : Veya
XOR : Eşit değilse (EQV tersi) Dışlayıcı veya
EQV : Eşitse (XOR tersi)
IMP : İse
NOT : Tersi
1 : Mantıksal Doğru
0 : Mantıksal Yanlış
Bu terimlerden faydalanarak değişken veya verilerin bit değerleri karşılaştırılabilir.
IMP : İse
NOT : Tersi
Değer | Mantıksal karşılaştırma ve sonucu | ||||||
A | B | NOT A | A AND B | A OR B | A XOR B | A EQV B | A IMP B |
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 |
0 : Mantıksal Yanlış
Bu terimlerden faydalanarak değişken veya verilerin bit değerleri karşılaştırılabilir.
Bit değerleri ile karşılaştırma
Bit: İkili sayı anlamına gelen binary digit kelimelerinin
kısaltmasıdır. Programlama ve haberleşmede, bir bit bilgi depolama ve
haberleşme veya bağlantının en küçük ve temel birimidir.
8 bit = 1 Byte(bayt)'dır. 1024 Byte = 1 KByte.
8 bit = 1 Byte(bayt)'dır. 1024 Byte = 1 KByte.
QuickBasic'te sayı veya değişken değerlerinin bit değerleriyle karşılaştırma
yapılabilir.
PRINT (155 AND 160)yazıp çalıştırdığımızda 128 sonucunu alırız.
Çünkü;
155 in 2'li sayı düzenindeki karşılığı(bit değeri) 10011011,
160'ınki ise 10100000.
İkisini alt alta yazıp bitlerini AND ile karşılaştırdığımızda
10011011 (155) 10100000 (160) -----AND------ 10000000 (128)değeri elde edilir.
Desimal(10'luk) sayıları 2'lik sayıya çevirmek için Hesap makinesini Programlayıcı görünüme getirerek kullanabilirsiniz.
Dec = Decimal(10'luk sayı),
Bin = Binary (2'lik sayı),
Hex = Hexadecimal (16'lık sayı)
Oct = Octal (8'lik sayı)
ELSEIF
IF THEN ELSE yapısında bir mantıksal sınama sonucunda oluşan DOĞRU ya
da YANLIŞ durumuna göre değerlendirme yapılıyor.
Bazen birden fazla sınama yapmak gerekli olabilir. İlk sınamada sonuç YANLIŞ
olursa ELSEIF ile tekrar sınama o da YANLIŞ olursa tekrar başka ELSEIF
sınamaları yapılabilir. Hiçbir sonuç DOĞRU olmazsa ELSE işletilir. Aşağıdaki
örnek gibi.
Örnek 1:
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
SELECT CASE
Üstteki kodların yerine ELSEIF 'e benzer yapıya sahip ancak anlaşılırlığı ve kodlaması kolay olan SELECT CASE yapısı kullanılır.Örnek 1: Üstteki ELSEIF örneğinin SELECT CASE uyarlaması
INPUT "1 ile 3 arasında bir sayı girin "; A% SELECT CASE A% CASE 1 'A% değeri 1 ise PRINT "SAYI = 1" CASE 2 'A% değeri 2 ise PRINT "SAYI = 2" CASE 3 'A% değeri 3 ise PRINT "SAYI = 3" CASE ELSE 'A% değeri 1-3 den başka ise PRINT "HATALI SAYI" END SELECTCASE ile SELECT CASE deki değer karşılaştırılır.
Örnekler:
SELECT CASE A
CASE 1,2,5
Birden fazla değer karşılaştırılmıştır. A değişken değeri 1, 2, 5 değerlerinin biri olması durumunda geçerlidir.
CASE 6 TO 10
A değişken değeri 6 ile 10 arasındaki değerlerden biri ise.
CASE IS >10
A, 10'dan büyük sayılardan biri ise.
Birden fazla değer karşılaştırılmıştır. A değişken değeri 1, 2, 5 değerlerinin biri olması durumunda geçerlidir.
CASE 6 TO 10
A değişken değeri 6 ile 10 arasındaki değerlerden biri ise.
CASE IS >10
A, 10'dan büyük sayılardan biri ise.
Karşılaştırma operatörleri olarak;
< (küçüktür)
> (büyüktür)
<= (küçük eşittir)
>= (büyük eşittir)
<> (eşit değildir)
= (eşittir)
kullanılabilir.
Üstteki örnekler tek satırda karışık olarak da kullanılabilir
CASE 1 TO 4, 7 TO 9, 11, 13, IS >20
CASE ELSE
CASE karşılaştırmalarında hiçbir şart uymazsa.
Örnek 1:
' Fonksiyon ve kontrol tuş değerleri CONST ESC = 27, DOWN = 80, UP = 72, LEFT = 75, RIGHT = 77 CONST HOME = 71, ENDKEY = 79, PGDN = 81, PGUP = 73 DO Tus$ = INKEY$ g = LEN(Tus$) IF g = 1 THEN ' ASCII tuşlar SELECT CASE ASC(Tus$) CASE ESC PRINT "Esc tuşu" END CASE IS < 32, 127 PRINT "Kontrol kodu" CASE 48 TO 57 PRINT "Rakam: "; Tus$ CASE 65 TO 90 PRINT "Büyük harf: "; Tus$ CASE 97 TO 122 PRINT "Küçük harf: "; Tus$ CASE ELSE PRINT "Diğer: "; Tus$ END SELECT ELSEIF g = 2 THEN ' 2-bayt değerli tuş kodlarını 1-bayt ASCII koduna dönüştür Tus$ = RIGHT$(Tus$, 1) SELECT CASE ASC(Tus$) CASE DOWN PRINT "Aşağı ok tuşu" CASE UP PRINT "Yukarı ok tuşu" CASE PGDN PRINT "PGDN tuşu" CASE PGUP PRINT "PGUP tuşu" CASE HOME PRINT "HOME tuşu" CASE ENDKEY PRINT "END tuşu" CASE RIGHT PRINT "Sağ ok tuşu" CASE LEFT PRINT "Sol ok tuşu" CASE ELSE PRINT "Diğer" END SELECT END IF LOOP
Önceki Bölüm: 3: Değişkenlere veri aktarma | Sonraki Bölüm: 5: Döngüler |
Hiç yorum yok:
Yorum Gönder