C# Diziler Nedir?

c#-diziler

Bu konu içerisinde C# Diziler Nedir sorusuna cevap vererek C# dizi örnekleri, tanımlama gibi alt başlıklarda diziler (arrays) kavramını öğreneceğiz.

C# Diziler Nedir?

Programlarımız üzerinden değişkenler oluştururuz, oluşturduğumuz bu değişkenlerin içerisinde verileri tutmayı amaçlarız. Ancak benzer tipte ortak değerler için sürekli değişken oluşturmak yerine dizi tanımlaması yaparak değerlerimizi programımıza tanıtabiliriz. Bu tanım ile C# diziler nedir sorusuna teorik bir cevap versem de akılda kalıcılığı arttırmak için bir örnek üzerinden C# diziler nedir sorusunu anlatmak istiyorum.

Bir sınıf içerisinde 30 öğrencinin vize, final notlarını tutmak istediğimiz zaman teker teker değişkenler oluşturmak yerine her öğrencinin vize ve final notlarını sadece bir dizi (array) kullanarak programımıza tanıtabiliriz. Bu şekilde yapmak istediğimiz işlemlerde kolaylık sağlamış oluruz.

C# Dizi Oluşturma

Tabi yukarıdaki örnekten sonra aklınıza c# dizi oluşturma nasıl yapılıyor diye bir soru takılmış olabilir aslında çok basit bir kaç yöntem ile programımız içerisinde dizi oluşturarak kullanabiliyoruz.

veriTipi [] diziAdı = new veriTipi [elemanSayısı];

Bu şekilde bir tanımlama yapabiliriz. Tabi bu tanımlama için bir eleman sayısı belirtmeden de dizi referansı oluşturmak isteyebiliriz. Bu dizi referansını da şu şekilde oluşturabiliriz:

veriTipi diziAdı [elemanSayısı]; // Örnek: double sinifOrtalamasi[];

Bu şekilde yapacağımız işlemi C# Dizi tanımlama olarak isimlendirebiliriz. C# Dizi tanımlama işlemini gerçekleştirdiğimiz zaman oluşturduğumuz yapı içerisindeki elemanların tutulma yapısını gösteren görsel çalışmasına göz atalım.

C# Dizi Oluşturma

Dizilerimiz nesne olduğu için kendi içlerinde tekrar değerleri çağırabilmemiz için sahip oldukları bir hafıza adresleri bulunmaktadır. Bu hafıza adresleri kullanarak veya dizilerin indis numaraları ile elemanlarımıza erişim sağlayabiliriz.

C# Diziler Nedir ve C# Dizi Oluşturma (Tanımlama) soruları ile bağlantılı olan C# Veri Tipleri ve Değişken Tanımlama konumuza göz atarak bu konuda bilgilerinizi tazeleyebilirsiniz.

C# Dizi Boyutları

Bir dizi tanımlarken oluşturacağımız yapıya göre boyutlandırma işlemi gerçekleştirebiliriz. Bu dizi boyutlarına;

  • Tek Boyutlu Diziler,
  • Çok Boyutlu Diziler

denmektedir. Bu dizi boyutlarını C# Dizi Örnekleri kısmında görebileceğiniz gibi ilerleyen konularımız içerisinde daha detaylı tanımlayacağız.

C# Diziye Eleman Ekleme

Dizilere nasıl, hangi yöntemler kullanarak eleman ekleme yapacağımızı gösterebilmek için oluşturmuş olduğum C# diziye eleman ekleme başlığı altında sizlere çok boyutlu dizilere ve tek boyutlu dizilerde eleman ekleme yapmak istediğiniz zaman kullanacağınız yöntemleri anlatacağım.

C# Diziye eleman ekleme yapmak için iki adet temel yöntemimiz var bunlardan ilki şu şekildedir;

int[] diziAdi = { 6, 8, 7, 9 }; // Dizi oluşturulur ve süslü parantez içerisinde elemanlar verilir.
for (int i = 0; i < diziAdi.Length; i++)
Console.WriteLine("Dizinin {0} indis numarasında bulunan eleman değeri {1} olarak tanımlanmış.", i, diziAdi[i]);

Kod Çıktısı:

C# Diziye eleman ekleme yöntemi #1

Bir diğer yöntemimizi ise çok boyutlu dizi tanımlayarak göstermek istiyorum.

// New olarak tanımlayacağımız dizi içerisine eleman sayısını muhakkak bildirmemiz gerekmektedir.
int[,] cokBoyutlu = new int [3,2]; // Çok boyutlu dizi oluştururken eleman sayısı yazacağımız kısıma kaç boyutlu ise o kadar virgül atarız.

// Diziye Eleman Ekleme İşlemi:
cokBoyutlu[0,0] = 7;
cokBoyutlu[0,1] = 20;
cokBoyutlu[1,0] = 10;
cokBoyutlu[1,1] = 62;
cokBoyutlu[2,0] = cokBoyutlu[1, 0] + 14;
cokBoyutlu[2,1] = cokBoyutlu[1, 1] + cokBoyutlu[2, 0];

//Eklenen Elemanları Yazdırma
for(int i = 0; i <= 2; i++)
{
for(int k=0; k<=1; k++)
{
Console.Write("-[{0},{1}] olarak diziye eklenen eleman: {2}\t", i, k, cokBoyutlu[i, k]);
}
Console.WriteLine("");
}

Kod Çıktısı:

C# Çok Boyutlu diziye eleman ekleme yöntemi

C# Dizi (Array) Sınıfı

Oluşturmuş olduğumuz dizi içerisinde eleman kopyalama, karşılaştırma yapabilmek, sıralayabilmek gibi çeşitli işlemleri C# kütüphanesi içerisinde yer alan Array sınıfını kullanarak gerçekleştirebiliriz. Bu işlemlerin yanı sıra bazı işlemleri de kolay bir şekilde yapmamıza imkan sağlayan bu sınıfın özelliklerine gelin birlikte göz atalım.

Dizi Uzunluğuna Nasıl Ulaşırız?

Programımızı oluşturduktan sonra c# eleman sayısı belli olmayan dizi tanımlaması veya belli eleman sayısı bulunan bir dizi tanımlaması gerçekleştirmiş olabiliriz. Bu eleman uzunluğuna erişebilmek için length komutunu kullanırız.

Bu yapıyı şu şekilde kullanabiliriz:

// Bir Dizi Oluşturalım:
string[] musteriler = { "Mert", "Ömer", "Mustafa", "Metehan", "Eyüp", "Oktay", "Ali İhsan", "Faruk" };
double[,] ondalikliSayilar = new double[20, 20];
Console.WriteLine("Tek Boyutlu oluşturduğumuz [müsteriler] dizisinin eleman sayısı: {0}\nÇok Boyutlu oluşturduğumuz [ondalikliSayilar] dizisinin eleman sayısı: {1}",musteriler.Length, ondalikliSayilar.Length);

Kod Çıktısı:

C# dizi uzunluğuna nasıl ulaşırız

C# Dizi Elemanlarını Sıralama Nasıl Yapılır?

Programımız içerisinde bir dizi içerisinde karışık olarak verilmiş bazı değerler olabilir. Bu verileri küçükten büyüğe sıralamak istediğimiz zaman herhangi bir sıralama algoritması kullanmak yerine Array sınıfı içerisinde bulunan Array.Sort(diziAdi); metodu kullanarak dizi elemanlarını küçükten büyüğe sıralayabiliriz.

Bu metodu kullanmak için bir kod oluşturarak çalıştıralım ve kod çıktısına birlikte göz atalım.

// Ayraç Değişkeni:
string ayrac = new string('-', 20);

// Random Değerler Üreteceğimiz Dizi :
int[] randomDegerler = new int[5];

// Diziye Random Değerler Ataması Gerçekleştirelim:
Random random = new Random();
Console.WriteLine("{0}\n< Random Üretilen Değerler >\n{1}", ayrac, ayrac);
for(int i = 0; i < randomDegerler.Length; i++)
{
int randomSayi = random.Next(1, 100); // 1'ile 100 arasında random değerler üretecek.
randomDegerler[i] = randomSayi;
Console.WriteLine("-> [{0}] İndise Atanan Değer: {1}", i, randomDegerler[i]);
}
// Küçükten Büyüğe Sıralama İşlemi Yapalım:
Array.Sort(randomDegerler); // Küçükten Büyüğe Sıralanma İşlemi Tamamlandı.
Console.WriteLine("{0}\n< Sıralanan Değerler >\n{1}", ayrac, ayrac);
for(int k=0; k < randomDegerler.Length; k++)
Console.WriteLine("-> [{0}] İndise Gelen Değer: {1}", k, randomDegerler[k]);
Console.WriteLine(ayrac);

Kod Çıktısı:

C# Diziyi küçükten büyüğe sıralama

C# Dizileri Karşılaştırma

Daha önce bulunan bir dizimizin elemanlarını yeni dizimizin içerisine kopyalamak isteyebiliriz, bu kopyalama işleminin doğru bir şekilde yapıldığını teyit etmek için Array.Equals(ilkDizi,ikinciDizi) metodunu kullanırız. Basit bir örnek oluşturalım.

// Dizi Tanımlaması:
string [] isimler = { "Emre", "Mustafa", "Ömer", "Oktay", "Ali İhsan", "Mert" };
string[] isimDizisi = { "Emre", "Mustafa", "Ömer", "Oktay", "Ali İhsan", "Mert" };

// Dizilerin Eşitliğini Kontrol Ettirelim:
if (Array.Equals(isimler, isimDizisi) == true)
Console.WriteLine("Tanımlamış Olduğunuz Dizilerin Elemanları Birbirine Eşittir.");
else
Console.WriteLine("Tanımlamış Olduğunuz Dizilerin Elemanları Birbirine Eşit Değildir.");

Örnek olarak yazdığımız bu kod içerisinde değer boolean türünde true veya false bir değer döndüreceği için if-else kontrol yapısına tabi tutarak ekranıma çıktı göstermesini istedim. Bu işlem sonucunda kodumuzu çalıştırdıktan sonra if kontrol yapısına giriş yaparak gerekli çıktıyı ekranımıza gönderecektir.

C# Dizilerde Arama Yapmak

Dizi içerisinde kullanıcıdan alacağımız elemanın veya kendimizin belirttiği elemanın bulunup bulunmadığını teyit etmek için kullanacağımız Array.BinarySearch(aranacakDizi,aranacakEleman) metodu ile dizi içerisinde arama yapabiliriz.

Not: Arama yapmadan önce dizi elemanlarını küçükten büyüğe sıralamazsak arama sonucuna erişim sağlayamayız. Bu yüzden Array.Short metodu ile birlikte kullanılmalı.

Oluşturmuş olduğumuz dizi içerisinde nasıl arama yapmamız gerektiğini gösteren örnek kod:

// Dizi Tanımlaması:
int[] elemanArayalim = { 10, 0, 2, 9, 7, 8, 1, 3, 6, 4, 5 };

// Değişken Tanımlaması:
int aramaYap,veriTut;
string ayrac = new string('-', 20);

Console.Write(ayrac + "\n-> Arama Yapmak İstediğiniz Değeri Girin: ");
aramaYap = Convert.ToInt32(Console.ReadLine());
Array.Sort(elemanArayalim); // Diziyi Küçükten Büyüğe Sıralıyoruz Aksi Takdirde Sonuca Ulaşamayabiliriz.
Console.Write("{0}\n-> Dizi Elemanları: ",ayrac);

//Dizi Elemanlarını Yazdıralım:
for (int i = 0; i < elemanArayalim.Length; i++)
Console.Write("[{0}] ",elemanArayalim[i]);
            
// Aranacak Veri Kaçıncı Sırada Tutacağımız Değişkene Atama Yapıyoruz.
veriTut = Array.BinarySearch(elemanArayalim, aramaYap);

// Elemanın bulunup bulunmadığını if-else kontrol yapısına sokuyoruz.
if (veriTut >= 0)
Console.WriteLine("\n{0}\n-> Arama yaptığınız [{1}] değeri dizinin [{2}] indisinde bulunuyor.\n{3}", ayrac, aramaYap, veriTut,ayrac);
else
Console.WriteLine("\n{0}\n-> Arama yaptığınız [{1}] değeri dizi içerisinde bulunmuyor.\n{2}", ayrac, aramaYap, ayrac);

Kod Çıktısı:

C# dizileri karşılaştırma

C# Dizi Kopyalama

Bu işlem için uzun uzun algoritmalar oluşturarak kopyalama işlemini gerçekleştirmek yerine Array sınıfının bize sunduğu Array.Copy() metodu ile işlemlerimizi gerçekleştirebiliriz. Bu işlemi gerçekleştirirken metot içerisine vereceğimiz parametrelerin anlamı şu şekildedir:

  • İlk kısım olan (xx,…,…,…,…) kısmında bulunan alana kopyalama işleminin yapılacağı dizi ataması gerçekleştirilir.
  • İkinci kısım olan (…,xx,…,…,…) içerisinde kopyalanacak dizinin hangi indis numarasından başlayarak kopyalama işlemi gerçekleştirilecek onu belirliyoruz.
  • Üçüncü kısmımız olan (…,…,xx,…,…) kısmında ise kopyalanmanın aktarılacağı diziyi tanıtıyoruz.
  • Dördüncü kısmımız (…,…,…,xx,…) kısmında ise kopyalanmanın aktarılacağı dizinin kaçıncı indisinden başlayarak aktarma yapılsın onu belirtiyoruz.
  • Son kısımda ise kaç tane eleman kopyalanarak aktarılsın onu belirtiyoruz.

Bu işlemi kod içerisinde görelim ve sonra kod çıktısına birlikte göz atalım:

// Dizi Tanımlaması:
char [] isimSoyisim = { 'E', 'M', 'R', 'E', 'Ç', 'E', 'L', 'E', 'N' };
char [] kopya = new char [5];

// Değişken Tanımlaması:
string ayrac = new string('-', 20);

// Asıl Dizi Elemanlarını Ekrana Yazdıralım:
Console.Write("{0}\n-> İsim: ", ayrac);
for (int i = 0; i < 4;i++)
Console.Write(isimSoyisim[i]);

Console.Write("\n-> Soyisim: ");
for (int i = 4; i < isimSoyisim.Length; i++)
Console.Write(isimSoyisim[i]);
            
Console.WriteLine("\n{0}\n< isimSoyisim Dizisiniden Kopyalanan Değer >\n{1}", ayrac, ayrac);
Array.Copy(isimSoyisim, 2, kopya, 0, 5); // Kopyalanma İşleminin Yapıldığı Yer
Console.Write("-> Kopyalanan Değer: ");
for (int i = 0; i < kopya.Length; i++)
Console.Write(kopya[i]);
Console.WriteLine("\n"+ayrac);

Kod Çıktısı:

C# dizi kopyalama

Konuyu fazla uzatmamak için en çok işimize yarayacak ve kullanacağınızı düşündüğüm Array sınıfı metotları bu şekildeydi.

Daha detaylı ve kapsamlı olarak Array sınıfını incelemek isterseniz Microsoft tarafından yayınlanan dokümantasyona göz atmak isterseniz buraya tıklayarak ilgili kaynağa göz atabilirsiniz.

C# Dizi Örnekleri

Genel olarak işlediğimiz konuları toplarsak ve C# Diziler nedir sorusunun cevabını ve akılda kalıcılığı arttırmak için dizi örnekleri oluşturalım.

Bu oluşturacağımız C# Dizi örnekleri şu şekilde başlıklar halinde olacaktır:

  • C# dizinin en büyük elemanını bulma,
  • C# random dizi oluşturma.

C# Dizinin En Büyük Elemanını Bulma Örneği

Dizinin en büyük elemanını bulma işlemi için Array sınıfına ait Short metodunu kullanabileceğimiz gibi basit bir algoritma yazarak da bu işlemi gerçekleştirebiliriz. Benim bu örnek için yapacağım işlem basit bir algoritma oluşturarak dizinin en büyük elemanını bulmak olacak. Bu yapıyı kurarken uyguladığım aşamalar ise şu şekilde olacak:

#1 Öncelikle int veri tipine ait bir dizi tanımlayarak içerisine bir miktar eleman tanımlaması gerçekleştirdim.
#2 Oluşturduğum tek boyutlu dizinin elemanlarına erişebilmek için bir for döngüsü oluşturdum.
#3 Oluşturmuş olduğum bu for döngüsü içerisinde dizinin en büyük elemanını bulmak için if kontrol yapısı oluşturdum.
#4 Dizi içerisindeki en büyük değere ulaşarak ekrana yazdırma işlemini gerçekleştirmek için ekrana çıktı verecek kod satırını yazarak programı bitireceğim.

// Dizi tanımlaması:
int[] diziOlustur = { 627, 234, 127, 6, 17, 987, 636, 473 };

// Değişken tanımlaması:
int kontrolYapisi,saklamaKabi, indisNumarasi;
string ayrac = new string('-', 20);

indisNumarasi = 0;  
saklamaKabi = diziOlustur[0]; // En Büyük Değeri İlk Başta 0. İndis Olarak Kabul Ediyoruz.

Console.Write("{0}\n< En Büyük Değeri Bulma İşlemi >\n{1}\n-> diziOlustur elemanları: ", ayrac, ayrac);
for (int i = 0; i < diziOlustur.Length; i++)
{
kontrolYapisi = diziOlustur[i];
if (kontrolYapisi >= saklamaKabi)
{
saklamaKabi = diziOlustur[i];
indisNumarasi = i;
}
Console.Write("[{0}] ", diziOlustur[i]);
}

Console.WriteLine("\n{0}\n-> Dizinin En Büyük elemanı {1} indiste yer alan {2} değerdir.\n{3}", ayrac, indisNumarasi, saklamaKabi,ayrac);

Kod Çıktısı:

C# dizinin en büyük elemanını bulma

C# Random Dizi Oluşturma Örneği

Aslında bunu yukarıdaki kısımlarda kullandım fakat yapısını açıklama gereği hissettiğimden bu başlık altında kendisine yer verdiğim bir örnek olacak. Bu C# Random dizi oluşturma örneği için uyguladığım aşamalar şu şekildedir:

#1 Öncelikle int veri tipine ait 10 eleman ataması gerçekleşecek bir dizi tanımlaması gerçekleştirdim.
#2 Bu tanımladığım dizi içerisine elemanların random bir şekilde atanmasını sağlamak için Random sınıfını programıma tanıttım.
#3 Dizinin indis numaralarına ulaşarak gerekli random değerlerin atamasını gerçekleştirmek için basit bir for döngüsü oluşturdum ve atama işlemlerini gerçekleştirdim. Atama işlemlerini yaptıktan sonra aynı for döngüsü içerisinde ekrana atanan değerleri yazdırarak programı bitirdim.

// Ayraç Tanımlaması:
string ayrac = new string('-', 20);

// Dizi Tanımlaması:
int[] randomDizi = new int[10];

// Random Değerleri Oluşturma İşlemi:
Random random = new Random();
int randomDeger; // Oluşan random değerleri tutacak değişken.

Console.Write("{0}\n< Random Sınıfını Kullanarak Bir Dizi Oluşturma >\n{1}\n-> Oluşturulan Dizi Elemanları: ",ayrac,ayrac);
for(int i=0; i < randomDizi.Length; i++)
{
randomDeger = random.Next(100);
randomDizi[i] = randomDeger;
Console.Write("[{0}] ",randomDizi[i]);
}
Console.WriteLine("\n"+ayrac);

Kod Çıktısı:

C# random dizi oluşturma

Evet, C# Diziler Nedir sorusuna cevap vermek ve diziler kavramını tanıtmak için yazmak istediğim bu yazı içerisinde sizlere Array sınıfını ve C# dizi örnekleri içerisinde çeşitli kodlar ve teorik bilgiler verdim ama bazı bilgiler eksik. Bu eksik olan bilgilerin başında çok boyutlu diziler gelmekte ama en kısa süre içerisinde bu konun devamı olarak çok boyutlu dizilerin anlatımını yapacağım bu konuda şüpheniz olmasın.

Her zaman olduğu gibi aklınıza takılan bir soru veya konu işleyişi hakkında bir öneriniz bulunuyorsa aşağıda bulunan yorum yap kısmından benim ile iletişime geçebilirsiniz.

Yazı gezinmesi

Exit mobile version