DEĞİŞKENLER VE VERİTİPLERİ
DEĞİŞKEN NEDİR? DEĞİŞKENLER BİR BİLGİYİ HAFIZADA TUTMAYA VE GEREKTİĞİNDE KULLANMAYA YARAR. ÖRNEĞİN BİR İSİM SORUYORSANIZ, BUNU GEREKTİĞİNDE KULLANABİLMEK İÇİN BİRD DEĞİŞKENE ALMALISINIZ.
DEĞİŞKEN NEDİR? BİR DİLDE DEĞİŞKENLERİN KULLANIM VE TANIMLANMA ŞEKLİ O DİLDE PROGRAM YAPMAYI VE PROGRAMLARIN ANLAŞILIRLIĞINI ETKİLEYEN ÖNEMLİ FAKTÖRLERDEN BİRİDİR.
DEĞİŞKEN NEDİR? DEĞİŞKENLERİN EN İYİ KULLANILDIĞI DİL C İKEN EN KÖTÜ KULLANILDIĞI DİL GWBASIC’TİR. QBASIC’TE ÖNEMLİ GELİŞMELER SAĞLANMIŞ, VISUAL BASIC’TE DEĞİŞKEN YAPISI OLDUKÇA GELİŞTİRİLMİŞTİŞTİR.
DEĞİŞKEN TANIMLAMA DEĞİŞKENLER İÇİN ÖNEMLİ BİR DURUM, DEĞİŞKENLERİN KARIŞIKLIĞA MEYDAN VERMEMESİ İÇİN TANIMLANMASI MECBURİYETİ OLMASIDIR. DAHA ÖNCEKİ GWBASIC VE QBASIC’TE BU MECBURİYET YOKTUR VE DEĞİŞKENLERİN BENZERLİKLERİNDEN DOLAYI KARIŞTIRM ARİSKİ VARDIR.
DEĞİŞKEN TANIMLAMA VB’TE DEĞİŞKENLERİ KULLANMADAN ÖNCE TANIMLAMA MECBURİYETİ PROGRAMCININ SEÇİMİNE BIRAKILMIŞTIR. PROGRAMCI İSTERSE TOOLS\OPTIONS MENÜSÜNDEKİ EDITÖR SEKMESİNDE “REQUIRE VARIABLE DECLARATION” ONAY KUTUSUNU İŞARETLEYEREK DEĞİŞKEN TANIMLAMASINI MECBURİ YAPABİLİR.
DEĞİŞKEN TANIMLAMA DEĞİŞKEN TANIMLANMAZSA AŞAĞIDAKİ GİBİ BİRSORUN OLABİLİR İ=5 J=6 aratoplam=1000 geneltoplam= i*j+aratplam YUKARIDAKİ ÖRNEKTE VB BİR HATA VERMEYECEK VE SONUÇ 1030 YERİNE 30 OLACAKTIR.
DİKKAT!!! EĞER VB’DE DEĞİŞKENE BİR DEĞER ATANMAZSA DEĞİŞKENİN İÇERİĞİ “SIFIR” KABUL EDİLİR.
TANIMLAMA KURALLARI DEĞİŞKENE VERİLECEK İSİM ANLAŞILIR OLMALI. DEĞİŞKEN RAKAMLA DEĞİL HARF İLE BAŞLAMALIDIR. DEĞİŞKENDE BOŞLUK BULUNMAMALI. İKİ KELİMEDEN OLUŞAN DEĞİŞKENLER ALTÇİZGİ “_” İLE YAPILABİLİR. DEĞİŞKENE VERİLECEK İSİM VB KOMUTLARINDAN OLMAMALI. EN FAZLA 255 KARAKTER OLMALIDIR.
VERİ TİPLERİ VB’DE DEĞİŞKEN TİPLERİ “DIM” DEYİMİ İLE TANIMLANIR. Dim deg_ismi [(diziboyutu)] as tipi deg_ismi: değişkenin adı diziboyutu: Dim a(15) tanımıyla 16 elemanlı bir dizi tanımlanır. tipi: değişken tipi
DEĞİŞKEN TİPLERİ VB’DE İSTENİRSE TİP TANIMI VERİLMEYEBİLİR. SADECE Dim x ŞEKLİNDE BİR TANIM İLE X DEĞİŞKENİ TANIMLANABİLİR. BU TÜR DEĞİŞKENLERE “VARIANT” DENİR. ANCAK HIZ AÇASINDAN VARIANT DEĞİŞKENLER İYİ BİR SEÇİM DEĞİLDİR.
BYTE 1 BYTE’LIK İŞARETSİZ TAMSAYI TİPİDİR. O-255 ARASINDA DEĞER ALABİLİR.
INTEGER 2 BYTE’LIK İŞARETLİ TAMSAYI TİPİDİR. -32.768 İLE 32.767 ARASINDA BİR DEĞER ALABİLİR.
LONG 4 BYTE’LIK İŞARETLİ TAMSAYI TİPİDİR. -2.147.483.648 İLE 2.147.483.647 ARASINDA BİR DEĞER ALABİLİR.
DİKKAT !!!! BYTE, INTEGER VE LONG TİPİNDEKİ DEĞİŞKENLERE ONDALIK SAYI ATANIRSA, SAYI EN YAKIN TAMSAYIYA YUVARLANIR. Dim i as integer i=4.3 ‘ i=4 olarak atanır i=4.5 ‘ i=5 olarak atanır i=4.6 ‘ i=5 olarak atanır.
SINGLE 4 BYTE’LIK ONDALIK SAYI TİPİDİR. (+/-)3.402823E38 İLE (+/-)1.401298E-45 ARASINDA DEĞER ALABİLİR.
DOUBLE 8 BYTE’LIK ONDALIK SAYI TİPİDİR. (+/-)1.79769313486232E308 İLE (+/-)4.94065645841247E-324 ARASINDA DEĞER ALABİLİR.
CURRENCY 8 BYTE’LIK ONDALIK SAYI TİPİDİR. ANCAK SAYININ ONDALIK KISMI 4 BASAMAKTAN FAZLA OLAMAZ. BU TİP, DAHA ÇOK PARA HESAPLARI VE VİRGÜLDEN SONRAKİ HASSASİYETİ ÖNEMSİZ OLAN İŞLEMLER İÇİN KULLANILIR.
CURRENCY 922337203685477.5808 İLE 922337203685477.5808 ARASINDA DEĞER ALABİLİR. Dim i as currency i=4.30571 ‘i=4.3057 i=4.30575 ‘i=4.3058 OLARAK ATANIR.
DECIMAL 14 BYTE’LIK VERİ TİPİDİR. BU TİPİN EN ÖNEMLİ ÖZELLİĞİ,SAYIDAKİ BÜTÜN BASAMAKLARIN TURULMASIDIR. 29 BASAMAKLI BİRSAYIYI BÜTÜN DİJİTLERİNİ KORUYARAK TUTABİLİR.
DECIMAL SAYILARIN HASSASİYETİ KAYBOLMAMASI İÇİN,SAYI Cdec FONKSiYONU İLE DECIMAL TIPE ÇEVRİLDİKTEN SONRA ATANIR. dim x,y show x=79228162514264337593543950335 print x’sonuç:7.92281625142643e28 y=Cdec (“79228162514264337593543950335”) print y’sonuç: 79228162514264337593543950335
BOOLEAN 2 BYTE’LIK BİR VERİ TİPİ OLMASINA RAĞMEN SADECE “TRUE (DOĞRU)” YA DA “FALSE(YANLIŞ)” DEĞERLERİ ALABİLİR. BU TİPTEN TANIMLANAN DEĞİŞKENLERE DIREK TRUE VEYA FALSE ATANABİLECEĞİBİGİ SAYISAL DEĞER DE ATANABİLİR. ATANAN SAYI 0 İSE FALSE, DEĞİLSE TRUE KABUL EDİLİR.
ÖRNEK ya da dim evli as boolean evli=true evli=1 evli=127 dim bekar as boolean bekar=false bekar=0
ÖRNEK dim i as boolean, j as integer j=10 i=true print j*i ’sonuç:-10 i=false print j*i ‘sonuç:0
STRING KARAKTER SINIRI VERİLMEZSE 2 MİLYAR KARAKTERE KADAR ATAMA YAPILABİLEN ALFASAYISALBİR VERİ TİPİDİR. 100 BYTE YER KAPLAR. KARAKTER SAYISINI SINIRLAMAK İSTERSEK dim degisken as string*sınır ŞEKLİNDE KULLANILIR.
ÖRNEK dim a as string dim b as string*3 a=“abcdef....” ‘atama aynen yapılır. b=“abcde” ‘ yalnız ilk üç karakter atanır. yani b=“abc” b=“a” ‘ gene 3 karakter atanır ancak son ikisiboşluk olur. yani b=“a “
VARIANT VB’DE DEĞİŞKEN TANIMLARKEN TİP İSMİ VERİLMEMİŞSE BU TİPVARIANT OLARAK ELE ALINIR. DEĞİŞKENİN TİPİ ATANACAK DEĞERE GÖRE DEĞİŞİR. YANİ VARIANT TİPLER DAHA ÖNCE ANLATILAN TİPLERDEN HERHANGİ BİRİ GİBİ İŞLEM GÖREBİLİR VE PROGRAMIN ÇALIŞMASI ESNASINDA TİPİ DEĞİŞEBİLİR.
ÖRNEK a=5’ şu anda integer a=a+450234 ‘ işlem integersınırlarını aştığı işin a şu anda long. a=5.7 ‘ sayı ondalıklı olduğu için a şu anda single a=“abc” ‘ a şu anda string oldu
DATE 8 BYTE KAPLAYAN BU DEĞİŞKENE 1/1/100 İLE 31/12/9999 ARASINDAKİ TARİH VE 0:00:00 İLE 23:59:59 ARASINDAKİ SAAT ATAMALARI YAPILIR. BU TİPTEKİ DEĞİŞKENLERE ATAMA BİR STRING GİBİ YAPILABİLİR. dim i as date i=“17/11/1973” print i & “tarihinden bu güne kadar” & date-i& “gün geçti.”
GLOBAL VE LOCAL DEĞİŞKENLER DEĞİŞKENLER GENELDE İKİYE AYRILIRLAR: GLOBAL (GENEL) VE LOCAL(YEREL) DEĞİŞKENLER. GLOBAL DEĞİŞKENLER PROGRAMIN BÜTÜN FONKSİYONLARI TARAFINDAN KULLANILABİLİRKEN, LOCAL DEĞİŞKENLER SADECE TANIMLANDIKLARI FONKSİYONDA KULLANILIRLAR.
GLOBAL DEĞİŞKENLER GLOBAL DEĞİŞKENLERİN BÜTÜN FONKSİYONLARDA KULLANILMASI İLK BAŞTA AVANTAJ GİBİ GÖRÜLMESİNE RAĞMEN, PROGRAMIN GELİŞTİRİLMESİ VE TAKİP EDİLMESİNİ ÖNEMLİ ÖLÇÜDE ZORLAŞTIRDIKLARINDAN DOLAYI ÇOK BÜYÜK DEZAVANTAJLARI VARDIR.
GLOBAL DEĞİŞKENLER DIM DEYİMİYLE YAPILAN TANIMLANDIĞI YERE GÖRE GLOBAL VE LOCAL OLURLAR. EĞER DEĞİŞKEN “GENERAL DECLARATIONS” KISMINDA TANIMLANMIŞSA BULUNDUĞU MODÜL/FORM İÇERİSİNDE GLOBAL’DİR.
GLOBAL DEĞİŞKENLER GLOBAL DEĞİŞKENLERE VB’DE “MODULE LEVEL” DENİR VE İLGİLİ MODÜLDEKİ/FORMDAKİ BÜTÜN PROSEDÜRLER BU DEĞİŞKENİ KULLANABİLİR FAKAT DİĞER MODÜLLER/FORMLAR KULLANAMAZ.
GLOBAL DEĞİŞKENLER EĞER BİR DEĞİŞKEN HERHANGİ BİR FORMUN “GENERAL DECLARATION” KISMINDA “PUBLIC” DEYİMİ İLE TANIMLANMIŞSA DİĞER MODÜLLER/FORMLAR SA BU DEĞİŞKENİ KULLANABİLİR. ANCAK DEĞİŞKENİN İSMİNDEN ÖNCE MODÜLÜN/FORMUN İSMİNİN VERİLMESİ GEREKİR. form1.x’ burada form1’deki x değişkeni kullanılır.
STATİK DEĞİŞKENLER LOCAL OLARAK TANIMLANAN DEĞİŞKENLER TANIMLANDIĞI ALT PROGRAM VEYA FONKSİYON ÇALIŞMASI BİTTİKTEN SONRA BELLEKTEN ATILIR. İLGİLİ PROSEDÜR İKİNCİ KEZ ÇALIŞTIĞINDA LOCAL DEĞİŞKENLER ESKİ DEĞERLERİNDEN DEĞİL BAŞTAN (STRING İSE ““, SAYI İSE 0’DAN) BAŞLAR.
ÖRNEK BİR KOMUT DÜĞMESİNİN KAÇ DEFA ÇALUIŞTIĞINI BULMAK İÇİN AŞAĞIDAKİ KODU YAZARSANIZ HER SEFERİNDE KOMUT DÜĞMESİ İLK DEFA ÇALIŞIYORMUŞ GİBİ DEĞİŞKENİN DEĞERİ 1 OLACAKTIR. Private Sub Command1_Click() dim x x=x+1 msgbox (“bu komut düğmesi” &x& “defa tıklandı”) End Sub
STATİK DEĞİŞKENLER LOCAL OLARAK TANIMLANAN BİR DEĞİŞKENİN DEĞERİNİN TANIMLANDIĞI ALT PROGRAM VEYA FONKSİYONUN ÇALIŞMASI BİTTİKTEN SONRA DA DEĞERİNİN KORUNMASI İSTENİYORSA “DIM” YERİNE “STATIC” DEYİMİ KULLANILIR. STATIC DEYİMİ BİR ALT PROGRAM VEYA FONKSİYON ALTINDA TANIMLANABİLİR.
STATİK DEĞİŞKENLER statik deg_ismi [(disiboyutu)] as tipi DAHA ÖNCEKİBUTON SAYACI ŞÖYLE DEĞİŞTİRİLMELİDİR static x x=x+1 msgbox (“bu komut düğmesi” &x& “defa tıklandı”)
STATİK DEĞİŞKENLER EĞER STATİK DEĞİŞKENLERİ BAŞKA PROSEDÜRLER DE KULLANACAKSA İLGİLİ DEĞİŞKEN GLOBAL OLARAK TANIMLANIR.
SABİT TANIMLAMA PROGRAMDA DEĞERİNİN DEĞİŞMESİ İSTENMEYEN DEĞERLER SABİT OLARAK TANIMLANABİLİR. const sabitismi=değer const pi=3.1415 YUKARIDAKİ SABİT TANIMLANDIĞI YERE GÖRE LOCAL VEYA GLOBAL OLABİLİR.
DİZİLER DİZİLER BİRBİRLERİYLE İLGİLİ NESNE GRUBUNU İÇEREN DEĞİŞKENLERDİR. DİZİNİN KAÇ ELEMANDAN OLUŞTUĞU, DEĞİŞKEN İSMİNDEN SONRA PARANTEZ İÇİNE YAZILIR. dim a(15) ‘ 16 elemanlı bir dizi ‘yani a(0), a(1),a(2),...,a(15) şeklinde elemanları vardır.
DİZİLER BİR DİZİNİN İLK ELEMANI a(0) OLMAK ZORUNDA DEĞİLDİR. dim a(3 to7) ‘ile ilk elemanı a(3) ve son elemanı a(7) olan bir eleman tanımlanabilir. HERHANGİ BİR FONKSİYON VEYA ALT PROGRAMDA DİZİ TANIMI “DIM” DEYİMİ İLE YAPILAMAZ, SADECE GENERAL-DECLARATIONS KISMINDA VEYA MODÜL İÇİNDE TANIMLANABİLİR.
DİKKAT!!! EĞER BİR FONKSİYON VEYA ALT PROGRAM İÇİNDE DİZİ TANIMLANACAKSA “REDIM” VEYA “STATIC” DEYİMLERİYLE TANIMLANMALIDIR.
DİZİLERE İLK DEĞER ATAMA dim diziadı [as variant} dizi=array(elemanlar)
ÖRNEK dim gün ‘dikkat! tanımlanan değişken varianttır!!! gün=array(“pazar”, “pazartesi”, ”salı”, ”çarşamba”, ”perşembe”, ”cuma”, “cumartesi”) print “dizinin ilk elemanı:” &gün(0)