Программалауда қазіргі қолданылып жүрген технологиялар. Объектіге бағдарланған программалаудың негізгі қағидалары



бет2/6
Дата13.06.2016
өлшемі7.14 Mb.
#131262
түріПрограмма
1   2   3   4   5   6

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

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

}

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



}

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

{for (int i=0;i

if (a[i]Edit3->Text=FloatToStrF(min,ffFixed,5,2);

}

if (CheckBox3->Checked == True)

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



for(int i=0;i{ max=a[i]; int Nmax=i;



for(int j=i;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

{ 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

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

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

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

for (int j=i;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-де қосымша құрғанда жүйелік мәзір форманың өзімен қоса анықталады. Жүйелік мәзірдің сурет-таңбасы, форманың тақырыптар зонасының сол жағында, ал оның командаларына сәйкес сурет-таңбалар (,  , немесе ) оң жағында орналасады және оларды форманың 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

#pragma hdrstop

#include "Unit1.h"

#include "Unit2.h"

#include "Unit3.h"

#include "Unit4.h"

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

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

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




Достарыңызбен бөлісу:
1   2   3   4   5   6




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

    Басты бет