Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Алишер Нұрбке Курстық Жұмыс.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
9.86 Mб
Скачать

5.2 Массив элементтерімен жұмыс атқару

  1. Келесі бағдарлама бойынша массив элементтеріне 0 мне 1000 аралығындағы кез келген кездейсоқ мән меншіктеледі де экран бетіне шығарылады. Мысалда fmExample формасы қолданылған және procedure bbRunClick(Sender:TObject)-bbRun батырмасы басылғандағы оқиғаны өңдеуші үзінді келесі түрде өзгертілген:

procedure TfmExample.bbRunClick(Sender:TObject);

const n=10; m_v=1000+1;

var

m:array[1..n] of integer; i:integer; sr:real;

begin

for i:=1 to n do

begin m[i]:=random(m_v);

mmOutput.Lines.Add(‘m[‘+IntToStr(i)+’]=’+IntToStr(m[i])); end;

24-Сурет-Массив элементтеріне 0-1000 аралығындағы

кездейсоқ сандар меншіктеледі

2. Бұл мысалда N элементтен тұратын бір өлшемді массив берілген . Массивтің элементтерінің қосындысын және ең үлкенін тауып, элементтер мәндерін өсу ретімен орналастыру алгоритмін қарастырайық.

ҚР 1304000 КЖ

Өзг.

Құжат№

Қолы

Бет

Бет

Күні

Бағдарлама жұмысын бастағанда Edit1 енгізу жолында көрсетілген массив элементтерінің саны Button1 батырмасын басқанда енгізіледі . Енді қайталау операторы арқылы массивтің әр элементіне динамикалық түрде бөлек Edit терезелері ScrollBox компонентінің ішінде құрастырылады . Осы терезелерде массив элементтерінің мәндері көрсетіледі және Button2 батырмасы басылғанда бірден қосындысы есептеледі, сонан кейін элементтердің ең үлкені табылады .

Массив элементтерін мәндерінің өсуі бойынша реттеу келесі алгоритм арқылы жүзеге асырылған .

Соңында массив элементтері мәндерінің өсуі бойынша реттелген түрде ScrollBox компонентінің ішінде орнатылған Label терезелеріне шығарылады (24-сурет).

5.3 Delphi ортасындағы динамикалық массивтер

Delphi 4 ортасынан бастап динамикалық массивтер деген ұғым енгізілген. Осындай түрде анықталған массивтердің индекстер аралығын анықтаудың қажеті жоқ және массив ішкі жады кеңістігінде орналасады . Мысалы ,

Var

A: array of Integer;

B: array of array of Char;

C: array of array of array of Real;

Жоғарыдағы А массиві бір өлшемді, В-екі өлшемді және С-үш өлшемді деп анықталған . Осындай түрдегі массивтерге жадыны бөлу және индекстерінің аралығын көрсету бағдарлама орындалу барысында массивті орнату әрекеттерінің SetLength(A,3) операторы орындалғанда А динамикалық массивке жады бөлінеді , яғни үш бүтін санға жеткілікті орын бөлінеді .

Динамикалық массивтердің кез келген өлшумінің төменгі шегі нөлге тең деп саналады , сондықтан А массивінің индекстерінің жоғарғы шегі 2 болады.

Динамикалық массивтің идентификаторы негізінде массивтің элементтеріне бөлінген аумақтың бірінші байтының адресі-сілтеме болып табылады . Сондықтан массивке бөлінген жадыны босату үшін массив идентификаторына NIL мәнін меншіктесе жеткілікті ( немесе Finalize процедурасын қолдануға болады ) .

ҚР 1304000 КЖ

Өзг.

Құжат№

Қолы

Бет

Бет

Күні

Орнатылған динамикалық массивтің кез келген өлшем индекстерінің шегін өзгерту үшін жаңа массивке қажетті аумақ алдын-ала даярланады және бұрыңғы массивтің элементтері жаңа аумаққа орналастырылады , сонан кейін ескі массивке бөлінген жадының аумағы босатылады .

Жалпы динамикалық массивтің мөлшерін өзгертуге кететін уақытты үнемдеу үшін, динамикалық массивке бірден максималды ұзындығын анықтаған жөн .

Көп өлшемді массивтерде алдымен бірінші өлшемінің ұзындығы анықталады, сонан кейін екіншінікі, үшіншінікі т.с.с.

Мысалы,

Var

A:array of array of integer; // екі өлшемді динамикалық массив

Begin

SetLength (A,3);

// бірінші өлшемінің ұзындығын анықтаймыз, яғни балалар санын

SetLength (A[0],3); // әр бағанының ұзындығын анықтаймыз

SetLength (A[1],3);

SetLength (A[2],3);

…………….

End;

Object Pascal тілінде динамикалық массивтердің екінші және одан арғы өлшемдерінің ұзындығы әртүрлі болуы мүмкін. Жоғарыдағы мысалда 3х3 квадратты матрица анықталған. Төмендегі мысалда үшбұрышты массив құрылады:

SetLength(A[0],3);

SetLength(A[1],4);

SetLength(A[2],5);

ҚР 1304000 КЖ

Құжат№

Бет

Өзг.

Бет

Қолы

Күні

Жалпы көп өлшемді динамикалық массивтердің N-1 өлшемдерінің (N-өлшемдер саны) әр элементі динамикалық массив болып табылады және ол іске қосуды (инициализациялау) қажет етеді. Мысалы, 3х3х3 үш өлшемді массивті орнату келесі түрде ұйымдастырылады:

Var

A:array of array of array of Real;

i,j:integer;

Begin

SetLength(A,3);

For i:=0 to 2 do

Begin

SetLength(A[i],3);

For j:=0 to 2 do

SetLength(A[i,j],3);

End;

……………………End;

ҚР 1304000 КЖ

Күні

Қолы

Құжат№

Бет

Өзг.