DİZİLER 1. Giriş Dizi, bilgisayar belleğinde aynı isim altında genellikle aynı tipten çok sayıda veriyi bir arada saklayan veri yapısıdır. Aşağıda, x adlı bir dizinin mantıksal görünümü verilmiştir: 4 2 7 22 11 3 0 1 2 3 4 5 Bir dizi tanımlandıktan(bildirildikten) sonra, dizinin bütün elemanları bellekte peş peşe saklanır. Bu yüzden dizilere tek bir isim altında çok sayıda değişken içeren bellek bölgesi de denir. Buna göre, bir diziyi dizi yapan iki temel özellik vardır: dizi elemanların bellekte (program çalıştığı sürece) sürekli biçimde bulunması dizi elemanların aynı türden değişkenler olması Diziler tek, iki ya da daha çok boyutlu olabilirler. Tek boyutlu diziler vektör, iki boyutlu diziler matris olarak düşünülebilir. 2. Dizilerin Tanımlanması Dizinin bir adı ve dizi içerisindeki elemanın dizinin kaçıncı elemanı olduğunu belirten bir indisi (subscript, index) vardır. Örneğin, yukarıdaki x adlı dizi için x ifadesi bu dizinin 3 numaralı elemanını yani 22 değerini göstermektedir. C Programlama Dili'nde, bir dizi hangi tipte tanımlanmış olursa olsun başlangıç indisi her zaman 0'dır. Bir dizinin bildirim işleminin genel biçimi şöyledir: veriTipi dizi_adı[eleman_sayısı]; Veri tipi (data type) program içinde kullanılacak değişken, sabit, fonksiyon isimleri gibi tanımlayıcıların tipini, yani bellekte ayrılacak bölgenin büyüklüğünü, belirlemek için kullanılır. Bir programcı, bir programlama dilinde ilk olarak öğrenmesi gereken, o dile ait veri tipleridir. Çünkü bu, programcının kullanacağı değişkenlerin ve sabitlerin sınırlarını belirler. C programlama dilinde dört tane temel veri tipi bulunmaktadır. Bunlar: char int float double Örneğin, 5 elemanlı, kütle verilerini bellekte tutmak için, kutle dizisi şöyle tanımlanabilir: float kutle[5]; DİZİLER Bu dizinin elemanlarına bir değer atama işlemi şöyle yapılabilir: kutle[0] kutle[1] kutle[2] kutle[3] kutle[4] = = = = = 8.471 3.683 9.107 4.739 3.918 Örneğin 30 kişilik bir sınıftaki öğrencilerin bir derse ait notlarını bellekte tutmak için notlar dizisi şu şekilde tanımlanabilir. int notlar [30]; Bu dizinin elemanlarına bir değer atama işlemi şöyle yapılabilir: notlar[1]=65 notlar[2]=80 notlar[2]=58 … notlar[29]=75 NOT !!! 1. elemanın indisi 0, 5. elemanın indisinin 4 olduğuna, n. elemanın indisinin (n-1) olduğuna dikkat edin. 3. Dizilere Başlangıç Değeri Verme Bir diziye başlangıç değerleri aşağıdaki gibi kısa formda atanabilir: float kutle[5]= { 8.471, 3.683, 9.107, 4.739, 3.918 }; int maliyet[3] = { 25, 72, 94 }; double a[4] = { 10.0, 5.2, 7.5, 0.0}; Bir dizinin uzunluğu belirtilmeden de başlangıç değeri atamak mümkündür. int a[] = { 100, 200, 300, 400 }; float v[] = { 9.8, 11.0, 7.5, 0.0, 12.5}; Derleyici bu şekilde bir atama ile karşılaştığında, küme parantezi içindeki eleman sayısını hesaplar ve dizinin o uzunlukta açıldığını varsayar. Yukarıdaki örnekte, a dizisinin 4, v dizisinin 5 elemanlı olduğu varsayılır. 4. Dizileri Yazdırma/Okuma printf ve scanf fonksiyonları bir dizinin okunması ve yazdırılması için de kullanılır. Örneğin bir A dizisinin aşağıdaki gibi bildirildiğini varsayalım: int A[10]; Bu dizinin elemanlarını klavyeden okumak için: for(i=0; i<10; i++) scanf("%d",&A[i]); DİZİLER Daha sonra bu değerlerini ekrana yazmak için: for(i=0;i<10;i++) printf("%d\n",A[i]); 5. Dizilerin akış diyagramında gösterimi Örnek: 10 elemanlı bir diziye bilgi girişi yapan ve diziyi görüntüleyen akış şeması Örnek: 15 elemanlı bir sayı dizisine bilgi girişi yapılarak elemanların toplamını bulan akış şeması