You are on page 1of 10

ki Boyutlu Dizi. Bir boyutlu dizilerin kullanlmalar problem zerken oldukca yararl olmutur.

Bir boyutlu dizilerin baz problemlerin zmnde yetersiz kalmas iki boyutlu dizilerin kullanmlarn gndeme getirmitir. Matematikte kullanlan Matrisler iki boyutlu diziye iyi bir rnek olarak verilebilir. ki boyutlu dizinin elemanlarna ulaabilmek iin iki tane farkl indis deerine gereksinim vardr. ki boyutlu diziyi matris gibi yorumlarsak indislerden birisi dizinin satr, dieri dizinin stun deerini gsterir. Tanm. Genel olarak iki boyutlu bir dizi Dizirnek[1:m,1:n]Dizi Tipi eklinde tanmlanr ve dizinin bykl=mxn eklinde belirlenir. ki boyutlu dizinin tanm, bir boyutlu dizinin tanmndan farkldr. nk tanmda dizinin ikinci boyutuda bulunur. Genel tanm biraz daha alrsa DiziAd[L1:U1, L2:U2] [T.2.2] tanmn elde edilir.

Tanm yaplan iki boyutlu dizinin elemanlarnn aklamas ekil.2.5 de verilmitir.

1. Boyutun Alt snr 1. Boyutun st Snr

rnekDizi[L1:U1, L2:U2]tamsay.

Dizi tipi

2.Boyutun st Snr Dizi Ad 2.Boyutun Alt snr

ekil.2.5

Bir dizinin tanm ve deer atanm hali

ki Boyutlu Dizinin Bellekte Gsterimi. ki boyutlu dizinin bellee yerletirilmesinde izlenecek yol bir boyutlu dizideki gibi olmaldr. O zaman iki boyutlu dizi ya Satr ncelikli veya Sutun ncelikli olarak bellee yerletirilmelidir. Her eleman bellekte bir kelimelik yer tutan bir boyutlu dizide, dizi elemanlar bellee yerletirilirken ilk eleman, gibi bir adrese yerletirildi. Sonra sras ile dier dizi elemanlarn +1, +2 ... ve n inci elemanda +n ninci bellek gzne yerletirildi. ki boyutlu dizide bu ilem Satr ncelikli veya Sutun ncelikli yaplr. Yani iki boyutlu dizinin elemanlarn bellee yerletirmek iin dizinin satrlar tek tek alnp, bir boyutlu dizide yaplan ilem uygulanr. Bylece iki boyutlu dizinin bellee yerletirilmesi gerekleir. Eer stun ncelikli yerletirme

dnlrse bu sefer dizinin her stunu tek tek alnarak bir boyutlu diziye uygulanan ilemin ayns uygulanarak dizi bellee yerletirilir. ki boyutlu bir dizinin bellee yerletirilmesi aadaki rneklerde gsterilmektedir. rnek dizinin ad dizi1 ve dizi 3X3 elemandan olusun. Dizinin tanmn Dizi1[1:3,1:3] DiziTipi eklinde yaplr.

Tanm yaplan bu dizinin satr elemanlar indis halinde ekil.2.6 deki gibi gsterilebilir. Dizi1[1,1] Dizi1[1,2] Dizi1[1,3] Satir 1 Dizi1[2,1] Dizi1[2,2] Dizi1[2,3] Satir 2
ekil.2.6

Dizi1[3,1] Dizi1[3,2] Dizi1[3,3] Satir 3

ki boyutlu edilir.

bu

dizi

matris

gibi

yazlrsa

elil.2.7daki

matris

elde

stunlar
Satrlar

ekil.2.7 Dizi1 in matris eklinde gsterimi

ekil.2.7 deki dizinin stn ncelikli ve satr ncelikli olarak bellee yerletirilmi hali ekil.2.8 de grlmektedir. Dizinin ilk eleman bellekte i gibi bir adrese yerleir ve dizinin her eleman bellekte bir i1,1i+11,2i+21,3i kelimelik yer tutmaktadr. Dier elemanlar takip eden adreslere yerleir. +32,1i+42,2i+52,3 i+63,1i+73,2i+83, 3 Satr ncelikli Sutun.1 Satr.1 i i1,1i+12,1i+23,1i i i + +31,2i+42,2i+53,2 i i Sutun.2 i i+61,3i+72,3i+83, i 3 Stun ncelikli Sutun.3

Satr.2

Satr.3

ekil.2.8.

Bu kitapdaki rneklerde iki boyutlu dizinin bellee yerletirilmesi satr ncelikli yaplacaktr.Verilen iki boyutlu dizinin bellekteki balang adresi belli ise herhangi bir elemann greceli adresinin nerede olduu bulunabilir. Dizi[X,y] nin bellekte bulunduu adres (X-1)n+y+(i-1) [F.2.4] forml ile bulunur. Bu formlde yer alan elemanlarn zellikleri

L1 X U1 L2 y U2 eklinde olmaldr. : Aranan elemann satr indisi. n : Bir satrdaki eleman says. y : Elemann stun indis deeri.
X

Verilen formln (X-1)n+y lik blm aranan elemann dizideki ilk elemana gre kanc eleman olduunu belirler. (i-1) ise bellek adresini verir. ki boyutlu 4X3 elemandan oluan A isimli diziinin tanm ve diziye eleman atanm hali ekil.2.9 da, dizinin bellek gsterimi ise ekil.2.10 da grlmektedir.

A [ 1:4,1: 3] tamsay

3 A= 4 0

6 5 6

9 7
2 1

ekil.2.9 A isimli dizinin tanm ve veri atanm hali.

A= AdresndisSatrDeeri1,11.satr3i+11,26i+21,39i+31,48i+42,12.satr4i+52,25i+62,32i+72,41i+83,13.satr0i+93,

ekil.2.10 A simli Dizinin Satr ncelikli Olarak Bellee Yerleimi

A dizisinde A[3,4] n bellekteki yerinin bulunmas: A[3,4] demek : Ararnan noktasndaki elemandr. eleman dizinin 3.satr, ile 4.stununun kesim

Bir baka deyile 3 nc satrdaki 4nc elemandr. nki X=3 y=4 dr. Bu noktada yaplmas gerekenler : 1. nce aranan elemann bulunduu satrdan nce ka tane satr olduu hesaplanr. Bunun iin aranan elemann bulunduu satrda 1 karlr. Yani (x-1) forml kullanlr. Verilen rnekte x=3 dr. Ve aranan deer 3-1=2 dir. Yani 2 adet satr var. 2. Her satrda ka eleman olduu bulunur. Bu deer dizi tanmndaki ilk boyuttan alnr bu rnekte 4 dr. 3. 1nci ve 2nci admlardaki bulunan deerler arplarak bir deer elde edilir. Bu deer aranan satra kadarki satrlarda ka eleman olduunu gsterir bu rnekte bu deer 8 dir.

4. Son olarak A[3,4] deki 2nci rakam olan 4 deeri 3nc admda bulunan deere eklenir. Ve aranan elemann bellekte balang elemanna gre kanc eleman olduu bulunur. Bu rnekte 3nc satrdaki 4nc eleman aranmaktadr. Sonu olarak A[3,4] eleman bellekte (x-1)*n+y =(3-1)*4+4=12 bulunur. Bunun anlam aranan eleman dizinin ilk elemanndan itibaren bellekteki 12nci eleman dr. lk eleman i gibi bir adreste olduundan 12nci elemanda i+11 adresinde bulunur. Formlde verilen ve bir satrdaki eleman saysn veren n deeri dizinin satrnn boyutlar cinsindende yazabiliriz. U1-L1+1 : Alt ve st snrlar verilmi iki boyutlu bir dizinin satr ncelikli bellee yerlemesine gore herhangi bir elemannn bellek adresini veren forml.
koordinat verilen satrdan 1 eksik satr miktarn verir

(X1-1)(U1-L1+1)+Y
koordinati verilen satrdaki kolondeeri Bir satrdaki eleman says

ki Boyutlu Dizi ile ilgili ilemler. Veri yaps olarak tanmlanan dizilerle ok eitli ilemler yaplabilir. Bunlar diziye veri okuma, dizide bulunan verilerin deerlendirilmesi, dizideki verilerin gncelletirilmesi ve dizideki verilerin silinmesi ilemleri olarak saylabilir. Bu ilemlerin nasl yapld aada tek tek ele alnmakta ve bir rnek zerinde aklanmaktadr. ki Boyutlu Diziye veri Okuma. ekil 2.9 de tanm yaplan ve deer atanan A isimli dizinin algoritmasn yazalm ve bu ilemlerin nasl yapldn aklayalm. Algoritmann aklamas : Adm.1 : Bu admda algoritmada kullanlacak olan A isimli iki boyutlu dizi tanmlanmakta ve sat indis deikenine ilk deer atanmaktadr. Adm.2 : Bu admda algoritmann satr indisi kontrol edilmekte eer satr deeri 3 den bykse ilem ak adm.5 e ynlendirilmektedir. Bu admda dier indis deikeni olan sutun deikeninede ilk deer atamas yaplr. Adm.3 : Bu admda sutun deeri kontrol edilmekte. Eer bir satr bitmi ise bir sonraki satrn elemanlarnn alnmas iin ilem ak adm 2 ye ynlendirilir. Adm.4 : Bu admda diziye deer okunmakta ve yeni sutun deeri iin ilem ak adm.3 e ynlendirilmektedir. Adm.5 : Bu adm algoritmann algoritma sonlandrlr. son adm olup bu admn ilenmesi ile

ki boyutlu dizide herhangi bir dizi eleman gsterilmek istenirse iki tane indis deeri kullanlr. Bunlar sras ile dizinin elemann belirten satr ve stun deerleridir. rnek Dizi1[5,3], Dizi1[2,4] gibi.

Algoritma kiBoyutluDiziyeVeriOku //Bu algoritma 4X3 boyutunda iki boyutlu tamsay tipinde A isimli diziyi tanmlayarak dizinin eleman deerlerini veri ortamndan okur. Algoritmada kullanalan sat ve sut deikenleri, tamsayi deikenler olup dizinin satir, sutun deerlerini tutmak iin kullanlan indis deikenlerdir. sayi deikeni tamsayi tipinde deiken olup veri ortamndan deer okumakta kullanlr.// 1. [lk lemler] A[1:4,1:3]Tamsay; sat0 [Dizinin Satr Boyutunu Kontrol Et] satsat+1; sut0; if sat>3 then adm 5 e git; [Dizinin Sutun Boyutunu Kontrol Et] sutsut+1; if sut>4 then adm 2ye git; [Diziye Deer Oku] oku(say); A[sut,sat]say; Adm 3e git [lem Bitir] Dur. Algoritma.2.2

2.

3.

4.

5.

ki Boyutlu Dizinin Gnlenmsi. Algoritma.2.2 ile ekil.2.9 daki iki boyutlu dizi tanmland ve diziye deer okuma ilemi gerekletirildi. imdide dizide veri gnleme ileminin nasl yapldn Algoritma.2.3 ile aklamaya alalm. Algoritma.2.3, A isimli dizinin elemanlarn tek tek ziyaret etmekte ve bu esnada sutun_deerisatr_deeri olan dizi elemanlarn sfr yapmaktadr. Algoritmann Aklamas ve kendisi aadadr. Algoritmann Aklamas : Adm.1 : Bu admda 4X3 buytundaki iki boyutlu dizi tanmlanarak deikenlerinden birisi olan sat deikenine ilk deer atanr. indis

Adm.2 : Bu admda algoritmann sat indis deikeni kontrol edilir. Sat deeri 3 den bykse ilem tamamlanmtr. Algoritmann ilem ak adm.5 e ynlendirilir ve algoritma sonlandrlr. Adm.3 :Bu admda algoritmanan ikinci indis deikeni olan sut deikeni kontrol edilir. Sut deeri 4 den bykse bir satrdaki elemanlardan istenen art salayanlar gnlenmitir. Bir sonraki satrdaki elemanlarn gnlenebilmesi iin algoritmann ilem ak adm.2 ye ynlendirilir. Adm.4 : Bu admda algoritmada istenen ilem yaplr. Yani sutun deeri satrdan kkse dizinin o eleman sfr yaplr. lem ak adm.3 e ynlendirilir.
Algoritma kiBoyutluDiziGnle //Bu algoritma 4X3 boyutunda iki boyutlu tamsay tipinde A isimli diziyi dolar. Bu esnada sutun indisi satr indisinden kk veya satr indisine eit olan dizi elemanlarnn deerini sfr yapar. //

1.

[lk lemler] A[1:4,1:3]Tamsay; sat0 [Dizinin Satr Boyutunu Kontrol Et] satsat+1; sut0; if sat>3 then adm 5 e git; [Dizinin Sutun Boyutunu Kontrol Et] sutsut+1; if sut>4 then adm 2ye git; [Veri Gnle] If sutsat then A[sut,sat]0; Adm 3e git [lem Bitir] Dur.

2.

3.

4.

5.

Algoritma.2.3

3 A= 4 0

6 5 6

9 7
2 1

9 8

Dizinin ilk Hali

0 A= 0 0

6 0 0

9 8

0 7
2 1

Algoritma uygulandktan sonra gnlenmi dizi Bu algoritma ile iki boyutlu bir dizinin elemanlarnn gnlenmesi yapld. ki Boyutlu Dizi Elemanlarnn Deerlendirilmesi. ki boyutlu dizi elemanlarnn deerlendirilmesinin nasl yapldn bir rnek zerinde yazacamz 2 algoritma ile gsterelim. Daha nce istanbulun bir gn boyunca her saat ba llen scaklk deerini tutan rnei 30 gnlk sre iin yapacak olan algoritmay ve gnlk scsklk ortalamas ile aylk scaklk ortalamasn bulan 2 ayr algoritma ile gsterelim. lk olarak 30 gn boyunca her gn 24 adet scaklk deerini okuyup iki boyutlu dizide saklayan algoritmay ve aklamasn yazalm.
Algoritma ScaklkOkuSakla //Bu algoritma 24X30 boyutunda iki boyutlu tamsay tipinde Is isimli diziyi tanmlayarak istanbulun 30 gn boyunca her gn her saat ba llen scaklk deerini veri ortamndan okuyup saklayan bir algoritmadr. Algoritmada kullanalan saat ve Gn deikenleri, tamsayi deikenler olup dizinin indis deikenleridir. derece deikeni tamsayi tipinde deiken olup veri ortamndan scaklk deerini kumak iin kullanlr.// 1. [lk lemler] A[1:24,1:30]Tamsay; Gn0

2.

[Dizinin Gn Boyutunu Kontrol Et] GnGn+1; saat0; if gn>30 then adm 5 e git; [Dizinin Saat Boyutunu Kontrol Et] Saatsaat+1; if saat>24 then adm 2ye git; [Diziye Deer Oku] oku(derece); Is[gn,saat]derece; Adm 3e git [lem Bitir] Dur. Algoritma.2.2

3.

4.

5.

imdi Gnlk ve aylk scaklk ortalamasn bulacak olan algoritmay yazalm ve ilem admlarnn aklamasn yapalm. Ad geen algoritmann aklamas ve algoritmann kendisi aadadr. Adm.1 : Bu admda ilk ilemler olarak Dizi tanmlanr ve deikenlere ilk deerler verilir. Adm.2 : Bu admda dizinin gn boyutu kontrol edilir. Eer 30 gn dolmu ise aylk ortalama hesaplanarak yazdrlr ve ilemin tamamlanmas iin ilem ak algoritmann son komutuna ynlendirilri. Adm.3 :Bu admda dizinin saat boyutu kontrol edilir. Eer saat 24 den bykse gnlk scaklk ortalamas hesaplanr ve yazdrlr. Gnlk scaklk ortalamas sonra kullanlmak zere aylk scaklk ortalamasn bulunmas iin ona eklenir. Gnlk scaklk ortalamas yazdrlarak ilem ak adm.2 ye ynlendirilir. Adm. 4: Bu admda Gnlk ortalamann hesaplanmas iin gnlk scaklk deerleri toplanr. Adm.5 : Bu adm algoritmann son adm olup bu admda ilem sonlandrlr.

Algoritma kiBoyutluDiziDeerlendir. //Bu algoritma 24X30 boyutunda iki boyutlu tamsay tipinde Is isimli dizide bulunan istanbulun hergn 24 saat boyunca saat banda llm olan bir ayl scaklk deerlerini kullanarak istanbulun gnlk ve aylk scaklk ortalamasn hesaplar. Algoritmada kullanalan saat ve Gn deikenleri, tamsayi deikenler olup dizinin indis deikenleridir. Gort deikeni gnlk scaklk ortalamasn, Aort deikeni ise aylk scaklk ortalamasn tutan deikendir.// 1. [lk lemler] A[1:24,1:30]Tamsay; Gn0 Gort0 Aort0 [Dizinin Gn Boyutunu Kontrol Et] GnGn+1; saat0; if gn>30 then adm begin AortAort/30 Yaz(Aort); Adm 5 e git; End;

2.

3.

[Dizinin Saat Boyutunu Kontrol Et] Saatsaat+1; if saat>24 then begin GortGort/24; Yaz(Gort); AortAort+Gort; Gort0; adm 2ye git; dur; [Gnlk s topla] Gort Gort+[gn,saat]; Adm 3e git [lem Bitir] Dur. Algoritma.2.2

4.

5.

Heriki algoritmann yaptklarn yapan pascal program aadadr.


Program s; Var D[1..30,1..24] of integer; Procedure sal; Begin For gun:=1 to 30 do For saat:=1 to 24 do read(d(saat,gun)); End; Procedure sdeerlendir; Begin Orta:=0; For gun:=1 to 30 do Begin Ortg:=0; For saat:=1 to 24 do ortg:=ortg+d[saat,gun]; Write(Gnlk Ortalama s =,ortg/24); Orta:=orta+ortg; End; Write(Aylk Ortalama =,orta/30); End; Begin Isal; Isdeerlendir; End.

# include <iostream.h> void sal(){ int deger; for ( int i=1;i<30;i++){ for (int j=1,j<24;i++){ cin>>deger; D[i][j]::deger; } } void sdegerlendir(){ int orta(0); for (int gun=1;gun<30;gun++){ int ortg(0); for (int saat=1;saat<24,saat++){ ortg=ortg+d[saat,gun]; cout<<Gnlk Ortalama s=<<ortg/24; orta=orta+ortg; cout<<Aylk Ortalama s=<<orta/30; } } int main(){ sal(); sdegerlendir(); return 0;

You might also like