NESNEYE YÖNELİK PROGRAMLAMA

advertisement
NESNEYE YÖNELİK
PROGRAMLAMA
Tuna GÖKSU
Dizi Kavramı

Bellekte ardı arda yer alan aynı türden
nesneler kümesine dizi (array) denilir.

Bir dizi içerisindeki bütün elemanlara aynı
isimle ulaşılır.Yani dizideki bütün
elemanların isimleri ortaktır.

Elemanlar arasındaki ayırt edici özellik,
bellekteki yeridir.
Dizi Kavramı

5 elemanlı bir tamsayı dizisi bellekte
aşağıdaki gibi yerleştirilir.
Diziler
C#’da diziler ayrı bir tür olarak
tasarlanmıştır.
 Bütün diziler System.Array sınıfından
türetilmiştir.
 Bir dizi tanımlandığında Array sınıfı
türünden bir nesne tanımlanmış olur.
 Dizinin sınırlarını aşan bir indeks
kullandığımızda derleme hatası oluşmaz,
ancak çalışma zamanında hata oluşur.

Diziler

Dizi tanımlamak için kullanılacak syntax şöyledir:
◦ türBelirleyici[] diziAdı= new türBelirleyici[ElemanSayısı];


türBelirleyici kullanmak istediğiniz veri türüdür.
Örnek:
◦ string [ ] names = new string [100];
◦ int [ ] myData = new int [10];
 int [] dizi;
 dizi = new int [19];
Diziler
new anahtar sözcüğü ile, dizinin her
elemanına temel veri türleri için varsayılan
değer, ilk değer olarak verilmektedir.
 Bu ilk değer; referans türleri için null,
nümerik türler için 0, bool türü için ise
false’tur.

Dizilere İlk Değer Verme
days[0] = 31; // January
 days[1] = 28; // February
 days[2] = 31; // March


Tanım esnasında değer atamak için:
◦ Örnek:




int[] days = new int[12] {31,28,31,30,31,30,31,31,30,31,31};
string[ ] dizi1={“Bilgisayar”,“Mühendisliği”,“Bölümü”};
int [ ] dizi2={5,9,12,56,23};
float [ ] dizi3={8f,39f,324f,23f,2f};
Dizilere İlk Değer Verme
Varyasyonları

int [ ] days = new int [ ] {31,28,31,30,31,30,31,31,30,31,31};
◦ veya

int [ ] days = {31,28,31,30,31,30,31,31,30,31,31};

Derleyici, eleman sayısını hesaplayarak
parantezler arasını otomatik dolduracaktır.

Eleman sayısı belirlenen bir dizinin eleman
sayısı daha sonra değiştirilemez.
foreach anahtar sözcüğü

foreach yalnızca dizilere uygulanabilen bir
döngü yapısıdır. Kullanımı şu şekildedir:
int[] dizi={3,2,6,7};
 foreach(int eleman in dizi)
Console.WriteLine(eleman);

Burada dizi dizisinin bütün elemanları
teker teker ekrana yazdırılıyor.
 Dizinin tüm elemanları ile aynı işlemler
yapılacaksa kullanılmalıdır.

Çok boyutlu diziler

Çok boyutlu diziler kısaca her bir elemanı
bir dizi şeklinde olan dizilerdir, matris
dizileri (düzenli diziler) ve düzensiz diziler
olmak üzere ikiye ayrılır.
Matris Diziler
Her bir dizi elemanının eşit sayıda dizi
içerdiği dizilerdir
 İki boyutlu matris diziler
 3X2 boyutunda iki boyutlu bir matris dizi
aşağıdaki gibi tanımlanabilir:

◦ int[,] dizi=new int[3,2];

veya
◦ int[,] dizi={{1,2},{3,4},{5,6}};
Matris Diziler

İkinci dizinin elemanları indekslerine göre
aşağıdaki gibidir.

dizi[0,0]
dizi[0,1]
dizi[1,0]
dizi[1,1]
dizi[2,0]
dizi[2,1]
→
→
→
→
→
→
1
2
3
4
5
6
Matris Diziler

Bu diziyi matris olarak aşağıdaki gibi
gösterebiliriz:
Çok Boyutlu Dizilere İlk Değer
Verme

int [,] myData = new int [ , ] { {1,2,3}, {4,5,6} };

int [,] myData = new int [ 2 ,3 ] { {1,2,3}, {4,5,6}
};

int [ ] myData = new int [,] {
{1,2,3},
{4,5,6}
};
İkiden fazla boyutlu matris
diziler

Üç boyutlu bir dizi:

int[,,] dizi=new int[3,2,2];
◦ veya

int[,,] dizi={{{1,2},{3,4}},{{5,6},{7,8}},{{9,10},{11,12}}};
Düzensiz Diziler

Her bir dizi elemanının farklı sayıda
eleman içerebileceği çok boyutlu
dizilerdir.

int[][] dizi=new int[3][];
dizi[0]=new int[3];
dizi[1]=new int[4];
dizi[2]=new int[2];
Düzensiz Diziler

Birinci satırda 3 satırı olan ancak sütun sayısı belli
olmayan iki boyutlu bir dizi tanımlanıyor. İkinci, üçüncü
ve dördüncü satırda da bu iki boyutlu dizinin her bir
satırının kaç sütun içerdiği ayrı ayrı belirtiliyor.
Dizilerle Kullanılabilen
Metotlar

GetLength()
◦ Herhangi bir dizinin eleman sayısını int olarak tutar.

CopyTo(Array array, int index)
◦ Çağrıldığı dizinin elemanlarını indexten itibaren array dizisine kopyalar

void Array.Copy(Array source, Array destination, int index)
◦ Source dizisini, destination dizisine indexten itibaren kopyalar.

void Array.Sort(Array array)
◦ Array dizisini sıralar

int Array.BinarySearch(Array array, object value)
◦ Array dizisinde value değerini arar.
Download