3 Обьектілі бағдарланған программалау тілін оқыту әдістемесі



бет25/39
Дата12.09.2020
өлшемі0,88 Mb.
#77904
түріПрограмма
1   ...   21   22   23   24   25   26   27   28   ...   39
Байланысты:
Delphi программалау тілін оқыту әдістемесі

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

Төменде (2.1.7-сурет) осы қосымшаның компоненттер орналастырылған форма терезесі келтірілген.



2.1.7-сурет. Компоненттер орналастырылған форма терезесі


Тапсырманы орындау алгоритмі:

  1. Жаңа жобаны ашып, пішіннің Caption қасиетіне «Массивтерді сұрыптау» деген мәнді жазыңыз.

  2. Пішінге Edit1, Edit2, Edit3, Label1 («элементтер саны), Label2 («массив»), Label3(«сұрыпталған массив) компоненттерін, Button1 («массив құру») батырмасын орналастырыңыз. Осы компоненттердің Caption қасиетіне жақшаның ішіне жазылған мәндерді жазыңыз.

  3. Edit1, Edit2, Edit3 компоненттеріндегі мәтінді тазалаңыз.

  4. Пішінде Edit2 обьектісінің төмен жағына RadioGroup1 панелін орналастырып, Caption қасиетіне «Сұрыптау реті» мәнін жазыңыз.

  5. RadioGroup1 панелінде сұрыптау ретін таңдау үшін және жазу үшін обьектілер инспекторы терезесінен Items қасиетін белгілеп, пайда болған String List Editor терезесіне «Кему реті бойынша», «Өсу реті бойынша» тізімін енгізіп, ОК батырмасын басу керек.

  6. RadioGroup1 панелінің оң жағына Button2 батырмасын орналастырып, Caption қасиетіне «Сұрыптау» мәнін жазыңыз.

  7. Пішіндегі компоненттерді жоғарыдағы суреттегідей түзеңіз.

  8. Button1 және Button2 батырмаларына оқиғаларды өңдеуді құрудың алдында айнымалыларды сипаттау бөліміне N және I бүтін типті айнымалысын, сонымен қатар, М бүтін сандардың динамикалық массивін сипаттаңыз.

var Form1: TForm1;

N,I: integer;

М: array of integer; {бүтін сандардың динамикалық массивін сипаттау}

9. Енгізуді білдіру үшін Edit1 терезесіне оқиғаны өңдеушіні құрамыз. Бұл 0-ден 9-ға дейінгі сандардан басқа кез келген символдарды енгізуді болдырмау үшін қажет. Edit1 терезесіне оқиғаны өңдеу процедурасын құру үшін, пішінде Edit1 компонентін ерекшелеп, обьектілер инспекторы терезесінің Events бетіндегі On Key Press оқиғасына тышқанның сол жақ батырмасымен екі рет шертіңіз. Пайда болған процедура мәтініне келесі операторды жазыңыз: if not (Key in ['0'..'9']) then Key:=#0; Оқиғаны өңдеу процедурасының толық мәтіні төмендегідей болады:

procedure Edit1KeyPress(Sender: TObject; var Key: Char);

begin


if not (Key in ['0'..'9']) then Key:=#0;

end;

  1. Button1 батырмасына оқиғаны өңдеу процедурасын құру үшін, батырманы ерекшелеп, обьектілер инспекторы терезесінің Оқиғалар бетіндегі OnClick оқиғасына немесе батырманы екі рет шертіңіз. Пайда болған процедураның дайындамасына келесі кодты жазыңыз:

procedure TForm1.Button1Click(Sender: TObject);

begin


Randomize;

N:=StrToInt(Edit1.Text); {массив элементтерінң саны}

SetLength(M, N); {М массивіне N өлшемді беру}

Edit2.Text:=' '; { Edit2 терезесін тазалау}

for I:= 0 to N-1 do { массивті кездейсоқ бүтін сандармен толтыру}

begin


M[I]:= Round(Sin(Random(100))*100); { массив элементіне кездейсоқ мәнді меншіктеу}

Edit2.Text:=Edit2.Text+' '+IntToStr(M[I]); { массив элементтерін шығару}

end; end;

  1. Button2 «Сұрыптау» батырмасының оқиғаны өңдеушісі for циклы операторының көмегімен жазуға болатын массивті сұрыптаудан басталады. Ағымдағы элементпен салыстырылатын массив элементінің нөмірін сақтау үшін J бүтін типті айнымалыны енгіземіз. Сұрыптау үрдісіндегі алмастыру барысында массив элементін ұмытпау үшін Тmp айнымалысын енгіземіз. Массивтің сызықтық сұрыпталуы массивтегі келесі шарттарды сақтағанда массив элементтерін алмастыру жолымен орындалады: егер сұрыпталмаған массив бөлігінде І нөмірі бар элементтен үлкен (кему реті бойынша сұрыптау үшін) немесе І нөмірі бар элементтен кіші (өсу реті бойынша сұрыптау үшін) J нөмірі бар элемент табылса. Массив элементтерін алмастыру үшінші элементтің көмегімен жүзеге асырылады. Жалпы сұрыптау және сұрыпталған массивті баспаға шығару процедурасының мәтіні келесідей болады:

procedure TForm1.Button2Click(Sender: TObject);

var J, Tmp:integer;

begin

for I:= 0 to N - 2 do {массивтің сұрыпталмаған бөлігінің өлшемін өзгерту}



for J:=I+1 to N-1 do {массивтің сұрыпталмаған і-ші элементін кезекпен барлық і+1-ден бастап, соңына дейін салыстырамыз}

begin { RadioGroup1.ItemIndex қасиетінің мәніне байланысты әрекетті таңдау}

if (RadioGroup1.ItemIndex=0) and (M[I]

or (RadioGroup1.ItemIndex=1) and (M[I]>M[J]) then

{егер сұрыпталмаған массив бөлігінде І нөмірі бар элементтен үлкен (кему реті бойынша сұрыптау үшін) немесе І нөмірі бар элементтен кіші (өсу реті бойынша сұрыптау үшін) J нөмірі бар элемент табылса }

begin {массив элементтерін орындарымен ауыстыру}

Tmp:=M[I]; {уақытша М[I] мәнін есте сақтау}

M[I]:=M[J];

M[J]:= Tmp;

end;


end;

for I:=0 to N-1 do {сұрыпталған массивті шығару}

Edit3.Text:=Edit3.Text+' '+IntToStr(M[I]);

end; end.



Төменде (2.1.8-сурет) осы программаның блок-схемасы көрсетілген:

2.1.8-сурет. Программаның блок-схемасы



12. Жобаны сақтап, қосымшаны орындауға жіберіңіз. Төменде (2.1.9-сурет) қосымшаны іске қосқанда шыққан нәтиже, яғни сұрыпталған сандарды шығару терезесі көрсетілген.

2.1.9-сурет. Сұрыпталған сандарды шығару терезесі





Достарыңызбен бөлісу:
1   ...   21   22   23   24   25   26   27   28   ...   39




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет