Java Dizileri
Java'cılara selamlar :)
Nihayet döngülerden sonra bugün yep yeni bir konuya giriş yapıyoruz: Diziler (arrays)
Dizileri kısaca anlatmak gerekirse şöyle diyebiliriz; aynı tipten değişkenlerin ya da değerlerin bir araya getirilip tek bir değişkene atanmasıdır.
Birçok verinin bir araya getirilmesi ve daha sonra başka bir noktaya taşınması olayı yazılım dünyasında sıkça kullanılmaktadır.Bunun sebebi verilerin tek tek taşınmasına nazaran hem daha performanslı hem de daha kolay
bir şekilde kullanım sunmaktadırlar.
Dizi değişkenleri referans tipler olduğu için dizi tipinden "new" deyimiyle instance alınıp oluşturulabilmektedirler.Dizinin tipi değer tiplerinden (int,string,bool) herhangi biri olabilir ve bir dizi hangi değer tipiyle oluşturulmuşsa içeriğine sadece o değer tipleri doldurulabilir.
Dizilerle ilgili bilmemiz gereken index kavramı ise dizinin içerisindeki dolu ya da boş olsun her bir alana denilmektedir ve diziler daima sıfırıncı indexten başlarlar.
Dizileri anlamak için kafanızda nesneleri kolilere doldurmayı hayal edin; elinizde 10 gözü olan küçük karton bir koli var ve bu küçük koliye bardakları dolduruyorsunuz.Bardakları düzenli bir şekilde doldurduğunuzu varsayarsak en başa koyduğunuz bardak sıfırıncı indexte yer almaktadır.Dolayısıyla son bardağını 9.uncu indexe karşılık gelmektedir.
Bu örnek dizileri anlamak konusunda yeterlidir umarım,şimdi diziler nasıl tanımlanır görelim:
diziTipi[] dizi=new diziTipi[boyut];
Dizi tipi olarak değer tiplerinden birini yazdıktan sonra indist adını verdiğimiz [ ] işaretleri açılır ve atama operatöründen (=) sonra "new" deyimiyle aynı dizi tipi yazılarak içeriğine kaç eleman yazılacaksa o kadar boyut belirlenir.
Örneğin aşağıda 10 eleman kapasiteli bir String tipinde dizi oluşturulmuştur:
String[] dizi=new String[10];
Bu dizi içeriğine sadece ve sadece String değer tipinde değişkenler ya da değerler almaktadır.
Diziyi yukarıdaki gibi tanımladıktan sonra henüz hiçbir şey ifade etmemektedir çünkü dizi oluşturulmuş ancak içeriği boştur.Bir diziyi doldurmanın yolu ise yukarıdaki bardak-karton örneği gibi sıfırıncı indexten başlanarak her indexe değer atanması ile gerçekleştirilir:
dizi[0]="Kalem";
dizi[1]="Defter";
dizi[2]="Silgi";
gibi 7 değer daha girilebilmesi mümkündür.Dizilerde bir değer birden fazla girilebilir ancak dizinin boyutu aşılmamalıdır,aksinde program hata verir.
Peki dizilere elemanları ekliyoruz,nasıl bu elemanlara ulaşabiliriz?
Örneğin dizideki "Defter" değerini geri alabilmek için;
String gelenDeger=dizi[1];
şeklinde bir geri çağırma sağlayabiliriz.
Buraya kadar dizilerin genel kullanımını öğrendik,şimdi NetBeans IDE'mizi açalım ve programdan bize çift sayıları içeren int tipinde bir dizi oluşturmasını isteyelim.Öncelikle JFrame tasarımımızı yapalım:
JFrame tasarımımızı yaptıktan sonra kullanıcının girdiği sayı ve index değerlerini değişkenlerimize atıyoruz:
Şimdi diziye çift sayıları nasıl dolduracağız?
Önceki makalelerimizde hatırlarsanız döngüleri öğrenmiştik ve döngüler her dönüşleri sırasında içeriğindeki kodları çalıştırdıkları gibi o anda dönen bir değer sunar demiştik,işte o döngülerden şimdi for döngüsünü kullanarak kullanıcının istediği sayıya kadar bir döngü döndürecek ve döngüden gelen çift sayıları diziye ekleyeceğiz.
Öncelikle dizimizi tanımlayalım,dizimizin kapasitesi kullanıcının veridiği sayının yarısı kadar olacak çünkü çift sayılar tüm sayıların yarısına eşit olmaktadır:
Dizimizi tanımladığımıza göre for döngümüzü kurabiliriz:
int tipindeki dizimiz doldurmaya hazırız ama diziye elemanı nasıl ekleyeceğiz?
Dizilerde index konusunu anlatırken sıfırdan başladığını öğrendiğimize göre öncelikle dizinin kaçıncı elemanına çift sayıyı ekleyeceğimizi biliyoruz demektir,o yüzden kendimize başlangıç değeri sıfır olan bir değişken tanımlamalıyız.
Bu değişkeni if koşulu içerisinde 1 sayı artırarak sıradaki boş indeximizi hazırlayacağız ve bir sonraki for dönüşünde belirlediğimiz bu indexe değerimizi ekleyeceğiz:
Dizimizin boş indexini belirledikten sonra atama operatörüyle 109.satırda olduğu gibi gelen çift sayıyı o an ki boş indexe ekleyeceğiz.
Peki tüm diziyi bu şekilde doldurduğumuzda ne olacak?
JFrame'e baktığımızda kullanıcı butona tıkladığında yazdığı indexte hangi sayının olduğunu görmek istiyor,dolayısıyla dizi dolduğunda kullanıcıya dizinin istediği elemanını vereceğiz.Tabi bu işlemi yapmak için dizinin tamamnını dolmuş olması gerekiyor,o yüzden for döngüsü dışında yazmalıyız:
Şimdi programımızı çalıştırıyor ve test ediyoruz:
Peki program nasıl çalışıyor?
Kullanıcı butona tıklar tıklamaz int tipte "sayi" ve "index" değişkenleri tanımlanıyor,ardından kullanıcı hangi sayıya kadar çift sayıları istiyorsa 100.satırda çift sayıları içerecek dizimiz oluşturuluyor.
Dizilerin 0.ıncı indexten başladığını bildiğimize göre oluşturduğumuz bu diziye başlangıç noktası olarak yine int tipte "siradakiBosIndex" adında bir değişken tanımlıyor ve değerini sıfır veriyoruz.
Ardından 105.satırda kullanıcının istediği sayıya kadar dönen bir for döngüsü yazıyoruz ve döngü her döndüğü esnada bir değer veriyor.Gelen bu değerin çift olup olmadığını 107. satırda 2'ye bölümünden kalanın sıfır olup olmadığına bakıyoruz,bu if koşulu bize çift olup olmadığını bildirecektir.
Eğer gelen sayı çiftse 109. satırda "ciftSayilar" dizisinin ilk boş indexine o sayıyı yerleştiriyoruz,ardından for döngüsü bize bir sonraki çift değeri verdiğinde diziye eklemek için yeni bir boş index yaratmalıyız.Bunun için 113. satırdaki değişkenimizin değerini 1 artırıyor ve boş indeximizi hazır hale getiriyoruz.
For döngüsü bu şekilde her dönüşünde diziye çift sayıları ekledikten sonra döngü sona erecek ve dizimiz tamamen çift sayıları içermiş olacak.
Son aşama olarak kullanıcının istediği indexteki sayıyı yakalamak için 117. satırda istenen değeri yakalıyor, 119. satırda ekrana yansıtmak için JOptionPane sınıfına ait showMessageDialog metodunu kullanıyoruz.
Görüldüğü gibi dizi kavramı olmasaydı bu şekilde bir uygulama yapmak için belki saatlerimizi harcayacaktık ancak diziler sayesinde yazılımcıların işleri oldukça kolaylaşıyor ve daha rahat algoritmalar kurabiliyoruz.
Dizilerle ilgili başlangıç olarak şimdilik buraya kadar yeterli diye umuyorum,bir sonraki makalede görüşmek üzere hoşçakalın :)
Projeyi İndir
Nihayet döngülerden sonra bugün yep yeni bir konuya giriş yapıyoruz: Diziler (arrays)
Dizileri kısaca anlatmak gerekirse şöyle diyebiliriz; aynı tipten değişkenlerin ya da değerlerin bir araya getirilip tek bir değişkene atanmasıdır.
Birçok verinin bir araya getirilmesi ve daha sonra başka bir noktaya taşınması olayı yazılım dünyasında sıkça kullanılmaktadır.Bunun sebebi verilerin tek tek taşınmasına nazaran hem daha performanslı hem de daha kolay
bir şekilde kullanım sunmaktadırlar.
Dizi değişkenleri referans tipler olduğu için dizi tipinden "new" deyimiyle instance alınıp oluşturulabilmektedirler.Dizinin tipi değer tiplerinden (int,string,bool) herhangi biri olabilir ve bir dizi hangi değer tipiyle oluşturulmuşsa içeriğine sadece o değer tipleri doldurulabilir.
Dizilerle ilgili bilmemiz gereken index kavramı ise dizinin içerisindeki dolu ya da boş olsun her bir alana denilmektedir ve diziler daima sıfırıncı indexten başlarlar.
Dizileri anlamak için kafanızda nesneleri kolilere doldurmayı hayal edin; elinizde 10 gözü olan küçük karton bir koli var ve bu küçük koliye bardakları dolduruyorsunuz.Bardakları düzenli bir şekilde doldurduğunuzu varsayarsak en başa koyduğunuz bardak sıfırıncı indexte yer almaktadır.Dolayısıyla son bardağını 9.uncu indexe karşılık gelmektedir.
Bu örnek dizileri anlamak konusunda yeterlidir umarım,şimdi diziler nasıl tanımlanır görelim:
diziTipi[] dizi=new diziTipi[boyut];
Dizi tipi olarak değer tiplerinden birini yazdıktan sonra indist adını verdiğimiz [ ] işaretleri açılır ve atama operatöründen (=) sonra "new" deyimiyle aynı dizi tipi yazılarak içeriğine kaç eleman yazılacaksa o kadar boyut belirlenir.
Örneğin aşağıda 10 eleman kapasiteli bir String tipinde dizi oluşturulmuştur:
String[] dizi=new String[10];
Bu dizi içeriğine sadece ve sadece String değer tipinde değişkenler ya da değerler almaktadır.
Diziyi yukarıdaki gibi tanımladıktan sonra henüz hiçbir şey ifade etmemektedir çünkü dizi oluşturulmuş ancak içeriği boştur.Bir diziyi doldurmanın yolu ise yukarıdaki bardak-karton örneği gibi sıfırıncı indexten başlanarak her indexe değer atanması ile gerçekleştirilir:
dizi[0]="Kalem";
dizi[1]="Defter";
dizi[2]="Silgi";
gibi 7 değer daha girilebilmesi mümkündür.Dizilerde bir değer birden fazla girilebilir ancak dizinin boyutu aşılmamalıdır,aksinde program hata verir.
Peki dizilere elemanları ekliyoruz,nasıl bu elemanlara ulaşabiliriz?
Örneğin dizideki "Defter" değerini geri alabilmek için;
String gelenDeger=dizi[1];
şeklinde bir geri çağırma sağlayabiliriz.
Buraya kadar dizilerin genel kullanımını öğrendik,şimdi NetBeans IDE'mizi açalım ve programdan bize çift sayıları içeren int tipinde bir dizi oluşturmasını isteyelim.Öncelikle JFrame tasarımımızı yapalım:
JFrame tasarımımızı yaptıktan sonra kullanıcının girdiği sayı ve index değerlerini değişkenlerimize atıyoruz:
Şimdi diziye çift sayıları nasıl dolduracağız?
Önceki makalelerimizde hatırlarsanız döngüleri öğrenmiştik ve döngüler her dönüşleri sırasında içeriğindeki kodları çalıştırdıkları gibi o anda dönen bir değer sunar demiştik,işte o döngülerden şimdi for döngüsünü kullanarak kullanıcının istediği sayıya kadar bir döngü döndürecek ve döngüden gelen çift sayıları diziye ekleyeceğiz.
Öncelikle dizimizi tanımlayalım,dizimizin kapasitesi kullanıcının veridiği sayının yarısı kadar olacak çünkü çift sayılar tüm sayıların yarısına eşit olmaktadır:
Dizimizi tanımladığımıza göre for döngümüzü kurabiliriz:
int tipindeki dizimiz doldurmaya hazırız ama diziye elemanı nasıl ekleyeceğiz?
Dizilerde index konusunu anlatırken sıfırdan başladığını öğrendiğimize göre öncelikle dizinin kaçıncı elemanına çift sayıyı ekleyeceğimizi biliyoruz demektir,o yüzden kendimize başlangıç değeri sıfır olan bir değişken tanımlamalıyız.
Bu değişkeni if koşulu içerisinde 1 sayı artırarak sıradaki boş indeximizi hazırlayacağız ve bir sonraki for dönüşünde belirlediğimiz bu indexe değerimizi ekleyeceğiz:
Dizimizin boş indexini belirledikten sonra atama operatörüyle 109.satırda olduğu gibi gelen çift sayıyı o an ki boş indexe ekleyeceğiz.
Peki tüm diziyi bu şekilde doldurduğumuzda ne olacak?
JFrame'e baktığımızda kullanıcı butona tıkladığında yazdığı indexte hangi sayının olduğunu görmek istiyor,dolayısıyla dizi dolduğunda kullanıcıya dizinin istediği elemanını vereceğiz.Tabi bu işlemi yapmak için dizinin tamamnını dolmuş olması gerekiyor,o yüzden for döngüsü dışında yazmalıyız:
Şimdi programımızı çalıştırıyor ve test ediyoruz:
Peki program nasıl çalışıyor?
Kullanıcı butona tıklar tıklamaz int tipte "sayi" ve "index" değişkenleri tanımlanıyor,ardından kullanıcı hangi sayıya kadar çift sayıları istiyorsa 100.satırda çift sayıları içerecek dizimiz oluşturuluyor.
Dizilerin 0.ıncı indexten başladığını bildiğimize göre oluşturduğumuz bu diziye başlangıç noktası olarak yine int tipte "siradakiBosIndex" adında bir değişken tanımlıyor ve değerini sıfır veriyoruz.
Ardından 105.satırda kullanıcının istediği sayıya kadar dönen bir for döngüsü yazıyoruz ve döngü her döndüğü esnada bir değer veriyor.Gelen bu değerin çift olup olmadığını 107. satırda 2'ye bölümünden kalanın sıfır olup olmadığına bakıyoruz,bu if koşulu bize çift olup olmadığını bildirecektir.
Eğer gelen sayı çiftse 109. satırda "ciftSayilar" dizisinin ilk boş indexine o sayıyı yerleştiriyoruz,ardından for döngüsü bize bir sonraki çift değeri verdiğinde diziye eklemek için yeni bir boş index yaratmalıyız.Bunun için 113. satırdaki değişkenimizin değerini 1 artırıyor ve boş indeximizi hazır hale getiriyoruz.
For döngüsü bu şekilde her dönüşünde diziye çift sayıları ekledikten sonra döngü sona erecek ve dizimiz tamamen çift sayıları içermiş olacak.
Son aşama olarak kullanıcının istediği indexteki sayıyı yakalamak için 117. satırda istenen değeri yakalıyor, 119. satırda ekrana yansıtmak için JOptionPane sınıfına ait showMessageDialog metodunu kullanıyoruz.
Görüldüğü gibi dizi kavramı olmasaydı bu şekilde bir uygulama yapmak için belki saatlerimizi harcayacaktık ancak diziler sayesinde yazılımcıların işleri oldukça kolaylaşıyor ve daha rahat algoritmalar kurabiliyoruz.
Dizilerle ilgili başlangıç olarak şimdilik buraya kadar yeterli diye umuyorum,bir sonraki makalede görüşmek üzere hoşçakalın :)
Projeyi İndir