Bu yazıda, programlama dillerinin en önemli veri yapıları
olan arrays(diziler) inceleyeceğiz. C programlama dilinde dizi veri yapısının
nasıl oluşturulduğunu ve nasıl kullanıldığına değineceğiz.
Adres Kavramı
Adres hem donanıma hem de yazılıma ilişkin bir kavramdır.
Donanımsal olarak bellekte yer gösteren bir sayıdan ibarettir. Mikroişlemci
bellekte bir bölgeye ancak o bölgenin adres bilgisiyle erişebilir. Oysa
yazılımsal olarak adres, yalnızca bellek bölgesinin yerini gösteren bir sayıdan
ibaret değildir; aynı zamanda o bellek bölgesinde bulunan bilginin nasıl ele
alınacağını belirten bir tür bilgisini de içermektedir.
Bellekteki her byte diğerinden farklı bir adresle temsil edilir. Sıfırdan başlayarak her byte’a artan sırada bir sayı karşılık getirerek elde edilen adresleme sistemine doğrusal adresleme sistemi, bu sistem kullanılarak elde edilen adreslere de doğrusal adresler (linear address) denilmektedir.
Diziler (Arrays)
Dizi, birden çok değer depolayabilen bir değişkendir.
Örneğin 100 tane tamsayı saklamak istiyorsanız bunu dizilerle yapabilirsiniz.
Yani bellekte sürekli bir biçimde bulunan aynı türden nesnelerin oluşturduğu
kümeye dizi diyoruz. Tanımdan da anlaşılacağı gibi diziyi dizi yapan iki temel
özellik vardır:
- Elemanlarının bellekte sürekli bir biçimde bulunması
- Elemanların aynı türden nesneler olması
Dizi bildirim işleminin genel biçimi aşağıdaki gibidir:
<Tür> <Dizi_İsmi>[<Eleman_Sayısı>]
Örnek dizi bildirimleri:
char s[30];
float real[10];
double max[100];
Dizilere değer eklemek için küme parantezleri içinde virgülle ayrılmış bir liste kullanılır:
int myNumbers[] = {25, 50, 75, 100};
Şimdi dört tamsayıdan oluşan bir dizi tanımladık.
Dizi Elemanlarına
EriÅŸim
Dizi indeksleri 0 ile başlar: [0] ilk elemandır, [1] ikinci elemandır vb.
Örnek:
#include <stdio.h>
int main() {
int myNumbers[] = {25, 50, 75, 100};
printf("%d", myNumbers[0]);
}
Çıktı:
25
Dizi Elemanının Değiştirilmesi
Belirli bir
elemanın değerini değiştirmek için indeks numarasının bilmesi gerekiyor:
myNumbers[0] = 33;
Örnek:
#include <stdio.h>
int main() {
int myNumbers[] = {25, 50, 75, 100};
myNumbers[0] = 33;
printf("%d", myNumbers[0]);
}
Çıktı:
33
For döngüsü kullanılarak dizi elemanlarına ulaşılabilir.
#include <stdio.h>
int main() {
int myNumbers[] = {25, 50, 75, 100};
int i;
for (i = 0; i < 4; i++) {
printf("%d\n", myNumbers[i]);
}
}
Çıktı:
25
50
75
100
Örnek:
#include <stdio.h>
int main() {
int myNumbers[4];
myNumbers[0] = 25;
myNumbers[1] = 50;
myNumbers[2] = 75;
myNumbers[3] = 100;
printf("%d\n", myNumbers[0]);
}
Çıktı:
25
Çok Boyutlu Diziler
C’de çok boyutlu diziler içsel olarak tek boyutlu dizi biçiminde saklanır. Çok boyutlu dizi bildirimlerinin genel biçimi aşağıdaki gibidir:<tür> [n1 ],[n2],[n3],…
Boyut uzunluklarını belirten n1,n2,n3,… sabit ifadeler olmak zorundadır. Örneğin:
int x[10][20];
Burada x iki boyutlu int türünden bir dizidir. Boyut uzunlukları sırasıyla 10 ve 20’dir.
double n[5] [10] [15];
n üç boyutlu double türünde bir dizidir. Boyut uzunlukları sırasıyla 5,10,15’dir.
4 sütunlu bir tablo olarak düşünebilirsiniz.
float x [3][4];
Çok Boyutlu Bir Diziyi Başlatma
İki boyutlu ve üç boyutlu dizileri şu şekilde başlatabilirsiniz:int c[2][3] = {{1, 3, 0}, {-1, 5, 9}};
int c[][3] = {{1, 3, 0}, {-1, 5, 9}};
int c[2][3] = {1, 3, 0, -1, 5, 9};
{{3, 4, 2, 3}, {0, -3, 9, 11}, {23, 12, 23, 2}},
{{13, 4, 56, 3}, {5, 9, 3, 5}, {3, 1, 4, 9}}};
Değerleri saklamak ve yazdırmak için iki boyutlu dizi:
#include <stdio.h>
const int CITY = 2;
const int WEEK = 7;
int main()
{
int temperature[CITY][WEEK];
for (int i = 0; i < CITY; ++i)
{
for (int j = 0; j < WEEK; ++j)
{
printf("City %d, Day %d: ", i + 1, j + 1);
scanf("%d", &temperature[i][j]);
}
}
printf("\nDisplaying values: \n\n");
for (int i = 0; i < CITY; ++i)
{
for (int j = 0; j < WEEK; ++j)
{
printf("City %d, Day %d = %d\n", i + 1, j + 1, temperature[i][j]);
}
}
return 0;
}
Çıktı:
City 1, Day 1: 33
City 1, Day 2: 34
City 1, Day 3: 35
City 1, Day 4: 33
City 1, Day 5: 32
City 1, Day 6: 31
City 1, Day 7: 30
City 2, Day 1: 23
City 2, Day 2: 22
City 2, Day 3: 21
City 2, Day 4: 24
City 2, Day 5: 22
City 2, Day 6: 25
City 2, Day 7: 26
Displaying values:
City 1, Day 1 = 33
City 1, Day 2 = 34
City 1, Day 3 = 35
City 1, Day 4 = 33
City 1, Day 5 = 32
City 1, Day 6 = 31
City 1, Day 7 = 30
City 2, Day 1 = 23
City 2, Day 2 = 22
City 2, Day 3 = 21
City 2, Day 4 = 24
City 2, Day 5 = 22
City 2, Day 6 = 25
City 2, Day 7 = 26
Örnek:
iki matrisin toplamı:
// C program to find the sum of two matrices of order 2*2
int main()
{
float a[2][2], b[2][2], result[2][2];
printf("Enter elements of 1st matrix\n");
for (int i = 0; i < 2; ++i)
for (int j = 0; j < 2; ++j)
{
printf("Enter a%d%d: ", i + 1, j + 1);
scanf("%f", &a[i][j]);
}
printf("Enter elements of 2nd matrix\n");
for (int i = 0; i < 2; ++i)
for (int j = 0; j < 2; ++j)
{
printf("Enter b%d%d: ", i + 1, j + 1);
scanf("%f", &b[i][j]);
}
for (int i = 0; i < 2; ++i)
for (int j = 0; j < 2; ++j)
{
result[i][j] = a[i][j] + b[i][j];
}
printf("\nSum Of Matrix:");
for (int j = 0; j < 2; ++j)
{
printf("%.1f\t", result[i][j]);
printf("\n");
}
return 0;
}
Çıktı:
Enter elements of 1st matrix
Enter a11: 2;
Enter a12: 0.5;
Enter a21: -1.1;
Enter a22: 2;
Enter elements of 2nd matrix
Enter b11: 0.2;
Enter b12: 0;
Enter b21: 0.23;
Enter b22: 23;
Sum Of Matrix:
2.2 0.5
-0.9 25.0
Üç boyutlu dizi:
// C Program to store and print 12 values entered by the user
int main()
{
int test[2][3][2];
{
for (int j = 0; j < 3; ++j)
{
for (int k = 0; k < 2; ++k)
{
scanf("%d", &test[i][j][k]);
}
}
}
for (int i = 0; i < 2; ++i)
{
for (int j = 0; j < 3; ++j)
{
for (int k = 0; k < 2; ++k)
{
printf("test[%d][%d][%d] = %d\n", i, j, k, test[i][j][k]);
}
}
}
}
Çıktı:
Enter 12 values:
1
2
3
4
5
6
7
8
9
10
10
11
12
Displaying Values:
test[0][0][0] = 1
test[0][0][1] = 2
test[0][1][0] = 3
test[0][1][1] = 4
test[0][2][0] = 5
test[0][2][1] = 6
test[1][0][0] = 7
test[1][0][1] = 8
test[1][1][0] = 9
test[1][1][1] = 10
test[1][2][0] = 11
test[1][2][1] = 12
12
Displaying Values:
test[0][0][0] = 1
test[0][0][1] = 2
test[0][1][0] = 3
test[0][1][1] = 4
test[0][2][0] = 5
test[0][2][1] = 6
test[1][0][0] = 7
test[1][0][1] = 8
test[1][1][0] = 9
test[1][1][1] = 10
test[1][2][0] = 11
test[1][2][1] = 12
C programlama ile ilgili olan diğer konulara aşağıdaki linkten ulaşabilirsiniz:
Kaynaklar:
https://www.programiz.com/c-programming/c-arrays
A'dan Z'ye C Kılavuzu
https://www.w3schools.com/c/c_arrays.php
https://www.programiz.com/c-programming/c-multi-dimensional-arrays