C#Programlama

C# Dizi Tanımlamaları System.Array Sınıfı

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

Serdar Kurt

Merhaba, 1986 Ankara doğumluyum. Sakarya Üniversitesi Bilgisayar Programcılığı mezunuyum. Şu an özel bir şirkette Security Engineer pozisyonunda görev yapıyorum. Bilişim Teknolojileri alanında kendimi geliştirmeye devam ediyorum.

İlgili Makaleler

Abone ol
Bildir
guest
0 Yorum
En Yeniler
Eskiler Beğenilenler
Başa dön tuşu

Reklam Engelleyici Algılandı

Bana destek olmak için lütfen reklam engelleyicinizi devre dışı bırakınız ya da bu siteyi izin verilenler listesine ekleyiniz.