DİZİLER (ARRAYS) Değişkenler, içerisinde tek bir değer tutabilen yapılardır. Örneğin haftanın günlerini değişkenlerde tutmak istersek, her bir gün adı için bir değişken tanımlamak gereklidir. string gun1, gun2 ,gun3, gun4, gun5, gun6, gun7 gibi. Örneğin ay isimleri, bir sınıftaki öğrenci listesi, vb. Bu ve buna benzer listeler oluşturmak gerektiğinde, bu işlemler için değişkenler yeterli değildir. Bir grup bilgi tek bir başlık altında tutulmak istendiğinde dizi (array) yapısı kullanılmalıdır. Bu gibi örneklerde diziler kullanılarak hem tanımlama ve verilere erişme işlemleri daha kolay olacak, hem de daha düzenli program geliştirme imkanı sağlanacaktır. Özetle, bir dizi aynı veri tipinde ve belirtilen miktardaki elemanı içerisinde barındıran bir veri yapısıdır. Her bir dizi elemanına erişmek için dizi içerisindeki indeks değerleri kullanılır. Indeks numarası 0 dan başlayarak ardışık sayılardan oluşur. Örneğin örnekteki gunler dizisi 7 elemanlı bir dizidir. Bu dizinin indeks numaraları 0 ile 6 arasındadır. İlk elemanın indeks numarası 0 (sıfır), son elemanın indeks numarası ise 6’dır. Yani n elemanlı bir dizinin indeks numaraları 0’dan (n-1)’e kadardır. Program içerisinde dizi içerisindeki bir elemana diziadi[index_numarasi] şeklinde erişilebilir. Bir dizi tanımlarken diziye değişkenlerdeki gibi bir isim verilerek, içerisinde tutacağı değere uygun veri tipi belirlenir. Veri tipinin hemen yanında bulunan içi boş köşeli parantez ( [ ] ) işaretleri tek boyutlu bir dizi olduğunu belirtir. Dizinin kaç değer tutacağı tanımlama sırasında elaman sayısı verilerek belirtilir. Yani; 1. YOL : Dizi, tutacağı değerlere uygun veri tipi (int, string gibi veri tipleri) ile birlikte, kaç farklı değeri tutacağını gösteren eleman sayısı belirtilerek tanımlanır. Yazım Şekli : veritipi[] diziadi=new veritipi[dizide tutulacak eleman sayisi]; Örnek Kod: int[] sayilar = new int[10]; //10 elemanlı int tipinde değerler tutabilecek bir dizi string[] mevsimler = new string[4]; //4 elemanlı mevsimleri tutabilecek string tipinde bir dizi 2. YOL : Birinci yoldaki tanımlama 2 satıra bölünerek aşağıdaki gibi bir tanımlama yapılabilir. Yazım Şekli : veritipi[] diziadi; diziadi = new veritipi[dizide tutulacak eleman sayisi]; Örnek Kod: int[] sayilar; sayilar=new int[10]; string[] mevsimler; mevsimler = new string[4]; 3. YOL : Bir dizi tanımlarken dizide tutulacak değerler tanımlama sırasında girilebilir. Yazım Şekli : veritipi[] diziadi = new veritipi[dizide tutulacak eleman sayisi] {dizide tutulacak değerler}; veya yukarıdakinin daha kısa şekliyle aşağıdaki gibi tanımlama yapılabilir veritipi[] diziadi = {dizide tutulacak değerler buraya herbiri virgül ile ayrılarak yazılır}; Örnek Kod: int[] sayilar = new int[10]{11,2,5,30,4,8,10,88,90,6}; //10 elemanlı sayılar dizisi, dizinin tutacağı elemanlar tanımlama sırasında diziye atandı string[] mevsimler = new string[4]{"ilkbahar", "yaz", "sonbahar", "kış" }; //4 elamanlı tanımlama sırasında değerleri girilen string tipinde bir dizi NOT 1! (3. yol için) Dizinin elemanları string tipinde ise her bir eleman çift tırnak (") işaretleri arasına yazılmalıdır. Sayılardan oluşan elamanlar (int, double vb.) doğrudan yazılabilir. Tek bir karakterden (char tipinden) oluşan elamanlar ise her biri tek tırnak (') işaretleri arasında yazılmalıdır. Dizide tutulacak her bir değer tanımlama sırasında diziye eklenirken, değerler arasında virgül (,) işareti kullanılır. NOT 2! (3. yol için) int[] sayilar = new int[10]{11,2,5,30,4,8,10,88,90,6}; string[] mevsimler = new string[4]{"ilkbahar", "yaz", "sonbahar", "kış" }; Bu örnekteki gibi bir kullanımda eleman sayısı belirlenmiş ise başlangıçta değer atama yapılırken eleman sayısı kadar değer girmek zorunludur. -----------int[] sayilar ={11,2,5,30,4}; //5 değer girildiği için dizi 5 elemanlı olarak oluşur. string[] mevsimler = {"ilkbahar", "yaz", "sonbahar", "kış" }; //4 değer girildiği için dizi 4 elemanlı olarak oluşur Örnekteki gibi dizinin eleman sayısı tanımlama sırasında belirtilmemiş ise, dizinin eleman sayısı diziye girilen değer kadardır. Görüldüğü gibi bir birine benzer şekillerde birkaç farklı yol ile dizi tanımlamak mümkündür. Tanımlama şekli programcının yazım şekline veya çözülmesi gereken probleme göre tespit edilerek uygun olan bir tanımlama kullanılabilir. Örnek 1: Haftanın günlerini bir dizi içerisine atayarak ekranda gösterin. 1 2 3 4 5 6 7 string[] gunler = { "Pazartesi", "Salı", "Çarşamba", "Perşembe", "Cuma", "Cumartesi", "Pazar" }; for (int i = 0; i < gunler.Length; i++) { Console.WriteLine(gunler[i]); } Örnek 2: Bir dizi içerisindeki tüm sayıları toplayarak ortalamasını bulun. 1 2 3 4 5 6 7 8 9 int[] sayilar = { 23, 45, 18, 89, 65, 4 }; double toplam=0, ort=0; for (int i = 0; i < sayilar.Length; i++) { toplam += sayilar[i]; } ort = toplam / sayilar.Length; Console.WriteLine("Ortalama:" + ort); Örnek 3: Klavyeden girilen 10 adet sayının ortalamasını bulan programı Konsol uygulaması şeklinde yapalım. 1 2 3 4 5 6 7 8 9 1 0 1 1 int[] sayilar = new int[10]; int toplam = 0; for (int i = 0; i < sayilar.Length; i++) { Console.Write("Klavyeden {0}. sayıyı girin:", i+1); sayilar[i] = Convert.ToInt32(Console.ReadLine()); toplam += sayilar[i]; } double ort = toplam / 10d; Console.WriteLine("Ortalama=" + ort); Console.ReadKey(); Örnekte bir for döngüsü yardımıyla 10 adet sayı klavyeden girildi. Her sayı girildiğinde girilen sayı toplam değişkenine eklendi. Sayı giriş işlemi bittiğinde ise ortalama hesaplanıp ekranda gösterildi. Gerekirse başka bir döngü yardımıyla girilen her sayı sırayla ekranda gösterilebilir. Örnek 4: Alfabedeki tüm harfleri diziye atan ve sırayla yan yana yazdıran programı yapın. 1 2 3 4 5 6 7 8 9 char[] alfabe = new char[26]; int sira = 0; for (char i = 'a'; i <='z' ; i++) { alfabe[sira] = i; Console.Write(alfabe[sira]); sira++; } Örnek 5: Klavyeden girilen 10 adet sayıdan 100’den büyük olanları bir diziye atan programı yapın. 1 2 3 4 5 6 7 8 9 int[] dizi = new int[10]; for (int i = 0; i < dizi.Length; i++) { Console.Write("Klavyeden {0}. sayıyı girin:", i + 1); int sayi= Convert.ToInt32(Console.ReadLine()); if (sayi > 100) dizi[i] = sayi; } Örnek 6: Tanımlanan sayılar dizisi içerisindeki çift sayıları ekrana yazdıran c# konsol uygulaması 1.int[]sayilar={4,5,-15,22,-34,3,0,7,43,100}; 2.int toplam=0; 3.foreach(int sayi in sayilar) 4.{ 5. if (sayi%2 ==0) 6. Console.WriteLine(sayi); 7.} 8. 9.Console.ReadKey(); Örnek 7: Tanımlanan sayılar dizisi içerisindeki sayıların negafit, pozitif ve işaretsiz olma durumlarını yanına yazdıran C# konsol uygulaması int[] sayilar={4,5,-15,22,-34,3,0,7,43,100}; int toplam=0; foreach(int sayi in sayilar) { if (sayi>0) Console.WriteLine(sayi + " Pozitif"); else if (sayi<0) Console.WriteLine(sayi + " Negatif"); else Console.WriteLine(sayi + " İşaretsiz"); } Console.ReadKey();