Fırat Ağış ile Programlama Bölüm 6: Diziler

   Diziler demişken televizyonla alakası yok. Bugünkü konumuz sayı dizileri. Yani bir nevi sayı kümeleri demek doğru olur çünkü diziler birden çok sayıyı saklayan özel nesnelerdir. Aynı zamanda dizilere içlerinde sayı saklayan doğru, düzlem ya da uzaylar demekte yanlış olmaz. Çünkü diziler birden fazla boyuta sahip olabilir ve sakladığı sayıya ulaşmak için sayının koordinatını girmek gerekir. Anlamadınız dimi? Hemen açıklayayım.




Bir Boyutlu Diziler

   Öncelikle diziler bir değerlilik gibi tanımlanır. Diziler her hangi bir değerlilik çeşidini saklayabilir ve saklayacakları değerlilik çeşidine sahip bir değerlilikmiş gibi tanımlanır. Örnek:

int a[];

Burada a isimli tek boyutlu bir değerlilik tanımladık. Ama henüz bir uzunluğa yani sayı saklayacak yere sahip değil. Bu durumda dizilere boyut ataması şöyle yapılır:

a = new int[12];

Şu anda a içinde 12 sayı saklama yerine sahip. Bu sayıların koordinatına aşağıdaki gibi ulaşabilirsiniz.

a[2] = 13;

Bu şekilde a nın içindeki 2 konumuna sahip sayı 13'e eşitlendi. Sayı dizilerinin başlangıç konumu 0'dır. Yani a 0-11 konumlarıda sayı saklayabilir. Aşağıda örnek bir program görebilirsiniz.

class Dizi{
   public static void main(String args[]){
      int a[];
      a = new int[5];
      a[0]=1;
      a[1]=2;
      a[2]=4;
      a[3]=8;
      a[4]=16;
      System.out.println("2 nin 3. kuvveti = " + a[3]);
   }
}

"Şimdi iyi hoşta bunları tek tek tanımlayacağıma zaten 5 tane farklı değerlilik tanımlamıştım. Dizilere ne gere var?" diyorsanız yanlış fikirler klübüne hoş geldiniz. Çünkü bu program aşağıdaki gibi de yazılabilir.

class Dizi{
   public static void main(String args[]){
      int a[]={ 1, 2, 4, 8, 16};
      System.out.println("2 nin 3. kuvveti = " + a[3]);
   }
}

Şimdi diziler nasıl kullanışlı gördünüz mü? Hayır henüz oraya gelmedik.

class Dizi{
   public static void main(String args[]){
      int a[] = new int[20];
      a[0] = 1;
      for(int i = 1; i < 20; i++){
         a[i]= a[i-1]*2;
      }
      for(int i = 0; i < 20; i++){
         System.out.println("2 nin "+i+". kuvveti = "+a[i]);
      }
   }
}

Programın çıktısı şu şekildedir:

2 nin 0. kuvveti = 1
2 nin 1. kuvveti = 2
2 nin 2. kuvveti = 4
2 nin 3. kuvveti = 8
2 nin 4. kuvveti = 16
2 nin 5. kuvveti = 32
2 nin 6. kuvveti = 64
2 nin 7. kuvveti = 128
2 nin 8. kuvveti = 256
2 nin 9. kuvveti = 512
2 nin 10. kuvveti = 1024
2 nin 11. kuvveti = 2048
2 nin 12. kuvveti = 4096
2 nin 13. kuvveti = 8192
2 nin 14. kuvveti = 16384
2 nin 15. kuvveti = 32768
2 nin 16. kuvveti = 65536
2 nin 17. kuvveti = 131072
2 nin 18. kuvveti = 262144
2 nin 19. kuvveti = 524288

Şimdi tek tek tanımlasanıza. Yemedi dimi.

İki Boyutlu Diziler

Aklından 5.Boyut espirisi geçirenler. Sağ üsteki kırmızı X e tıkayınca manyak şeyler oluyor bence bir deneyin. Neyse bir iki boyutlu dizi aşağıdaki gibi tanımlanır.

int b[][] = new int[4][5];

Peki sayılara nasıl ulaşacağız. Burada bir koordinat sistemi yaratmış olduk. Bu komutu görsel şekilde tasarlamak gerekirse bu şu şekilde olur.

0 1 2 3 4
0 [0][0] [0][1] [0][2] [0][3] [0][4]
1 [1][0] [1][1] [1][2] [1][3] [1][4]
2 [2][0] [2][1] [2][2] [2][3] [2][4]
3 [3][0] [3][1] [3][2] [3][3] [3][4]
Peki bunları nasıl kullanacağız derseniz size başka bir kuvvet hesaplayıcısı göstermeme izin verin.

class Dizi{
   public static void main(String args[]){
      int a[][] = new int[11][6];
      a[0][2] = 1;
      a[0][3] = 1;
      a[0][4] = 1;
      a[0][5] = 1;
      for(int x = 2; x < 6; x++){
     for(int y = 1; y < 11; y++){
     a[y][x]=a[y-1][x]*x;
     }
      }
      for(int x = 2; x < 6; x++){
     for(int y = 0; y < 11; y++){
     System.out.println(x+" in "+y+". kuvveti = "+a[y][x]);
     }
      }
   }
}

Bu programın çıktısı şöyledir.

2 in 0. kuvveti = 1
2 in 1. kuvveti = 2
2 in 2. kuvveti = 4
2 in 3. kuvveti = 8
2 in 4. kuvveti = 16
2 in 5. kuvveti = 32
2 in 6. kuvveti = 64
2 in 7. kuvveti = 128
2 in 8. kuvveti = 256
2 in 9. kuvveti = 512
2 in 10. kuvveti = 1024
3 in 0. kuvveti = 1
3 in 1. kuvveti = 3
3 in 2. kuvveti = 9
3 in 3. kuvveti = 27
3 in 4. kuvveti = 81
3 in 5. kuvveti = 243
3 in 6. kuvveti = 729
3 in 7. kuvveti = 2187
3 in 8. kuvveti = 6561
3 in 9. kuvveti = 19683
3 in 10. kuvveti = 59049
4 in 0. kuvveti = 1
4 in 1. kuvveti = 4
4 in 2. kuvveti = 16
4 in 3. kuvveti = 64
4 in 4. kuvveti = 256
4 in 5. kuvveti = 1024
4 in 6. kuvveti = 4096
4 in 7. kuvveti = 16384
4 in 8. kuvveti = 65536
4 in 9. kuvveti = 262144
4 in 10. kuvveti = 1048576
5 in 0. kuvveti = 1
5 in 1. kuvveti = 5
5 in 2. kuvveti = 25
5 in 3. kuvveti = 125
5 in 4. kuvveti = 625
5 in 5. kuvveti = 3125
5 in 6. kuvveti = 15625
5 in 7. kuvveti = 78125
5 in 8. kuvveti = 390625
5 in 9. kuvveti = 1953125
5 in 10. kuvveti = 9765625

Tek tek tanımlamak isteyen.

Çok boyutlu dizilerin çalışma prensibi de buna benzer olduğu için geçeceğim. Bütün sorularınız için firat@sibnetz.com dan bana ulaşabilirsiniz. Cumhuriyet bayramınız kutlu olsun.

Fırat Ağış
QERGH

Yazar: Yahya


Follow us Google+.

0 yorum:

My Blogger Themes