280 likes | 548 Views
PROSEDÜRLER (YORDAMLAR) ( FONKSİYONLAR VE ALT PROGRAMLAR). PROSEDÜR NEDİR?. BAŞKA BİR PROGRAM TARAFINDAN ÇALIŞTIRILARAK KULLANILABİLEN BAĞIMSIZ KOMUT SETLERİNE PROSEDÜR DENİR. NEDEN KULLANILIR?.
E N D
PROSEDÜR NEDİR? • BAŞKA BİR PROGRAM TARAFINDAN ÇALIŞTIRILARAK KULLANILABİLEN BAĞIMSIZ KOMUT SETLERİNE PROSEDÜR DENİR.
NEDEN KULLANILIR? • TEMEL NEDENLERİNDEN BİRİ, BİR PROSEDÜRÜN PROGRAM İÇİNDE FARKLI YERLERDE BİR ÇOK KEZ KULLANILABİLİR OLMASIDIR. • AYNI KOMUT SETLERİNİN TEKRARI PROGRAM KAYNAK KODUNUN BÜYÜMESİNE NEDEN OLUR, HATA GİDERME VE İYİLEŞTİRME SÜREÇLERİ DE YAVAŞLAR.
ÖRNEK • N! (N FAKTÖRİYEL) DEĞERİNİ BULAN PROSEDÜR. BU PROSEDÜR BİR DEFA OLUŞTURULUR VE GEREKEN HER YERDE KULLANILIR. • C=N!/P!*(N-P)! GİBİ...(KOMBİNASYON HESABI)
PROSEDÜR ÇEŞİTLERİ • PROSEDÜRLER İŞLEVSEL OLARAK 2 ÇEŞİTTİR. • FONKSİYONLAR (FUNCTION) • ALT PROGRAMLAR (SUB)
FONKSİYONLAR • BU TÜR PROSEDÜRLERİN EN TİPİK ÖZELLİĞİ, ÇAĞIRAN PROGRAMA TEK BİR SONUÇ DEĞERİ AKTARMASIDIR. BU SONUÇ SAYISAL YA DA KARAKTER İÇERİKLİ OLABİLİR.
FONKSİYONLAR • FONKSİYONLARIN DİĞER BİR ÖZELLİĞİ, HERHANGİ BİR KOMUT SATIRINDA ÇALIŞTIRILIRLAR VE ELDE EDİLEN SONUCU, ADININ GEÇTİĞİ KONUMA GETİRİRLER. • BU NEDENLE FONKSİYON BİTİRİLMEDEN ÖNCE, FONKSİYON ADINA, BİR DEĞİŞKENE YAPILDIĞI GİBİ BİR ATAMA YAPILMALIDIR.
FONKSİYONLARIN GENEL FORMATI • function adı (parametreler) • ........ • ........ • adı=sonuc • end function
KOMBİNASYON HESABI • n=val(text1.text) • p=val(text2.text) • print fakto(n)/(fakto(p)*fakto(n-p)) • end • function fakto (k) • s=1 • for i=2 to k • s=s*i • next • fakto=s • end function
KARE FONKSİYONU • function kare(x) • sonuc=x*x • kare=sonuc • end function
KARE FONKSİYONU2 • function kare(x) • kare=x*x • end function
KULLANIM BİÇİMLERİ • SQR(X) FONKSİYONU X SAYISININ KARESİNİ ALIR. • print sqr(x) • for i=1 to sqr(x) • k=sqr(x)+1
ALT PROGRAMLAR • ALT PROGRAMLARI FONKSİYONLARDAN AYIRAN TİPİK ÖZELLİKLERİ, ÇAĞIRAN PROGRAMA, PARAMETRE LİSTESİNDEKİ DEĞİŞKENLER ARACILIĞIYLA BİRDEN ÇOK SONUÇ DEĞERİ GÖNDEREBİLMELERİ VE BAĞIMSIZ BİR KOMUT İLE ÇALIŞTIRILMALARIDIR.
GENEL FORMATI • sub adı (parametreler) • ....... • ....... • end sub
ÖRNEK • sub selam () • print “hoşgeldin bayram” • end sub
ÖRNEK2 • ad=text1.text • selam(ad) • sub selam (x) • print ”hoşgeldin” x • end sub
VB’DE PROSEDÜRLER • VB’DE FONKSİYON VE ALT PROGRAMLARI BELİRTMEK İÇİN PROSEDÜR DEYİMİ KULLANILIR. • BİR FONKSİYON YADA ALT PROGRAM BELİRLİ BİR İŞİ YAPAN KÜÇÜK PROGRAMCIKTIR. • ÖRNEĞİN BİR ÇOK YERDE FAKTÖRİYEL HESABI YAPMANIZ GEREKİYORSA BUNU BİR FONKSİYONLA HALLEDEBİLİRSİNİZ.
PROSEDÜRLER • PROGRAMDA YENİ BİR PROSEDÜR TANIMLAMAK İÇİN “TOOLS\ ADD PROSEDURE” KOMUTU KULLANILABİLİR. • BURADA PROSEDÜR “PUBLIC” OLARAK TANIMLANIRSA PROGRAMDAKİ BÜTÜN FORM VE MODÜLLERDE, “PRIVATE” OLARAK TANIMLANIRSA YALNIZCA TANIMLANDIĞI FORM VE MODÜLDE ÇAĞIRILABİLİR.
ÖRNEK • AŞAĞIDAKİ ALT PROGRAM, GİRİLEN BİR SAYININ KARESİNİ YAZDIRIR. • kare val(text1.text) ‘ kare çağırılıyor • sub kare (x as integer)’ kare alt programı • dim ka • ka=x*x • print ka’ ilgili sayının karesi yazdırılır • end sub
ÖRNEK • dim x • x=val(text1.text) • topla(x)’x değişkeni için topla fonksiyonu çalışacak. • function topla (sayi) • dim i,top,sayi • for i=0 to sayi • top=top+i • next • topla=top • end function
ÖRNEK • dim i,n • for i=0 to n • print i&”!=”& fak(i) • Next
...DEVAMI... • function fak(x) • dim i,s • s=1 • for i=1 to x • s=s*i • next • fak=s’sonucu geri gönderir • end function
BİR SAYININ KARESİNİ BULAN FONKSİYON • Public Function kare (x as integer) • kare=x^2 • End Function
BİR SAYININ KAREKÖKÜNÜ BULAN FONKSİYON • Public Function karakok (m as integer) • karekok=m^(1/2) • End Function
OLAY ALT PROGRAMLARI • KULLANICININ TANIMLAYACAĞI ALT PROGRAMLARIN DIŞINDA, KONTROLLERİN KENDİ OLAY ALT PROGRAMLARI VARDIR. DİĞER PROSEDÜRLER GİBİ PROGRAMCI TARAFINDAN ÇAĞIRILMALARI GEREKMEZ, ALT PROGRAMIN AİT OLDUĞU KONTROL TARAFINDAN ÇAĞIRILIR.
GENEL FORMATI • sub kontroladı_olay ([parametreler)] • ........ • ........ • end sub
ÖRNEK • private sub text1_change() • dim i,top • for i=0 to 9 • top=top+val(text(i)) • next • label1=top • end sub
ÖRNEK2 • sub text1_change() • dim kare • kare=val(text1.text)^2 • text2.text=kare • end sub