2 - сурет Калькулятор терезесі
3. Цикл. Delphi–де циклдермен жұмыс стандартты Турбо Паскальдағы сияқты. While(әзірше), Repeat(дейін), For(үшін) циклдік құрылымдардың жазылу үлгілері:
While P do
Begin
S
End;
Repeat
S
Until (not P);
For k:=k0 to kn do
Begin
S
End;
мұндағы Р – шарт; do - орындау, until – дейін (do, until - кілттік cөздер); S -цикл денесі;k - есептегіш (цикл параметрі); k0,kn - есептегіштің бастапқы, соңғы мәндері.
Мысалы, жалпы мүшесі ak=1/k2 (k=1,2…)тізбектің алғшқы бес мүшесінің қосындысын табу керек (n=5; Sn - ?).
Procedure Tform1.FormCreat(Sender: TOject);
Var s,a:real; k,n:integer; s1:string;
Begin
n:=StrToInt(‘’,’Мүшелер саны=’,’’));
s:=0; k:=0;
For k:=1 to n do
Begin
a:=FloatToStrF(s,ffFixed,7,3); ShowMessage(s1);
End;
Жиындармен (массивтермен) жұмыс
Жиын (массив) – бір типті нысандар (объектілер) жиыны. Жиындар (массивтер) бір өлшемді (сызықтық), екі өлшемді (матрица) не көп өлшемді болуы мүмкін. Жиындарды сипатту Турбо Пакальдағы сияқты. Мысалы:
var
a:array[1..10] of integer; //бүтін сандар жиыны
b:array[3..8] of real; //нақтысандар жиыны
c:array[0..5] of string; //жолдық типті жиыны
Мартица – екі өлшемді жиын. Матрицаны сипаттаудың сызықтық жиынды сипаттаудан айырмавшылығы шамалы. Мысалы:
var
аa:array[1..10,1..10] of integer; //бүтін сандар матрицасы
bb:array[1..8,1..5] of real; //нақтысандар матрицасы
cc:array[0..5,0..3] of string; //жолдық типті матрицасы
Мысал. 100 метрлік қашықтыққа жүгіру барысында үш топтың әрқайсысынан үш студент іріктеп алынды. Олардың секөндпен өлшенген жүгіру нәижелері 1-кестеге енгізілген. Қайсы топтың студенттері бірінші орынға шықты? Орта есеппен олардың әрқайсысы 100 метрді қанша уақытта өтті?
12,69 13,25 12,98
|
14,05 13,16 13,08
|
13,32 14,27 14,02
|
1-кесте 1-топ 2-топ 3-топ
Жаңа жоба ашып, формада Memo1, StringGrid1, BitBtn1, BitBtn2, Label1 компоненттерін орнату (4-сурет).
TstringGrid -ұяшықтарында кез-келген ұзындықтағы жолдық шамаларды орналастыруға болатын кестелік компонент.
Қасиет
|
Мағынасы
|
Cells[n,n]
ColCount
RowCount
GrigLineWidth
Fixedcos
FixedRows
FixedColor
ColWidth[i]
RowHeight[j]
|
n*m өлшемді кесте ұяшықтарының мәндері
Кестенің баған саны
Кестенің жол саны
Кесте сызылатын сызықтың қалыңдығы
Ерекше жолдар саны
Ерекше бағандар саны
Ерекше жолдар мен бағандар түсі
i-бағанның ені
j-жодың биіктігі
|
Компоненттер қасиеттеріне мәндер меншіктеу:
Код терезесінде батырмасын оқиғасын өңдеуіш процедурасын құру.
Компонент
|
Қасиет
|
Мән
|
BitBtn1
BitBtn2
StringGrid1
Label1
Memo1
|
Kind
Kind
FxedCols
FxedRows
Caption
Strigns
|
bkOK
bkClose
1
1
бос ету
бос ету
|
Procedure Tform1.BitBtn1click(Sender: TObject);
Const n=3;
Var nomer,k,I,j:longint;
S:array[1..n,1..n] of real; //матрица
P:array[1..n] of real; //қосындылар жиыны
Min:real; nomerT:string;
Begin
{кесте құру}
StringGrid1.Font,Name:=’Times Kaz’;
StringGrid1.ColCount:=n+1;
StringGrid1.RowHeight:=n+2;
StringGrid1.Cells[0,n+1]:= ‘Орт.жылд.’;
For I:=1 to n do
Begin
P[i]:=0; //қосыенды жиынға бастапқы мәндер меншіктеу
StringGrid1.Colwidth[i]:=60;
StringGrid1.Cells[0,i]:=’ ‘+FloatToStr(i);
StringGrid1.RowHeight[i]:=15;
StringGrid1.Cells[I,0]:=’’+FloatToStr(i)+’топ’;
End;
{енгізілген элменттерді мартица ретіндек құу және экранға шығару}
k:=0;
for I:=1 to n do
for j:=1 to n do
begin s[i,j]:=StrToFloat(memo1.Lines[k]);
StringGrid1.Cells[I,j]:=’ ’+Memo1.Lines[k]; k:=k+1;
End;
{топ студентетрінің орташа жылдамдықтарын анықтау}
for I:=1 to n do
begin for j:=1 to n do
p[j]:=p[j]+s[j,i];
end;
for I:=1 to n do
StringGrid1.Cells[I,n+1]:=’ ‘FloatToStrF(p[i]/n,ffGeneral,4,2);
{бірінші орынға қай топ шыққанын анықтау}
min:=p[1];
nomer:=1;
for I:=111 to n do
if p[i]
begin min:=p[i];
nomer:=I;
end;
nomerT:=IntToStr(nomer);
Label1.Font.Size:=10;
Label1.Caption:=’1 – орынға’ +nomerT+ ‘топ шыққан’+#13+#13+’Орташа жылдамдығы:’’+FloatToStrF(min/nffGeneral,4,2);
End;
Жобаны сақтап, іске қосу. Форма көрінеді. Memo1 терезесіне топтар көрсеткіштерін кезекпен енгізіп, ОК батырмасын шерту. Нәтиже алынады(4-сурет).
Достарыңызбен бөлісу: |