C# Diziler-Array
C# Diziler-Array isimli yazımızda dizi (array) nedir? Nasıl dizi oluşturulur? Diziye nasıl değer girilir? Dizileri yazdırma ve bazı dizi özelliklerini anlatılacaktır.
C# Diziler-Array nedir? Nasıl dizi oluşturulur? Diziye nasıl değer girilir? Dizileri yazdırma ve bazı dizi özelliklerinin kullanımlarını ve bunlara ait örnekleri aşağıdaki yazımızı okuyarak öğrenebilirsiniz.
C# Diziler-Array Konu Başlıkları
1-Dizi Oluşturma
2-Diziye Değer Girme
3-Diziyi Yazdırma
4-Bazı Dizi Özellikleri ve Metotları
– Length
– Clear(dizi,baslangic,adet)
– Reverse(Dizi)
– Sort(Dizi)
– IndexOf(Dizi,arananDeger)
C# Diziler-Array
Tanımladığımız her değişkenin içine sadece bir değer atayabiliyorduk. Ama bazı durumlarda tipi aynı olan değişkenleri bir arada tutma ihtiyacı duyabiliriz.
Dizi (Array): Aynı tipteki değişkenleri bir arada tutan veri topluluğudur. Dizileri bir arada yer alan değişkenler listesi gibi düşünebiliriz. Örnek verecek olursak bir ülkede yaşayanların kimlik numaralarını tek bir liste içerisinde tutmak istersek bir dizi kullanabiliriz.
1-Dizi Oluşturma
Dizi oluşturmanın birden fazla yolu vardır. C# Diziler-Array nasıl oluşturulur şimdi bu yolları inceleyelim.
Dizi Tanımlamanın 1. Yolu:
tip[ ] dizi_ismi = new tip[dizinin_eleman_sayısı];
Örnek:
string [ ] sebzeler = new string [5];
Dizinin veri tipi: string
Dizinin adı: sebzeler
Dizinin boyutu: 5
Yukarıda tanımlaması gerçekleştirilen sebzeler isimli dizi içerisinde 5 adet string (metinsel) türde veri tutabiliriz. Burada dizinin eleman sayısı olan 5 dizimizin boyutudur. Oluşturmuş olduğumuz dizi kavramsal olarak şu şekilde görünür;
Dizi Tanımlamanın 2. Yolu:
int [ ] rakamlar;
rakamlar = new int [7];
Dizinin veri tipi: int
Dizinin adı: rakamlar
Dizinin boyutu: 7
Dizi tanımlaması olarak yukarıdaki kodun (2.yola ait), 1. Dizi tanımlama yolundaki koddan farkı yoktur aslında. 2.Yoldaki kodu gelin 1.yoldaki tanımlamaya döndürelim;
1.Yoldaki kod yazımına dönüşmüş hali:
int [ ] rakamlar = new int [7];
Yukarıdaki tanımlamada rakamlar isimli dizi içerisinde 7 adet int (tam sayı) türünde veri tutabiliriz.
Dizi Tanımlamanın 3. Yolu:
int [ ] sayilar = {35,60,50,75};
Dizinin veri tipi: int
Dizinin adı: sayilar
Dizinin boyutu: 4
Dikkat ederseniz yukarıdaki dizinin tanımlanması esnasında herhangi bir boyut (eleman sayısı) belirtilmedi. Bu durumlarda ilk anda kaç adet eleman girişi yapıldıysa dizinin boyutu da o otomatik olarak belirlenir. Bu örnek için boyut 4 olacaktır.
İstenirse aşağıdaki gibi dizinin boyutu belirtilerek de tanımlama gerçekleştirilebilir;
int [ ] sayilar = new int [4] {35,60,50,75};
2-Diziye Değer Girme
Bir diziye değer girişleri dizinin ilk tanımlanması esnasında yapılabildiği gibi, programın akışı esnasında da yapılabilir.
Dizi tanımlandıktan sonra, dizinin her bir elemanına indeks numarası dediğimiz numaralar verilir. Bu numaralar indeks 0 dan başlar ve 1-2-3-4 …. diye devam eder.
İndeks numarası bize dizi içerisindeki elemanın konumunu yani adresini söyler. İndeks numarası her zaman 0 (sıfır) dan başlar.
int [] notlar = new int [5];
notlar [0]=75;
notlar [1]=65;
notlar [2]=55;
notlar [3]=85;
notlar [4]=90;
Yukarıdaki tanımlamayı daha kısa olarak yaparsak 3.yolu kullanabiliriz;
int [ ] notlar = {75,65,55,85,90};
Yukarıda her iki örnekte de verilen notlar dizisinin kavramsal gösterimi şu şekildedir;
notlar [0] | notlar [1] | notlar [2] | notlar [3] | notlar [4] |
75 | 65 | 55 | 85 | 90 |
Char (karakter) türündeki bir dizinin ilk kullanımına hazırlanması da şu şekillerde gerçekleştirilir;
char [ ] harfler = {‘Z’,’a’,’P’,’H’};
Yukarıda her iki örnekte de verilen harfler dizisinin kavramsal gösterimi şu şekildedir;
harfler [0] | harfler [1] | harfler [2] | harfler [3] |
Z | a | P | H |
String (metinsel) türdeki bir dizinin ilk kullanımına hazırlanması da şu şekillerde gerçekleştirilir;
string [ ] sebzeler = { “Marul”, “Ispanak”, “Biber”, “Domates”, “Salatalık” };
Yukarıda her iki örnekte de verilen sebzeler dizisinin kavramsal gösterimi şu şekildedir;
sebzeler [0] | sebzeler [1] | sebzeler [2] | sebzeler [3] | sebzeler [4] |
Marul | Ispanak | Biber | Domates | Salatalık |
Bir dizi içerisindeki elemanlara tek tek dizi indeksi yardımıyla erişilebilir. Dizi indeksi (array index), bir elemanın dizi içerisindeki konumunu ifade eder. Genellikle programlama dillerinde dizilerin ilk elemanının indeksi sıfır (0)’dır. Örneğin 10 elemanlı bir dizi varsa, bu dizinin 10. elamanının indeks numarası 9, 8.elemanının indeks numarası ise 7 olacaktır.
Dizinin İstenen İndeks’lerine Değer Girme
Dizinin tüm elemanlarına değil de bir kısmına değer girişi yapmamız isteniyorsa, ilgili değerin barındırılacağı indeksine değer atama işlemi gerçekleştirilir.
int [ ] plakalar = new int [7];
plakalar[2] = 43;
plakalar[4] = 16;
plakalar[5] = 66;
plakalar[0] = 6;
plakalar [0] | plakalar [1] | plakalar [2] | plakalar [3] | plakalar [4] | plakalar [5] | plakalar [6] |
6 | 0 | 43 | 0 | 16 | 66 | 0 |
Dikkat ederseniz int türündeki dizilerde boş kalan dizi hücrelerine sıfır(0) değeri otomatik eklenmiştir.
Yukarıdaki örneğin bir benzerini de string veri tipi için yapalım.
string[] sebzeler = new string[] { “Marul”, “Ispanak”, “Biber”, “” ,””, “” , “” };
veya
string[] sebzeler = new string[] { “Marul”, “Ispanak”, “Biber”, null, null, null, null };
Yukarıda her iki örnekte de verilen sebzeler dizisinin kavramsal gösterimi şu şekildedir;
sebzeler [0] | sebzeler [1] | sebzeler [2] | sebzeler [3] | sebzeler [4] | sebzeler [5] | sebzeler [6] |
Marul | Ispanak | Biber |
Dikkat ederseniz string türündeki dizilerde boş kalan hücrelere boş (null-“”) değeri yüklenmektedir.
Örnek 1: Rakamlar isimli dizi içerisine 0-9 arası rakamları tersten bir döngü yardımıyla ekleyelim.
int [ ] rakamlar = new int [10]; int i; for (i = 0; i <= 9; i++) { rakamlar [ i ] = 9 - i; Console.WriteLine( rakamlar[i] ); } Console.ReadKey();
Örnek 2: Alfabe isimli dizi içerisine A-H arası harfleri sırayla bir döngü yardımıyla ekleyelim.
char [ ] alfabe = new char [8]; int i; char harf='A'; for (i = 0; i <= 7; i++) { alfabe [ i ] = harf; harf++; Console.WriteLine( alfabe[i] ); } Console.ReadKey();
Dizilerle çalışırken dikkat etmemiz gereken noktalardan en önemlisi dizi sınırlarına sadık kalmaktır. Eğer 10 elemanlı bir dizi tanımlamışsak ve bu dizi tanımlanırken belirlenen eleman sayısından fazla sayıda eleman değeri atamaya çalışırsak hata alırız.
3-Diziyi Yazdırma
char [ ] harfler = {‘Z’,’a’,’P’,’H’};
Yukarıdaki gibi tanımlanan bir char dizisinin elemanlarını yazdırmanın birden fazla yolu vardır. C# Diziler-Array ‘de diziyi yazdırmanın yollarını sırasıyla inceleyelim;
1.Yöntem: Diznin tüm elemanlarını tek tek yazdırma.
char [ ] harfler = {‘Z’,’a’,’P’,’H’};
Console.WriteLine(harfler[0]);
Console.WriteLine(harfler[1]);
Console.WriteLine(harfler[2]);
Console.WriteLine(harfler[3]);
Console.ReadKey();
Ekran Çıktısı:
Z
a
P
H
şeklinde olacaktır. Fakat bu yöntemi eleman sayısı fazla olan dizilerde kullanmak pek mümkün değildir. Mesela harfler dizisinin 4 elemanı değilde 200 elemanı olsaydı ve bu elemanların hepsini ekrana yazdırmak isteseydik tek tek bunları yazmak ne kadar mantıklı olurdu acaba? Bir de işin zaman kaybı kısmı var tabi…
2.Yöntem: Diznin tüm elemanlarını foreach döngüsü ile yazdırma.
char [ ] harfler = {‘Z’,’a’,’P’,’H’};
int sayac=0;
foreach (char harf in harfler)
{
Console.WriteLine(“harfler[“+sayac+”] :”+harf);
sayac++;
}
Console.ReadKey();
3.Yöntem: Diznin tüm elemanlarını for döngüsü ile yazdırma.
char [ ] harfler = {‘Z’,’a’,’P’,’H’};
for (int sayac=0;sayac<harfler.Length;sayac++)
{
Console.WriteLine(“harfler[“+sayac+”] :”+harfler[sayac]);
}
Console.ReadKey();
Not: harfler.Length dizinin uzunluğunu int türünden verir. (harfler.Length yerine dizinin eleman sayısı olan 4 yazsak kodumuz yine çalışacaktır fakat programcı mantığı ile düşünürsek dizinin eleman sayısını 4 olarak yazmak amatörce olacaktır.)
4-Bazı Dizi Özellikleri ve Metotları
C# Diziler-Array ‘de kullanılan bazı özellikleri ve metotları inceleyelim;
A-) Length
Dizinin saklayabileceği toplam eleman sayısını int olarak verir.
Kullanımı:
dizinin_adı.Length;
Örnek:
int dizi_uzunlugu;
char [ ] harfler = {‘Z’,’a’,’R’,’H’};
dizi_uzunlugu=harfler.Length;
Yukarıda dizi_uzunlugu isimli değişkenin içine harfler dizisinin uzunluğu Length komutu sayesinde atılmıştır.
Length Örneği:
int dizi_uzunlugu;
char [ ] harfler = {‘Z’,’a’,’R’,’H’};
dizi_uzunlugu=harfler.Length;
Console.WriteLine(“harfler dizisi içinde toplam {0} eleman bulunmaktadır.”,dizi_uzunlugu);
Console.ReadKey();
Yukarıdaki kodları çalıştırdığımız zaman aşağıdaki gibi bir ekran görüntüsü alırız;
harfler dizisi içinde toplam 4 eleman bulunmaktadır.
B-) Clear (dizi,baslangic,adet)
Dizinin, kaçıncı indeksli elemanından başlanılıp, belirtilen adet miktarı kadar dizinin elemanlarını temizler. Temizleme işleminde dizinin veri tipi int ise temizlenen yerlere 0, string ise null (boş) koyar.
Kullanımı:
Array.Clear (dizi_adi, baslangic_indeksi, adet);
Clear Örneği:
char [ ] harfler = {‘Z’,’a’,’R’,’H’};
int sayac;
Console.WriteLine(“Clear Öncesi Dizinin İçeriği”);
for (sayac=0;sayac<harfler.Length;sayac++)
{
Console.WriteLine(“harfler[“+sayac+”] :”+harfler[sayac]);
}
Array.Clear (harfler, 1, 2);
Console.WriteLine(“Clear Sonrası Dizinin İçeriği”);
for (sayac=0;sayac<harfler.Length;sayac++)
{
Console.WriteLine(“harfler[“+sayac+”] :”+harfler[sayac]);
}
Console.ReadKey();
Yukarıdaki kodları çalıştırdığımız zaman aşağıdaki gibi bir ekran görüntüsü alırız;
Clear Öncesi Dizinin İçeriği
harfler[0] :Z
harfler[1] :a
harfler[2] :R
harfler[3] :H
Clear Sonrası Dizinin İçeriği
harfler[0] :Z
harfler[1] :
harfler[2] :
harfler[3] :H
C-) Reverse(Dizi)
Dizinin eleman sırasını tersine çevirir.
Kullanımı:
Array.Reverse (dizi_adi);
Reverse Örneği:
char [ ] harfler = {‘Z’,’a’,’R’,’H’};
int sayac;
Console.WriteLine(“Reverse Öncesi Dizinin İçeriği”);
for (sayac=0;sayac<harfler.Length;sayac++)
{
Console.WriteLine(“harfler[“+sayac+”] :”+harfler[sayac]);
}
Array.Reverse (harfler);
Console.WriteLine(“Reverse Sonrası Dizinin İçeriği”);
for (sayac=0;sayac<harfler.Length;sayac++)
{
Console.WriteLine(“harfler[“+sayac+”] :”+harfler[sayac]);
}
Console.ReadKey();
Yukarıdaki kodları çalıştırdığımız zaman aşağıdaki gibi bir ekran görüntüsü alırız;
Reverse Öncesi Dizinin İçeriği
harfler[0] :Z
harfler[1] :a
harfler[2] :R
harfler[3] :H
Reverse Sonrası Dizinin İçeriği
harfler[0] :H
harfler[1] :R
harfler[2] :a
harfler[3] :Z
D-) Sort(Dizi)
Dizinin elemanlarını küçükten büyüğe sıralar.
Kullanımı:
Array.Sort (dizi_adi);
Sort Örneği:
char [ ] harfler = {‘Z’,’A’,’R’,’H’};
int sayac;
Console.WriteLine(“Sort Öncesi Dizinin İçeriği”);
for (sayac=0;sayac<harfler.Length;sayac++)
{
Console.WriteLine(“harfler[“+sayac+”] :”+harfler[sayac]);
}
Array.Sort (harfler);
Console.WriteLine(“Sort Sonrası Dizinin İçeriği”);
for (sayac=0;sayac<harfler.Length;sayac++)
{
Console.WriteLine(“harfler[“+sayac+”] :”+harfler[sayac]);
}
Console.ReadKey();
Yukarıdaki kodları çalıştırdığımız zaman aşağıdaki gibi bir ekran görüntüsü alırız;
Sort Öncesi Dizinin İçeriği
harfler[0] :Z
harfler[1] :A
harfler[2] :R
harfler[3] :H
Sort Sonrası Dizinin İçeriği
harfler[0] :A
harfler[1] :H
harfler[2] :R
harfler[3] :Z
E-) IndexOf(Dizi,arananDeger)
Dizi içerisinde arama yapar. Aranan eleman bulunursa bulduğu elemanın indeks numarasını int olarak verir, aranan eleman bulunamazsa int olarak -1 döndürülür.
Kullanımı:
Array.IndexOf (dizi_adi, aranan_deger);
IndexOf Örneği:
char [ ] harfler = {‘Z’,’A’,’R’,’H’};
int i=0;
Console.WriteLine(“harfler Dizinin İçeriğini Yazdıralım”);
foreach (char harf in harfler)
{
Console.WriteLine(“harfler[{0}]: {1}”, i, harf);
i++;
}
int indeks = Array.IndexOf(harfler, ‘P’);
Console.WriteLine(“harfler dizisi içerisinde P’nin indeksi: {0}”, indeks);
Console.ReadKey();
Yukarıdaki kodları çalıştırdığımız zaman aşağıdaki gibi bir ekran görüntüsü alırız;
harfler Dizinin İçeriğini Yazdıralım
harfler[0]: Z
harfler[1]: A
harfler[2]: R
harfler[3]: H
harfler dizisi içerisinde R’nin indeksi: 2
Not: Kodları web sitesi üzerinden çalıştırmak ve test etmek istersiniz https://www.jdoodle.com/web sitesini kullanabilirsiniz. (C# dilini seçiniz.)
Konuya ait ders notunu *.pdf olarak indir. |
|
Programlama TemelleriDers Notları ve Çalışma Soruları Arşivi İçin Tıklayınız… |