11 Ocak 2014 Cumartesi

Pascal Programlama - 6

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.

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: