DİZİLER (Arrays) - Cihaddemirli.com

Download Report

Transcript DİZİLER (Arrays) - Cihaddemirli.com

DİZİLER (ARRAYS)
YRD.DOÇ.DR. CİHAD DEMİRLİ
Kaynaklar: Algan, S. (2010). Her Yönüyle C# 4.0, Pusula Yay.,İstanbul
Yanık, M. (2009) . Visual C# 3.0 for .Net Framework 3.5, Seçkin Yay., Ankara
Aktaş, V. (2010). Her yönüyle C# 4.0, Kodlab Yay., İstanbul
Dizi
Bellekte art arda yer alan aynı türden
nesneler kümesine dizi (array)
denilmektedir.
Bir dizi, elemanlarına aynı isimle ulaşır.
Elemanlara arasındaki ayırt edici özellik
bellekteki yerleridir.
Dizi
Dizi elemanı
Dizi indeksi
İndis (indeks)
15
Dizi[0]
365
Dizi[1]
-12
Dizi[2]
5
Dizi[3]
78
Dizi[4]
1
Dizi[5]
Dizi [0]
Dizi adı
İndeks
operatörü
Dizi tanımlama
(tek boyutlu)
Diziler System.Array sınıfından türetilirler.
Array sınıfındaki tüm metotlar kullanılabilir.
int[] Dizi = new int[25];
Bildirim ve tanımlama
Dizi[0]
Dizi[1]
Dizi[2]
…
…
…
ya da
Bildirim
int[] Dizi;
Dizi= new int[25]; Tanımlama
…
…
Dizi[n]
Dizi tanımlama
(tek boyutlu)
Dizinin eleman sayısı
Dizi elemanları tipi
int[] dizi = new int[25];
Dizi türü
new
(operatör veya anahtar sözcük)
Dizi bildirim operatörü
Dizi adı
Burada operatör olarak yeni
nesne oluşturmak için
kullanılmıştır.
Hatırlatma !
New anahtar sözcüğü ile tanımlanan
değişkenlere varsayılan bir değer
atanmaktadır.
Referans türleri için
Nümerik türler için
Bool türü için
‘null’
‘0’
‘false’
Dizi tanımlama

Birden fazla dizi bildirimi;
 int[]

dizi1, dizi2;
Birden fazla dizi tanımlaması;
 int[]
dizi1=new int [10], dizi2=new int[10];
Her iki dizi için bellekte ayrı ayrı alan tahsisi yapılır
(allocation)
Çok Boyutlu Diziler

Matris diziler
 Her

bir dizi elemanı eşit sayıda eleman içerir
Düzensiz (jagged) diziler
 Her
bir dizi elemanı farklı sayıda dizi elemanı
içerir
Matris diziler

Matris yapısındadırlar.
 int
[,] Dizi = new int[3,4]
indis
0
1
2
0
1
2
3
Matris diziler

Boyutlar aynı olmak durumunda değildir.
 int
[,] Dizi = {{1,2},{3,4},{5,6}};
Dizi [0,0]
1
Dizi [0,1]
2
indis
0
1
Dizi [1,0]
3
0
1
2
Dizi [1,1]
4
1
3
4
Dizi [2,0]
5
2
5
6
Dizi [2,1]
6
Matris diziler

2 veya daha fazla boyutlu olabilir (örn. 3
boyutlu).

int [,,] Dizi = {{{1,2},{3,4}},{{5,6}, {7,8}},{{9,10},{11,12}}};
Dizi [0,0,0]
1
Dizi [1,0,0]
5
Dizi [2,0,0]
9
Dizi [0,0,0]
2
Dizi [1,0,1]
6
Dizi [2,0,1]
10
Dizi [0,1,0]
3
Dizi [1,1,0]
7
Dizi [2,1,0]
11
Dizi [0,1,1]
4
Dizi [1,1,1]
8
Dizi [2,1,1]
12
Düzensiz diziler (jagged arrays)


Her bir elemanını ayrı bir dizi gibi
düşünebileceğimiz, farklı elemanlar içeren
dizilerdir.
Dizi dizisi de denmektedir.
int[][] dizi = new int[3][];
dizi[0]= new int [5];
dizi[1]=new int [3];
dizi[2]=new int [4];
dizi[0][0]
dizi[0][1]
dizi[0][2]
dizi[1][0]
dizi[1][1]
dizi[1][2]
dizi[2][0]
dizi[2][1]
dizi[2][2]
dizi[0][3]
dizi[2][3]
dizi[0][4]
Düzensiz (jagged) dizi - örnek
System.Array sınıfı

Diziler Array sınıfından türedikleri için
sahip oldukları bazı metotlar ve özellikler
söz konusudur.
 Özellikler
Dizinin eleman sayısının sabit olup olmadığını verir (bool)
IsFixedSize
IsReadOnly
Dizideki elemanların sadece okunabilir olup olmadığını verir (bool)
Length
Dizideki eleman sayısını verir (int)
Rank
Dizinin boyutunu verir (int)
System.Array sınıfı
 Metotlar
BinarySearch
Tek boyutlu dizilerde binary search algoritmasına göre arama yapar
Clear
Dizinin elemanlarını varsayılan değere çeker
Join
Dizi içerisindeki değerlerin tümünü bir string değişkenine, belirtilen ayırıcı karakter kullanarak
aktarır
Copy
Dizinin bir bölümü bir başka diziye kopyalar. Gerekli tür dönüşümleri ve boxing (kutulama)
işlemi yapılır.
CopyTo
Bir dizinin belirlenen kısmını bir başka diziye kopyalar
GetLength
Dizideki eleman sayısını verir.
GetValue
Dizideki ilgili elemanın değerini verir
IndexOf
Dizi içindeki bir değeri ilk görüldüğü indeksi verir
Reverse
Diziyi tersine çevirir.
SetValue
Bir dizinin bir elemanına değer atar.
Sort
Bir boyutlu dizileri sıralamaya yarar.
CreateInstance
Yeni bir dizi nesnesi oluşturur.
Dizilerin İçerdiklerini Silmek

Clear () metodu dizinin içerdiklerini
siler(default değere dönderir), 3
parametreye sahiptir.

Array.Clear (dizi_degiskeni, baslangic, eleman_sayisi)
 dizi_degiskeni:
elemanları sıfırlanacak dizi
değişkenini
 baslangic: silinecek ilk elemanı
 eleman_sayisi: içeriği silinecek eleman sayısını
Dizilerin İçerdiklerini Silmek
Dizilerin İçerdiklerini Kopyalamak

Copy() metodu [1.tür kullanım] bir dizi
değişkeninin içeriğini başka bir dizi
değişkenine aktarır, 3 parametreye sahiptir.
(kopyalama 0. indisten başlar)

Copy(kaynak_dizi, hedef_dizi, sayi)
kaynak_dizi: kopyalamaya kaynaklık edecek olan
dizi
 hedef_dizi: hedefe durumunda olan dizi
 sayi: içeriği kopyalanacak elemanların sayısı

Copy() [Örnek 1. tür kullanım]
Dizilerin İçerdiklerini Kopyalamak


Copy() metodu [2.tür kullanım] bir dizi değişkeninin
içeriğini başka bir dizi değişkenine belirlenen kadarını
belirlenen indisten itibaren aktarır, 5 parametreye
sahiptir.
Copy(kaynak_dizi, baslagic_indis, hedef_dizi, yazilacak_indis, sayi)





kaynak_dizi: kopyalamaya kaynaklık edecek olan dizi
baslangic_indis: kopyalamanın başlayacağı indis (kaynak)
hedef_dizi: hedefe durumunda olan dizi
yazilacak_indis: yazmanın başlayacağı indis (hedef)
sayi: içeriği kopyalanacak elemanların sayısı
Copy() [Örnek 2. tür kullanım]
Dizilerin İçerdiklerini Kopyalamak


CopyTo() metodu bir dizinin tamamını başka
bir dizinin istenilen yerine (belirlenen indisten
itibaren) aktarır, 2 parametreye sahiptir.
kaynak_dizi.CopyTo( hedef_dizi, sayi)
kaynak_dizi: kopyalamaya kaynaklık edecek olan
dizi
 hedef_dizi: hedefe durumunda olan dizi
 sayi: içeriği kopyalanacak elemanların sayısı

CopyTo() [Örnek]
Dizilerin Eleman Sayısını Öğrenmek
Legth ve GetLegth()

Legth özelliği ve GetLegth() metodu dizi değişkeninin eleman
sayısını öğrenmek için kullanılırlar
Örnek [GetLength()]
Dizileri Sıralamak


Sort() metodu dizi içeriklerini sıralamak
için kullanılır.
Dizi elemanlarını küçükten büyüğe doğru
sıralar.
 Array.Sort(dizi)
 dizi:
elemanları sıralanması istenen dizi değişkeni
Örnek [Sort()]
Dizileri Ters Çevirmek

Reverse() metodu dizi içeriklerini ilk
eleman sona, son eleman başa gelecek
şekilde ters çevirmek kullanılır.
 Array.Reverse(dizi)
 dizi:
elemanları ters çevrilmesi istenen dizi
değişkeni
Örnek [Reverse()]
Dizilerde Arama Yapmak

BinarySearch()

IndexOf()

LastIndexOf()

Contains()
BinarySearch() ile arama




Aranan elemanın indeks numarasını döndürür
Eğer aranan eleman bulunmazsa negatif değer
döndürür
Dizi değişkeninin sıralanması gerekir
Dört farklı sürümü vardır ve bunlardan ikisi;

BinarySearch(dizi, aranan_deger)
ya da

BinarySearch(dizi, aranan_deger, arama_baslangic_indisi)
Örnek [BinarySearch()]
Örnek [BinarySearch()]
IdexOf() ile arama




Aranan elemanın indeks numarasını
döndürür
Eğer aranan eleman bulunmazsa negatif
değer döndürür
Dizi değişkeninin sıralanması gerekmez
Kullanım biçimi;
 IndexOf(dizi,
aranan_deger)
Örnek [IndexOf()]
Örnek [IndexOf()]
LastIndexOf() ile arama





Aranan elemanın indeks numarasını döndürür
Eğer aranan eleman bulunmazsa negatif değer
döndürür
Dizi değişkeninin sıralanması gerekmez
Dizi değişkeninde birden fazla aynı içeriğe
sahip eleman varsa son elemanın numarasını
verir
Kullanım biçimi;

LastIndexOf(dizi, aranan_deger)
Örnek [LastIndexOf()]
Örnek [LastIndexOf()]
Contains() ile arama


Aranan elemanın var olması durumunda
boolean bir değer döndürür
Kullanım biçimi;
 Contains(aranan_deger)
Örnek [Contains()]
Örnek [Contains()]
Dizi İçeriğini Birleştirmek [Join()]


Join() metodu dizi değişkeninin tüm
içeriğini belirlenen ayırıcı kullanarak
birleştirilmiş halini göstermek için
kullanılır.
Kullanım biçimi;
 String.Join(
ayirici_karakter, dizi)
Örnek [Join()]
Örnek [Join()]
Bazı diğer metotlar

Add: ArrayList sonuna eleman ekler


Insert: ArrayList içerisinde belirlenen yere eleman ekler



Basketbol.InsertRange(3,OnikiDevAdam);
RemoveRange: Belirtilen indisten itibaren belirtilen sayıda eleman siler


Basketbol.AddRange(OnikiDevAdam);
InsertRange: Bir diziye belirlenen yerden itibaren başka bir dizi ekler


OnikiDevAdam.Remove(“Hidayet Türkoğlu);
AddRange: Bir diziye başka bir dizi ekler


OnikiDevAdam.Insert(3, “Hidayet Türkoğlu);
Remove: Dizi içerisindeki elemanı siler


OnikiDevAdam.Add(“Hidayet Türkoğlu);
Basketbol.RemoveRange(0,2);
Count: Dizinin eleman sayısını gösterir
Clone: Belirtilen dizinin kopyasını object türünden alır
Döngülerle dizi işlemleri
for ve foreach

for önceki slatylarda açıklanmıştır.
foreach genellikle bir dizinin elemanlarını
ekrana yazdırmak ya da dizinin
elemanlarını tek tek elde etmek amacıyla
kullanılır.
foreach döngüsü dizinin eleman sayısı kadar
döner ve iterasyonda eleman değişkeni
dizinin bir sonraki elemanın değerini verir.
Örnek (foreach):
foreach (char harf in textBox1.Text)
listBox1.Items.Add(harf);
devam edecek…