5. FONKSİYONLAR VE ALT PROGRAMLAR Kullanım sebebi, bir prosedürün program içinde farklı yerlerde bir çok kez kullanılabilir olmasıdır. Ayrıca, aynı komut setlerinin tekrarı program kodunun büyümesine neden olur, hata giderme ve iyileştirme süreçleri de yavaşlar. Kodun okunabilirliği kolaylaşır. Prosedürler işlevsel olarak 2 çeşittir; fonksiyonlar (Function), alt programlar (Sub). Bir fonksiyon yada alt program belirli bir işi yapan küçük programcıklardır. Projede form veya modül içine yerleştirilebilirler. Form veya Modül kod penceresi açılarak Object (General), Procedure (Declarations) içinde oluşturulurlar. Değişken isimlendirilmesindeki kurallar, fonksiyon ve altprogramlar için de uygulanmaktadır. Bir prosedür Public (Module içinde) olarak tanımlanırsa tüm form ve modüllerde, Private olarak tanımlanırsa sadece tanımlandığı form ve modülde çağırılabilir.
ALT PROGRAMLAR Alt programları fonksiyonlardan ayıran tipik özellikleri, çağıran programa, parametre listesindeki değişkenler aracılığıyla birden çok sonuç değeri gönderebilmeleri ve bağımsız bir komut ile çalıştırılmalarıdır. Alt programlar, başka bir prosedür içinden Call komutu ile çağrılırlar. Genel formatı: Sub AltprogramAdı (parametreler) ....... End sub Örnek: Örnek:
FONKSİYONLAR Fonksiyonlar, çağrıldığı programa tek bir sonuç değeri aktarırlar. Bu sonuç sayısal ya da karakter içerikli olabilir. Fonksiyonların diğer bir özelliği, herhangi bir komut satırında çalıştırılırlar ve elde edilen sonucu, adının geçtiği konuma getirirler. Bu nedenle fonksiyon bitirilmeden önce, fonksiyon adına, bir değişkene yapıldığı gibi bir atama yapılmalıdır. Genel formatı: Function FonksiyonAdı (parametreler) ........ FonksiyonAdı=sonuc End function
Örnek: Yukarıdaki fonksiyon command1 nesnesi içinde kullanılıyor Örnek: Function daire (r As Double) As Double daire = pi * r * r End Function Yukarıdaki fonksiyonu çağırmak için: Aland = daire (r1)
Parametreler Parametreler, prosedüre (bir fonksiyon veya altprogram) geçişi sağlayan değerlerdir. Kullanılan parametrelerin sayısı, fonksiyon veya altprogramda tanımlanan parametrelerin sayısı ile aynı olmalıdır. İki veya daha çok parametrenin söz konusu olduğu bazı durumlarda, bir fonksiyona ihtiyaç duyulduğunda, “opsiyonel parametre” kullanımı gerekmektedir. Örnek: Eksik parametre ! (HATALI) (DOĞRU)
Örnek: Opsiyonel (Optional) parametre kullanımı İki parametre (DOĞRU) Tek parametre (DOĞRU) Bu durumda her iki kullanımda geçerlidir.
Örnek:
VISUAL BASIC FONKSİYONLARI (KOMUTLARI) String İşlemleri Metinler üzerinde işlem yapmaya yarayan komutlardır. TRim(string) Verilen metnin her iki tarafindaki boşluk karakterlerini siler. LTrim(string) : Verilen metnin başindaki boşluk karakterini siler. RTrim(string) : Verilen metnin sonundaki boşluk karakterini siler. Len(string) Metin içindeki karakter sayısını verir. Left(string, n) Metin içindeki soldan n karakteri verir. Right(string, n) Metin içindeki sağdan n karakteri verir. Mid(string,başlangıç, uzunluk) Metin içindeki başlangıçtan sona kadar olan karakter sayısını verir.
Ucase(string) Metin içindeki karakterleri büyük harfe çevirir. Lcase(string) Metin içindeki karakterleri küçük harfe çevirir. Space(sayı) Verilen sayı kadar boşluk oluşturur. Asc(harf) Girilen harf için ASCII kodunu verir. Chr(ASCII kodu) ASCII kodu verilen sayının karakter karşılığını verir. (Alt+Sayı) Str(sayı) Verilen sayı’yı string’e dönüştürür. Val(String) Verilen string’i sayıya dönüştürür. Çevirme işlemi geçersiz (sayı olmayan) karaktere kadar devam eder.
Örnek: Dim a, b As String a = Space(15) + "DEÜ Makina" + Space(15) b = "1982" Print a + b Print Trim(a) + b Print RTrim(a) + b Print LTrim(a) + b Örnek: Dim a, b As String a = Space(15) + "DEÜ Makina" + Space(15) b = "1982 " Print Len(a), Len(b) Print Left(a, 18) Print Right(a, 18) Print Mid(a, 16, 3)
Örnek: Örnek: Örnek:
Örnek:
Renk Belirleme Komutları Kontrollerin zemin renkleri, çizimlerin renkleri veya yazılarin renkleri bu komutlarla değiştirilebilir. Qbcolor (RenkNo) Siyah 8 Gri 1 Mavi 9 Açık Mavi 2 Yeşil 10 Açık Yeşil 3 Cyan 11 Açık Cyan 4 Kırmızı 12 Açık Kırmızı 5 Eflatun 13 Açık Eflatun 6 Sarı 14 Açık Sarı 7 Beyaz 15 Açık Beyaz RenkNo 0-15 arasi değerler alır. Bu renkler 8 temel rengin koyu ve açık halleridir. Rgb (Red, Green, Blue) Renk Kırmızı Yeşil Mavi Siyah 255 Cyan Eflatun Sarı Beyaz Red, Green, Blue 0-255 arası değerler alabilir. Üç rengin farklı tonlarda karışımından renkler oluşturulur.
Matematiksel Komutlar Karekök : sqr() Mutlak değer : abs() Logaritma : log() Exponansiyel : exp() Sin() Cos() Tan() Atn() Not: Açılar radyan cinsinden girilir ! Yuvarlatma Fonksiyonları Int (sayı) Virgülden sonraki sayıyı atar, eğer sayı pozitifse sayının tam kısmını alır, negatifse kendinden bir önceki sayıya yuvarlatılır. Örnek: Print int(60.2) ‘60 Print int(60.6) ‘60 Print int(-60.2) ‘-61 Print int(-60.6) ‘-61 Fix (sayı) Virgülden sonraki sayıyı atar. Round (sayı) En yakın tam sayıya yuvarlar. Örnek: Print Fix(60.6) ‘60 Print Fix(-60.6) ‘-60 Örnek: Print Round(60.6) ‘61 Print Round(-60.6) ‘-61
Rnd Rasgele (Random) sayı üretmek için Rnd fonsiyonu kullanılır. 0 ile 1 arasında rasgele sayılar üretir. Örnek: Print Rnd ‘0 ile 1 arası bir sayı üretir Print Rnd*100 ‘0 ile 100 arasında bir sayı üretir Verilen a-b aralığında rasgele sayılar üretiniz ve sonuçları yuvarlatma fonksiyonları ile yorumlayınız. Örnek:
Shell (Program, [Pencere_tipi] ) Uygulama Komutları Shell Hazırladığımız program içerisinde başka bir programı çalıştırmak için kullanılır. Genel formatı: Shell (Program, [Pencere_tipi] ) Pencere_tipi VbHide Pencere gizli olarak aktifleşir. vbNormalFocus 1 Pencere normal boyutlarında açılır. vbMinimizedFocus 2 Pencere simge olarak açılır. vbMaximizedFocus 3 Pencere tüm ekranı kaplar. vbNormalNoFocus 4 Pencere geri yüklenir. Focus başka komponentte vbMinimizedNoFocus 6 Pencere simge olarak yüklenir. Focus başka komponentte. Örnek: Private Sub Command1_Click() Dim a a = Shell(“Notepad.exe",3) End Sub
OLAY ALT PROGRAMLARI Visual Basic olay (event) tabanlı bir program olarak tanımlanabilir. Bu durumda VB kontrollerindeki her bir olay bir alt program olarak kabul edilebilir. Bu tanıımlamalar dikkate alınırsa, Visual Basic’de, kontrollerin kendi olay alt programları vardır. Diğer prosedürler gibi programcı tarafından çağırılmaları gerekmez, alt program ait olduğu kontrol tarafından çağırılır. Bir nesneye tıklamak (click, dbclick), farenin bir nesne üzerinde dolaşması (mousemove), nesnelerin taşınması (drag) windows olaylarından bazılarıdır. Bu olaylar, bazı kodların aktif hale gelmesini (çalışmasını) sağlar.
Genel formatı: Sub kontroladı_olay ([parametreler]) ........ End sub VB’ de Olaylar Click(), Dbclick() Farenin tıklanmasıyla/çift tıklanmasıyla meydana gelen olaydır. Gotfocus() Klavye kontrolünün ilgili nesneye geçmesiyle çalışan olaylardır. İlgili nesneye kontrolün geçebilmesi için “visible” ve “enabled” olması gerekir.
Keydown() Klavyeden harhangi bir tuşa basıldığında meydana gelen olaylardır. Tuş basılı olduğu müddetçe devam eder. Keyup() Bu olay klavyeden basılan tuş bırakıldığı anda meydana gelir. Mousemove() Farenin bir form yada kontrol üzerinde dolaşması sonucu meydana gelen olaylardır. Dolaşma devam ettiği müddetçe bu olay meydana gelir. Mousedown() Fareye basılması sonucu meydana gelen olaydır. Mouseup() Fareye basılmış tuşun bırakılması sonucu meydana gelen olaydır.
Örnek: