260 likes | 537 Views
5. FONKSİYONLAR VE ALT PROGRAMLAR. Başka bir program tarafından çalıştırılarak kullanılabilen bağımsız komut setlerine prosedür (Yordam) denir.
E N D
5. FONKSİYONLAR VE ALT PROGRAMLAR • Başka bir program tarafından çalıştırılarak kullanılabilen bağımsız komut setlerine prosedür (Yordam) denir. • 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. • 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. • Değişken isimlendirilmesindeki kurallar, fonksiyon ve altprogramlar için de uygulanmaktadır. • Bir prosedür Public olarak tanımlanırsa programdaki bütün form ve modüllerde, Private olarak tanımlanırsa yalnızca tanımlandığı form ve modülde çağırılabilir.
Bir VB6 program yapısı incelendiğinde, kontrollere ait farklı olayların farklı alt program olarak oluşturulduğu görülür. Örneğin bir Command1 düğmesinin tıklama olayının kendine ait alt programı • Private Sub Command1_Click() • ‘..... • End Sub • görünümündedir. • Bu iki satırın üstünde ve altında belki binlerce satır olmasına rağmen, bu satırlar arasındaki kodlar tüm diğer satırlardan bağımsız çalışmaktadır. Bu nedenle buradaki program parçasına alt program adı verilir. • VB6 da bu amaca yönelik iki farklı alt program yapısı vardır: • 1. Function • 2. Sub • Function alt programı tek bir değer hesaplarken Sub alt programı birden çok değer hesaplar. Function bir işlem içinde de adı ile çağrılabilir. Sub alt programı Call deyimi ile ayrı bir satırda çağrılmak zorundadır. Aralarındaki önemli farklar bundan ibarettir.
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. • Sub AltprogramAdı (parametreler) • ....... • ....... • End sub Genel formatı: Örnek: Dim alan, x As Integer Sub kare() alan = x * x Print alan End Sub Public alan, x As Integer Sub kare() alan = x * x Form1.Print alan End Sub
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
Function kare (x As Single) As Single • kare=x*x • End Function Örnek: Yukarıdaki fonksiyonu command nesnesi içinde çağırmak için; Private Sub Command1_Click() Dim x1 As Integer x1 = 2 alan = kare(x1) Print alan End Sub Ö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: • Function Dikdortgen(a, b As Double) As Double • Dikdortgen= a * b • End Function a1, b1 değişkenleri tanımlanmalı ! Alan1 = Dikdortgen(a1) HATALI DOĞRU Alan1 = Dikdortgen(a1,b1)
Örnek: Opsiyonel (Optional) parametre kullanımı • Function Dikdortgen (a As Double, Optional b As Double) As Double • Dikdortgen= a * b • End Function Bu durumda her iki kullanımda geçerlidir. Alan1 = Dikdortgen(a1) DOĞRU DOĞRU Alan1 = Dikdortgen(a1,b1)
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 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.
Click(), Dbclick() Farenin tıklanmasıyla/çift tıklanmasıyla meydana gelen olaydır. 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: Private Sub Command1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Form1.BackColor = RGB(255, 0, 0) End Sub Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) Form1.BackColor = RGB(0, 255, 0) End Sub Örnek: Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Form1.Caption = X & " , " & Y If X < 2500 Then Form1.BackColor = RGB(100, 0, 0) If X >= 2500 And X < 4500 Then Form1.BackColor = RGB(0, 100, 0) If X >= 4500 Then Form1.BackColor = RGB(0, 0, 100) End Sub
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)
x=Str(123) ‘123 artık bir rakam değil, stringdir. • x=“123” olur. Örnek: • Print Val (“124.33”) ‘124.33 • Print Val (“123a4.33”) ‘123 • Print Val (“a179”) ‘0 Örnek: Örnek: Private Sub Command1_Click() n1 = Asc(0) n2 = Asc(9) For i = n1 To n2 Print i, Chr(i) Next i End Sub
Renk Belirleme Komutları Kontrollerin zemin renkleri, çizimlerin renkleri veya yazılarin renkleri bu komutlarla değiştirilebilir. Qbcolor (RenkNo) RenkNo 0-15 arasi değerler alır. Bu renkler 8 temel rengin koyu ve açık halleridir. Rgb (Red, Green, Blue) Red, Green, Blue 0-255 arası değerler alabilir. Üç rengin farklı tonlarda karışımından renkler oluşturulur.
Matematiksel Komutlar Sin() Cos() Tan() Atn() Not: Açılar radyan cinsinden girilir ! Karekök : sqr() Mutlak değer : abs() Logaritma : log() Exponansiyel : exp() 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) ‘-61 • Print int(-60.6) ‘-61 • Print int(60.2) ‘60 • Print int(60.6) ‘60 Fix (sayı) Virgülden sonraki sayıyı atar. Round (sayı) En yakın tam sayıya yuvarlar. Örnek: Örnek: Print Fix(60.6) ‘60 Print Fix(-60.6) ‘-60 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. • Print Rnd ‘0 ile 1 arası bir sayı üretir • Print Rnd*100 ‘0 ile 100 arasında bir sayı üretir Örnek: Verilen a-b aralığında rasgele sayılar üretiniz ve sonuçları yuvarlatma fonksiyonları ile yorumlayınız. Örnek: Private Sub Command1_Click() a = 0: b = 15 c = Rnd * (b - a) + a Print c, Int(c), Fix(c), Round(c) End Sub
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 Örnek: Private Sub Command1_Click() Dim a a = Shell(“Notepad.exe",3) End Sub