C# (C Sharp) Ders 6 – Diziler (Array)

Diziler, aynı türdeki verilerin tek ve çok boyutlu olarak tutulduğu yapılardır. Dizilerin boyutları sabittir. İlk oluşturulduklarında boyutları belirtilir ve uygulama sürecinde bir dizinin boyutu değişmez. Birden fazla veriyi tutmak için tasarlanan diziler verileri indeksli bir yapı ile tutar ve dizi içerisindeki verilere indeksler aracılığıyla erişilir. Dizileri tanımlamak için köşeli parantezler ([]) kullanılır. Diziler de birer değişkendir, veri tipleri ve isimleri bulunur. Diziler referans türündeki veri yapılarıdır. n boyutlu bir dizinin başlangıç indeksi 0’dır ve indeks aralığı 0 ile n-1 arasındadır.

Değer:

1

4

35

43

57


İndeks:

0

1

2

3

4

 Yukarıda belirtilen dizi {1, 4, 35, 43, 57} elemanlarından oluşmaktadır ve üçüncü sırada bulanan 35 elemanın indeksi 2’dir.

Örnek kullanım:

C#
using System;

namespace test3;

class Program
{
static void Main(string[] args)
    {
              int[] sayiDizisi = { 7, 26, 4, 96, 20, 82 }; // altı elemanlı bir dizi oluşturulmuştur
              sayiDizisi[2] = 67; // dizinin ikinci indeksine 67 değeri atanır, atrık ikinci indekste 4 değil 67 bulunmaktadır

              foreach (int sayi in sayiDizisi) // dizinin elemanları alt alta sıralanır, {7, 26, 67, 96, 20, 82}
              {
                            Console.WriteLine(sayi);
               }
    }
}

 İki boyutlu bir diziyi şu şekilde tanımlamak mümkündür:

C#
int[,] ikiBoyutluDizi = {{2, 3, 7}, {5, 9, 2}};

Dizilerde Arama İşlemleri

Dizi zerinde arama yaparak, belirli bir elemanın dizide bulunup bulunmadığı kontrol edilebilir.

Örnek uygulama:

C#
using System;

namespace DiziArama;

class Program
{
    public static int elemanBul(int[] dizi, int aranan)
    {
        int indeks = -1;
        for (int i = 0; i < dizi.Length; i++)
        {
            if (dizi[i] == aranan)
            {
                indeks = i;
                break;
            }
        }
        return indeks;
    }
    static void Main(string[] args)
    {
        int[] sayiDizisi = { 7, 26, 4, 96, 20, 82 };
        int aranan = 4;
        int sonuc;
        sonuc = elemanBul(sayiDizisi, aranan);

        if (sonuc == -1)
        {
            Console.WriteLine("Aranan değer dizide bulunamadı.");
        }
        else
        {
            Console.WriteLine("Aranan değerin dizideki indeksi: " + sonuc);
        }
    }
}

C# standart kütüphaneleri içerisinde, dizi ve koleksiyonlarda arama yapmak için hazır arama metotları bulunmaktadır. İlgili hazır metotların başlıcaları şunlardır:

  • Find Bulduğu ilk değeri sonuç olarak döner
  • FindAll Bulduğu tüm değerleri sonuç olarak döner
  • FindLast Bulduğu son değeri sonuç olarak döner
  • FindIndex Bulduğu ilk değerin indeksini sonuç olarak döner
  • FindLastIndex Bulduğu son değerin indeksini sonuç olarak döner

Örnek uygulama:

C#
using System;

namespace DiziIndexArama;

class Program
{
    static void Main(string[] args)
    {
        int[] sayiDizisi = { 7, 26, 4, 96, 20, 82 };
        int aranan = 4;
        int sonuc = Array.FindIndex(sayiDizisi, e => e == aranan);

        Console.WriteLine("Aranan elemanın indeksi: " + sonuc); // Aranan elemanın dizinin 2. elemanı olduğu sonucu konsola yazılır
    }
}

C# standart kütüphaneleri içerisinde, dizi ve koleksiyonlarda sıralama yapmak için hazır sıralama metotları bulunmaktadır. İlgili hazır metotların başlıcaları şunlardır:

  • Sort Bir diziyi kendi içinde artan sırada sıralar
  • Reverse Bir dizideki elemanların sırasını tersine çevirir

Örnek uygulama:

C#
using System;

namespace DiziSiralama;

class Program
{
    static void Main(string[] args)
    {
        int[] sayiDizisi = { 7, 26, 4, 96, 20, 82 };
        Console.Write("Sıralama öncesi dizi: ");

        foreach (int sayi in sayiDizisi)
        {
            Console.Write(sayi + " "); // 7 26 4 96 20 82
        }

        Array.Sort(sayiDizisi);
        Console.Write("\nSıralama sonrası dizi: ");

        foreach (int sayi in sayiDizisi)
        {
            Console.Write(sayi + " "); // 4 7 20 26 82 96
        }
    }
}

Kaynak: https://learn.microsoft.com/tr-tr/dotnet/csharp/tour-of-csharp/tutorials/