170 likes | 343 Views
Diziler (Arrays). Tek bir değişken tanımlamak için aşağıdaki gibi bir yazım yeterlidir. int i; Hatırlanacağı gibi bu tarz bir tanımlamada ile ismi i türü tamsayı ve ilk değeri atanmamış bir değişken bildirilmektedir.
E N D
Diziler(Arrays) Bilgisayar Programlama
Tek bir değişken tanımlamak için aşağıdaki gibi bir yazım yeterlidir. int i; Hatırlanacağı gibi bu tarz bir tanımlamada ile ismi i türü tamsayı ve ilk değeri atanmamış bir değişken bildirilmektedir. Aynı türden birden fazla değişken tanımlamak gerektiği durumlarda ise dizilerden faydalanılır. Bilgisayar Programlama
int a[10]; Bu tarz bir tanımlama bellekte türü tamsayı olan 10 adetlik bir bölgeyi belirtir ve bellekteki görünümü ise aşağıdaki gibidir. İstenilen dizi elemanına ulaşmak için ilgili elemanın indis numarasının (subscript) belirtilmesi gerekmektedir. a[ 0 ], a[ 1 ]...a[ 9 ] Bilgisayar Programlama
int b [ n ] b[ 0 ], b[ 1 ]...b[ n – 1 ] C’de dizilerin ilk elemanı sıfırdan başlar. Köşeli parantezler arasındaki değer tam sayı veya tamsayı üreten bir değer olmak zorundadır. b [ 0 ] = 10; b [ 2 ] = 20; b [ 5 ] = b[ 0 ] + b[ 2 ]; Bilgisayar Programlama
Dizi elemanlarının normal değişkenlerden bir farkı yoktur. • c[ 0 ] = 3; • printf( "%d", c[ 0 ] ); • Eğer x, 3’e eşit ise aşağıdaki yazımlar geçerlidir. • c[ 5 - 2 ] == c[ 3 ] == c[ x ] Bilgisayar Programlama
int i; for(i = 0; i+5 < 100; i = i + 1) a[i] = 0; Daha öncede bahsedildiği gibi köşeli parantezler içindeki ifade tamsayı veya tamsayı değer üreten bir ifade olmalıdır. Bilgisayar Programlama
Dizinin elemanlarına başlangıç değerlerinin atanması teker teker gerçekleşir. Bir dizinin içindeki elemanları başka bir diziye aktarılması istenildiğinde de aynı durum söz konusudur. int a[10], b[10]; for(i = 0; i < 10; i = i + 1) b[i] = a[i]; Dizinin son elemanın b[9] olduğu unutulmamalıdır. Bilgisayar Programlama
Örnek intmain(intargc, char *argv[]) { int i,a[100]; int t,j=0; for(i = 0; i <= 100; i = i + 5) { a[i+5] = 255; } for (t=0, j=0;j<=100;j++,t++) printf ("a[%d] = %d \n",t,a[j]); system("PAUSE"); return 0; } Bilgisayar Programlama
Örnek int main(int argc, char *argv[]) { char a[255]; int i=0; printf ("ASCII KOD\t\t ASCII KOD KARSİLİGİ\n"); printf("**********\t\t**********************\n"); while (i<=255) { a[i]=i; i++; } for(i=0; i <= 255; i++) {printf ("\t%d\t\t\t%c\n",i,a[i]); } system("PAUSE"); return 0; } Bilgisayar Programlama
Örnek Bir zar atılmaktadır. Bu zar 1000 defa atıldığında 1 ile 6 arasındaki değerler kaç defa tekrar ettiğini nasıl bulabiliriz? Bilgisayar Programlama
int main(int argc, char *argv[]) { int i,j; int d1; int a[7]={0}; for(i = 1; i < 100; i = i + 1) { d1 = rand() % 6 + 1; a[d1]=a[d1]+1; } for(j = 1; j <= 6; j++ ) printf("%d: %d\n", j, a[j]); system("PAUSE"); return 0; } Bilgisayar Programlama
İlk Değer Atanması • int n[ 5 ] = { 1, 2, 3, 4, 5 }; • Eğer yeterli sayıda başlangıç değeri belirtilmezse, en sağdaki elemanlar 0 olarak atanırlar. • int n[ 5 ] = { 0 } • C’de dizilerin sınır değerlerini kontrol eden bir mekanizma yoktur.Eğer dizinin genişliği belirtilmezse, verilmiş olan başlangıç değerleri dizinin uzunluğunu belirtir. • int n[ ] = { 1, 2, 3, 4, 5 }; • Yukarıdaki dizi için 5 tane başlangıç değeri belirtildiğinden dolayı dizi 5 elemanlıdır. Bilgisayar Programlama
Karakter Dizileri (Strings) • “deneme” karakter dizisi statik karakterlerden meydana gelmektedir. • Bu karakter dizisine içinde barındırdığı karakterler yardımıyla ilk değer atanır. • char string1[] = “deneme"; • Null karakter ‘\0’ dizinin sonunu belirler. • string1 dizisi 7 elemanlıdır. • string1 dizisi aşağıdaki şekilde de ifade edilebilir. • char string1[] = { ‘d', ‘e', ‘n', ‘e', ‘m', ‘e’,'\0' }; Bilgisayar Programlama
İstenilen bir elemanına indis değeri kullanılarak erişilebilir. • string1[ 3 ] elemanı ile ‘e’ karakterine erişilir. • Dizi ismi, dizinin bellekteki adresini belirtir. Bu yüzden eğer ki scanf ile klavyeden okuma yapılacağında & adres operatörünün kullanımına gerek yoktur. • scanf( "%s", string2 ); • Bu komut, herhangi bir boşluk karakterine rastlayana kadar bilgi okur. • Boşluk karakterleri girilecek stringin içerisinde de olabileceğinden dikkatli olmak gerekir. Bilgisayar Programlama
Column 0 Column 1 Column 2 Column 3 Row 0 Row 1 Row 2 Column subscript Array name a[2][1] a[0][0] a[2][3] a[2][0] a[1][1] a[1][0] a[2][2] a[1][2] a[0][3] a[1][3] a[0][1] a[0][2] Row subscript Çok Boyutlu Diziler • Satır ve sütunları olan tablo yapısındadır. • 2 boyutlu olanlar matris dizilerdir. • Çok boyutlu diziler yukarıdaki gibi gösterilseler de bellekte diziler sıradüzensel olarak tutulurlar. Bilgisayar Programlama
1 2 3 4 1 0 3 4 • Başlangıç değeri verilmesi • int b[ 2 ][ 2 ] = { { 1, 2 }, { 3, 4 } }; • Başlangıç değerleri parantez içinde olabilir. • Eğer yeterli başlangıç değeri olmazsa, belirtilmeyen elementler 0 olarak numaralandırılır. • int b[ 2 ][ 2 ] = { { 1 }, { 3, 4 } }; • Elemanların gösterilmesi • Önce satır, ardından sütün ismi yazılır. • printf( "%d", b[ 0 ][ 1 ] ); Bilgisayar Programlama
Örnek int main(int argc, char *argv[]) { int i,j; int array1[ 4 ][ 5 ] = { {1,3,5,7,9}, {9,7,5,3,13}, {1,3,35,23,10}, {18,19,37,4,2} }; for (i=0;i<4;i++) { for (j=0;j<5;j++) printf("%d\t",array1[i][j]); printf ("\n"); } system("PAUSE"); return 0; } Bilgisayar Programlama