Catch(.)

.........

public:

.........

void assign(double Len, double Wide); // функция -элемент

}; // классты анықтау бітті

void rectangle:: assign(double Len, double Wide)

// функция-элементтің өзінің анықталуы

{ length=Len;

width=Wide;

}

Конструкторлар классқа жататын объектілерді дұрыс құру үшін қолданылады. Конструктордың анықталуы келесі түрде болады:

class rectangle // кластың аты

{

private:

.........

public:

rectangle() // конструктор үнсіздік бойынша

{assign(0,0);}

rectangle (double Len, double Wide) //конструктор

{assign(Len,Wide);}

.........

};

Конструктор үнсіздік бойынша болғанда оның параметрлері берілмейді немесе оның мәні нақты көрсетіліп беріледі, мысалы:

class rectangle // кластың аты

{

private:

.........

public :

rectangle() // конструктор үнсіздік бойынша

{assign(0,0);}

rectangle (double Len, double Wide) //конструктор

{assign(Len,Wide);}

rectangle (double Len=10, double Wide=12) //конструктор үнсіздік мәні бойынша

.........

};

Деструкторлар классқа жататын объектілерді автоматты түрде жою үшін қолданылады. Деструктордың анықталуы келесі түрде болады, мысалы:

class rectangle // кластың аты

{

private:

.........

public:

rectangle(); // конструктор

.........

~rectangle (); //деструктор

.........

};

Жаттығу жұмыстары

Төртбұрыштың берілген ұзындығы мен енін және ауданын баспаға шығара алатындай мүмкіндіктер қарастырылған rectangle класын анықтаңыз және сол класқа жататын rect объектісіне сол класта қарастырылған мүмкіндіктерді қолданатын программа жазыңыз:

#include <iostream.h>

#include <conio.h>

class rectangle // классты анықтаудың басталуы

{

private:

double length;

double width;

public:

rectangle()

{assign(0,0);}

rectangle (double Len, double Wide)

{assign(Len,Wide);}

double Length()

{ return length;}

double Width()

{ return width;}

double Area()

{ return length*width;}

void assign(double Len, double Wide);

}; // классты анықтаудың соңы

void rectangle:: assign(double Len, double Wide)

{ length=Len;

width=Wide;

}

int main()

{

rectangle rect; // rectangle класына жататын rect объектісін анықтау

double uzin, eni;

cout<<"uzindigi men enin beriniz-";

cin>>uzin>>eni;

rect.assign(uzin,eni);

cout<<"\n"<<"Tortbyrishtin uzindigi - "<<rect.Length();

cout<<"\n"<<"Tortbyrishtin eni - "<<rect.Width();

cout<<"\n"<<"Tortbyrishtin audani - "<<rect.Area();

getch();

//return 0;

}

Программаның нәтижесі:

uzindigi men enin beriniz-10 12

Tortbyrishtin uzindigi - 10

Tortbyrishtin eni - 12

Tortbyrishtin audani - 120

Әдістер. Кластың немесе объектінің әдістерін осы класқа енетін, процедуралар мен функциялар құрайды. Олар кәдімгі процедуралар мен функциялар сияқты жазылады. Кластың әдістерінің немесе процедура мен функциялардың тақырыбы /мысалы, procedure Button1Click (Sender: TObject);/ программа модулінің interfase - секциясындағы класты сипаттау бөлімінде жазылады да, ал денесі әдістің қайсы класқа тиесілі екендігін көрсететін құрама атпен /мысалы, TForm1.Button1Click(Sender: TObject); / implementation – секцияда жазылады.

С++ -те кез-келген класс үшін анықталған, кластың жаңа данасын құратын конструктор және құрылған дананы жоятын деструктор деп аталатын екі әдіс қарастырылған. TОbject класы және одан тарайтын тума кластардың басым бөлігі үшін бұл әдістер сәйкесінше Create және Destroy деп аталады.

Қасиеттер. Кластың қасиеттері немесе сол класқа жататын объектінің қасиеттері - бұл өрістерді пайдалануға арналған арнайы механизм. Класты сипаттауда қасиеттерді жазу үшін property, read, write қызметші сөздері қолданылады. Программа модулінде қасиеттердің мәнін көрсету келесі түрде жазылады:

кластың_аты->қасиеті:= мәні;

Оқиғалар. Процедура болғандықтан бұл программалық кодтарды «әдіс» деп қарастырады да, «оқиға»- қабылдайтын мәндері осы процедуралық типтер болатын «қасиет» болады. Оқиға болған кезде, шақырылатын процедураны немесе әдісті оқиға өңдеуші / Event Handler - обработчик событий/ деп атайды, С++Builder- де әрбір кластың өзіне тән оқиғаларына сәйкес, программа модуліне, визуальдық компоненттің белгісіне екі рет шерту арқылы, автоматты түрде қойылатын стандарт оқиға өңдеушілері болады,

Стандарт оқиғалардан басқа, кез-келген оқиғаларды өңдеушілердің шаблон процедураларын Object Inspector терезесінің Events жапсырмасындағы оқиғаның атына сәйкес жолға екі рет шерту арқылы қояды.

Өзіндік жұмыс тапсымалары

Есепті әуелі құрылымды /struct/ пайдаланып, сонан соң class – ты пайдаланып орындаңыз:

1. “Өте жақсы“, “өте жақсы және жақсы“, “жақсы және қанағаттанарлық“, ”тек қанағаттанарлық“ бағалармен оқитын студенттердің тізімін құру программасын жазу.

2. Фамилиялары бірдей студенттер оқитын топты анықтау программасын жазу.

3. Фамилиясы “A”-дан басталатын қызметкерлер тізімін және олардың орташа еңбекақысын көрсететін программа жазу.

4. Аяқ киім дүкенінің ассортименті жазба түрінде берілген, ен қымбат әйел адамынын аяқ киімін және ер адамдар аяқ киімін, олардың құнымен көрсететін программаны жазу.

5. “Телефондық анықтаманы моделдейтін“ программаны құру, әйел адамдардың телефон нөмерін және мекен жайын шығару.

6. Автомашинаны жөндеу шеберханасында машина жөніндегі мәліметтер жазба түрінде берілген, қызыл түсті машиналардың маркасын және нөмерін аңықтайын программаны жазу.

7. Мекеменің қызметтері туралы мәліметтер жазба түрінде берілген. Ер адамдардың мамандығы мен жасып көрсетіп, экранға тізім шығарыңыз.

8. Кітаптардың аты, авторы, шыққан жылы, бағасы және тиражы анықталған каталог құрыңыз. Экранға алфавитімен тиражы бойынша сұрыпталған кітаптар тізімін шығарыңыз.

9. Теміржол кассісіндегі төмендегідей мәліметтер белгілі. Поездың нөмері,баратын жері,билеттің бар жоғы анықтау. Бос билеттердегі саны 125-ке тең поездардың нөмерін, баратын жерін экранға шығарыңыз.

10. Өзініз оқитын топтың тізімін алфавитімен студенттердің туған жылы бойынша реттеу программасын жазыңыз, нәтижесін экранға шығарыныз.

2 - зертханалық жұмыс.

С++ Buildеr 6 ортасының құрылымы. С++ Buildеr 6 ортасында қосымша құру. Жоба, форма, модуль, ресурс файлдары

Әдістемелік нұсқаулар

С++Builder программмалау ортасы іске қосылғаннан кейінгі терезелердің орналасуы келесі түрде болады /4.1-сурет/:

- Негізгі терезе (С++Builder Project1);

- Объектілер инспекторының терезесі (Object Inspector);

- Форма редакторының терезесі (Form1);

- Код жазы;

- Латын редактордың терезесі (Unit1).

Ескерту. Кеңеймелері: *.cpp, *.h, *.dfm, *.bpr, *.res. болатын файлдар маңызды болып есептеледі, себебі олар барлық жобаға қатысады.

Жаттығу жұмыстары

Жобамен жұмыс жасау:

- Жоба құру үшін негізгі терезеде Fileà New à Application командалары орындалады.

- Жаңа құрылған жобаны толығымен сақтау үшін Filеà Save All командасы орындалады. Жоба құрамына кіретін файлдардың жиынтығы бір бумада сақталуы қажет.

4.1- сурет. С++Builder программмалау ортасының негізгі терезесі

- Жобаны орындау бірнеше тәсілдермен жүргізіледі.

- Жобаны жабу үшін Filеà Close All командалары орындалады.

- Бұрыннан бар жобаны ашу үшін Filеà Open командасы орындалады да, пайда болған диалогтық терезеде жоба файлының (*.bpr) аты көрсетіледі.

- Жоба файлының (*.bpr- файл) мәтінін қарау үшін бас мәзірден Project à View Source (Проект ->Просмотр) командасы орындалады;

- Жоба файлының терезесін жабу үшін терезе контекстік мәзірінен Close Page командасы орындалады;

- Жоба файлын С++Builder ортасы автоматты түрде өзі құрады;

- Жоба файлы С++Builder ортасының жобалар тобына (группа проектов, ProjectGroup1) кіреді. Жоба тобы - бұл өзі қамтитын бір немесе бірнеше жобалар туралы ақпараттар, сипаттаулар сақталатын *.bpgкеңеймелі файл.

- Project Manager программасы жоба тобымен жұмыс жасауда қолданылады.

- Жоба параметрлерін беру үшін Project à Options командасы орындалады.

Өзіндік жұмыс тапсымалары

1. Жай жоба құрыңыз, оны өз бумаңызда сақтаңыз.

2. Өз жобаңыздың құрамына кіретін файлдарды, олардың атын, қызметін көрсететін кесте жасаңыз.

3. С++Builder ортасының негізгі терезесіндегі (С++Builder Project1) бас мәзірдің опцияларындағы жиі қолданылатын командаларын және олардың қызметін жазып алыңыз.

3 - зертханалық жұмыс.

Негізгі визуалдық компоненттер. VCL кітапханасының компоненттері. Қасиеттері, әдістері және оқиғалары

Әдістемелік нұсқаулар

VCL (Visual Component Library)- визуальды компоненттер кітапханасында қосымша құруда қажет болатын компоненттер жинақталған.

Компоненттердің қасиетін өзгерту екі түрлі жолмен жасалады: объектілер инспекторының (Object Inspector) терезесінде немесе программалау жолымен. Мысалы, Label1 компонентінің Caption қасиетін Object Inspector терезесінде өзгерту.

Ал программалық жолмен өзгерту үшін программа мәтінінде келесі түрде жазылуы керек:

Label1->Caption= "Багдарлама";

Объектінің немесе компоненттердің әдістерін шақыру келесі түрде жазылады:

Объектінің аты ->әдістің аты;

Memo1->Clear();

Компоненттерге тән оқиғалар функциялар / void __fastcall / түрінде анықталған, бұл функциялардың шаблондары программа мәтініне автоматты түрде бірден қойылады, бұл шаблондарды сол компоненттің белгісіне екі рет шерту немесе Object Inspector терезесіндегі Events жапсырмасындағы оқиғалар арқылы шақырып алуға болады. Мысалы, Button1 компонентінің OnClick оқиғасы:

void __fastcall TForm1::Button1Click(TObject *Sender)

{

Label1->Caption= "Багдарлама";

}

4.2- сурет. Button1 компонентінің

OnClick оқиғасын шақыру.

Форма. C++ Builder ортасында құрылатын қосымшаның орындалуы кезінде экранға шығатын визуальдық бөлімінің негізін TForm класының өкілі болып табылатын Form компоненті құрайды. C++ Builder ортасы жүктелгенде, құрылатын жобаға (Project1) сәйкес форма терезесі (Form1) өзі автоматты түрде пайда болады /4.3-сурет/. Форма терезесі, бұл - Windows қосымшаларына тән тақырыптық зонасы, жүйелік мәзір батырмасы, басқару батырмалары және таза жұмыстық обылысы бар, өлшемі өзгеріп отыратын терезе.

4.3 –сурет. Форма терезесі

Жобаға тағы да форма терезелерін қосу үшін File à New à Form командасы орындалады. Программа құруда Form компонентінің келесі қасиеттері мен әдістері жиі пайдаланылады:

TCaption типтер к ласына жататын Caption қасиеті форманың тақырыбын, яғни тақырыптық зонадағы мәтінді жазу үшін қолданылады;

TComponentName типіне жататын Name қасиеті Form компонентінің атын немесе идентификаторын беру үшін қолданылады, әдетте ол Form1, Form2... болып кете береді, егер қолданушы қажет болған жағдайда бұл атауларды өзгерте алады және программада оны сол өзі берген атпен шақырып пайдаланады, мысалы, Name қасиетінің мәні Form1 –ден MainForm- ға өзгертілсе онда оны программада пайдаланғанда

Form1à Caption:= “Форма терезесі”; деп жазудың орнына MainFormà Caption:= “Форма терезесі”; түрінде жазады. Бұл Name қасиетіC++ Builder ортасындағы қолданылатын барлық программалық компоненттерге тән қасиет.

Программада Form компонентінің жаңа экземпляр-данасын құру үшін constructor Create (AOwner: TComponent); конструкторы қолданылады, егер жаңа дананы құру команда түрінде талап етілетін болса оны программа мәтінінде келесі түрде жазады:

ApplicationàCreateForm(TForm1, Form1);

бұл программаның негізгі терезесін құру болып табылады, ал қалған терезелерін құруды, мысалы

Form2=TForm2.Create(Application); түрінде беруге болады.

Close функциясы форма терезесін жабуды қамтамасыз етеді, программадағы жазылуы:

Form1 à Close();

Hide функциясының қызметі - форманы экранда көрсетпей жасырып тұрады, жазылуы:

Form1 à Hide();

Show функциясы орындалғанда көрінбей тұрған форма, алдыға шығып экранда көрсетіліп тұрады, жазылуы:

Form1 à Show();

Форма компонентінің TNotifyEvent класына жататын OnCreate оқиғасы форма құрылған кезде бір-ақ рет орындалады, сондықтан бұл функцияға форманың құрылуымен бірге орындалатын (мысалы пароль енгізу сияқты) операциялар жазылады. OnCreate оқиғасына сәйкес функция Object Inspector терезесінің Events жапсырмасындағы OnCreate жолының терезесіне екі рет шерту арқылы шақырылады:

void __fastcall TForm2::FormCreate(TObject *Sender)

{

}

Мәтінмен жұмыс жасауға арналған Standart панелінің Label, Memo, Еdit компоненттері. Қарапайым қосымшалар құру үшін Standart панелінің компоненттері қолданылады.

Қосымшаларда мәтін түріндегі мәліметтерді терезелер арқылы енгізуде Standart панелінің Label, Еdit, Memo компоненттері қолданылады.

Еdit компоненті (немесе енгізу жолағы, немесе бір жолды редактор деп те атайды) мәтінді кішкентай терезе түріндегі бір жолға енгізуді немесе мәтін түріндегі нәтижені терезеге шығарып қоюды қамтамасыз етеді. Қосымшада Еdit компонентінің терезесінде берілген мәтінді, курсорды оңға және солға жылжытатын бағыттауыштар көмегімен, символдарды өшіретін < Backspace> және <Delete> пернелерін пайдаланып және фрагменттерді бөліп алып жөндеуге болады. Еdit компонентінің терезесіне енгізілген мәтін, оның типі AnsiString болатын Text қасиетінің мәні болып табылады, яғни Еdit терезесінде берілген мәліметтер программада тек жолдық тип ретінде ғана қабылданады, ал оны әрі қарай программада сандар ретінде пайдалану үшін түрлендіру функциялары қолданылады. Терезеге енгізілген мәтінді бүтін /int/ немесе нақты /float/ типтердің біріне айналдыру үшін келесі түрлендіру функциялары қолданылады:

StrToInt (AnsiString s)- жолдық типті бүтін типке, StrToFloat(AnsiString s) - нақты типке түрлендіреді.

Еdit терезесіндегі мәтіннің үлкен немесе кіші әріптермен жазылуын немесе регистрлердің ауысып отыруын оның CharCase (типі TEditCharCase) қасиеті арқылы береді, сәйкесінше ол үш түрлі мән қабылдайды:

- ecNormal – ррегистр өзермейді, сол күйінде тұрады;

- ecLowerCase - төменгі регистрдің әріптеріне көшеді;

- ecUpperCase - жоғарғы регистрдің бас әріптеріне ауысады.

Еdit компонентінің типі Char болатын PasswordChar қасиеті осы терезеге пароль енгізу үшін қолданылады, әдетте оның мәні #0 болып тұрады да терезеге енгізілген мәтіннің өзі шығады, ал оны жасырып көрсетпеу үшін PasswordChar қасиетінің қабылдайтын мәнін басқа бір символға, мысалы «*» немесе «?» секілді мәндерге өзгерту керек, сонда енгізілген құпия мәтіннің орнына «********» немесе «?????????» түріндегі жолдар шығады.

Программа терезесінде Еdit1, Еdit2, Еdit3 компоненттері арқылы берілген бірнеше терезелердің бірінен екіншісіне ENTER пернесі арқылы көшіп отыру үшін оларға басқару фокусын беруді (курсорды беретін) қамтамасыз ететін SetFocus әдісін қолдануға болады, ол әдіс осы компоненттің терезесінде тұрып басылған пернеге жауап беретін OnKeyPress оқиға өңдеушісінің денесінде шақырылады. Мысалы, Еdit2 компонентінің терезесінен ENTER пернесі арқылы Еdit3 терезесіне көшу үшін сол Еdit2– нің OnKeyPress оқиға өңдеушісіне келесі кодты жазуға болады:

void __fastcall TForm2::Edit2KeyPress(TObject *Sender,

char &Key)

{

if (Key>='0' || Key<='9'); // бұл 0- 9 цифрларды көрсету

if (Key==8); // Backspace -өшіру пернесінің ішкі коды

if (Key==13) // ENTER перенсінің ішкі коды

Edit3->SetFocus();

}

Ал, форма терезесіндегі барлық терезелік компоненттерде басқару фокустарының өзара ауысып отыруын ұйымдастыру үшін Form компонентінің SelectNext (TWinControl* CurControl, bool GoForward, bool CheckTabStop); әдісі қолданылады. Қосымшадағы Memo терезесін мәтіндік файлдарды ашып оқу үшін немесе терезедегі мәтінді тексттік файлға жазып сақтау үшінде қолдануға болады. Ол үшін оның LoadFromFile (FileName) әдісі- терезедегі мәтінді файлға жазуды, ал SaveToFile (FileName) әдісі-керісінше файлдағы мәтінді Memo терезесіне шығаруды қамтамасыз етеді. Мысалы:

...

AnsiString FileName = "C:\\WINDOWS\\WIN.INI";

// файлдың аты

Form1->Memo1->Lines->LoadFromFile(FileName);

Form1->Memo1->Lines->SaveToFile(ChangeFileExt

(FileName, ".BAK"));

...

Жаттығу жұмыстары

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

4.4-сурет. а) Форма терезесі

4.4-сурет. в) Қосымша терезесі

Орындалуы:

1. Fileà New à Application командалары орындалады.

2. Жаңа құрылған жобаны сақтау үшін Filеà Save All командасы орындалады. Жоба құрамына кіретін файлдардың бір бумада сақталуы қажет.

3. Форма терезесіне қажет компоненттер /4.4-суреттегідей/ орналастырылып және олардың келесі қасиеттері өзгертіледі:

Компоненттің аты Қасиетінің аты Мәні
Form1 Caption Үшбұрыштың ауданын есептеу
Memo1 Lines Үшбұрыштың ауданын биіктігі мен табаны бойынша есептейтін программа құрыңыз
Label1 Caption Биіктік
Label2 Caption Табан
Label3 Caption Үшбұрыштың ауданы
Edit1 Text  
Edit2 Text  
Edit3 Text  
Button1 Caption Есептеу

«Есептеу» деп аталатын батырмаға екі рет шертіліп, пайда болған терезеге келесі код жазылады:

void __fastcall TForm1::Button1Click(TObject *Sender)

{

int biktik, taban;

float audan;

biktik=StrToInt(Edit1->Text);

taban=StrToInt(Edit2->Text);

audan=float(biktik*taban)/2;

Edit3 ->Text=FloatToStr(audan);

}

Өзіндік жұмыс тапсымалары

Келесі мазмұндағы есептерді шеше алатын қосымша құрыңыз:

1. Пирамиданың көлемін табу.

2. Үш қабырғасы бойынша үшбұрыштың ауданын есептеу.

3. Параллелипедтің көлемін есептеу.

4. Тізбектің жалпы кедергісін есептеу (параллель қосылған).

5. Трапецияның ауданын есептеу.

6. Тізбектің жалпы кедергісін есептеу (тізбектей қосылған).

7. Екі қабырғасы және арасындағы бұрышы бойынша үшбұрыштың ауданын есептеу.

8. Бүтін сандармен арифметикалық амалдарды орындай алатын калькулятор программа жасау.

9. Тригонометриялық функцияларды және түбір табуды орындай алатын калькулятор жасау.

10. Цилиндр көлемін табу.

4 - зертханалық жұмыс.

Қосымша құруда тізімдерді пайдалану

Әдістемелік нұсқаулар

C++Builder ортасында құрылатын қосымшалардағы тізімнің көмегімен таңдау жұмысын ұйымдастыру үшін Standart панелінің ListBox, ComboBox компоненттерін қолдануға болады.

Standart панелінің ListBox,ComboBox компоненттері. ListBox компоненті қарапайым тізімдерді жасауда қолданылады.

Мысалы,

ComboBox1->Items.LoadFromFile(‘с:\Gruppa\Family.txt’);

Жаттығу жұмыстары

Студент пен оқытушы туралы ақпарат бере алатын қарапайым қосымша құру керек. Әрбір студент немесе оқытушы туралы ақпарат оның фамилиясына сәйкес аталатын *.txt файлда сақталсын. Қосымша құруда тізімдерді пайдаланыңыз.

Орындалуы. Қосымша үш /4.5, 4.6, 4.7 –суреттер/ терезеден тұрады. «Анықтама» терезесіндегі батырмалар көмегімен «Студенттер» немесе «Оқытушылар» терезелерінің біріне көшуге болады. Бұл терезелерде сәйкесінше студент немесе оқытушы туралы нақты мәлімет алынады.

«Анықтама» терезесі (Form1) үшін жазылған программа мәтіні:

#include "Unit1.h"

#include "Unit2.h"

#include "Unit3.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

4.5-сурет. Анықтама терезесі

4.6-сурет. Студенттер терезесі

4.7-сурет. Оқытушылар терезесі

// «Студенттер » батырмасының оқиға өңдеуші коды

void __fastcall TForm1::Button1Click(TObject *Sender)

{

Form2->Show();

}

// «Оқытушылар» батырмасының оқиға өңдеуші коды

void __fastcall TForm1::Button2Click(TObject *Sender)

{

Form3->Show();

}

//«Программаны жабу » батырмасының оқиға өңдеуші коды

void __fastcall TForm1::Button3Click(TObject *Sender)

{

Form1->Close();

}

«Студенттер» терезесі (Form2) үшін жазылған программа мәтіні:

#include "Unit2.h"

#include "Unit1.h"

#include "Unit3.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma link "SHDocVw_OCX"

#pragma resource "*.dfm"

TForm2 *Form2;

//---------------------------------------------------------------------------

__fastcall TForm2::TForm2(TComponent* Owner)

: TForm(Owner)

{

}

// «КЕЙІН» батырмасының оқиға өңдеуші коды

void __fastcall TForm2::Button1Click(TObject *Sender)

{

Form1->Show();

Form3->Hide();

Form2->Hide();

}

// Студенттер тізімі жазылған ListBox1 компонентін шерту оқиғасының коды

void __fastcall TForm2::ListBox1Click(TObject *Sender)

{

if (Form2->ListBox1->ItemIndex==0) M

Memo1->Lines->LoadFromFile("Жаркынбек.txt");

(Form2->ListBox1->ItemIndex==1)

Memo1->Lines->LoadFromFile("Жумагазы.txt");

if (Form2->ListBox1->ItemIndex==2)

Memo1->Lines->LoadFromFile("Имангалиева.txt");

}

«Оқытушылар» терезесі (Form3) үшін жазылған программа мәтіні:

#include "Unit3.h"

#include "Unit1.h"

#include "Unit2.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma link "SHDocVw_OCX"

#pragma resource "*.dfm"

TForm3 *Form3;

//---------------------------------------------------------------------------

void __fastcall TForm3::TForm3(TComponent* Owner)

: TForm(Owner)

{

}

// Оқытушылар тізімі жазылған ComboBox1 компоненті оқиғасының коды

void __fastcall TForm3::ComboBox1Change(TObject *Sender)

{

if (ComboBox1->ItemIndex==0)

Memo1->Lines->LoadFromFile("Мухтаров.txt");

if (ComboBox1->ItemIndex==1)

Memo1->Lines->LoadFromFile("Асанова.txt");

}

//«КЕЙІН» батырмасының оқиға өңдеуші коды

void __fastcall TForm3::Button1Click(TObject *Sender)

{

Form1->Show();

Form3->Close();

Form2->Hide();

}

Өзіндік жұмыс тапсырмалары

Тізімдерді және олардың қасиеттері мен әдістерін, уақиғаларын пайдалана отырып:

1. Азық-түлік дүкенінің ассортименті туралы мәлімет беретін;

2. Поликлиниканың дәрігерлері туралы мәлімет беретін;

3. Математикалық формулалар анықтамалығының қызметін атқаратын;

4. Кітапханадағы картотека қызметін атқаратын;

5. Атына сәйкес түстерді көрсете алатын;

6. Атына сәйкес фигураларды көрсете алатын;

7. Атына сәйкес музыка ойнай алатын;

8. Фильмдер картотекасының қызметін атқаратын;

9. Футбол клубтары туралы анықтамалар беретін;

10. Қаладағы мәдени орталықтарда өтетін іс-шаралар туралы ақпарат беретін;

5 –зертханалық жұмыс.

Қосымшадағы ауыстырғыштардың қызметі

Әдістемелік нұсқаулар

C++Builder ортасында программалауда, программа ұсынатын мүмкіндіктердің бірін немесе қатарынан бірнешеуін таңдау үшін ауыстырғыштар (переключатель, флажок) қолданылады. Программада мұндай ауыстырғыштардың қызметін Standart панелінің CheckBox, RadioButton және RadioGroup компоненттері атқарады. Ауыстырғыш екі күйде ғана бола алады: «қосылған» (ν немесе ●) және «ажыратылған» (□ немесе ○). Ауыстырғыштарды мүмкіндігіне қарай екі топқа бөледі: тәуелсіз және өзара тәуелді. Тәуелсіз ауыстырғыштардың жұмысы басқа ауыстырғыштарға байланыссыз, тәуелсіз болады.

CheckBox компоненті. Программада CheckBox компонентінің көмегімен жасалатын ауыстырғыш, тәуелсіз ауыстырғыштар тобына жатады. Әдетте, қажет болған жағдайда бірнеше ауыстырғыштарды бір топқа біріктіріп пайдаланады, ол үшін контейнердің ролін атқаратын арнаулы GroupBox және Panel және т.б. компоненттер қолданылады.

Әдетте қосымшада ауыстырғыштың күйін өзгерту үшін тышқанның сол жақ батырмасына шертеді, яғни қандай болғанына қарамастан әйтеуір күйі өзгеретін болса, онда CheckBox компоненті үшін міндетті түрде OnClick оқиғасы пайда болады. Бұл оқиғаны өңдеуге арналған функция, көбінесе ауыстырғыштың күйіне байланысты белгілі бір әрекеттердің немесе операторлардың орындалуын қамтамасыз ету үшін қолданылады.

Мысалы,

void __fastcall TForm1::CheckBox1Click(TObject *Sender)

{

if (CheckBox1->Checked = = true)

Memo1->Font->Size=10;

}

RadioButton компоненті.RadioButton компоненті тәуелді ауыстырғыштар қатарына жатады, яғни, бір контейнерде орналасқан RadioButton түріндегі бірнеше ауыстырғыштардың біреуі «қосылған» күйде болса, онда қалғандарының барлығы бірдей автоматты түрде «ажыратылған» күйге көшеді.

Жаттығу жұмыстары

1-жаттығу. Кездейсоқ сандар генераторын (random) пайдаланып жасалған массивтің max және min элементтерін табуды және массивті сұрыптауды қолданушының сұранысына байланысты бір-біріне тәуелсіз орындай алатын қосымша құрыңыз. /4.8-суреттегідей/

4.8-сурет. Қосымша терезесі.

#include "Unit1.h"

#include "stdlib.h"

TForm1 *Form1;

float a[100];

int Elem_sani=0;

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

//--- Орындау батырмасының коды ----------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)

{

float max=a[0];

float min=a[0];

if (Edit1->Text=="")

{ShowMessage("Massiv elementterinin sanin beriniz");

Edit1->SetFocus();}

if (CheckBox1->Checked == True) //max элементті табу

{ for (int i=0;i<Elem_sani;i++) {

if (a[i]>max) max=a[i];

}

Edit2->Text=FloatToStrF(max,ffFixed,5,2);

}

if (CheckBox2->Checked == True) //min элементті табу

{ for (int i=0;i<Elem_sani;i++) {

if (a[i]<min) min=a[i]; }

Edit3->Text=FloatToStrF(min,ffFixed,5,2);

}

if (CheckBox3->Checked == True)

// массивті өсу ретімен сұрыптау

for (int i=0;i<Elem_sani;i++)

{ max=a[i]; int Nmax=i;

for (int j=i;j<Elem_sani;j++)

if (a[j]>max) {max=a[j]; Nmax=j;}

a[Nmax]=a[i]; a[i]=max;

Memo2->Lines->Add("a["+Int

ToStr(i)+"]= "+FloatToStrF(max,ffFixed,5,2)); }

}

//------ Массивті толтыру батырмасының коды-----------

void __fastcall TForm1::Button2Click(TObject *Sender)

{

if (Edit1->Text=="")

{ShowMessage("Massiv elementterinin sanin beriniz");

Edit1->SetFocus();}

Elem_sani=StrToInt (Edit1->Text);

for (int i=0; i<Elem_sani;i++)

{ a[i]= (float) random(100)/7-3;

Memo1->Lines->Add("a["+IntToStr(i)+"]=

"+FloatToStrF(a[i],ffGeneral,3,1));}

}

//---------------------------------------------------------------------------

void __fastcall TForm1::FormActivate(TObject *Sender)

{Edit1->SetFocus();}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button4Click(TObject *Sender)

{Form1->Close();}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button3Click(TObject *Sender)

{Memo1->Clear(); Memo2->Clear();

Edit1->Clear(); Edit2->Clear(); Edit3->Clear();}

//---------------------------------------------------------------------------

2-жаттығу.

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

4.9-сурет. Студенттер туралы мәліметтер

Терезедегі компоненттер қасиеттерінің және оқиғаларының мәндері:

Компоненттің аты Қасиеттерінің мәндері, оқиғалары
Form1 Caption = 'RadioButton компонентiн пайдалану мысалы'
Label1 Caption = 'Фамилия'
Label2 Caption = 'Аты'
Label3 Caption = 'Туган жылы'
Memo1 Lines.Strings = (')
Edit1 Text қасиеті тазаланады, OnKeyPress = Edit1KeyPress
Edit2 Text қасиеті тазаланады, OnKeyPress = Edit2KeyPress
Edit3 Text қасиеті тазаланады, OnKeyPress = Edit3KeyPress
Button1 Caption = 'ЕНГIЗУДI ОРЫНДАУ', OnClick = Button1Click
Button2 Caption = 'СУРЫПТАУДЫ ОРЫНДАУ', OnClick = Button2Click
RadioGroup1 Caption = 'Сурыптау'
Items.Strings = ( 'Фамилия бойынша' 'Аты бойынша' 'Туган жылы бойынша ')

Программаның мәтіні:

#include "Unit1.h"

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

class stud

{ public:

AnsiString fam, ati;

int tugG;

};

stud grup[10]; int n=0;

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)

// 'ЕНГIЗУДI ОРЫНДАУ' батырмасының коды

{

grup[n].fam=Edit1->Text;

grup[n].ati=Edit2->Text;

grup[n].tugG=StrToInt(Edit3->Text);

Memo1->Lines->Add(grup[n].fam+" "+

grup[n].ati+" "+IntToStr(grup[n].tugG));

n++;

Edit1->Clear();Edit2->Clear();Edit3->Clear();

Edit1->SetFocus();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Edit1KeyPress(TObject *Sender,

char &Key)

{

if (Key==13) Edit2->SetFocus();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Edit2KeyPress(TObject *Sender,

char &Key)

{

if (Key==13) Edit3->SetFocus();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Edit3KeyPress(TObject *Sender,

char &Key)

{

if (Key==13) Button1->SetFocus();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)

// 'СУРЫПТАУДЫ ОРЫНДАУ' батырмасының коды

{

if (RadioGroup1->ItemIndex==0) //fam boinsha syriptay bastaldi

{ Memo1->Clear();

for(char i='А';i<='Я';i++)

for (int j=0;j<n;j++)

if (grup[j].fam[1]==i)

Memo1->Lines->Add(grup[j].fam+" "+

grup[j].ati+" "+IntToStr(grup[j].tugG));

} // fam boinsha syriptay bitti

if (RadioGroup1->ItemIndex==1) //ati boinsha syriptay bastaldi

{ Memo1->Clear();

for(char i='А';i<='Я';i++)

for (int j=0;j<n;j++)

if (grup[j].ati[1]==i)

Memo1->Lines->Add(grup[j].ati+" "+

grup[j].fam+" "+IntToStr(grup[j].tugG));

} //ati boinsha syriptay bitti

if (RadioGroup1->ItemIndex==2) //tugG boinsha syriptay bastaldi

{Memo1->Clear();

for(int i=0;i<n;i++)

{ stud max=grup[i]; int maxI=i;

for (int j=i;j<n;j++)

if (grup[j].tugG > max.tugG)

{max=grup[j]; maxI=j;}

Memo1->Lines->Add(max.ati+" "+

max.fam+" "+IntToStr(max.tugG));

grup[maxI]=grup[i];

grup[i]=max;

}

}//tugG boinsha syriptay bitti

}

Өзіндік жұмыс тапсымалары:

1. Қолданушының таңдауына сәйкес тізбек мүшелерін арифметикалық, геометриялық прогрессия ережелері немесе т.б. заңдылықтар бойынша құратын және алынған тізбектің min –элементін табатын және тізбек элементтерін кему реті бойынша орналастыратын программа жазыңыз.

2. Қолданушының таңдауына сәйкес “Өте жақсы“, “өте жақсы және жақсы“, “жақсы және қанағаттанарлық“, ”тек қанағаттанарлық“ бағалармен оқитын студенттердің тізімін шығарып беретін программа жазыңыз.

3. Қолданушының таңдауына сәйкес фамилиясы “A”-дан басталатын қызметкерлер тізімін, орташа жалақыдан жоғары жалақы алатын қызметкерлер тізімін, орташа жалақыдан төмен жалақы алатын қызметкерлер тізімін шығарып беретін программа құрыңыз.

4. Қолданушының таңдауына сәйкес аяқ киім дүкенінің ассортиментінен әйел адамның аяқ киімдерін, ер адамдар аяқ киімдерін, балалар аяқ киімдерін олардың құнымен, шығарған фирмасымен және размерімен көрсететін программаны жазыңыз. Ең қымбат және ең арзан балалар аяқ киімін де көрсететін болсын.

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

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

7. Кітапханадағы кітаптарды, авторы, шыққан жылы, бағасы және тиражы бойынша сұрыптайтын программа құрыңыз.

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

9. Аэропорт анықтамалық бюросының мәліметтеріне сәйкес рейстерді бағыттары бойынша, апта күндері бойынша және номерлері бойынша сұрыптайтын программа құрыңыз.

10. Стоматологқа келушілердің тізімінен қажет фамилияларды бас әрпі бойынша, келген күні бойынша және дәрігері бойынша сұрыптап шығарып беретін программа құрыңыз.

6 - зертханалық жұмыс.

Қосымшадағы терезелердің және мәзірлердің жұмысын ұйымдастыру. Форма және мәзірлер

Әдістемелік нұсқаулар

Мәзірлер. Барлық Windows қосымшаларында қолданушы интерфейсінің элементі ретінде ең көп тараған элемент – мәзір. Мәзір – қосымшада орындалатын командаларды атқаратын қызметтеріне немесе т. б. белгілеріне қарай бір топқа біріктіріп тиімді пайдалану үшін қолданылады. Windows қосымшаларында қолданылатын мәзірлерді келесі түрлерге бөледі:

- Жүйелік мәзір (SystemMenu) – бұл, Windows қосымшаларының барлығына тән мәзір түрі, сондықтан C++Builder-де қосымша құрғанда жүйелік мәзір форманың өзімен қоса анықталады. Жүйелік мәзірдің сурет-таңбасы, форманың тақырыптар зонасының сол жағында, ал оның командаларына сәйкес сурет-таңбалар (0, T,1 немесе 2) оң жағында орналасады және оларды форманың BorderIcons ( типі TBorderIcons) қасиетіндегі biSystemMenu (типі Boolean) мәнін false өзгерту арқылы алып тастауға болады.

Қосымшадағы негізгі мәзір (немесе оны бас мәзір, горизонталь мәзір деп те атайды) формаға MainMenu компонентінің көмегімен қойылады. Қосымшаның жекелеген элементтеріне арналып жасалатын контекстік мәзір (тышқанның оң жақ батырмасын басқанда пайда болатын мәзір) қосымшаға визуальдық емес PopupMenu компонентінің көмегімен енгізіледі.

Мәзір конструкторын пайдалану.C++Builder ортасында формаға қойылған мәзірдің пункттерімен жұмыс жасау үшін Мәзір конструкторын (Menu Designer) қолданады. Оны шақыру үшін формада орналасқан MainMenu немесе PopupMenu компоненттеріне екі рет шерту керек, я болмаса олардың Items қасиеті шақырылады /4.10-сурет/.

4.10- сурет. Мәзір дизайнерінің терезесі.

Жаттығу жұмыстары

Музыка тыңдауды және суреттер қарауды орындай алатын әмбебап қосымша құрыңыз. Қосымша төрт терезеден тұрады. /4.11-сурет(а,б,с,д)/

4.11-сурет. а) Унерверсал программа терезесі

4.11-сурет. б) Музыка терезесі

4.11-сурет. с) Суреттер терезесі

4.11-сурет. д) Анықтама терезесі

1.«Универсал - программа» /Form1/ терезедегі компоненттер қасиеттерінің және оқиғаларының мәндері:

Компоненттің аты Қасиеттерінің мәндері, оқиғалары
Form1 Caption = 'Универсал-программа'
МainMenu1 N1: Caption = 'Тандау' N2: Caption = 'Музыка' OnClick = N2Click N3: Caption = 'Суреттер' OnClick = N3Click N4: Caption = 'Программа туралы' N5: Caption = 'Аныктама' OnClick = N5Click N6: Caption = 'Программадан шыгу' OnClick = N6Click
Animate1 Active = True FileName = 'D:\WINDOWS\clock.avi'

«Универсал- программа» терезесінің unit1 мәтіні:

#include <vcl.h>

#pragma hdrstop

#include "Unit1.h"

#include "Unit2.h"

#include "Unit3.h"

#include "Unit4.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TForm1::N2Click(TObject *Sender)

{

Form2->Show();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::N3Click(TObject *Sender)

{

Form3->Show();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::N6Click(TObject *Sender)

{

Form1->Close();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::N5Click(TObject *Sender)

{

Form4->Show();

}

//---------------------------------------------------------------------------

2. «Музыка» /Form2/ терезедегі компоненттер қасиеттерінің және оқиғаларының мәндері:

Компоненттің аты Қасиеттерінің мәндері, оқиғалары
Form2 Caption = 'Музыка'
MainMenu1 N1: Caption = 'Файл' N2: Caption = 'Ашу' OnClick = N2Click N3: Caption = 'Жyру' N4: Caption = 'Алга' OnClick = N4Click N5: Caption = 'Кейiн' OnClick = N5Click
Label1 Caption = 'Файл' Font.Height = -13 Font.Name = 'MS Sans Serif' Font.Style = [fsBold]
MediaPlayer1 System жапсырмасында орналасқан
OpenDialog1 Dialogs жапсырмасында орналасқан
Edit1 Text қасиеті тазаланады

«Музыка» терезесінің unit2 мәтіні:

#include <vcl.h>

#pragma hdrstop

#include "Unit2.h"

#include "Unit1.h"

#include "Unit3.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm2 *Form2;

//---------------------------------------------------------------------------

__fastcall TForm2::TForm2(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TForm2::N2Click(TObject *Sender) // Файл ->

Ашу пунктінің коды

{

if (OpenDialog1->Execute())

{ Edit1->Text=OpenDialog1->FileName;

MediaPlayer1->FileName=OpenDialog1->FileName;

MediaPlayer1->Open();

}

}

//---------------------------------------------------------------------------

void __fastcall TForm2::N4Click(TObject *Sender)

{

Form3->Show();

}

//---------------------------------------------------------------------------

void __fastcall TForm2::N5Click(TObject *Sender)

{

Form1->Show();

}

//----------------------------------------------------------------------------

3. «Суреттер» /Form3/терезедегі компоненттер қасиеттерінің және оқиғаларының мәндері:

Компоненттің аты Қасиеттерінің мәндері, оқиғалары
Form3 Caption = 'суреттер'
MainMenu1 N1: Caption = 'Файл' N2: Caption = 'Ашу' OnClick = N2Click N3: Caption = 'Жyру' N4: Caption = 'Кейін' OnClick = N4Click N5: Caption = 'Программадан шығу' OnClick = N5Click
OpenPictureDialog1 Dialogs жапсырмасында орналасқан
Image1 Stretch = True

«Суреттер» терезесінің unit3 мәтіні:

#include <vcl.h>

#pragma hdrstop

#include "Unit1.h"

#include "Unit2.h"

#include "Unit3.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm3 *Form3;

//---------------------------------------------------------------------------

__fastcall TForm3::TForm3(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TForm3::N4Click(TObject *Sender)

{

Form2->Show();

}

//---------------------------------------------------------------------------

void __fastcall TForm3::N5Click(TObject *Sender)

{

Form1->Close();

}

//---------------------------------------------------------------------------

void __fastcall TForm3::N2Click(TObject *Sender)

{

if (OpenPictureDialog1->Execute())

Image1->Picture->LoadFromFile(OpenPictureDialog1->FileName);

}

4. «Аныктама» / Form4/ терезедегі компоненттер қасиеттерінің және оқиғаларының мәндері:

Компоненттің аты Қасиеттерінің мәндері, оқиғалары
Form4 Caption = 'Анықтама' BorderIcons = [biSystemMenu] biSystemMenu =true biMinimize=false biMaximize=false biHelp=false
Label1 Caption = 'Программа мәзірлермен (MainMenu жане PopupMenu компоненттери) жумыс жасауды корсететин демонстрациялык програма болып табылады. Программада музыкалык файлдарды тындау ушин MediaPlayer, Image, OpenDialog, OpenPictureDialog компоненттери пайдаланылды.' WordWrap = True
PopupMenu1 Caption = 'Бул контекстик мәзір -PopupMenu'
Button1 Caption = 'КЕЙIН' PopupMenu = PopupMenu1 OnClick = Button1Click

«Анықтама» терезесінің unit4 мәтіні:

#include <vcl.h>

#pragma hdrstop

#include "Unit1.h"

#include "Unit4.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm4 *Form4;

//---------------------------------------------------------------------------

__fastcall TForm4::TForm4(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TForm4::Button1Click(TObject *Sender)

{

Form1->Show();

}

//---------------------------------------------------------------------------

Өзіндік жұмыс тапсырмалары

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

2. Формаға қойылған негізгі мәзірдің «Форма түсі» пункті арқылы форманы түрлі түске бояуды, «Мәзір пунктін басқару» арқылы пункттердің қасиеттерін өзгертуді және Label компонентінің контекстік мәзірінің пункті арқылы арқылы Label<


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: