Ana səhifə

Delphi mühitində massivlərlə işləmənin öyrənilməsi


Yüklə 23.38 Kb.
tarix26.06.2016
ölçüsü23.38 Kb.
Musayev Emil 671a2
Delphi mühitində massivlərlə işləmənin öyrənilməsi
Massivlər-verilənlərin strukturlaşmış növü olub, eyni tipli sonlu sayda

elementlərdən ibarətdir. Massivin hər bir elementinə onun elementlər ardıcıllığında

mövqeyini birqiymətli təyin edən indeks uyğundur. Indeks olaraq həqiqi tip istisna

olmaqla ixtiyari sadə tipli dəyişən və ya ifadə iştirak edə bilər

1. Massivlər aşağıdakı

formada elan olunur:

array [indeks] of < elementlərin tipi>;

Massivin elementinin tipi öz növbəsində massiv ola bilər. Belə massiv

ikiölçülü massiv adlanır. İndeksin sayı massivin ölçüsünü müəyyən edir. Belə ki,

massivin elanı zamanı bir indeks verilirsə, həmin massiv bir ölçülü, iki indeks

verilirsə iki ölçülü, n indeks verilirsə n ölçülü massiv adlanır. Massivin ölçüsü

kompyuterin operativ yaddaşının tutumu ilə məhdudlaşır. Adətən, birölçülü

massivlərdən vektorları, ikiölçülü massivlərdən matrisləri, çoxölçülü massivlərdən

isə tenzorları təsvir etmək üçün istifadə olunur. Məsələn, 100 elementdən ibarət B

vektorunu aşağıdakı formada elan etmək olar.

type

vek:array [1..100] of integer;

var

B:vek;

və ya


var

B: array [1..100] of integer;

Eyni qaydada ikiölçülü massivlər də elan olunur. Məsələn, A matrisi proqramda aşağıdakı formada elan olunur.




type

vek1:array [1..5] of integer;

vek2:array [1..4] of vek1;

var


a:vek2;

və ya


var

a: array [1..4,1..5] of integer;

Massivin elementlərinə müraciət onun indeksi vasitəsilə yerinə yetirilir.

Bunun üçün massivin adını və kvadrat mötərizənin içərisində indeksi göstərmək

lazımdır. Məsələn, B[2] yazılışı massivin ikinci, B [10] yazılışı massivin onuncu

elementinə, A[2,3] yazılışı A matrisinin ikinci sətrilə üçüncü sütunun kəsişməsində

yerləşən elementə

1

müraciəti təmin edir.



Birölçülü massivin elementləri yaddaşda ardıcıl olaraq yerləşirlər. İkiölçülü

massivin elementləri isə yaddaşda sağ indeksin artmasına uyğun olaraq ardıcıl

yerləşirlər. Məsələn, təyin olunan A massivinin elementlərinin operativ yaddaşda

yerləşmə sxemi aşağıdakı formada olacaq:

A[1,1], A[1,2], A[1,3], A[1,4], A[1,5], A[2,1], A[2,2],

A[2,3], A[2,4], A[2,5], A[3,1], A[3,2], A[3,3], A[3,4],

A[3,5], A[4,1], A[4,2], A[4,3], A[4,4], A[4,5]

Qeyd edək ki, massivlərin elementlərinin sayı indeksin təyin olunduğu

intervalı aşmamalıdır. Əks halda, proqram yerinə yetirilərkən səhv aşkar olunacaq.

Massiv elan olunduqdan sonra massivin elementləri təyin edilməlidir, yəni,

massivin hər bir elementinə onun baza tipinə uyğun bir qiymət və ya ifadə

mənimsədilməlidir. Bu dövr operatorlarının və Read,Readln daxiletmə

operatorundan istifadə etməklə yerinə yetirilir. Massivin elementlərinin ekrana və

ya kağıza çıxışı isə dövr operatorundan istifadə etməklə Write, Writeln

prosedurları ilə yerinə yetirilir. Məsələn, A və B massivlərinin elementləri

aşağıdakı operatorlar vasitəsilə daxil edilə və ekranda əks oluna bilər.



var

A: array [1..2,1..2] of integer;

B: array [1..3] of integer;

i,j:integer;

Begin

for i:=1 to 3 do Readln (B[i]);

for i:=1 to 2 do

for j:=1 to 2 do

Readln (A [i, j]);

For i:=1 to 3 do writeln (B [i]);

For i:=1 to 2 do

begin

For j:=1 to 2 do

Write (A[i, j]:4);

Writeln;

End;

End.

Elementləri müəyyən qayda ilə təyin olunan və bir sıra xüsusi tip

massivlərin elementləri mənimsətmə operatoru vasitəsilə də daxil oluna bilər.

Məsələn, vahid matrisin elementləri aşağıdakı operatorlar vasitəsilə təyin oluna

bilər.

var

A: array [1..4,1..4] of integer;

i,j:integer;

Begin

for i:=1 to 4 do

begin

Writeln;

for j:=1 to 4 do

begin

if i=j then A [i, j]:=1

else

A [i, j]:=0;

Write (A[i, j],' ');

end;

end;

End.

Qeyd edək ki, Readln, Read, Write, Writeln prosedurları ilə

massivin tək bir elementini və ya bir neçə elementini də həm daxil etmək, həm də

çıxışa vermək olar. Məsələn,



Read (B [2]); writeln (A[2,3], A[4,5]);

Massivlər üzərində aşağıdakı əməliyyatlar aparmaq olar:

• Massivləri müqayisə etmək. Bu halda müqayisə edilən massivlər

eynistrukturlu olmalıdır, yəni indekslərin tipi, elementlərin sayı və tipi eyni

olmalıdır. Müqayisə əməliyyatı massivlərin ekvivalentliyini və ya fərqli olmasını

təyin edir. Massivin ekvivalentliyi “= “ operatoru vasitəsilə təyin edilir. Məsələn,

A=B. A massivinin hər bir elementinin qiyməti B massivinin uyğun elementinin

qiymətinə bərabər olduqda, əməliyyatın nəticəsi true qiyməti alır. Massivin

fərqliliyi isə “<>” operatoru vasitəsilə təyin edilir. Məsələn, A<>B massivinin heç

olmasa bir elementinin qiyməti müqayisə olunan digər massivinin uyğun

elementinin qiymətindən fərqli olduqda əməliyyatın nəticəsi true qiyməti alır.

• Massivə digər massivi mənimsətmək. Bu əməliyyat mənimsətmə operatoru

“:=” vasitəsilə yerinə yetirilir. Məsələn, A:=B. Bu halda B massivinin bütün

elementinin qiymətləri A massivinin uyğun elementlərinə mənimsədilir. B massivi

dəyişməz qalır.

• Ədədi massivlər üzərində hesabi əməliyyatlar. Massivləri toplamaq,

qüvvətə yüksəltmək, onların hasilini tapmaq, transponirə etmək olar. Məsələn,

matrisin transponirə edilməsi proqramına baxaq

Program P_34;

Const n=3;

Var

i, j, Lb, Rb: Integer;



a, b : Array[1..n, 1..n] Of Integer;

Begin


WriteLn( 'A-matrisi');

For i:=1 to n do Begin

For j:=1 to n do Begin

read (a[i, j]) ;

b[j, i]:= a[i, j];

Write(a[i, j]:5)

End;

WriteLn;



End;

Writeln;

WriteLn( 'B-matrisi');

For i:=1 to n do

Begin

For j:=1 to n do Write(b[i, j]:5); WriteLn



End;

End.


Massivlərin nizamlanması. Massivlərin nizamlanması riyaziyyatda ən çox

istifadə olunan əməliyyatlardan biridir. Bir neçə nizamlama üsulu işlənmişdir.

Aşağıdakı misallarda elementləri təsadüfi ədədlər olan seçmə və yerdəyişmə üsulu

ilə matrislərin nizamlama proqramları verilmişdir:



Misal 1.

Program P_48;

Var

a, b: Array[1..100] Of Integer;

c, d, i, j, k, n, Min: Integer;

Begin

ReadLn(n);

ReadLn(c, d);

WriteLn('Verilen massiv ');

For i:= 1 To n Do

Begin

a[i]:= Random(d - c) + c;

Write(a[i]:5)

End;

WriteLn;

For i:= 1 To n Do

Begin

Min:=a[1];

For j:= 1 To n Do

If a[j]<= min Then

Begin

Min:=a[j];

k:= j

End;

b[i]:= a[k];

a[k]:= 32767;

End;

WriteLn('Nizamlanmis massiv');

For i:= 1 To n Do Write(b[i]:5);

WriteLn;

End.


Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©atelim.com 2016
rəhbərliyinə müraciət