5. KARAR VERME VE KOŞULLAR

Benzer belgeler
INPUTBOX KULLANIMI. Komut Düğmesine uygulanan algoritma örneği

BİLGİ GİRİŞ VE MESAJ PENCERELERİ. 1-Sadece kullanıcıya mesaj vermek için kullanılır.

ALGORİTMA VE PROGRAMLAMA I

7) Çoklu Formlar. Şekil7.1. Araç kutusundaki Add Form butonuna basarak projeye yeni bir form ekleyiniz.

Algoritmalar ve Programlama. Algoritma

BİLGİSAYAR BİLİMİ DERSİ (KUR 1) PYTHON PROGRAMLAMA DİLİ ÇALIŞMA KÂĞIDI - 1

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

PHP, nesne-yönelimli (object-oriented) bir dil olduğu için, nesne oluşturma imkânına ve bunların kullanılmasını sağlayan metodlara da sahiptir.

Bu uygulama, MSGBOX fonksiyonun ve Form nesnesinin QueryUnload olayının kullanımı ile ilgili bir uygulamadır.

HSancak Nesne Tabanlı Programlama I Ders Notları

BMÜ-111 ALGORİTMA VE PROGRAMLAMA AKIŞ KONTROLÜ YRD. DOÇ. DR. İLHAN AYDIN

Diziler İndisli Değişkenler

if (ad == "Sabri") Console.WriteLine("Merhaba Sabri. Ne zamandır gözükmüyodun...");

HSancak Nesne Tabanlı Programlama I Ders Notları

Mantıksal İşlemler. 7.1 true, false, nil

INPUTBOX() ile Veri Girişi

Genel Kullanılış 1: [değişken ismi] = [değişken ismi] [işlem] [sayı veya string ifade veya değişken]

Her Select Case bloğu, mutlaka End Select ile bitmek zorundadır.

FORMÜLLER VE FONKSİYONLAR

AOSB 2017 EĞİTİM PROGRAMI

Yukardaki gibi sonsuz döngülü programlara Ctrl+Break tuş takımı ile müdahale edilmesi gerekir, aksi halde program sonsuz döngüye girer.

8) Listeleme, Döngüler Ve Yazdırma

6) Menüler, Alt Prosedürler ve Alt Fonksiyonlar

UYGULAMALAR. İkinci liste kutusu (List 2) Birinci liste Kutusu (List 1) Metin Kutusu

BÖLÜM 6: KARŞILAŞTIRMALI KONTROL YAPILARI

Bu dersimizde pic pinlerinin nasıl input yani giriş olarak ayarlandığını ve bu işlemin nerelerde kullanıldığını öğreneceğiz.

BÖLÜM 3 OPERAT A ÖRLER

Veritabanı. SQL (Structured Query Language)

Matematiksel Operatörler

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 2

C# Programlama Dili. İlk programımız Tür dönüşümü Yorum ekleme Operatörler

BTP 207 İNTERNET PROGRAMCILIĞI I. Ders 8

TEMEL BİLGİSAYAR BİLİMLERİ

Veri Yapıları ve Algoritmalar

BİLGİSAYAR PROGRAMLAMA

BİLİŞİM TEKNOLOJİLERİ 6. SINIF DERS NOTLARI 2

TEMEL STRING İŞLEMLERİ

Uygulama 1) Aşağıdaki genel (global) değişken tanımlamalarını VB üzerinde yapınız. Süre 10 dak.

İÇİNDEKİLER BİRİNCİ BÖLÜM BİLGİSAYARDA BELGE AÇMAK VE TEMEL İŞLEMLER YAPMAK

Problem Yaklaşım Temelleri, Algoritma ve Akış Şeması

10 LU SAYISAL SİSTEMİ İLE 2 Lİ SAYISAL SİSTEMİ ARASINDA ÇEVİRİM UYGULAMASI



Değişkenler. Geçerli değişken isimleri : baslamazamani, ad_soyad, x5 Geçersiz değişken isimleri : 3x, while

PROGRAMLAMAYA GİRİŞ. Öğr. Gör. Ayhan KOÇ. Kaynak: Algoritma Geliştirme ve Programlamaya Giriş, Dr. Fahri VATANSEVER, Seçkin Yay.

VISUAL BASIC DE İŞLETİM SİSTEMİ DENETİM KOMUTLARI VE FONKSİYONLARI

C# Yazım Kuralları ERCİYES. Ü. BİLGİSAYAR M. COMPUTER PROGRAMMING II 1 FEHİM KÖYLÜ

HSancak Nesne Tabanlı Programlama I Ders Notları

BASİT C PROGRAMLARI Öğr.Gör.Dr. Mahmut YALÇIN

Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

4- DEĞİŞKENLER, SABİTLER VE HESAPLAMALAR

Uygulamalar 4 IsMissing Fonksiyonlar ve Alt Programlar Prosedür Parametreleri Public Function f(x,y,optional t, Optional k) End Function 1.

=~ Metodu 92 Karakter Sınıfları 94 sub ve gsub metotları 101 Hızlı Tekrar 102 Kontrol Noktası 103 Düello 106 Sonraki Bölümde 109

Üst düzey dillerden biri ile yazılmış olan bir programı, makine diline çeviren programa derleyici denir. C++ da böyle bir derleyicidir.

Fen ve Mühendislik Uygulamaları ile MATLAB

Window Script Host. Message Box Kullanımı. Pupup(Acilir)Message Kullanımı. Arslan ACAR

5. HAFTA KBT204 İNTERNET PROGRAMCILIĞI II. Öğr.Gör. Hakan YILMAZ.

BTP 207 İNTERNET PROGRAMCILIĞI I. Ders 9

Algoritma ve Programlamaya Giriş

Oracle Database 11g: Introduction to SQL

Algoritma ve Programlama: Karar Yapıları ve Döngüler

Veri Tabanı Tasarım ve Yönetimi

Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

NB Macro Kullanımı Hakkında Genel Bilgiler

OPTION BUTTON ve ELSEIF UYGULAMALARI

Excel Formüller ve Fonksiyonlar. Yusuf MANSUROĞLU Mühendislik Hizmetleri Müdür Yardımcısı

Karakter Değişkenlere İlişkin Komutlar

Nesne Yönelimli Programlama

BİLGİSAYAR MÜHENDİSLİĞİ ALGORİTMA VE PROGRAMLAMA II 2.HAFTA SWİTCH (CASE), SAYAÇLAR, DÖNGÜLER,

Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

4- Turbo Pascal Bilgisayar Programlamada Kullanılan Şart Yapıları

Web sayfalarında yapılan her çalışma ve düzenleme tablolar aracılığı ile yapılır. Dolayısıyla çoğu web sayfalarında tablo kullanmak zorunluluktur.

Java 2 Standart Edition SDK Kurulum ve Java ya Giriş

Metin İşlemleri, Semboller

Programlama Dili Prensipleri. Lab Notları 4

Nesne Yönelimli Programlama

DAO İLE SQL KOMUTLARI. Sql komutlarını artık veri tabanında kullanmaktan başka çaremiz yok arkadaşlar. Şimdi bu sql derslerimize başlayalım.

BMT 101 Algoritma ve Programlama I 3. Hafta. Yük. Müh. Köksal GÜNDOĞDU 1

Android Ders Notları

Bölüm 7. İfadeler ve atamalar ISBN

-A Grubu- MKT103 Görsel Programlama 2015/2016 Güz Dönemi Final Sınavı

Dr. Fatih AY Tel: fatihay@fatihay.net

Daha önce bu işlemin iki tane dosya oluşturduğunu gördük. GecDenTest.aspx dosyasının source kısmında içeriğini inceleyecek olursanız en başta


BMT 101 Algoritma ve Programlama I 7. Hafta. Yük. Müh. Köksal Gündoğdu 1

HESAP MAKİNASI YAPIMI

BİLGİSAYAR TEMELLERİ VE PROGRAMLAMAYA GİRİŞ

Akış Kontrol Mekanizmaları

ALGORİTMA TASARIMI VE SCRATCH UYGULAMASI

HASTA ORDER İŞLEMLERİ

Java String İşlemleri

Dinamik Kodlama. [X] [X] Yeni Fonksiyon

PROGRAMLAMA DİLLERİ I

Yeni bir proje açarken File New - Web Site diyoruz. Gelen ekranda Visual Basic veya C# seçilebilir. Biz ders kapsamında C# programlama dilini seçtik.

ÜNİT E ÜNİTE KONTROL DEYİMLERİ KARAR YAPILARI. IF Deyimi GİRİŞ

BİLGİSAYAR PROGRAMLAMA DERSİ

Programlama Giriş. 17 Ekim 2015 Cumartesi Yrd. Doç. Dr. Mustafa YANARTAŞ 1

ÖĞRENME FAALİYETİ 1 ÖĞRENME FAALİYETİ 1 1. FORMLAR

İnternet Programcılığı Dersi 2.Dönem Ders Notu

Transkript:

5. KARAR VERME VE KOŞULLAR Bu bölümde bir koşula bağlı olarak bir eylem yerine getirebilecek projeler yazmayı öğreneceksiniz. Örneğin farklı departmanların, farklı işçi sınıflarının satışlarının takibini ayrı olarak izlemek isteyebilirsiniz. Kullanıcı tarafından girilen değerin geçerli olduğundan emin olmak ve uygun olmayan değerler için bir hata mesajı göstermek isteyebilirsiniz. İf İfadeleri Bilgisayarın en güçlü olduğu yanlardan biri karar verme yeteneği ve çıktıya dayalı olarak alternatif eylemleri yerine getirmesidir. Bilgisayar tarafından alınan karar bir soru olarak şekillenmiştir: Verilen koşul doğru veya yanlış mıdır? Eğer koşul doğruysa bir şey yap koşul doğru değilse farklı bir şey yap. If the sun is shining Then go to the beach go to class (koşul) (koşul doğruysa yerine getirilecek eylem) (koşul doğru değilse yerine getirilecek eylem) (Şekil 5.1 e bakınız) False Sun is shining? Go to class Go to class Şekil.5.1 Akış şeması üzerinde bir If... Then... ifadesinin mantığı V. Hafta / 1

If... Then... İfadesi Genel Formu If (koşul) Then İfadeler [If (koşul) İfadeler] [ İfadeler Then If Then... bloğu her zaman End if. Then kelimesi if satırıyla aynı satırda gözükmeli ve then kelimesinden sonra açıklama dışında hiçbir şey bulunmamalıdır. ve ifadeleri bir satırda tek başına görünmelidir. Then ve cümleciklerinin altındaki ifadeler okunabilirlik ve açıklık amacıyla paragraf başı yapılır. If anahtar kelimesi tek bir kelime fakat anahtar kelimesinin iki kelimeden oluştuğuna dikkat ediniz. If... Then... İfadesi Örnekler curbirim içerisindeki birimlerin sayısı 32 den az ise acemi seçim butonu seçili olarak ayarlansın diğer durumda ise seçim butonunun seçili olmadığından emin olunuz. (Şekil 5.2.) Bir seçim butonu seçili ise Value özelliğinin değerine sahip olduğunu hatırlayınız. curbirim = Val (txtbirim.text) If curbirim < 32 Then optacemi.value = optacemi.value = False End if Doğru Birim <32 Yanlış Acemi seçim tuşu kapalı Acemi seçim tuşu açık Şekil5.2. Akış şeması formunda if mantık ifadesinin gösterimi. V. Hafta / 2

If ifadesinin Akış Şeması Akış şeması bir If ifadesinin mantığını göstermek üzere oldukça yararlı bir araçtır. Tek bir resimin binlerce kelimeye eş değer olduğu söylenmiştir. Çoğu programcı akış şemalarını düşüncelerini organize etmekte ve projelerini daha çabuk tasarlamada yararlı bulurlar. Burada kullanılan semboller sadece var olan akış şeması sembollerinin birkaç tanesidir. Elmas şeklindeki sembol ( karar sembolü olarak adlandırılır) bir koşulu temsil etmektedir. Sembolün kolları koşul doğru veya yanlış olduğunda hangi yolun izleneceğini gösterir. ( Şekil 5.3) Koşullar If ifadesinin test edilmesi bir koşula (condition) dayanmaktadır. Koşullara form verm eye yarayan altı tane ilişkisel operatör (relational operators) vardır. (Tablo 5.1) Karşılaştırmanın sonucu veya False değerlerinden biridir. Yanlış Karar Doğru Süreç Süreç Şekil5.3. Program kararlarında ve sürecinde kullanılan akış şeması sembolleri Sembol Test Edilen İlişki Örnekler > büyüktür Val(txtTutar.Text) > mcurlimit frmana.height > mcurbüyüklük < küçüktür Val(txtSatışlar.Text) < 1000 txtad.text < strname = eşittir txtşifre.text = 101 opttuşu1.value = <> eşit değildir opttuşu1.value <> >= büyük ve eşittir Val(lblDoğru.Caption) >= 1000 frmana.height >= 500 <= küçük ve eşittir txtad1.text <= txtad2.text Tablo5.1. Altı ilişkisel operatör V. Hafta / 3

Test edilen koşullar sayısal değişkenler ve sabitler, string değişkenler ve sabitler, nesne özellikleri ve aritmetik ifadeler olabilir. Bununla birlikte karşılaştırmalar aynı tipler üzerinde olmalıdır; yani string karakterler diğer string karakterlerle karşılaştırılmalıdır ve sayısal değerler ise diğer sayısal değerlerle karşılaştırılmalıdır. Sayısal Değişkenlerin ve Sabitlerin Karşılaştırılması Sayısal değerler ele alındığında cebirsel bir karşılaştırma yapılır; yani sayıların işareti dikkate alınır. Böylece eksi 20 değeri 10 dan daha küçük ve eksi 2 değeri eksi 1 den daha küçük olacaktır. Eşittir işareti (=) atama ifadelerinde yer değiştirme anlamına gelse de ilişkisel bir incelemede eşitliği test etmek için kullanılır. Örneğin; If Val (txtfiyat.text) = curmaksimum Then txtfiyat.text de saklanan o anki sayısal değer curmaksimum da saklanan değere eşit midir? anlamına gelmektedir. Örnek Karşılaştırmalar intali intbaşak intcemil 5 4-5 Koşul Geri Dönen Değer intali= intbaşak False intcemil < 0 intbaşak > intali False intcemil <= intbaşak intali >= 5 intali <> intcemil Stringlerin Karşılaştırılması String değişkenler diğer string değişkenleri ile veya tırnak işareti ile çevrelenmiş string ifadeleriyle karşılaştırılabilir. Karşılaştırma en soldaki karakterle başlar ve soldan sağa doğru bir karakter ilerleyerek devam eder. Birinci string deki bir karakter ikinci string deki ilgili karaktere eşit olmadığında karşılaştırma sona erer ve daha alt sıradaki karaktere sahip olan string diğerinden daha düşük olduğuna karar verilir. Hangi karakterin diğerinden daha düşük seviyede olduğunun belirlenmesine bilgisayarda karakterlerin içsel olarak saklanması için kullanılan koda dayanılarak karar verilmektedir. ANSI kod (American National Standards Institute) olarak adlandırılan kod tüm harfleri, sayıları ve özel karakterleri kapsayacak biçimde kurulmuş bir sıralamaya sahiptir. Tablo4.2 de A harfi B den küçük, L harfi K dan büyük ve tüm sayısal değerler bütün harflerden küçüktür. Bazı özel karakterler sayılardan küçük bazıları ise büyüktür ve boşluk (space) gösterilmiş olan geriye kalan tüm karakterlerden küçüktür. V. Hafta / 4

Tablo5.2 ANSI karşılaştırma sırası ANSI Karakter ANSI Karakter ANSI Karakter Kod 32 Space Kod 64 @ Kod 96 33! 65 A 97 a 34 66 B 98 b 35 # 67 C 99 c 36 $ 68 D 100 d 37 % 69 E 101 e 38 & 70 F 102 f 39 71 G 103 g 40 ( 72 H 104 h 41 ) 73 I 105 i 42 * 74 J 106 j 43 + 75 K 107 k 44, 76 L 108 l 45-77 M 109 m 46. 78 N 110 n 47 / 79 O 111 o 48 0 80 P 112 p 49 1 81 Q 113 q 50 2 82 R 114 r 51 3 83 S 115 s 52 4 84 T 116 t 53 5 85 U 117 u 54 6 86 V 118 v 55 7 87 W 119 w 56 8 88 X 120 x 57 9 89 Y 121 y 58 : 90 Z 122 z 59 ; 91 [ 123 { 60 < 92 \ 124 61 = 93 ] 125 } 62 > 94 ^ 126 ~ 63? 95 _ 127 Del txtisim1.text JOHN txtisim2.text JOAN txti sim1.text < txtisim2.text koş ulu False değerini sonuç olarak verir. JOAN daki A, JOHN daki H harfinden daha küçük sıralamaya sahiptir. V. Hafta / 5

txtsözcük1.text txtsözcük2.text HOPE HOPELESS txtsözcük1.text < txtsözcük2.text koşulu değerini sonuç olarak verir. Bir string diğerinden daha kısa olduğunda sanki kısa ola n string ifadesinin sağında boşluk ile devam edilmiş gibi, boşluk ifadesi uzun stringde karşılık gelen karakter ile karşılaştırılır. lblaraba1.caption 300ZX lblaraba2.caption Porsche lblaraba1.caption < lblaraba2.caption koşulu değerini sonuç olarak verir. 3 sayısı P harfi ile karşılaştırıldığında tüm sayılar harflerden daha küçük sıralamaya sahip olduğundan 3 daha küçüktür. Büyük Ve Küçük Karakterlerin Karşılaştırılması Stringleri karşılaştırırken karakterlerin durumu önemlidir. Y büyük karakteri y küçük karakterine eşit değildir. Kullanıcı bir ismi veya kelimeyi büyük/küçük harfle girebileceğinden veya bu ikisinin kombinasyonu şeklinde olabileceğinden biz bütün durumları kontrol etmek isteriz. En iyi yol UCase ve LCase string fonksiyonlarını kullanarak bir stringin sırası yla büyük ve küçük eş değerini elde edilmesidir. UCase ve LCase Genel Form UCase (string) LCase (string) UCase ve LCase Örnekler txtbir.text Value UCase(txtBir.Text) LCase(txtBir.Text) Basic BASIC basic PROGRAMLAMA PROGRAMLAMA programlama Vahap Tecim VAHAP TECİM vahap tecim merhaba MERHABA merhaba UCase fonksiyonu kullanılarak bir koşul örneği aşağıdaki gibidir. If UCase(txtBir.Text) = BASIC Then Birşeyleri yap Birleşik Koşullar Birleşik Koşulları birden fazla koşulu test etmek için kullanabilirsiniz. Mantıksal Operatörler (logical operators) ile birlikte koşullar birleştirilerek birleşik koşul yaratabilirsiniz. Mantıksal operatörler Or, And ve Not dır. V. Hafta / 6

Mantıksal Anlamı Operatör Or Eğer bir koşul veya iki koşulda doğruysa tüm koşul doğrudur. And Tüm koşulun doğru olması için iki koşulunda doğru olması gereklidir. Not Koşulu tersine çevirir böylece bir koşulu yanlış ise değerlendirmeye alacaktır. Örnek lblsayı.caption = 1 Or lblsayı.caption =2 txtsayı.text > 0 And txtsayı.text < 10 Not lblsayı.caption = 0 If opterkek.value = And Val(txtYaş.Text) < 21 Then minterkekçocuğusayısı = minterkekçoc uğusayısı + 1 If optgenç.value = Or optyaşlı.value = Then mintergensayısı = mintergensayısı + 1 İlk örnek sayma işleminde artma sağlanması için seçim butonu ve yaş testinin ikisinin de doğru olmasını gerektirmektedir. İkinci örnekte sadece koşullardan birinin doğru olması gerekmektedir. Birleşik koşulları kullanırken dikkat edilmesi gereken mantıksal operatörün her iki yanında da koşulun tam olarak bulunmasıdır. Örneğin; If optgenç.value Or optyaşlı.value = Then ifadesi yanlıştır. And ve Or Operatörlerinin Birleştirilmesi Çok sayıdaki And ve Or koşullarını birleştiren birleşik koşullar yaratabilirsiniz. And ve Or operatörlerinin her ikisine de sahip olduğunuzda And operatörü Or operatöründen önce değerlendirilir. Bununla beraber parantezler kullanarak değerlendirilme sırasını değiştire bilirsiniz ; parantez içerisindeki herhangi bir koşul önce değerlendirilecektir. Örneğin aşağıdaki koşul veya False olarak mı değerlendirilecektir? cursatış, optindirim ve txteyalet değişkenlerinin çeşitli değerleri için bunları sınayınız. If cursatış > 1000 Or optindirim.value = And UCase (txteyalet.text) <> CA Then (İndirimi hesaplayınız) V. Hafta / 7

cursatış optindirim.value UCase(txtEyalet.Text) Koşulun Değerlendirilmesi 1500 False CA 1000 OH 1000 CA False 1500 NY 1000 False CA False Yuvalanmış If İfadeleri Çoğu programda öteki If ifadesi bir koşul doğru veya yanlış olduğunda yürütülen ifadelerden biridir. Ek If ifadelerini içeren If ifadesine yuvalanmış If (nested If) ifadeleri denilmektedir. Aşağıdaki örnek birinci If ifadesinin Then kısmından sonra ortaya çıkan ikinci If ifadesini gösteren yuvalanmış If ifadesi örneğidir. (Şekil 5.4) False intisı>7 > 7 lblkarar.caption = Dondurucu False intisı>30 lblkarar.caption = Ilık lblkarar.caption = Sıcak Şekil 5.4 Yuvalanmış If ifadesinin akış şeması If intisı > 7 Then If intisı > 30 Then lblkarar.caption = Hot lblkarar.caption = Ilık lblkarar.caption = Dondurucu V. Hafta / 8

kısmında If ifadesini yuvalamak amacıyla aşağıdaki yaklaşımlardan birini kullanabilirsiniz; bununla birlikte ikinci metodu kullanırsanız kodunuz daha basit olacaktır. (If... Then kullanılmasıyla). If intisı <= 7 Then lblkarar.caption = Dondurucu If intisı > 30 Then lblkarar.caption = Sıcak lblkarar.caption = Ilık If intisı <= 7 Then lblkarar.caption = Dondurucu If intisı > 30 Then lblkarar.caption = Sıcak lblkarar.caption = Ilık If ifadelerini Then ve lerin ikisinin de içerisine yuvalandırabilirsiniz. Aslında her If ve içerisi boyunca If leri yuvalandırmaya devam edebilirsiniz. Bununla birlikte If leri çok s ayıda yuvalandıkça projeleri takip etmek oldukça zorlaşır. opterkek.value False False txtyaş.text<21 txtyaş.text<21 False mintoğlansayısı değişkenine 1 ekle minterkeksayısı değişkenine 1 ekle mintkızsayısı değişkenine 1 ekle mintkadınsayısı değişkenine 1 ekle Şekil 5.5 Orijinal If ifadesinin her iki tarafında da yuvalanmış If ifadesi bulunan bir If deyimlerinin akış şeması V. Hafta / 9

If opterkek.value = Then If Val (txtyaş.text) < 21 Then mintoğlansayısı = mintoğlansayısı + 1 minterkeksayısı = minterkeksayısı + 1 If Val (txtyaş.text) < 21 Then mintkızsayısı = mintkızsayısı + 1 mintkadınsayısı = mintkadınsayısı + 1 EndIf If İfadelerinin Seçim Tuşları ve Onay Kutularıyla Birlikte Kullanılması 3. Ders haftasının notlarında seçim tuşları ve onay kutularının Click olayını istenilen eylemi yerine getirmek amacıyla kullanmıştınız. Şimdi ise artık If ifadelerini kullanabilirsiniz, böylece bu kontrollerin click olayında bir eylem meydana gelmez bunun yerine If ifadeleri hangi seçeneğin seçili olduğunu belirlemek için kullanılır. İyi programlama uygulamaları yerine getirmek ve programlarınızı standart Windows uygulamaları ile uyumlu yapmak için kodlarınızı komut tuşlarının Click olayı içerisine yerleştiriniz. Örneğin Visual Basic Print diyalog kutusunu inceleyiniz (Şekil 5.6); bir seçim tuşuna veya onay kutusuna basıldığında herhangi bir olay meydana gelmeyecektir. Bunun yerine Ok tuşuna bastığınızda VB hangi seçeneğin seçili olduğunu görmek amacıyla kontrol gerçekleştirir. Şekil 5.6. Visual Basic Print diyalog kutusu. Kullanıcı OK tuşuna bastığında program tüm seçim tuşlarının ve onay kutularının durumunu kontrol eder. Daha önce 3. kısımda yapmış olduğumuz mesaj formatlayıcısı projesinin Göster komut tuşundaki kodu aşağıdaki benzer kod ile modifiye edebiliriz: V. Hafta / 10

If optmavi.value = Then lblad.backcolor = vbblue if optyeşil.value = Then lblad.backcolor = vbgreen lblad.backcolor = vbblack If chkhızlıgemi.value = Checked Then curtoplam = curtoplam + curhızlıgemioranı If chkhediyepaketi.value = Checked Then curtoplam = curtoplam + curpaket Basit Bir Örnek Bazı küçük örnekleri kodlayarak If ifadesinin kullanımını anlayıp anlamadığınızı sınayın. Bir Onay Kutusunun Value Değerinin İncelenmesi Bir onay kutusu, bir etiket ve bir komut tuşu içeren küçük bir proje yaratınız. Komut tuşuna cmdtest, onay kutusuna chktest ve etikete lblmesaj adını veriniz. cmdtest in Click olayında onay kutusunun value özelliğini kontrol ediniz. Eğer onay kutusu seçili ise Onay kutusu seçili durumdadır mesajını lblmesaj alanında gösteriniz. Private Sub cmdtest_click () Onay kutusunun value değerinin test edilmesi If chktest.value = Checked Then lblmesaj.caption = Onay kutusu seçili durumdadır End Sub Projenizi test ediniz çalışır durumda olduğunda Onay kutusu seçili durumda değildir mesajını gösterecek kodu oluşturmak amacıyla ifadesini ekleyiniz. Private Sub cmdtest_click () Onay kutusunun value değerinin test edilmesi If chktest.value = Checked Then lblmesaj.caption = Onay kutusu seçili durumdadır lblmesaj.caption = Onay kutusu seçili durumda değildir End Sub V. Hafta / 11

Seçim Tuşunun Value Değerinin İncelenmesi Önceki örnekteki onay kutusunu kaldırıp yerine optacemi ve opttecrübeli olarak isimlendirilmiş ve sırasıyla < 30 birim ve >= 30 birim başlıklı (caption özelliği) iki tane seçim tuşu ekleyiniz. If ifadesini etikette Acemi veya Tecrübeli olarak gösterecek şekilde değiştiriniz. If optacemi.value = Then lblmesaj.caption = Acemi lblmesaj.caption = Tecrübeli Bu örneği çocuk, genç, olgun ve yaşlı için çalışacak şekilde modifiye edebilir misiniz? Aşağ ıdaki kısımda çoklu seçim tuşları ve onay kutularının test edilmesini göreceksiniz. Bir Seçim Tuşu Grubunun Value Değerinin Kontrol Edilmesi Yuvalanmış If ifadesi bir seçim tuşu grubundan hangisinin seçili olduğunu belirlerken oldukça işe yaramaktadır. Herhangi bir seçim tuşu grubundan sadece bir tuşun seçili olabileceğini hatırlayınız. Varsayalım ki formunuzda çocuk, genç, olgun ve yaşlı tuşlarından oluşa n bir seçim grubu olsun. Bir hesaplama prosedürü var ve siz hangi seçim tuşunun seçild iğine bağlı olarak dört sayaç değişkeninden birine 1 eklemek istiyorsunuz: If optçocuk.value = Then mintçocuksayaç = mintçocuksayaç + 1 If optgenç.value = Then mintgençsayaç = mintgençsayaç + 1 If optolgun.value = Then mintolgunsayaç = mintolgunsayaç + 1 If optyaşlı.value = Then mintyaşlısayaç = mintyaşlısayaç +1 Çoklu Onay Kutularının Value Değerinin Kontrol Edilmesi Her ne kadar yuvalanmış If ifadeleri seçim tuşu gruplarında oldukça işe yaramasına rağmen, aynı şey onay kutuları için geçerli değildir. Sahip olduğunuz onay kutuları setinden istediğiniz kadarını seçebileceğinizi hatırlayınız. Örneğin İndirim, Vergi ve Teslimat onay kutularınız bulunsun. Bu durumda her bir koşul için ayrı If ifadelerine gerek duyacaksınız. If chkindirim.value = Checked Then İndirimi hesaplar If chkvergi.value = Checked Then Vergiyi hesaplar V. Hafta / 12

If chkteslimat.value = Checked Then Teslimatı yapar Mesajların Mesaj Kutularında Gösterilmesi Mesaj kutusu (message box) kullanıcıya bir mesajın gösterilebilindiği özel bir çeşit Visual Basic penceresidir. Bir mesaj, bir seçimlik ikon, bir başlık ve bir komut tuşu veya tuşlar ını bir mesaj kutusu içerisinde gösterebilirsiniz.(şekil 5.7) Şekil 5.7. MsgBox ifadesi ile yaratılan iki mesaj kutusu örneği Kullanıcı geçersiz veri girdiğinde bir mesaj gösterilmesini isteyebilirsiniz veya gerekli veri değerini girmesini önemsemeyebilirsiniz. Bu bölümde daha sonra veri geçerliliği olarak adlandırılan girdinin geçerliliğini kontrol eden birkaç tane teknik göreceksiniz. MsgBox İfadesi Genel Form MsgBox Mesaj olarak gösterilmek istenen ifade [, Tuşlar/ İkon] [, Başlık ] Tuş ve ikonlar kısmı opsiyoneldir; gösterilecek olan komut tuşlarını ve gözükecek olan herhangi bir ikonu belirler. Eğer başlık kısmını atlarsanız, projenin ismi mesaj kutusunun başlığında gözükecektir. Mesaj kutusunun başlığını Project 1 başlık çubuğu ile göstermek oldukça tembel bir programlama tekniğidir. Projeniz anlamlı bir isme sahip olmadığı sürece başlık kısmını atlamayı tercih etmeyiniz. MsgBox İfadesi Örnek If txtadı.text = Then MsgBox Lütfen adınızı giriniz., vbokonly, Ad Kısmı Eksik MsgBox İkonunun Seçilmesi Tuş/İkon girişi için isterseniz aşağıdaki tablodan sayısal değerleri kullanmayı veya Visual Basic sabitlerini kullanmayı tercih edebilirsiniz. Örneğin, Uyarı işareti ikonunu aşağıdaki ifadelerden birisiyle gösterebilirsiniz: V. Hafta / 13

MsgBox Bu bir uyarı mesajıdır, vbquestion, Hata veya MsgBox Bu bir uyarı mesajıdır, 32, Hata Tablo5.3. Tuş/İkon Değer Sabit OK tuşu 0 vbokonly Critical Message ikonu 16 vbcritical Warning Query ikonu 32 vbquestion Warning Message ikonu 48 vbexclamation Information Message ikonu 64 vbinformation Not: MsgBox burada açıklandığı gibi sadece OK tuşunu gösteren bir ifade olarak kullanılabilir. Ayrıca fonksiyon olarak da kullanılabilmektedir. MsgBox ifadesini bir fonksiyon gibi kullandığınızda gösterilecek butonları (Yes, No, Cancel gibi veya OK ve Cancel gibi) seçebilirsiniz. Fonksiyon hangi tuşun seçildiğini gösteren geriye bir değer verir. MsgBox fonksiyonu daha sonra işlenecektir. Bir Mesaj String İfadesinin Gösterilmesi Göstereceğiniz mesaj string ifadesi tırnak işaretleriyle çevrelenmiş bir ifade veya bir string değişkeni olabilir. Ayrıca bir değişken ve bir ifade gibi birkaç parçayı da birleştirmek istey ebilirsiniz. Eğer mesaj olarak belirlediğiniz ifade bir satır için çok uzunsa Visual Basic onu sonraki satırda göstermek amacıyla kesecektir. Bir Mesaj String İçerisinde Çeşitli Değerlerin Birleştirilmesi Toplam Satış string ifadesi ile toplam satışlar değişkenini birleştirmek isteyebilirsiniz: Dim strmesaj As String strmesaj = Toplam Satış & mcurtoplamsatış MsgBox strmesaj, vbokonly, Satış Özeti Bu ifade sayıyı formatlamayacaktır. Bu koşuluda göz önüne katmak için string ile birleştirmeden önce sayının formatlanması da dikkate alınmalıdır. Dim strformatlanmıştoplam Dim strmesaj As String As String strformatlanmıştoplam = FormatCurrency (mcurtoplamsatış) strmesaj = Toplam Satışlar & strformatlanmıştoplam MsgBox strmesaj, vbokonly, Satış Özeti V. Hafta / 14

Çıktının Birden Çok Satırda Gösterilmesi Çıktıyı birden çok satırda göstermek için satırın sonuna alt çizgi konur. Satır sonunun belirlenmesi amacıyla Visual Basic vbcrlf doğal sabiti kullanılır. Bu sabiti çoklu satırlarının ayarlanması için bir string ile birleştirebilirsiniz. Bu adım size sonraki satırın nereden başlayacağını belirleme imkanını vermektedir. Bu örnekte bir önceki örneğin MsgBox ifadesine ikinci bir satır daha eklenmiştir. Dim strformatlanmıştoplam As String Dim strformatlanmışort As String Dim strmesaj As String strformatlanmıştoplam = FormatCurrency (mcurtoplamsatış) strformatlanmışort = FormatNumber (mcurortalamasatış) strmesaj = Toplam Satışlar & strformatlanmıştoplam & vbcrlf & _ Ortalama Satış & strformatlanmışort MsgBox strmesaj, vbokonly, Satış Özeti Not: Varsayılan tuşu ve boş başlık çubuğunu kullanarak çabucak bir mesaj kutusu yaratabilirsiniz. Bunun için gerekli kod: MsgBox Mesajım,, Girdi Geçerliliği Dikkatli programcılar hesaplamalara başlamadan önce metin kutularına girilen değerleri kontrol ederler. Geçerlilik bir kendini koruma şeklidir; kullanıcı tarafından ortaya çıkan bir problemi keşfetmeye çalışmak için saatlerce (bazen günlerce) zaman harcamaktansa kötü verile ri reddetmek daha iyi bir yoldur. Hatanın önceden bulunması ve düzeltilmesi programın yanlış sonuçlar üretmesini veya çalışma zamanı hatasıyla programın durdurulmasını önleyecektir. Bir metin kutusuna uygun değerlerin girildiğinin kontrol edilmesine geçerlilik (validation) denir. Geçerlilik verinin sayısal olduğundan emin olunmasını, özel bazı değerlerin girildiğinin kontrol edilmesini veya istenen birimlerin girildiğinden emin olunmasını içerir. Sayısal Değerlerin Kontrol Edilmesi Girilen verinin gerçekten nümerik olup olmadığından Visual Basic in IsNumeric fonksiyonuyla emin olabilirsiniz. IsNumeric fonksiyonu kontrol edilen değerin sonucunu göstermek amacıyla veya False değerlerini geri verir. IsNumeric Fonksiyonu Genel Form IsNumeric (ifade) V. Hafta / 15

IsNumeric fonksiyonuyla değerinin nümerik olup olmadığı test edildikten sonra değer bir hesaplama içerisinde kullanılabilir. Eğer nümerik ise sonuç değilse sonuç False olacaktır. Bu fonksiyon hesaplamalar içeren prosedürlerdeki problemlerden sakınılmasına yardımcı olur. Eğer veri sayıya çevrilemezse hesaplamalar yerine getirilemez ve çalışma zamanı hatası ortaya çıkar. Programcıları, kullanıcıların yaptıkları bu tip bir hatadan korumanın tek yolu veri girildikten sonra alanın içeriğinin kontrol edilmesidir. IsNumeric Fonksiyonu Örnek If IsNumeric (txtmiktar.text) Then intmiktar = Val (txtmiktar.text) lblödenecektutar.caption = curprice * intmiktar MsgBox Sayısal olmayan veri girildi., vbokonly, Geçersiz Veri Bir Değer Aralığının Kontrol Edilmesi Veri geçerliliği uygun olmayan bir değerin kontrol edilmesini de içerebilir. Varsayalım k i bir gün içerisinde çalışılan saat sayısının girilmesi için bir metin kutusu kullanıyorsunuz. Hatta fazla mesai ile birlikte şirket tek bir günde 10 çalışma saatinden fazlasına izin vermiyor olabilir. Bu durum için uygun olmayan girdi değerlerini kontrol etmenin yolu: If Val (txtsaat.text) > 10 Then MsgBox Çok fazla saat girildi., vbokonly, Geçersiz Veri İstenilen Bir Alana Veri Girişi Yapıldığının Kontrol Edilmesi Bazen daha ileriye gitmeden önce bir metin kutusuna bir değer girildiğinden emin olma ihtiyacı hissedilir. Metin kutusunun değerini boş bir string ile karşılaştırabilirsiniz. If txtad.text <> Then Yapılacak İşlemler MsgBox Bir değer girmelisiniz,vbokonly, Doldurulması Gereken Alan Farz edelim ki hesaplamalarda kullanılmak üzere sayısal veri girişinin zorunlu olduğu bir metin kutusuna sahipsiniz. Eğer metni sayıya çevirmek için Val fonksiyonu kullanıyorsanız ve metin boşsa bu durumda ne olacak? Tabi ki Sıfır. Metin kutusunu boş string için kontrol etmek istiyorsanız bunu Val fonksiyonun kullanmadan önce yapmanız gereklidir. Yanlış: intmiktar = Val (txtmiktar.text) If intmiktar = Then V. Hafta / 16

Doğru: If txtmiktar.text <> Then intmiktar = Val (txtmiktar.text) Birden Çok Geçerliliğin Sınanması Birden çok sayıdaki girdi alanlarının geçerliliğini inceleme ihtiyacı duyulduğunda, kullanıcıya ne kadar sayıda mesaj kutusu göstermek istersiniz? Varsayalım ki kullanıcı beş metin kutusunu doldurmayı önemsemedi ve Hesapla tuşuna bastı. Bir dizi mesaj kutusunu göstermekten yuvalanmış bir If ifadesi kullanarak kaçınabilirsiniz. Bu yolla sadece birincisi geçildiği zaman ikinci değeri kontrol edersiniz ve tek bir alanda bir problem bulunursa daha ileriki işlemlere gidilmesine izin vermezsiniz. If txtadı.text <> Then If txtbirim.text <> Then If optçocuk.value = Or optgenç.value = _ Or optolgun.value = Or optyaşlı.value = Then Veri Geçerli İşlemleri burada yapabilirsiniz MsgBox Lütfen bir yaş grubu seçiniz, vbokonly, Hata MsgBox Birim sayısını giriniz, vbokonly, Hata txtbirim.setfocus MsgBox Lütfen isminizi giriniz, vbokonly, Hata txtadı.setfocus Olay Prosedürlerin Çağrılması Bir olaya bağlı kod setini program içerisinde başka yerlerde de kullanmak istiyorsanız, kodu her seferinde kopyalamak zorunda değilsiniz. Sadece bir prosedürün içine yazmış olduğunuz olaya bağlı kod setini çağırmanız (Call) gerekir. Bir olay prosedürünü çağır dığınızda tüm prosedür yürütülür ve daha sonra yürütme çağırmayı takip eden ifadelere geri döner. Call İfadesi Genel Form [Call] Prosedürİsmi Call anahtar kelimesinin opsiyonel olduğuna dikkat ediniz, nadiren kullanılır. Cal İfadesi - Örnek Call cmdhesapla_click cmdhesapla_click Önceki ifadeye eşdeğerdir. V. Hafta / 17