DERS4 - C/C++ Ders Anlatımı - C Programlama Dilinde Diziler - Arrays in C

Etiketler: 

Daha önce C programla dilinde değişken ve sabitlerden bahsetmiştik.

Ek olarak da c dilinde string kullanımını gördük.

Bu dersimizde ise C programla dilinde dizi tanımlamalarını öğreneceğiz.

İleride kompleks programlar yazarken aynı tipte birden fazla değişken tanımlamak zorunda kalacağız.

Örneğin, programımızda, 100 tane öğrencinin öğrenci numarasını tutmak zorunda kalabiliriz.

 

Bunu dizi kullanmadan ancak

int ogrenciNo1=826;
int ogrenciNo2=1254;
int ogrenciNo3=363;
int ogrenciNo4=226;
//...
int ogrenciNo99=435;
int ogrenciNo100=45;

şeklinde, 100 tane int tipinde değişken tanımlayarak yapabiliriz. Bu da gördüğünüz gibi 100 tane değişkeni ayrı ayrı tanımlayarak olmaktadır. Değişkenlerin çok sayıda olması işleri zorlaştırmaktadır. Örneğin 3000 tane öğrencisi olan bir okul olduğunu düşünürsek bu okula yazılacak program için tam 3000 tane değişken tanımlamamız gerekir.

Ama biz ayni tanımlamaya özdeş işi dizi kullanarak

int ogrenciler[100];

şeklinde tek bir dizi değişken ile tek bir seferde de tanımlayabiliriz.

Öğrenmemiz gereken şey, ilk tanımlamada 3'üncü öğrencinin öğrenci no'suna "ogrenciNo3"  isimli değişken ile ulaşabiliyorduk. Peki, dizi şeklinde tek bir değişkenimiz olduğuna göre bu tek bir dizi değişken nasıl oluyor da 100 tane ayrı ayrı değişkeni ifade edebiliyor.

 Bunun cevabı programlama dillerinin dizi tanımlamalarında index kullanmasıdır. Bunun anlama dizi değişkeninin adı bellekteki 100 tane ardışık int tamsayının başlangıç adresini belirttiğidir. Değişken adından hemen sonra köşeli parantezler arasına index numarası girerek istenen index'teki değişkene erişilir. Örneğin;

ogrenciler[0]=1;  //dizinin ilk elemanı
ogrenciler[2]=2;  
ogrenciler[99]=3; //dizinin son elemanı

Şeklinde erişimler gerçekleştirilir. Dizi kullanımında en çok karıştırılan ve en çok dikka etmemiz gereken c programlama dilinde dizi indeksinin 0'dan başlamasıdır. Yani

ogrenciler[0]=1;

 
ataması ile birinci öğrencinin öğrenci numarası 1 olarak değiştirilmiştir. Bu bilgiyi (index'in 0' dan başlaması) kesinlikle unutmamalıyız. Çünkü böyle bir hata programımızın yanlış çalışmasına hatta bazı durumlarda programımızın çökmesine sebep olur. Mesela 100 elemanlı bir dizi tanımladığımız halde

ogrenciler[150]=45;

şeklinde bir atama yapmak istersek hata ile karşılaşırız.

Bu tarz ayrıntıları konuştuktan sonra karakteri, kayan noktalı sayı, çift duyarlı kayan noktalı sayı tiplerinde dizi değişken tanımlamayı görelim. Yapı ve kullanım olarak örneğimizdeki tamsayı tipindeki dizi değişken tanımlamasından hiçbir farkı bulunmamaktır. ÖR:

char karakterlerim[100];
float ortalamalar[250];
double standartSapmalar[10];

Yukarıda C programlama dilinde 100 elemanlı bir karakter dizisi (STRING), 250 elamanlı bir kayan noktalı sayı dizisi ve 10 elemanlı çift duyarlı kayan noktalı sayı dizisi tanımlaması yapılmıştır. Bu tanımlama diğer birçok programlama dilinde C'dekine benzer şekildedir.