Массивтер. Деректердің стандартты типтері



Жоспар:

• Массивтерді сипаттау

• Массивтердің түрлері, динамикалық массивтер

• Delphi ортасында массив элементтерiмен жұмыс атқару

• Object Pascal тiлiндегi қолданылатын берiлгендердiң түрлерi.

• Деректердің стндартты типтері
1. Массивтерді сипаттау

Бiр түрдегi айнымалылар тiзбегiн массив деп атайды.
Массивтiң синтаксисi келесi:
Type
<түрдiң атауы> = array [<индекс түрлерiнiң тiзiмi> ] of <кез келген реттiк түр> , немесе айнымалылар бөлiмiнде бiрден
Var <айнымалының атауы>: array [<индекс түрлерiнiң тiзiмi> ] of <кез келген реттiк түр>- айнымалыны массив деп анықтауға болады.
Массивтер бiр, екi және одан да көп өлшемдi болады. Массивтер өлшемiне шектеу қойылмайды, тек келесi жәйт есте болу керек: массивтiң iшкi көрiнiсiнiң ұзындығы 2 Гбайттан аспау керек. Массив элементтерi жадыда бiрiнен соң бiрi орналасады, сонымен қатар кiшi адресiнен жоғарғыға өткенде алдымен оң жақтағы индексi жылдам өзгередi.
Екi өлшемдi матрицаны бiр өлшемдi массивтерден құралған массив деп санауға болады.

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

Массивтер. Деректердің стндартты типтері

Жоспар:
• Массивтерді сипаттау
• Массивтердің түрлері, динамикалық массивтер
• Delphi ортасында массив элементтерiмен жұмыс атқару
• Object Pascal тiлiндегi қолданылатын берiлгендердiң түрлерi.
• Деректердің стндартты типтері

1. Массивтерді сипаттау

Бiр түрдегi айнымалылар тiзбегiн массив деп атайды.
Массивтiң синтаксисi келесi:

Type

түрдiң атауы = array [индекс түрлерiнiң тiзiмi ] of кез келген
реттiк түр , немесе айнымалылар бөлiмiнде бiрден
Var айнымалының атауы: array [индекс түрлерiнiң тiзiмi ] of кез
келген реттiк түр- айнымалыны массив деп анықтауға болады.
Массивтер бiр, екi және одан да көп өлшемдi болады. Массивтер
өлшемiне шектеу қойылмайды, тек келесi жәйт есте болу керек: массивтiң iшкi
көрiнiсiнiң ұзындығы 2 Гбайттан аспау керек. Массив элементтерi жадыда
бiрiнен соң бiрi орналасады, сонымен қатар кiшi адресiнен жоғарғыға өткенде
алдымен оң жақтағы индексi жылдам өзгередi.
Екi өлшемдi матрицаны бiр өлшемдi массивтерден құралған массив деп
санауға болады.

Динамикалық массивтер

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

Delphi ортасында массив элементтерiмен жұмыс атқару мысалы:
1. Бүтiн элементтен тұратын бiр өлшемдi массив берiлген. Массивтi
көрсету үшiн Additional парағының StringGrid1 {Options: goEditing:=True
(түзетуге болатындығы), goTabs:=True (Тab пернесiне сезiндiру); ColCount:=5
(бағаналар саны); RowCount:=1 (жолдар саны); FixedCols:=0 (бекiтiлген
бағаналар саны); FixedRows:=0 (бекiтiлген жолдар саны)} компонентi
қолданылған. ColCount және RowCount қасиеттерi бағаналар және жолдар саны.
Олардың нөмiрлерi 0 - ден басталады.
Сонымен қатар, екi белгi - Label1 (Caption - Бүтiн сандар массивiн
енгiзiңiз) және Label2 (Caption - тазаланған), екi батырма - Button1
(Caption - Есептеу), BitBtn1 (Kind - bkClose). Массив элементтерi
StringGrid1 ұяшықтарынан көрсетiледi және Есептеу батырмасы басылғанда олар
массивке меншiктеледi де элементтердiң қосындысы және орташа шамасы
есептелiп, Label2 - ге шығарылады. Close батырмасы басылғанда программа
жұмысын тоқтатады.

Массив элементтерiн
StringGrid терезесiнен көрсету

Модуль кодын келесi түрде келтiруге болады:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Buttons, StdCtrls, Grids;
type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
goEditing:= True, goTab:=True; ColCount=5 ; RowCount=1;
FixedCols:=0; FixedRows:=0;
Label1: TLabel;
Label2: TLabel;
Button1: TButton;
BitBtn1: TBitBtn;
procedure Button1Click(Sender: TObject);
procedure StringGrid1KeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var
a: array [1..5] of integer; массив анықтамасы
s,i:integer;
sr:real;
begin
for i:=1 to 5 do
if Length(StringGrid1.Cells[i-1,0])0 массив элементтерiн енгiзу
then
a[i]:=StrToInt(StringGrid1.Cells[i- 1,0])
жолдар және бағаналар нөмiрлерi 0 - ден басталады
else a[i]:=0;
s:=0; for i:=1 to 5 do
s:=s+a[i]; sr :=s5;

Label2.Caption := 'Элементтер қосындысы =' + IntToStr(s)+ #13+

'Арифметикалық орташасы ='+ FloatToStr(sr);
end;
procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
begin енгiзуде кеткен қателiктердi өңдеу процедурасы
case Key of
#8,'0'..'9': ; цифрлар және BackSpace пернесi
#13: Enter
if StringGrid1.Col StringGrid1.ColCount-1
then StringGrid1.Col:=StringGrid1.ColCou nt+1;
'.',',':
begin
Key:=DecimalSeparator; үтiр және нүкте орнына бөлгiш қою
end;
else Key:=Chr(0); басқа символдар
end; end; end.

Массив элементтерiн StringGrid терезесiнен көрсету
мысалының орындалғандағы көрiнiсi

Object Pascal тiлiнде кез ... жалғасы

Сіз бұл жұмысты біздің қосымшамыз арқылы толығымен тегін көре аласыз.
Ұқсас жұмыстар
Алгоритмдер және деректер структурасы
Паскаль және Си тілдері
Си тілі
Динамикалық массивтер
Алгоритм және оның қасиеттері
СИ тіліндегі функциялар
PHP синтаксисінің негіздері
C# Тілінің негіздері
СИ тіліндегі символдық функциялар мен процедуралар
Массивтер үшін типтерді түрлендіру. Массивтерді клондау
Пәндер