DEĞİŞKENLER VE VERİTİPLERİ
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.
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ĞİŞ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.
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 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.
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.
SAYILARIN HASSASİYETİ KAYBOLMAMASI İÇİN,SAYI Cdec FONKSŞYONU İLE DECIMALTIPE Ç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
dim evli as boolean
evli=true
evli=1
evli=127
ya da
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.”
OBJECT
4 BYTE’LIK BİR VERİ TİPİDİR.
OLE İŞLEMLERİNDE KULLANILMAK ÜZERE TASARLANMIŞTIR.
BU TİPTEKİ DEĞİŞKENLERE ATAMA YAPARKEN “SET” OPERATÖRÜ KULLANILIR.
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İ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.
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ĞİŞ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.
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
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.
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ı”)
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.
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)
PROGRAM KONTROL VE DÖNGÜ DEYİMLERİ
BUNDAN SONRAKİ DERSLERİMİZDE BU TÜR YAPILAR İLE ÇALIŞACAĞIZ.
PROGRAMLAR NORMALDE SATIR SATIR ÇALIŞTIRILIRLAR. İSTENİRSE BELİRLİ ŞARTLAR ARANARAK PROGRAMIN BİR KISMININ ÇALIŞTIRILMASI VEYA ÇALIŞTIRILMAMASI SAĞLANABİLİR.
IF DEYİMİ
BAZI ŞARTLARIN GERÇEKLEŞTİRİLMESİ VEYA GERÇEKLEŞTİRİLMEMESİ DURUMUNDA AYRI AYRI KODLARI ÇALIŞTIRMAYA YARAR.
if şart then
komutlar.....
else
komutlar.....
end if
dim ogrnot
ogrnot=val(text1.text)
if ogrnot>=50 then
text2.text=“geçti”
else
text2.text=“kaldı”
end if
SELECT CASE DEYİMİ
BİR DEĞİŞKENİN ALDIĞI BİRÇOK DEĞERE GÖRE AYRI KOMUTLARIN ÇALIŞTIRILMASI İÇİN KULLANILIR.
select case değişken
case değer1:komutlar
case değer2,değer3:komutlar
case değer4 to değer5:komutlar
case is>değer6:komutlar
case else
end select
ÖRNEK
dim ogrnot
ogrnot=text1.text
select case ogrnot
case is<0, is>100:text2.text=“notunuzu yanlış girdiniz”
case 1 to 49:text2.text=“kaldı”
case 50: text2.text=“sınırda bir not aldınız”
case 51 to 70:text2.text=“iyi”
case else:text2.text=“pekiyi”
end select
ÖRNEK
dim aileyard,mks
mks=3315
select case combo1.text
case “bekar”: aileyard=0
case “eşçalş”: aileyard=0
case evli1ç: aileyard=int(50*mks1000)*1000
case evli2ç: aileyard=int(100*mks)*1000
case else
end select
DÖNGÜ DEYİMLERİ
BELİRLİ BİR KOMUT GRUBUNUN BELLİ BİR ŞART GERÇEKLEŞİNCEYE KADAR DEFALARCA ÇALIŞMASINI SAĞLAR.
ÇALIŞMA SAYISININ BELLİ OLDUĞU DURUMLARDA “FOR-NEXT” DÖNGÜSÜ, DİĞER DURUMLARDA İSE “WHILE-WEND” YA DA “DO-LOOP” DÖNGÜLERİ KULLANILIR.
FOR-NEXT DÖNGÜSÜ
for sayaç=başldeğeri to bitişdeğeri [step artım]
komutlar......
next
ÖRNEK
1’DEN 20’YE KADAR OLAN SAYILARI YAZDIRAN PROGRAM
dim i
for i=1 to 20
print i
next
ÖRNEK
1’DEN N’E KADAR OLAN SAYILARIN TOPLAMINI BULAN PROGRAM
dim i,top,n
top=0
n=val(text1.text)
for i=1 to n
top=top+i
next
text2.text=top
ÖRNEK
BİR SAYININ FAKTÖRİYELİNİ BULAN PROGRAM
dim i,sayi,fakt
fakt=1
sayi=val(text1.text)
for i=2 to sayi
fakt=fakt*i
next
text2.text=fakt
WHILE-WEND VE DO-WHILE DÖNGÜLERİ
BİR DÖNGÜNÜN KAÇ DEFA ÇALIŞACAĞI BİLİNMİYORSA KULLANILIRLAR.
BELİRTİLEN ŞART GERÇEKLEŞENE KADAR BELİRTİLEN KOMUT BLOKLARI ÇALIŞTIRILIR.
WHILE-WEND DÖNGÜSÜ
while şart
komutlar..........
wend
ÖRNEK
while i=5 ’burada i=5 olana kadar
top=top+i ‘ i değişkeninin değeri top değişkeninine atanır.
wend ‘ i=5 ise döngüden çıkılır.değilse top=top+i işlemi devam eder.
DO-WHILE
Do while şart
Komutlar
Loop
ÖRNEK
Dim i,top,n
n=val(text1.text)
i=0
top=0
Do while i<=n
i=i+1
top=top+i
Loop
Print “toplam=“&top
DO UNTIL-LOOP
Do until şart
Komutlar
Loop
DO-LOOP UNTIL
Do
Komutlar
Loop until şart
DO-LOOP WHILE
Do
Komutlar
Loop while şart