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. |