Tek Boyutlu Diziler (One Dimensional Arrays)

Tek Boyutlu Diziler (One Dimensional Arrays)

Tüm programlama dillerinde olduğu gibi JavaScript dilinde de dizi (array) yapısı son derecede önemli ve faydalı bir veri yapısıdır. Önce dizi yapısının tanımını vererek başlayacağız:

Dizinin tanımı

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:

Dizinin bir adı ve dizi içersindeki bir elemanın dizinin kaçıncı elemanı olduğunu belirten bir indisi (subscript, index) mevcuttur. Örneğin yukarıdaki x adlı dizi için x[3] ifadesi bu dizinin 3 numaralı elemanını yani 22 değerini göstermektedir. Dizinin indisi JavaScript dilinde daima köşeli parantez ile belirlenir:

JavaScript dilinde bir dizinin ilk elemanının indisi daima 0'dır; son elemanın indisi ise diziye ayrılan yer sayısının 1 eksiğine eşittir. Yukarıdaki x dizisinin 6 elemanı vardır; ilk elemanının indisi 0 ve son elemanının indisi de 5'tir.


JavaScript Programı İçinde Dizinin Bildirilmesi

Bir JavaScript programı içinde diziyi tanıtmak için new operatörünü kullanmak gerekir. JavaScript dili her diziyi Array sınıfından bir nesne olarak kabul eder. JavaScript'te bir nesne sınıfından bir nesne görünümü ya da kopyası (instance) elde etmek için kullanılan araç new operatörüdür. new operatörü diziye bellekte belirtilen sayıda yer ayırır yani dinamik bir bellek ayrılması işlemini gerçekleştirir.

var x=new Array(6);
Burada x isimli bir diziye bellekte 6 adet yer ayrılmıştır. Bellekte bu dizinin elemanları


X[0], X[1], X[2], X[3], X[4], X[5]

şeklinde yer alacaktır.
Yukarıda dizi için sadece bildirimde bulunulmuş, yer ayrılmış fakat dizi elemanlarına değer atanmamıştır. Değer atanmadığı sürece dizinin elemanları tanımsızdır (undefined).

Yukarıdaki bildirim aşağıdaki biçimde de yapılabilirdi:


var x;
x=new Array(6);
Bir dizi için eleman sayısı belirtilmeden de bildirimde bulunulabilir:


var x=new Array();
Bu durumda hiçbir elemanı olmayan bir dizi tanımlanmıştır.



Dizi İçin Ne Gereklidir?

Dizi yapısına aynı türden bir veri grubunu tümüyle bellekte saklı tutmanın gerekli olduğu uygulamalarda ihtiyaç duyulur. Örneğin verilerin sıralanması bir veri grubuna ait bazı istatistiksel bilgilerin hesaplanması (örn: standart sapma) gibi uygulamalar bu türde uygulamalardır.
Aşağıda aynı işlemi gerçekleştiren iki farklı JavaScript uygulaması verilmiştir. Her iki uygulama, bilgisayara girilen 5 adet sayının toplamını bulmaktadır.

Dizi kullanmayan sürüm


<HTML>
<HEAD><TITLE> </TITLE></HEAD>
<BODY bgColor="pink" text="blue">
<SCRIPT LANGUAGE=JSCRIPT>
   var sayi,t,i;
   t=0;
   for(i=1;i<=5;i++)
   { sayi=parseInt(window.prompt("BİR SAYI GİRİNİZ..","0"));
     t=t+sayi;
    }
document.write("<H3>TOPLAM="+t+"</H3>");
document.write("<H3>SAYI="+sayi+"</H3>");
</SCRIPT>
</BODY>
</HTML>

Uygulamayı çalıştırdığınızda sizden 5 adet sayı girmenizi isteyecektir. 1,2,3,4 ve 5 değerlerini girelim. Bu değerleri girdiğinizde 1'den 5'e kadar olan sayıları toplayıp ekrana yazacaktır ve sayi değişkeninde de en son girdiğimiz 5 değerini yazdıracaktır.



Dizi kullanan sürüm


<HTML>
<HEAD><TITLE> </TITLE></HEAD>
<BODY bgColor="pink" text="blue">
<SCRIPT LANGUAGE=JSCRIPT>
var sayi,t,i;
sayi=new Array(6);
t=0;
for(i=1;i<=5;i++)
{ sayi[i]=parseInt(window.prompt("BİR SAYI GİRİNİZ..","0"));
t=t+sayi[i];
}
document.write("<H3>TOPLAM="+t+"</H3>");
document.write("<H3>SAYI="+sayi[3]+"</H3>");
</SCRIPT>
</BODY>
</HTML>


Örnekte, dizi kullanmayan sürümde bilgi giriş ortamından girilecek olan sayılar (örn: sırası ile 1,2,3,4,5) toplanacak ve sonuç t=15 olarak hesaplanıp yazdırılacaktır. İkinci sürümde aynı veriler girildiği durumda, yine t=15 şeklinde bu sayıların toplamı yazdırılacaktır.
Bu iki uygulama arasında çok önemli bir fark mevcut: Dizi kullanmayan sürümde, girilen her sayı, sayi adlı değişkende saklanacak ve her seferinde o andaki sayi değişkeninin değeri o ana kadar olan sayılar toplamını saklayan t değişkenine eklenecektir. Her yeni sayı girildiğinde, sayi değişkeninde saklı bulunan bir önceki sayı değeri silinecektir. Bu durumda uygulamanın sonunda, sayi değişkeninde, en son girilen değer olan 5 değeri saklanacaktır. write metodu ile yazdırılan sayı da bu olacaktır.
Dizi kullanmayan sürümde uygulamanın sonunda, "girdiğimiz 3. Sayı neydi?" diye merak eder ve bunu yazdırmak istersek bunun olanaksız olduğunu görürüz. Oysa, ikinci sürümde dizi kullanıldığı için, her sayı, sayi dizisinin bir elemanı olarak sonuna kadar bellekte saklanır. Bu durumda uygulamanın sonunda,

document.write("<H3>SAYI="+sayi[3]+"</H3>");
deyimi ile 3. sayıyı yazdırmamız mümkündür.

Yukarıdaki örnekte sayi dizisine 6 yer ayrılmıştı. Bu yerler sırası ile,


Sayi[0], Sayi[1], Sayi[2], Sayi[3], Sayi[4], Sayi[5],
şeklinde isimlendirilir. Örneklerde sayi[0] elemanına değer atanmamıştır ve uygulamada kullanılmamıştır. Böylece değeri program boyunca tanımsız (undefined) olarak kalmıştır.

Dizi Üzerinde Geçerli Length Fonksiyonu

Bir dizinin eleman sayısını length fonksiyonu yardımıyla bulabilirsiniz. Fonksiyonun kullanım biçimi aşağıdaki gibidir:


diziAdı.length
 
Length fonksiyonu için örnek:

<HTML>
<HEAD><TITLE> </TITLE></HEAD>
<BODY bgColor="pink" text="blue">
<SCRIPT LANGUAGE="JSCRIPT">
var x,t,i;
x=new Array(12);
document.write("<H3>DİZİNİN ELEMAN SAYISI="+x.length+"</H3>");
</SCRIPT>
</BODY>
</HTML>


Aşağıdaki örnekte, bir dizinin elemanlarını 1-10 arasında rastgele sayılar olarak üreten ve bunları bir tabloya yerleştiren JavaScript kodunu inceleyebilirsiniz:

<HTML>
<HEAD><TITLE> </TITLE></HEAD>
<BODY bgColor="pink" text="blue">
<SCRIPT LANGUAGE=JSCRIPT>
var sayi,t,i;
sayi=new Array(6);
t=0;
document.writeln( "<TABLE BORDER = '2' WIDTH = '50%'>" );
document.writeln( "<TR><TD WIDTH = '80'><B>İNDİS</B>"
+ "<TD><B>DEĞER</B></TR>" );
for ( i = 0; i < sayi.length; i++ )
{
sayi[i]=Math.floor(1+Math.random()*10);
document.writeln( "<TR><TD>" + i + "<TD>" +
sayi[ i ] + "</TR>" );
t=t+sayi[i];
}
document.writeln( "</TABLE>" );
document.write("<H3>TOPLAM="+t+"</H3>");
</SCRIPT>
</BODY>
</HTML>


Dizi Elemanlarına Dizinin Tanımı Esnasında Değer Atanması

JavaScript'te dizi elemanlarına dizinin tanımlanması esnasında da değer atanabilir. Bunu gerçekleştirmenin iki farklı biçimi mevcuttur:

1) İlk yöntem:


var x=[5,10,15,20,25];
2) İkinci yöntem:


var x=new Array(5,10,15,20,25);
Her iki atamada da


x[0]=5


x[1]=10


x[2]=15


x[3]=20


x[4]=25

değerleri atanacaktır.

Dizi elemanlarının bazılarına ilk değer ataması yapılıp bazıları atama yapılmadan bırakılabilir. Örneğin;


var x=[5,10,15, ,25];
şeklinde bir atamayla,


x[0]=5


x[1]=10


x[2]=15


x[4]=25


Değerleri atanacak ve x[3] değeri ise tanımsız (undefined) olarak kalacaktır.

Dizi üzerinde işlem yaparken dizi elemanlarına erişmenin bir başka yolu ise for each çevrim yapısını kullanmaktır. Bu yapının kullanılış biçimi aşağıdaki gibidir:


For( var DiziElemani in DiziAdi)
Bu ifadeden sonra,


DiziAdi[DiziElemani]
ifadesiyle bir dizi elemanına erişilebilir. Dizi üzerinde üst sınır kontrolü bu durumda otomatik olarak sağlanmaktadır.

 

Bir diziye ilk değer atama ve dizinin toplamını for/each döngüsüyle bulma

<html>
<head>
<TITLE>İÇİNDEKİLER</TITLE>
</head>
<body bgColor="lightblue" text="darkblue">
<SCRIPT LANGUAGE="javaSCRIPT">
var x=[3,6,9,12,15];
var t=0;
for (var DiziElemani in x )
t+=x[DiziElemani];
document.write("<H3>DİZİ ELEMANLARI TOPLAMI= "+t+"</H3>");
</SCRIPT>
</body>
</html>


Yorumlar

Bu blogdaki popüler yayınlar

İç İçe Döngüler

CSS Bir Elemanın Genişliği ve Yüksekliği

JavaScript Dilinde Fonksiyon Çağırma Teknikleri