kadirselen
Mesaj Sayısı : 550 Kayıt tarihi : 15/08/10 Yaş : 33 Nerden : Denizli Cinsiyet :
| Konu: Vb.NEt İLE DİZİLER Perş. Ağus. 19, 2010 9:54 am | |
| - Merhaba arkadaşlar. Bu makalede Dizileri anlatmaya çalışacağım. İlk önce Dizi nedir diyeceksiniz. Dizi aynı tipteki degiskenleri
bir arada tutar. Bir örnek vermek istiyorum. Örnegin, 100 kisilik adres bilgisi var. Bunun için 100 tane birbirinden farklı degisken tanımlamamız lazım. Bunu bu kadar uzun yapmak hem insanı yorar, hemde programcılıgın mantıgına aykırıdır. Bunun için; "Dim adres(99) As String" dersek çok daha rahatlamış oluruz. Burada neden 100 degilde 99 yazdın diye bir soru sorabilirsiniz. Arkadaşlar Diziler 0(sıfır) dan başlar. Bunun için 99 yazdım. Simdi gelelim dizilerin genel yazım şekillerine. Aşağıda gördüğünüz gibi diziler tanımlanabilir... Dim dizi(boyut) As tipi Dim dizi(0 To 3) As tipi Dim dizi() As String = New String(4) {}
DİZİLERE DEĞER YAZMA: --------------------- Simdi gelelim dizilere değer yazmaya. Dizilere 2 farklı biçimde değer yazılabilir. Bunları sırayla yazalım...
1) Dim iller() As String = New String (3) {} ----> 1 Boyutlu 4 elemanlı bir dizi tanımladık.
iller(0) = "İstanbul" iller(1) = "Ankara" iller(2) = "Amasya" iller(3) = "Mersin"
Arkadaşlar tekrar belirteyim. Diziler Sıfırdan başlar. Bu yüzden Sıfırdan başladım.
2) SetValue() Fonksiyonu. Bir örnekle açıklayayım. Dim dizi(0 To 2) As String dizi.SetValue("İstanbul",1)
Arkadaşlar SetValue fonksiyonunda parantez içindeki tırnak içinde olan DEĞER dir. Virgülden sonraki ise hangi sırada olacagıdır. DİZİLERİ YENİDEN BOYUTLANDIRMA: -------------------------------
Dizileri 3 farklı şekilde boyutlandırabiliriz.
1) ReDim ReDim ile sadece boyuttaki eleman sayısını değiştirebiliriz. Boyut Degiştirilemez! Örneğin:
Dim dizi(2,2) As String ReDim dizi(4,4) dizi(4,4)="Ankara" MsgBox(dizi(4,4))
2) Array.ReSize Array.ReSize ile TEK BOYUTLU dizileri boyutlandırabiliriz. Array.Resize(dizi,4) (Array.Resize dedikten sonra parantez içine dizinin adını daha sonra da kaç boyutlu olacagını yazarız.)
3) CreateInstance Diziler System Array sınıfındadır. Diziler boyutlandırılırken Array sınıfının CreateInstance metodunu kullanabiliriz. Bunun için GetType fonksiyonunu kullanmalıyız. Örnek verecek olursak:
Dim dizi As Array dizi= Array.CreateInstance(GetType(String),2) dizi.SetValue("İstanbul",0) dizi.SetValue("İzmir",1)
(Array.CreateInstance() dedikten sonra parantez içine GetType() yazarız. Buradaki parantez içine dizinin tipini, daha sonra parantezin dısına da kaç boyutlu olacagını yazarız.)
ÖNEMLİ BİR NOT : Daha önceden diziler Sıfırdan başlar demiştik. Burada o kural geçerli degildir. Eleman sayısı 3 degil, 2 dir. Yani 0 ve 1 dir.
Dizileri tanımlarkende boyutlandırabiliriz. Hemen gösterelim:
Dim dizi As Array = Array.CreateInstance(GetType(String),2)
DİZİYİ TANIMLARKEN DEGER YAZMA : -------------------------------- Bir örnek ile açıklayalım... Yazacagım kodlar farklı olacak kodların aralarında açıklamalar sizleri aydınlatacaktır.
Dim web_dili() As String = {"ASP","PHP","HTML","JSP"}
Dim sayac As Integer
'dizinin eleman numaraları 0 | 1 | 2 | 3
For sayac = 0 To web_dili.Lenght -1
ListBox1.Items.Add(web_dili(sayac))
Next
'Dizinin elemanlarına FOR DÖNGÜSÜ ile ulaşılır. ' Simdi diyeceksiniz ki bu nedir.. ' Arkadaşlar. Lenght fonksiyonu dizinin eleman sayısını verir. ' Üretilen değer 0 ile 4 olacaktır. Sıfır ile birlikte bize 5 değer üretecek. Ama bizim deger verdigimiz 4 tane deger var. ' İşte arkadaşlar yukarıdaki sebepten dolayı Lenght fonksiyonundan sonra -1 ifadesini kullandık.
DİZİ DEGERLERİNİ SİLME : ------------------------ Bir örnekle açıklayalım.
Dim dizi() As String = New String(1) {} dizi(0)="ASP" dizi(1)="JSP" Erase dizi
Array.ReSize(dizi,4) dizi.SetValue("XML",0) dizi.SetValue("ASP",1) dizi.SetValue("PHP",2) dizi.SetValue("CSS",3) MessageBox.Show(dizi(2))
Simdi kodların açıklamalarını yazalım. Erase, atanan degerleri siler. Yeniden deger yazmamız gerekir. Array.Resize ve altındaki kodları yazdıktan sonra Erase yi rahatlıkla oradan silebiliriz. Zaten Array.ReSize ile yeniden Boyutlandırıyoruz...
İSTENİLEN DEGERİ SİLME : ------------------------ Erase dizi degerlerinin hepsini siliyordu. İstedigimiz bir degeri silmek için Array sınıfının Clear() metodunu kullanabiliriz. Bir örnek verelim. Dim dizi() As String = New String(3) {} dizi.SetValue("Asp", 0) dizi.SetValue("Php", 1) dizi.SetValue("CSS", 2) dizi.SetValue("HTML", 3) Array.Clear(dizi, 2, 1) MsgBox(dizi(2))
DİZİ DEGİSKENİN SON ELEMAN NO'SUNU ÖGRENME : --------------------------------------------
Dizi degiskeninin son eleman numarasını ögrenmek için UBound fonksiyonu kullanılır. Dizi tek boyutlu ise; UBound("dizi adı") Dizi çok boyutlu ise; UBound("dizi adı","boyut") olarak yapılır. Tek boyutlu diziye örnek verelim:
Dim dizi(0 To 6) As Integer MsgBox("Dizinin Son Eleman NoSu ---> " & UBound(dizi))
Çok boyutlu diziye örnek verelim:
Dim dizi(0 To 3,0 To 6,0 To 19) As Integer MsgBox(UBound(dizi,3))
Arkadaşlar, UBound fonksiyonu EN SON eleman Noyu verir. İsterse dizi 10 Boyutlu olsun her zaman son boyutun eleman no sunu verir!
Arkadaşlar dizi degiskenin son eleman nosunu GetUpperBound fonksiyonu ile de ögrenebiliriz. Dizi degiskenimiz tek boyutlu ise son elemanına GetUpperBound(0) ile ulasılır. Dizi degiskenimiz cok boyutlu ise son elamanına GetUpperBound() diyip dizi boyutunun 1 eksigini yazıyoruz. Bir örnek verelim.
Dim dizi(0 To 4, 0 To 7, 0 To 115) As Integer MsgBox(dizi.GetUpperBound(2))
DİZİ DEGİSKENİN İLK ELEMAN NO'SUNU ÖGRENME : --------------------------------------------
Dizi degiskenin son eleman numarasını ögrenmek icin LBound fonksiyonu kullanılır. Visual Basic .NET te diziler sıfırdan başladıgı icin her zaman sıfır degerini verir. Bir örnek verelim.
Dim dizi(0 To As Integer MsgBox(LBound(dizi))
Arkadaşlar dizi degiskenin ilk eleman nosunu GetLowerBound fonksiyonu ile de ögrenebiliriz
Dim dizi(0 To 4, 0 To 3) As Integer MsgBox(dizi.GetLowerBound(1))
DİZİ DEGİSKENİN ELEMAN SAYISINI BULMA : --------------------------------------- Dizi degiskenin eleman sayısını Lenght fonksiyonu ile ögrenebiliriz. Hemen bir örnek ile gösterelim.
Dim dizi() As String = New String(3) {} dizi.SetValue("ASP", 0) dizi.SetValue("PHP", 1) dizi.SetValue("CSS", 2) dizi.SetValue("C#", 3) MsgBox("Dizi Degiskenin Elaman Sayısı " & dizi.Length)
Birde iki boyutlu dizinin eleman sayısını ögrenelim...
Dim dizi(0 To 3, 0 To 3) As Integer ' 1. Boyut : ' Satır--> 0 To 3 --->0,1,2,3 ---> 4 Elemanlı ' 2. Boyut : ' Sütun--> 0 To 3 --->0,1,2,3 ---> 4 Elemanlı ' Satır =4 ' Sütun =4 MsgBox(dizi.Length) Teşekkürler.
| |
|