Diziler

Birbiri ile ilişkili olaran veriler kümesi dizi olarak adlandırılmaktadır. Peki ne demek bu? Örnek olarak doğal sayılar dizisi, tek sayılar dizisi, çift sayılar dizisi, Bir futbol takımında yer alan futbolcuların isimlerinin yer aldığı bir dizi gibi bir çok örnek verilebilmektedir.

Bir dizide temel bilinmesi gereken konulardan bir tanesi de indeks kavramıdır. İndeks dizi elemanının sırasını belirtmektedir. Dizilerde ilk indeks her zaman sıfırdan başlar. Yani bir dizinin 1. Elamanı dediğimizde aslında sıfır indeksinde yer alan elemanı kast etmekteyiz. Dizileri tanımlarken syntax yapısında köşeli parantezler kullanılır. [] gibi. Diziler geçici bellekte tutulurlar. Dizi kullanımında syntax aşağıdaki gibidir:

DizininDegiskenTuru [] dizininAdi = { Dizi elemanları }

Örnek olarak bir sınıftaki kişileri gösteren bir dizimiz olsun. Bu dizi içindeki kişilerin isimleri ne tür bir veri? String türünde bir veri o halde benim dizim string olacak. Şöyle ki;

string[] SinifDizi = { "İsmail", "Filiz", "Emir", "Gülhan", "Tuncay", "Hasan", "Halime" };

Şimdi benim bu dizimde toplamda 7 eleman var. Peki dizinin ilk sırasında yani sıfırında indeksinde hangisi var, İsmail. Yani tam adresi şu aslında;

SinifDizi[o] = "İsmail";

Son eleman hangisi Halime. 7 eleman var ama indeks nosu 6. Şöyle ki,

SinifDizi[6] = "Halime";

Örnek ben bu dizide 6. Elemanı bir labela yazdırmak istediğimde;

Label1.text = SinifDizi[6];

Şeklinde kodumu yazarım.

Örnek olarak birde int tipinde bir dizi oluşturalım. Çift sayıları içeren bir dizi olsun.

int [] ciftsayilar = {0,2,4,6,8,10} gibi bir dizi tanımlaması olabilir. Başka türde örneklersek örnek dizi tanımlamaları için;

int[] ciftsayilar = { 0, 2, 4, 6, 8, 10 };
double[] ondalikliSayilar = { 0.25, 1.25, 1.5, 1.74 };
char[] karakterler = { 'a', 'b', '*', '+' };

Şimdi bir tane örnek yapalım, bir dizi içinde yer alan elemanları listboxa yazdıran bir program yapalım.

Bunun için formuma bir adet listbox, bir adet buton kontrolü kullanıyorum. Dizimdeki elemanları listboxa yazdırabilmem için dizi içinde dönmem gerekiyor, bunun için döngü kullanacağım. Bu döngüm sıfırdan başlayacak, dizinin uzunluğuna kadar devam edecek. Bunun içinde dizilerde kullanılan Length metodunu kullanacağım. Length metodu geriye int tipinde bir değer döndüren metottur. Burada dizinin içindeki eleman sayısı bilgisini elde ederiz. Daha sonra döngümde her bir elemanı listboxa ekliyorum. Kodlarımız şöyle;

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 KararYapilariOrnekler
{
    public partial class Form13 : Form
    {
        public Form13()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //string tipinde bir dizi tanımlaması yaptım ve öğeleri ekledim.
            string[] Sinif = { "İsmail", "Filiz", "Emir", "Hasan", "Halime", "Gülhan", "Tuncay" };
            //Dizimin içinde dönüyorum. Dizinin uzunluğuna kadar gitmek için length metodunu kullandım.
            for (int i=0; i < Sinif.Length; i++)
            {
                //Dizinin her bir i. elemanını listboxa ekliyorum.
                listBox1.Items.Add(Sinif[i]);
            }
        }
    }
}

Bir başka örnek daha yapalım. Benim bir dizim var bu dizi içerisinde rakamlar yer alıyor. Benim amacım bu rakamlar içinde yer alan tek rakamları listelemek. 1’den 10’a kadar olan rakamları içeren bir diziyi manuel oluşturdum. Akabinde yine for döngüsü ile dizim içinde dönüyorum. Dizimin içinde yer alan öğelerin tek mi olduğunu bulmak için karar yapısı kullanıyor ve burada mod alma işlemi ile tek sayıları buluyorum.

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 KararYapilariOrnekler
{
    public partial class Form13 : Form
    {
        public Form13()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //int tipinde bir dizi tanımlaması yaptım ve öğeleri ekledim.
            int[] rakamlar = { 1,2,3,4,5,6,7,8,9,10};
            //Dizimin içinde dönüyorum. Dizinin uzunluğuna kadar gitmek için length metodunu kullandım.
            for (int i=0; i < rakamlar.Length; i++)
            {
                //Tek rakamları buluyorum.
                if (rakamlar[i] % 2 == 1)
                {
                    listBox1.Items.Add(rakamlar[i]);
                }
              
            }
        }
    }
}

Bir örnekle daha son bulduralım, rastgele öğelerden oluşan bir dizi tanımlayalım yine, 10 tane elemanı olsun. Burada da 10’dan büyük olan çift rakamları listboxa yazdıralım. Yine önce dizi oluşturacağım, sonra bir for döngüsü ve akabinde bir if karar yapısı. Bu sefer karar yapısı içinde öğenin hem 10’dan büyük olma durumunu hem de çift olma durumunu kontrol edeceğim için “&&” “ve” operatörünü kullanacağım. Kodlayalım;

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 KararYapilariOrnekler
{
    public partial class Form13 : Form
    {
        public Form13()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //int tipinde bir dizi tanımlaması yaptım ve öğeleri ekledim.
            int[] rakamlar = { 8, 25, 63, 56, 45, 78, 12, 36, 46, 79};
            //Dizimin içinde dönüyorum. Dizinin uzunluğuna kadar gitmek için length metodunu kullandım.
            for (int i=0; i < rakamlar.Length; i++)
            {
                //10'dan büyük ve çift rakamları bulup, listboxa ekliyorum.
                if (rakamlar[i] % 2 == 0 && rakamlar[i]>10)
                {
                    listBox1.Items.Add(rakamlar[i]);
                }
              
            }
        }
    }
}


Bir cevap yazın

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