Title: Chapter 8 of Database Application Development and Design
1Bölüm 8Diziler
Dizi Tanimi Dizi Elemanlarina Deger Atama Diziler
ve Göstergeler 2-Boyutlu Diziler
2Dizi Tanimi
Degiskenler ayni anda tek bir deger tutabilen
temel degiskenler ve birden fazla deger
saklayabilen bilesik degiskenler olmak üzere
ikiye ayrilir. Temel degiskenler bellekte tek
bir hücreyi tanimlayip, içlerinde tek bir degeri
tutabilirler. Diziler ise ardarda siralanmis
bellek hücreleridirler. Diziler bu baglamda
bilesik degiskenlerdir ve bellekte ayni anda
birden fazla degerin saklamasini mümkün kilarlar.
3Dizi Tanimi
veri_tipi dizi_ismi eleman_sayisi
Bellek Görüntüsü
4Dizi Tanimi
Örnek int not4 int i
not020
20
not2 not010
20
30
i0 noti90 noti70
90
30
70
5Dizi Elemanlarina Deger Atama
int a3,b scanf(d, b) a2b
veya
int a3 scanf(d, a2)
6Dizi Elemanlarina Deger Atama
ÖrnekKullanicidan alinan 5 tamsayi degerini bir
dizide saklayan ve bu degerlerin ortalamasini
bulan bir program yazalim
include ltstdio.hgt int main(void) int
a5 int i,toplam double orta /Kullanici
degerlerinin dizide saklanmasi/ printf(Bes
tamsayi giriniz) for(i0ilt5i)
scanf(d,ai) /Toplam ve ortalamanin
bulunmasi/ toplam0 for(i0ilt5i)
toplamtoplamai orta toplam/5.0
printf(Ortalama5.2f,orta) return
(0)
7Diziler ve Göstergeler
Bir dizi ismi aslinda dizinin ilk elemanini
gösteren sabit bir gösterge olarak yaratilir.
5
5
8Diziler ve Göstergeler
Gösterge Gösterimi Dizi Gösterimi dizptr
5 diz0 5 (dizptr 1) 6 diz1
6 (dizptr 2) 7 diz2 7
. . . . . . (dizptr i) 8
dizi 8
9Diziler ve Göstergeler
10Diziler ve Fonksiyonlar
Dizi Elemaninin Fonksiyona Gönderilmesi
11Diziler ve Fonksiyonlar
Dizinin Fonksiyona Gönderilmesi
int a510,20,30,40,50
a dizisini f() fonksiyonuna yollamak için
asagidaki komutu kullanmaliyiz. f(...,a,...)
Bu fonksiyonun basligi ise iki sekilde
olabilir. void f( ,int x5, ) void f( ,int
x, )
Fonksiyon parametresinde tanimlanan x dizisi
yoluyla yapilan degisiklikler, gerçek parametre
olan a dizisini etkileyecektir. Çünkü dizi ismi
dizinin ilk elemaninin yerini gösteren bir
göstergedir ve kaynak parametresi gibi
davranacaktir.
12Diziler ve Fonksiyonlar
Örnek include ltstdio.hgt void f1(int b, int
n) int main(void) int i, a1,2,3 f1(a,3)
printf("\nmain fonksiyonu ") for(i0ilt3i)
printf("d", ai) return(0) void f1(int
b, int n) int i printf("f1 fonksiyonu
") for(i0iltni) printf("d", bi)
bi8
Çikti f1 fonksiyonu 123 main fonksiyonu 888
13Diziler ve Fonksiyonlar
Dizi Yerine Gösterge Kullanimi
142-Boyutlu Diziler
Her elemani bir boyutlu dizi olan yapilara ise
çok boyutlu diziler denir. Bu bölümde matris veya
tablo olarak da bilinen 2-boyutlu dizilere
deginecegiz.
veri_tipi dizi_ismisatir_büyüklügüsütun_
büyüklügü
int not330
152-Boyutlu Diziler
2-Boyutlu Dizilere Deger Atama
scanf(d, not290)
not1190
Tanimlama Sirasinda Deger Atama
satir yönünde atama
162-Boyutlu Diziler
Tanimlama Sirasinda Deger Atama
172-Boyutlu Diziler
Tanimlama Sonrasinda Satir Yönünde Deger Atama
int a303 for(satir0 satirlt30 satir)
for (sutun0sutunlt3 sutun) asatirsutun0
182-Boyutlu Diziler
Tanimlama Sonrasinda Sütun Yönünde Deger Atama
int a303 for(sutun0 sutun lt3 sutun)
for (satir0satirlt30satir) asatirsutun0
...
...
192-Boyutlu Diziler
ÖrnekKullanicinin, 30 kisilik bir siniftaki her
ögrenci için 3er sinav notu girecegi ve her
sinav için sinif ortalamasinin ekranda
gösterilecegi bir program yaziniz. include
ltstdio.hgt int main(void) int not303
int i,j,toplam double orta /
Kullanicidan notlarin alinmasi/
for(i0ilt30i) printf(d. ogrenci
notlari,i1) for(j0jlt3j)
scanf(d, notij) /Her
sinavin ortalamasinin bulunmasi/
for(j0jlt3j) toplam0
for(i0ilt30i) toplamnotij
ortatoplam/30.0
printf(d. sinav ortalamasi 5.2f\n,j1,orta)
return (0)
202-Boyutlu Diziler
2-Boyutlu Diziler ve Fonksiyonlar
Dizi tanimi
int a231,2,3,4,5,6
Fonksiyon çagirma
f1( ,a, ) f1( , int b3, )
Fonksiyon basligi
212-Boyutlu Diziler
Örnek Ögrencilerin sinav ortalamalarini bulacak
bir program yazalim. Bu program için ortalama()
isimli bir fonksiyon kullanalim. ortalama()
fonksiyonu çagirildigi yerden 2-boyutlu bir dizi
alir, dizinin her satirinin ortalamasini bulup,
tek boyutlu bir baska dizide saklar ve
ortalamalari tutan bu tek boyutlu diziyi
çagirildigi yere geri döndürür.
include ltstdio.hgt void ortalama(int ogr_sa,int
sinav_sa, int not3,double
orta) double toplam int i,j for(i0iltogr_
sai) toplam0 for(j0jltsinav_saj)
toplamnotij ortaitoplam/3.0
222-Boyutlu Diziler
int main(void) int test303 int
i,j,toplam double averaj30 /Kullanicidan
notlarin alinmasi/ for(i0ilt30i) printf("
d. ogrenci notlari", i1) for(j0jlt3j)
scanf("d",testij) /Her ogrencinin
ortalamasinin bulunmasi/ ortalama(30,3,test,aver
aj) for(i0ilt30i) printf("d.ogrenci
ortalamasi5.2f\n",i1, averaji)
return (0)