Bu yazımda, C#’da dizi tanımlamaları ve System.Array sınıfları ile alakalı örnekler sunuyor olacağım. Örnekleri aşağıdaki kod bloğunda görebilirsiniz.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Array
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            /*
             * Tüm programlama dillerinde olduğu gibi C# programlama dilinde de dizi (array) yapısı kullanılmaktadır.
             * Hafızada arka arkaya saklanan aynı türden nesnelere dizi (array) denmektedir.
             * Dizi içindeki tüm elemanlara aynı ortak isimden ulaşılmaktadır. Burada önemli olan elemanın hafızadaki yeridir.
             * C# ile programlamada dizi değişken tanımlama 2 aşamada yapılmaktadır.
             * Öncelikle diziyi oluşturacak elemanların türü tanımlanır. Dizinin elemanlarına [] (index operatörü) ile ulaşılır.
             */

            string [] dersler;

            /*
             * Bu şekilde ders adında string tipte değişken dizisi tanımlayacağımızı belirtmiş oluruz.
             * Bu aşamada kaç elemanlı bir dizi olacağı belli değildir.
             * Sonrasında dizi değişkenin kaç elemanlı olacağı new deyimi ile belirtilir.
             */

            dersler = new string[5];
            /*
             * Bunun sonucunda hafızada aşağıdaki şekilde yer ayrılacaktır.
             * Burada dikkat edilirse dizi beş elemanlıdır, ancak dizinin ilk elemanına ait index numarası “0” dır.
             */

            // Bu 2 aşamada yaptığımız işlemi, aşağıdaki şekilde tek satırda da yazabiliriz. 
            // string[] arabalar = new string[5];

            // Dizinin değişkenlere bilgi aktarmak yada dizinin herhangi bir elemanını başka bir değişkene atamak için [ ] kullanılır.
            dersler[0] = "Matematik";
            dersler[1] = "Türkçe";
            dersler[2] = "İngilizce";
            dersler[3] = "Sosyal";
            dersler[4] = "Fen";
            string secilen_ders = dersler[3]; //Ciktisi Sosyal olacaktir ve bu degeri secilen_ders string degiskenine atamis olduk.

            MessageBox.Show(dersler[3]); // Ciktisi Sosyal olacaktir.

            //Dizilere değer aktarma işlemi aşağıdaki örneklerde olduğu gibi de yapılabilir.

            int[] kayit = { 10, 12, 14, 16 }; // Burada dizinin boyutu 4 olarak belirlenir.



        }

        private void button2_Click(object sender, EventArgs e)
        {
            int[] numara = new int[10]; //10 elemanli bir int dizisi olusturduk.

            for (int i = 0; i < 10; i++) //i 10 olana kadar asagidaki blogun icinde don
            {
                numara[i] = i * 10; //ve numara isimli diziye i*10 ' u ata
                // dizinin elemanları 0,10,20,30,40,50,60,70,80 ve 90 olacaktır.
                
            }
            for (int k = 0; k < 10; k++)
            {
                listBox1.Items.Add(numara[k]);//Listenin index'i kullanilarak elamanlar listbox1'e yazdirildi.
                //Aslinda asagidaki gibi oluyor.
                /*
                 * listBox1.Items.Add(numara[0]);
                 * listBox1.Items.Add(numara[1]);
                 * listBox1.Items.Add(numara[2]);
                 * listBox1.Items.Add(numara[3]);
                 * listBox1.Items.Add(numara[4]);
                 * listBox1.Items.Add(numara[5]);
                 * listBox1.Items.Add(numara[6]);
                 * listBox1.Items.Add(numara[7]);
                 * listBox1.Items.Add(numara[7]);
                 * listBox1.Items.Add(numara[9]);
                 * listBox1.Items.Add(numara[10]);
                 * Bu elamanlari tek tek yukaridaki sekilde de listBox1'e ekleyebilirdik fakat
                 * for dongusu kullanilarak bu islemi cok kisa bir sekilde halletmis olduk.
                 */

            }


        }

        private void button3_Click(object sender, EventArgs e)
        {
            /*
             * SetValue() Metodu ile Dizi Değişkenlere Değer Atama
             * Dizi değişkenlere değer atamanın bir başka yöntemi de Array sınıfına ait SetValue() metodudur.
             * SetValue() metodu, atanacak değerleri ve kaçıncı indekste (sırada) olacağına ait iki parametreye sahiptir.
             */

             // 2 elamanli soyad isimli string bir dizi tanimladik
            string[] soyad = new string[2];
            // soyad dizisinin 0. index'sine "Kurt" soyadini atadik. Tirnaklar olmaz ise hata verir.
            soyad.SetValue("Kurt", 0);
            // aoyad dizisinin 1. index'sine ise "Ozkanca" soyadini SetValue() metodu ile atamis olduk.
            soyad.SetValue("Ozkanca", 1);
            //Az once for dongsusu ile degerleri listBox'a eklemistik. Simdi elaman sayisi az oldugundan
            //Tek tek ekleyecegim.
            listBox2.Items.Add(soyad[0]); //Kurt soyadini
            listBox2.Items.Add(soyad[1]); //Ozkanca soyadini ekleyecek.

        }

        private void button4_Click(object sender, EventArgs e)
        {
            //int tipinde ve ders_kodu adinda 5 elemanli bir dizi olusturuyoruz.
            int [] ders_kodu = new int[5];
            //tanimladigimiz ders_kodu dizisinin ilk elamanina 10 atiyoruz.
            ders_kodu[0] = 10;
            //int olarak atadigimizdan ders_kodu dizesindeki ilk elemani gosterirken stringe ceviriyoruz.
            textBox1.Text = ders_kodu[0].ToString();
            //ve textbox1'de cikti 10 olarak gozukuyor.

            //Daha onceden tanimlamis oldugumuz 5 elamanli ders_kodu dizisinin
            //Elaman sayisini degistiriyoruz.
            //Elaman sayisini degistirdigimiz anca daha onceden icinde bulunan elaman ya da
            //Elamanlar silinecektir.

            ders_kodu = new int[8];
            //dizinin elaman sayisini 5'ten 8'e yukselttigimiz icin 10 degeri silindi
            //bu yuzden dolayi textbox2'de 0 degerini gorecegiz.
            textBox2.Text = ders_kodu[0].ToString();
            
        }

        private void button5_Click(object sender, EventArgs e)
        {
            /*
             * Dizi değişkenlerinin eleman sayısını değiştirmek için diğer bir yöntem ise Array sınıfının Resize() metodundan yararlanmaktır.
             * Resize() metodu, dizi değişkeninin referansını ve yeni eleman sayısını parametre olarak alır.
             * Bu yöntemde dizinin eleman sayısını değiştirdiğimizde, elemanların önceki içerikleri korunur.
             */

            listBox3.Items.Clear();
            string[] bolum = new string[2];
            bolum[0] = "Bilgisayar Programlama";
            bolum[1] = "Mekatronik";
            //bolum adinda 2 elamanli dizimizi olusturuk ve bunun icine 2 tane eleman kayit ettik.
            //normalde dizinin boyutunu yukaridaki gibi 3'e cikarsaydik daha onceden eklemis oldugumuz
            //Bilgisayar Programlama ve Mekatronik degerlerimiz silinecekti. Bunun onune gecmek icin

            System.Array.Resize(ref bolum, 3);
            bolum[2] = "Makina";
            //dizinin boyutunu 3'e cikardik ve "Makina" adinda bir eleman daha eklemis olduk.

            for (int i = 0; i < 3; i++)
            {
                listBox3.Items.Add(bolum[i]);
            }

        }

        private void button6_Click(object sender, EventArgs e)
        {
            /*
             * Uygulamalarda çok sık olarak bir tabloda değişkenlerin saklanması ve tablodaki değerlerin üzerinde işlem yapılması istenmektedir.
             * Çoğunlukla 2 boyutlu (bazen de 3 boyutlu) dizi değişkenleri kullanılmaktadır.
             */
            string[,] ogrenci = new string[3, 2];
            ogrenci[0, 0] = "Serdar Kurt";
            ogrenci[0, 1] = "1234";
            ogrenci[1, 0] = "Zeynep Koc";
            ogrenci[1, 1] = "1265";
            ogrenci[2, 0] = "Osman Bilir";
            ogrenci[2, 1] = "1776";

            textBox3.Text = ogrenci.Rank.ToString(); //Dizinin kac boyutlu oldugunu gosterir Cevap:2
            textBox4.Text = ogrenci.Length.ToString(); //Dizideki toplam eleman sayisini gosterir. Cevap:6

            //veya asagidaki sekilde de cok boyutlu dizi tanimlayabiliriz:

            string[,] ogrenciler = { {"Serdar Kurt","1234" },{ "Zeynep Koc","1265"},{"Osman Bilir","1776" } };
        }

        private void button7_Click(object sender, EventArgs e)
        {
            //CopyTo() ile bir dizinin tamami baska bir dizinin istenilen yerine
            //kopyalanabilir.
            string[] sayfa1 = { "a", "b", "c", "d" };
            string[] sayfa2 = new string[10];
            sayfa1.CopyTo(sayfa2, 3);
            textBox5.Text = sayfa2[3].ToString();
            //textBox5'e a yazar.
        }

        private void button8_Click(object sender, EventArgs e)
        {
            //Diğer bir kopyalama metodu ise Copy metodudur.
            string[] sayfa1 = { "a", "b", "c", "d" };
            string[] sayfa2 = new string[10];
            System.Array.Copy(sayfa1, 2, sayfa2, 3, 2);
            textBox6.Text = sayfa2[3].ToString();
            //textBox6'nin icine c yazar.
            /*
             * Burada sayfa1’in 2. elemanından sonraki 2 elemanı, sayfa2’nin 3. elemanından itibaren kopyalanır.
             */
        }

        private void button9_Click(object sender, EventArgs e)
        {
            /*
             * Sort() metodu ile dizileri küçükten büyüğe sıralayabilirsiniz.
             */
             //Asagida sayfa1 adli string dizimizi tanimladik.
            string[] sayfa1 = { "x", "a", "k", "d" };
            /*
             * Array.Sort() komutu ile dizi elemanlari
             * "a","d","k","x" olarak buyukten kucuge dogru
             * siralanacak.
            */
            System.Array.Sort(sayfa1);

            for (int i = 0; i < 4; i++)
            {
                listBox4.Items.Add(sayfa1[i]);
                /* ListBox4' un içinde sırasıyla “a”, “d”, “k”, “x”
                 * değerleri gözükecektir.  */
            }



        }

        private void button10_Click(object sender, EventArgs e)
        {
            /*
             * Diziyi ters çevirmek için Array sınıfının Reverse() metodu kullanılır.
             */

            string[] gunler = { "Pazartesi", "Sali", "Carsamba", "Persembe", "Cuma", "Cumartesi", "Pazar" };
            System.Array.Reverse(gunler);

            /*
             * Burada GetLength(0) metodu, dizinin boyutunu vermektedir.
             * Parantez içindeki 0 değeri ise, örnekteki dizi 1 boyutlu olduğundan 
             * birinci boyutu ifade etmek için kullanılmıştır.
             */
            for (int i = 0; i < gunler.GetLength(0); i++)
            {
                listBox5.Items.Add(gunler[i]);
            }

        }

        private void button11_Click(object sender, EventArgs e)
        {
            /*
             * Dizilerde arama yapmak için genellikle 2 yöntem kullanılır.
             * Bunlardan birincisi BinarySearch() metodudur.
             * Bu yöntem, ancak sıralanmış dizilerde kullanılabilir.
             * Arama yapacağımız dizi sıralı bir dizi değilse,
             * önce dizinin Sort() metodu ile sıralanması gerekir.
             * BinarySearch() metodu genellikle, dizi ve aranacak bilgi olmak üzere iki parametre alır.
             */
            //Dizimizi olusturuyoruz.
            string[] gunler = { "Pazar", "Sali", "Pazartesi", "Persembe", "Carsamba", "Cumartesi", "Cuma" };
            //Dizi once siralaniyor.
            System.Array.Sort(gunler);
            //textBox7 icindeki deger aranacak
            int arama = System.Array.BinarySearch(gunler, textBox7.Text);
            if (arama<=-1)//Yani girilen deger dizide bulunamadiysa asagidaki suslu parantez calissin
            {
                MessageBox.Show("Aradiginiz deger bulunamadi");
            }
            //Eger bulunduysa else bloguna gir
            else
            {
                //Ve sonucu goster.
                MessageBox.Show(gunler[arama]);
                
            }
            

        }

        private void button12_Click(object sender, EventArgs e)
        {
            /*
             * Dizilerde arama yapmak için diğer bir yöntem ise IndexOf() metodunu kullanmaktır.
             * Bu yöntemde dizinin sıralı olmasına gerek yoktur.
             */

            //Dizimizi olusturuyoruz.
            string[] gunler = { "Pazar", "Sali", "Pazartesi", "Persembe", "Carsamba", "Cumartesi", "Cuma" };
           
            //textBox8 icindeki deger aranacak
            int arama = System.Array.IndexOf(gunler, textBox8.Text);
            if (arama <= -1)//Yani girilen deger dizide bulunamadiysa asagidaki suslu parantez calissin
            {
                MessageBox.Show("Aradiginiz deger bulunamadi");
            }
            //Eger bulunduysa else bloguna gir
            else
            {
                //Ve sonucu goster.
                MessageBox.Show(gunler[arama]);

            }

        }
    }
}

Proje Dosyasi:

C# Tür Dönüşümleri

Kategoriler: C#Programlama

0 yorum

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir