Merhaba,
Bu
yazımda Pascal programlamada dizi (array) konusu inceleyeceğiz.
Programlamada
dizi kavramı çok önemlidir. Daha kapsamlı işlemler yapmanın ilk adımlarından
biri de dizi kullanımıdır.
Dizi,
aynı tipten birçok verinin bir araya geldiği bir yapıdır. Basit bir veri yapısı
örneğidir. Dizi kullanımı sayesinde programımızın performansını artırırız.
Diziler
bir ya da daha fazla boyutta tanımlanabilir. İki boyutlu dizilere matris adı
verilmektedir.
var
dizi ismi:array[ilk değer..son değer] of veri tipi
begin
end.
Dizi tanımla yukarıda görüldüğü gibi yapılmaktadır.
A:array[1..5]
of integer;
B:array[1.99] of string;
Bu
tanımla ve örnekler tek boyutlu diziler için geçerlidir. Şimdi iki boyutlu
dizilerin (matris) nasıl tanımlandığını
görelim.
var
dizi ismi:array[ilk değer..son değer, ilk değer..son değer] of veri tipi
begin
end.
A:array[1..3,1..4] of integer;
B:array[1..38,1..40] of string;
İki boyutlu da görüldüğü virgül ile ayrılarak boyut sayısı arttırılabilir. Boyut
sayısı programınızın ihtiyacına göre ve bilgisayarınızın bellek büyüklüğüne
göre değişkenlik gösterebilir.
Şimdi
ilk örneğimizi yapma vakti geldi.
uses crt;
var
A:array[1..5] of integer;
i,j,hafiza:integer;
begin
clrscr;
write('Sayilari Girin:');
for i:=1 to 5 do
read(A[i]);
for i:=1 to 4 do
for j:=i+1 to 5 do
if A[i]<A[j] then
begin
hafiza:=A[i];
A[i]:=A[j];
A[j]:=hafiza;
end;
readln;
writeln('Azalan Siralama');
for i:=1 to 5 do
write(A[i],' ');
readln;
end.
Yukarıdaki
örnekte girilen 5 sayı sıralayan program döngü ve dizi kullanarak yazılmıştır.
Daha önceki yazımda if-else yapısını incelerken girilen 3 sayıyı sıralan
program örneği vermiştik. If-else kullanımı ile 3 sayıyı sıralarken çok karmaşık
bir program ortaya çıktı. Bu nedenle girilen sayı arttıkça programımız daha
karmaşık hale gelecektir. Dizi ve döngü kullanımı ile sadece sayı değerlerini
değiştirerek çok sayıda girilen sayıları sıralayabiliriz.
for i:=1 to 5 do
read(A[i]);
Yukarıdaki kodlar girilen sayıları 5 elemanlı diziye sırasıyla atar. Daha sonraki iki for döngüsü
en büyük değeri bulup A[1] dizi elemanına yazar ve bu şekilde devam eder. Kodun
kafanızda şekillenmesi için işlemleri adım adım kağıt üzerinde yapmanızı
tavsiye ederim.
Şimdi
de diğer örneğimize geçelim.
Yukarıdaki örnekte iki boyutlu diziler kullanılarak matrisler de çarpma işleminin programı yazılmıştır. Eğer matrisler de çarpma işleminin nasıl yapıldığını bilmiyorsanız öncelikle bunu öğrenmeniz gerekmektedir. Ardından kodu inceleyebilirsiniz.
uses crt;
var
A :array[1..2,1..2] of integer;
B :array[1..2,1..3] of integer;
C :array[1..2,1..3] of integer;
i,j,z :integer;
begin
clrscr;
write('Birinci dizinin elemanlarini girin:');
for i:=1 to 2 do
for j:=1 to 2 do
read(A[i,j]);
write('Ikinci dizinin elemanlarini girin:');
for j:=1 to 2 do
for z:=1 to 3 do
read(B[j,z]);
writeln('Birinci Dizi:');
for i:=1 to 2 do
begin
for j:=1 to 2 do
begin
write(A[i,j],' ');
end;
writeln;
end;
writeln('Ikinci Dizi:');
for j:=1 to 2 do
begin
for z:=1 to 3 do
begin
write(B[j,z],' ');
end;
writeln;
end;
for i:=1 to 2 do
begin
for j:=1 to 2 do
begin
for z:=1 to 3 do
begin
C[i,z]:=C[i,z]+(A[i,j]*B[j,z]);
end;
end;
end;
writeln('CARPIM!');
for i:=1 to 2 do
begin
for z:=1 to 3 do
begin
write(C[i,j],' ');
end;
writeln;
end;
readln;
readln;
end.
Yukarıdaki örnekte iki boyutlu diziler kullanılarak matrisler de çarpma işleminin programı yazılmıştır. Eğer matrisler de çarpma işleminin nasıl yapıldığını bilmiyorsanız öncelikle bunu öğrenmeniz gerekmektedir. Ardından kodu inceleyebilirsiniz.
İlk
örneğimizde olduğu gibi mantık aynıdır. A(2x2) ve B(2x3) matrisleri için
kullanıcıdan değerler girilmesi istenip ardında da oluşan matrisler ekrana
yazılmıştır. Ekrana yazdırma işleminin ardından çarpma işlemi yapılmaktadır. Bu
kısımda bildiğimiz matris çarpma işlemi for döngüsü ile adım adım yapılmıştır.
Yine, Kodun kafanızda şekillenmesi için işlemleri adım adım kağıt üzerinde
yapmanızı tavsiye ederim.
Hiç yorum yok:
Yorum Gönder