Bellekte ard arda yer alan aynı türden nesneler kümesine dizi (array) denir. Dizi içerisinde bulunan tüm elemanlara aynı isimle ulaşılır. Bir dizinin elemanlarına [ ] index operatörü ile ulaşılır.
Yukarıdaki şekilde “dizi” isimli 7 elemanlı bir dizi görülmektedir. Bu dizinin ilk elemanına dizi[0], son elemanına dizi[6] şeklinde erişilir.
Dizi Tanımlama
C# dilinde bütün diziler System.Array sınıfından türetilir. Bir dizinin oluşturulması iki farklı şekilde yapılabilir. Birinci yöntem bildirim ve tanımlamanın aynı satırda yapılması;
1 2 3 |
string[] kisiler=new string[20] |
şeklindedir. Burada 20 elemanlı kisiler isminde string türünden bir dizi tanımlanmıştır. İkinci yöntem olarak diziyi aşağıdaki şekilde bildirim ve tanımlama ayrı satırda olacak şekilde oluşturmak istersek;
1 2 3 4 |
string[] kisiler; kisiler=new string[20]; |
oluşturabiliriz. Bu 2 yöntem dışında dizi oluşturuluken içine değer girmek için şu yöntem kullanılabilir.
1 2 3 |
string[] kisiler={"Ahmet","Mehmet","Ayşe","Fatma","Canan"} |
Burada da yine kisiler isminde bir dizi oluşturularak aynı satırda dizye değer girilmei sağlanmıştır. Yukarıdaki dizide “Mehmet”isml elemana erişmek için;
1 2 3 |
string isim=kisiler[1]; |
Son elemanına erişebilmek için;
1 2 3 |
string isim=kisiler[4]; |
İlk elemanına erişmek için ise;
1 2 3 |
string isim=kisiler[0]; |
Örnek1: 10 elemanlı isimler isminde bir dizi oluşturarak ekranda foreach döngüsü kullanarak yazdıralım.
1 2 3 4 5 6 7 8 9 10 11 12 |
static void Main(string[] args) { string[] kisiler = { "Ahmet", "Ali", "Veli", "Ayşe", "Fatma", "Canan", "Gül", "Burak", "Beyza", "Enes" }; foreach(string isim in kisiler) { Console.WriteLine(isim); } Console.ReadKey(); } |
Örnek 2: 30 elmanlı diziye 0-100 arası rasgele sayı girişi yapan ve listbox‘ a yazdıran program.
1 2 3 4 5 6 7 8 9 10 11 12 |
private void button1_Click(object sender, EventArgs e) { Random rnd=new Random(); int[] sayilar = new int[30]; for(int i=0;i<30;i++) { sayilar[i] = rnd.Next(0, 100); listBox1.Items.Add(sayilar[i]); } } |
Ekran çıktısı:
Sort Metodu: Array metodunda bulunan Sort metodu kullanılarak dizi içerisinde sıralama yapılabilir.Yukarıdaki örnekte uygulamak istersek kodları aşağıdaki şekilde düzenleyebiliriz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
private void button1_Click(object sender, EventArgs e) { Random rnd=new Random(); int[] sayilar = new int[30]; for(int i=0;i<30;i++) { sayilar[i] = rnd.Next(0, 100); } Array.Sort(sayilar); foreach(int eleman in sayilar) { listBox1.Items.Add(eleman); } } |
Programı çalıştırdığımızda ekran çıktısı şöyle olacaktır.
Reverse Metodu: Reverse metodu Diziyi ter çevirmek için kullanılmaktadır. Reverse metodunu aşağıdaki örnekte olduğu gibi sort metodundan sonra kullanarak büyükten küçüğe sıralama yaptırabiliriz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
private void button1_Click(object sender, EventArgs e) { Random rnd=new Random(); int[] sayilar = new int[30]; for(int i=0;i<30;i++) { sayilar[i] = rnd.Next(0, 100); } Array.Sort(sayilar); Array.Reverse(sayilar); foreach(int eleman in sayilar) { listBox1.Items.Add(eleman); } } |
IndexOf Metodu : Dizi içinde istenen ifadeyi arar. Bulunduğunda index numarası getirilir, bulunmadığında -1 ifadesi geri döner.Kullanımı şu şekildedir.
1 2 3 |
int sira = Array.IndexOf (aranacak dizi, aranacak ifade); |
Aşağıdaki örneğimizde dizi içerinde indexOf kullanılarak arama işlemi yapılmaktadır.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
static void Main(string[] args) { string[] iller = new string[] { "İstanbul", "Bursa", "Konya", "Adana", "Edirne", "Tekirdağ", "Kırklareli", "Çorlu", "Çanakkale", "Sakarya" }; Console.Write("Aradığınız İli Girin:"); string aranan_il = Console.ReadLine(); int sira= Array.IndexOf (iller, aranan_il); if (sira==-1) Console.Write("İl bulunamadı"); else Console.Write("Aradığınız il {0}.sırada bulundu", sira+1); Console.ReadKey(); } |
Programımızı çalıştırdığımızda ekran çıktısı aşağıdaki şekilde olacaktır.
LastIndexOf Metodu: Kullanımı IndexOf gibidir. Dizi içerisinde aramaya sondan başlar.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
static void Main(string[] args) { string[] iller = new string[] { "İstanbul", "Bursa", "Konya", "Adana", "Edirne", "Tekirdağ", "Kırklareli", "Çorlu", "Çanakkale", "Sakarya" }; Console.Write("Aradığınız İli Girin:"); string aranan_il = Console.ReadLine(); int sira= Array.LastIndexOf (iller, aranan_il); if (sira==-1) Console.Write("İl bulunamadı"); else Console.Write("Aradığınız il {0}.sırada bulundu", sira+1); Console.ReadKey(); } |
=======================================
Çok Boyutlu Diziler: Genel olarak çok boyutlu diziler her bir elemanı bir dizi şeklinde olan dizilerdir. Aşağıdaki çok boyutlu diziyi inceleyelim.
1 2 3 4 5 6 7 8 9 10 11 12 |
int[,] dizi = new int[3,3]; dizi[0, 0] = 5; dizi[0, 1] = 3; dizi[0, 2] = 4; dizi[1, 0] = 8; dizi[1, 1] = 15; dizi[1, 2] = 12; dizi[2, 0] = 6; dizi[2, 1] = 9; dizi[2, 2] = 10; |
Oluşturulan bu diziye indexlerine göre değer ataması yukarıdaki şekilde yapılabilir.
Dizilerle yapılan öğrenci otomasyonu console application hali var mıdır acaba sizde yoruma ekleyebilir yada bana mail atabilirmisiniz.
Otomasyon neleri kapsıyor. Daha detaylı açıklarsanız takıldığınız noktalarda yardımcı olabiliriz.
öğrenci öğretmen bölüm girişi olacak ve öğrenci öğretmen bölüm listeleme yapılacak her girilen öğrenci id ye sahip olacak erkek kız öğrenci kontrolü yapılacak.