Aşağıdaki örnek de dizi tanımlama dizi içine eleman ekleme, dizi içindeki elemanların toplamını, en büyük, eb küçüğünü, ilk ve son elemanı bulup diziyi sıralama işlemini yapacağız.
int[] sayilar = new int[10]; for (int i = 0; i < seafoodplus.info; i++) { sayilar[i] = i + 1; } sayilar[3] = 20; sayilar[5] = sayilar[2] + sayilar[7]; for (int i = 0; i < seafoodplus.info; i++) { seafoodplus.infoine("sayilar[{0}] = {1}", i, sayilar[i]); } seafoodplus.infoine(); seafoodplus.infoine("Toplam = " + seafoodplus.info()); seafoodplus.infoine("En Küçük = " + seafoodplus.info()); seafoodplus.infoine("En Büyük = " + seafoodplus.info()); seafoodplus.infoine("İlk Eleman = " + seafoodplus.info()); seafoodplus.infoine("Son Eleman = " + seafoodplus.info()); seafoodplus.infoine(); seafoodplus.info(sayilar); for (int i = 0; i < seafoodplus.info; i++) { seafoodplus.infoine("sayilar[{0}] = {1}", i, sayilar[i]); } seafoodplus.infoy();Bu İçeriğe Tepkin Ne Oldu?
c# dersleric# dizi sıralamac# örnekleridizi toplamıen büyüken küçükİlkSon elemantoplam
Ders 9. Diziler
Şimdiye kadar birçok değişken tanımladık ve programlarımızın içinde kullandık. Bir program içinde tanımladığımız değişken sayısı şimdiye kadar bir elin parmaklarını geçmedi. Ancak her zaman bu böyle olmayabilir. Bazı programlarda değişkene ihtiyaç duyabiliriz. Bunların hepsinin teker teker tanımlanması oldukça zahmetlidir. İşte bu yüzden programlama dillerinde dizi diye bir kavram vardır. Aslında bir dizi, birbiriyle ilişkili değişkenlerin oluşturduğu bir gruptan başka bir şey değildir. Diyelim ki ve adlı iki değişken tanımladık. Bunların adları birbirine benzemesine rağmen birbiriyle hiçbir ilişkisi yoktur. Yani bir döngü içinde yazarak bu değişkenlere erişemeyiz. Halbuki dizilerde bu mümkündür.
veya
Yukarıdaki iki kodda da int türünden 25 elemanlı adında bir dizi tanımlandı ve dizinin her bir elemanına int türünün varsayılan değeri atandı. Varsayılan değerler, sayısal türler için 0, object türü için NULL (yokluk), string türü için "", char için ' ' (boşluk) ve bool için false değerleridir.
Bu program ekrana 30 yazacaktır.
Ancak bu şekilde dizi belirtimini sadece dizi tanımlamalarında kullanabiliriz. Örneğin bir sonraki derste göreceğimiz metotlara parametre olarak bir int dizisi vermemiz gerekiyorsa parametre olarak sadece ifadesini veremeyiz. ifadesini bir değişkene atayıp bu değişkeni metoda parametre olarak vermeliyiz. Ayrıca aşağıdaki kullanım da hatalıdır:
Çünkü daha önce de bahsettiğimiz gibi direkt dizi belirtimi sadece dizi tanımlamalarında geçerlidir.
Başka bir dizi tanımlama yöntemi de şöyledir:
Üstelik bu şekilde dizi belirtimini dizi kullanmamız gereken her yerde yapabiliriz. Örneğin bir metoda parametre olarak bir int dizisi vermemiz gerekiyorsa metot çağrısında parametre yerine direkt yazabiliriz.
Diziler yukarıdaki şekilde tanımlandığında söz konusu dizilerin eleman sayısı yazılan eleman sayısı olur. Örneğin yukarıdaki örneklerde bütün dizilerin eleman sayısı üçtür ve dördüncü elemana ulaşmak istersek programımız çalışma zamanında hata verir. Bu şekilde dizi elemanlarına değişken ve ifadeler de atanabilir.
veya
İkincisinde tanımlanan dizinin elemanlarına henüz erişilemez.
foreach yalnızca dizilere uygulanabilen bir döngü yapısıdır. Kullanımı şu şekildedir:
Burada dizisinin bütün elemanları teker teker ekrana yazdırılıyor.
Çok boyutlu diziler kısaca her bir elemanı bir dizi şeklinde olan dizilerdir, matris dizileri (düzenli diziler) ve düzensiz diziler olmak üzere ikiye ayrılır.
Her bir dizi elemanının eşit sayıda dizi içerdiği dizilerdir.
3X2 boyutunda iki boyutlu bir matris dizi aşağıdaki gibi tanımlanabilir:
veya
İkinci dizinin elemanları indekslerine göre aşağıdaki gibidir.
dizi[0,0] → 1
dizi[0,1] → 2
dizi[1,0] → 3
dizi[1,1] → 4
dizi[2,0] → 5
dizi[2,1] → 6
Bu diziyi matris olarak aşağıdaki gibi gösterebiliriz:
| → |
|
Üç boyutlu bir dizi:
veya
Bu dizinin indekslerine göre elemanlarıysa;
dizi[0,0,0] → 1
dizi[0,0,1] → 2
dizi[0,1,0] → 3
dizi[0,1,1] → 4
dizi[1,0,0] → 5
dizi[1,0,1] → 6
dizi[1,1,0] → 7
dizi[1,1,1] → 8
dizi[2,0,0] → 9
dizi[2,0,1] → 10
dizi[2,1,0] → 11
dizi[2,1,1] → 12
Bu programda dizinin bütün elemanlarının değerini 20 ile değiştirdik.
Her bir dizi elemanının farklı sayıda eleman içerebileceği çok boyutlu dizilerdir.
Birinci satırda 3 satırı olan ancak sütun sayısı belli olmayan iki boyutlu bir dizi tanımlanıyor. İkinci, üçüncü ve dördüncü satırda da bu iki boyutlu dizinin her bir satırının kaç sütun içerdiği ayrı ayrı belirtiliyor.
dizi[0][0] | dizi[0][1] | dizi[0][2] | |
dizi[1][0] | dizi[1][1] | dizi[1][2] | dizi[1][3] |
dizi[2][0] | dizi[2][1] |
şeklinde kullanılır. Herhangi bir dizinin eleman sayısını int olarak tutar. x diziyi, y o dizinin hangi boyutunun eleman sayısının hesaplanacağını belirtir. Örnekler:
Bu program ekrana 4 yazar.
Bu program ekrana 3 yazar.
Bu program dizinin bütün elemanlarını teker teker ekrana yazar.
Şimdiye kadar öğrendiğimiz dizi tanımlama yöntemlerinin yanında başka dizi tanımlama yöntemleri de vardır.
Burada int türünden 5 elemanlı adında bir dizi tanımlandı ve dizinin her bir elemanına int türünün varsayılan değeri atandı.
Burada 3X2X5 boyutunda int türünden 3 boyutlu bir dizi oluşturduk.
Burada 2X3X6X8X7 boyutunda beş boyutlu bir dizi oluşturduk.
Daha önce CreateInstance yöntemiyle oluşturulan dizilere gibi bir yöntemle erişilemeyeceğini söylemiştik. İşte bunun için çeşitli metotlar vardır.
GetUpperBound: Bir dizinin son indeks numarasını verir.
SetValue: Bir dizinin belirli bir indeksini belirli bir değerle değiştirir.
GetValue: Bir dizinin belirli bir indeksini tutar.
Burada dizi1'in tüm elemanları dizi2'ye 3. indeksten itibaren kopyalanıyor.
Burada 3 tane eleman dizi1'den dizi2'ye kopyalanır. Kopyalama işlemi 0. indeksten başlar.
Burada dizi1'in 2. indeksinden itibaren 3 eleman, dizi2'ye 7. indeksten itibaren kopyalanıyor.
Örnek:
Başka bir örnek:
Örnek:
BinarySearch metodu, bir nesneyi bir dizi içinde arar, eğer bulursa bulduğu nesnenin indeksini tutar, bulamazsa negatif bir sayı tutar. BinarySearch'ü kullanabilmek için diziyi daha önce Sort ile sıralamalıyız. Başka bir örnek:
BinarySearch burada 3. indeksten itibaren 4 eleman içinde "yakup"u arar. Bulursa indeksini tutar. Bulamazsa negatif bir sayı tutar.
UYARI: Yalnızca tek boyutlu diziler Sort ile sıralanabilir, dolayısıyla da çok boyutlu dizilerde hem Sort ile sıralama hem de BinarySearch ile arama yapmak imkansızdır.
Bu kod dizisinin 1. indeksinden itibaren 3 indeksini sıfırlar (varsayılan değere döndürür).
Bu kod dizisinin tamamını ters çevirir.
Bu kod dizisinin 1. indeksten itibaren 3 elemanını ters çevirir.
Bu kitabın diğer sayfaları