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



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

__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

#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

#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

#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 компонентіне мәтін жазуға программа құру қажет.

  3. Берілген бір өлшемді массивтің элементтерінің қосындысын табу программасын құрыңыз /Нұсқау: массивті енгізуде MainMenu, қосынды табуда PopupMenu компонетін пайдаланыңыз/.

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

  5. Бағдаршамның жұмысын түсіндіруді мәзірлерді пайдаланып программалаңыз.

  6. Келушінің сұранысына қарай асхана мәзірінен ақпарат беретін программа құрыңыз.

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

  8. Бір өлшем бірлігінен басқа өлшем бірлігіне көшіруді программалау (мысалы, метрді сантиметрге, килограммды тоннаға немесе т. б.). Ескі өлшем бірліктерін және қазіргі өлшем бірліктерін пайдаланыңыз.

  9. Сандық массивті толтыратын және сұрыптайтын және т.б. амалдарды орындайтын программаны мәзірлер көмегімен жазыңыз.

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


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

Массивтермен жұмыс жасауға арналған компоненттер
Әдістемелік нұсқаулар
Мәліметтерді кестелер түрінде беруді ұйымдастыру. C++ Builder ортасында қосымша құруда мәліметтерді кестелер түрінде беру үшін Additional жапсырмасындағы StringGrid және DrawGrid компоненттері /4.12-сурет/ қолданылады.

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

Кесте өлшемін (баған және жол санын) Longint типті ColCount және RowCount қасиеттері анықтайды. Қалыпты күйде олардың мәндері 5-ке тең. Баған мен жолдың нөмірлері нөлден бастадады, яғни кесте өлшемі 6х6.



void __fastcall TForm1::Button1Click(TObject *Sender)

{

int I, J, K;

K = 0;

for (I = 0; I < StringGrid1->ColCount; I++)

for (J = 0; J < StringGrid1->RowCount; J++)

StringGrid1->Cells[I][J] = IntToStr(++K);

}

Кестедегі бағандардың енін өзгерту үшін типі іnt болатын DefaultColWidth қасиеті, ал кесте жолының биіктігін өзгерту үшін DefaultRowHeight қасиеттері қолданылады. Мысалы, программада терезенің өлшемдері өзгергенде кесте ұяшықтарының /баған мен жолдың/ өлшемдерін өзгерту келесі түрде жазылады:



void __fastcall TForm1::FormCreate(TObject *Sender)

{

if (DrawGrid1->DefaultColWidth > 90)

DrawGrid1->GridLineWidth = 2;

else

DrawGrid1->GridLineWidth = 1;

}
GridLineWidth қасиетін кесте ұяшығын көмкеріп тұрған сызықтарының қалыңдығын немесе жіңішкелігін беру үшін қолданады. Әдетте оның мәні 1-ге тең болып тұрады, егер оны 3-ке өзгертсеңіз онда кесте ұяшықтары қалың бояулы сызықпен көмкерілетін болады.
Жаттығу жұмыстары
А(5,5) матрицаның бағандары мен жолдарын алмастырғанда шығатын матрицаны көрсетіңіз. Программа терезесі 4.12-суретте көрсетілген.

4.12-сурет. Программа терезесі.


Программа терезесіндегі компоненттердің қасиеттерін өзгерту:


Компонент

Компоненттің қасиеттері

Мәндері

Form1

Caption

'StringGrid мысалы'

Label1

Caption

'Бастапкы кесте'

Label2

Caption

'Сонгы кесте'

StringGrid1

StringGrid2


Немесе StringGrid1-ді

көшіріп алып қайтадан қоюға да болады



ColCount

5 (бағандарының саны)

RowCount

5 (жолдың саны)

FixedCols

0 (бекітілген немесе қозғалмайтын баған саны)

FixedRows

0 (бекітілген немесе қозғалмайтын жолдар саны)

DefaultRowHeight

20 (жолдың биіктігі)

DefaultColWidth

50 (бағанның ені)

Height

113 ( кесте сыртындағы тіктөртбұрышты облыстың биіктігі)

Width

265 ( кесте сыртындағы тіктөртбұрышты облыстың ені)

Options->goEditing

True (ұяшыққа мәлімет енгізуге болады)

Options-> AlwaysShowEditing

True (енгізу фокусы орналасқан ұяшықты редакциялуға болады)

Options->goTabs

True (Tab пернесін басып ауысуға болады (Shift+Тab))

PopupMenu

PopupMenu1

MainMenu1


N1:

Caption = 'ТЕРЕЗЕ'

N3:

Caption = 'Жабу'



OnClick = N3Click

N2:


Caption = 'КЕСТЕ'

N4:


Caption = 'Толтыру'

OnClick = N4Click

N5:

Caption = 'Тазалау'



OnClick = N5Click

PopupMenu1

N6:

Caption = 'толтыру'

OnClick = N6Click

N7:


Caption = 'тазалау'

OnClick = N7Click



Button1

Caption = 'Алмастыруды орындау'

OnClick = Button1Click





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

#include

#pragma hdrstop

#include "Unit1.h"

#include "stdlib.h"

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

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

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



__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

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



void __fastcall TForm1::N3Click(TObject *Sender)

{

Form1->Close();



}

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



void __fastcall TForm1::N4Click(TObject *Sender)

{

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



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

StringGrid1->Cells[i][j]=IntToStr(i+j-2);

}

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



void __fastcall TForm1::N5Click(TObject *Sender)

{

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

StringGrid1->Rows[i]->Clear();

}

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



void __fastcall TForm1::N6Click(TObject *Sender)

{

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



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

StringGrid1->Cells[i][j]=IntToStr(rand()%100-27);

}

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



void __fastcall TForm1::N7Click(TObject *Sender)

{

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

StringGrid1->Cols[i]->Clear();

}

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



void __fastcall TForm1::Button1Click(TObject *Sender)

{

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



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

StringGrid2->Cells[j][i]=StringGrid1->Cells[i][j];

}

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


Өзіндік жұмыс тапсымалары
Тапсырманы орындауға нұсқау!

  • Тапсырманы орындау барысында құрылатын қосымшада массив элементтерін енгізу екі түрлі жолмен жасалуы керек :

  • «ЕНГІЗУ» командасы арқылы қолданушы өзі енгізеді;

  • «ТОЛТЫРУ» командасы арқылы автоматты түрде толтырылады;

  • Массив элементтерімен жасалатын операциялар мәзір командаларының көмегімен орындалуы қажет;

  • Массив түрлендірілген жағдайда бастапқы массив пен алынған жаңа массив екі түрлі кестеде көрсетілуі қажет;

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


1-тапсырма


#№

Матрица

Тапсырмалар

Шектеу

  1. 1

A(5,7)

Матрицаның әрбір бағанының оң элементтерінің қосындысын және олардың санын есте сақтау. Нәтижесін екі жол түрінде шығару.

Aij>0

  1. 2

A(N,M)

Матрицаның әрбір жолының оң элементтерінің қосындысын және олардын санын есептеп есте сақтау.Нәтижесін екі баған түрінде баспадан шығару.

N<=4

M<=5


  1. 3

B(N,N)

Матрицанын бас диагоналындағы және одан төмен орналасқан элементтердің қосындысын және элементтер санын есептеу.

N<=6

  1. 4

B(N,N)

Матрицаның бас диагоналынан төмен орналасқан оң элементтерінін қосындысын және олардың элементтер санын есептеу.

N<=4

Bij>0


  1. 5

D(K,K)

Матрицаның жұп орындағы элементтерінің элементтерінін орнына нольдерді жазып және матрицаны баспаға шығару.

K<=5


2-тапсырма /қиынырақ есептер/


1.

А(4,3) матрицаның элементтері екі-үш таңбалы немесе одан да көп таңбалы сандар болсын. Матрицаның әрбір элементін оның цифрларының қосындысымен алмастыру керек. Шыққан матрицаны көрсетіңіз.

2.

А(4,4) матрицаны сағат тілінің бағытымен 90 градусқа бұрғанда шығатын матрицаны көрсетіңіз.

3.

А(7,5) матрицаның элементтерін жол бойынша сұрыптап орналастырыңыз.

4.

А(5,7) матрицаның элементтерін баған бойынша сұрыптап орналастырыңыз.

5.

А(10) массив элементтерін үш түрлі әдіспен сұрыптаңыз /алмастыру әдісі- метод обмена или пузырька, тікелей таңдау әдісі-метод прямого выбора, орындары бойынша сұрыптау-сортировка с вставкой/



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

Ерекше жағдайларды өңдеу түсінігі. Ерекше жағдайлар класы
Әдістемелік нұсқаулар
Ерекше жағдайлар түсінігі қосымшаның орындалуы кезіндегі пайда болатын қателермен байланысты қарастырылады. Программист өзінің құрған қосымшасы орындалған кезде болуы мүмкін қателерді анықтап, ол қателер бола қалған жағдайда программа қалай жұмыс жасауы керек екенін алдын-ала қамтамасыз етуі тиіс. Жалпы программалау кезінде жіберілетін қателерді келесі топтарға бөледі:

  • Синтаксистік қателер. Синтаксистік қателерге программа мәтінін теру кезінде операторлардың қате жазылуы, операторларды айыру белгілерінің қойылмауы, программа соңының көрсетілмеуі және т.б. жатады.

  • Логикалық қателер, есеп алгоритмінің дұрыс құрылмауынан болады.

  • Динамикалық қателер бұл- программаның орындалуы кезінде пайда болып оның орындалу тәртібінің бұзылуына немесе нәтижесіз тоқтап қалуына әкеліп соқтыратын қателер.

Ерекше жағдайлар класы. C++ Builder ортасындағы ерекше жағдайлардың барлығы жеке объектілер ретінде қарастырылады және бұл объектілер үшін базалық класс TObject-ден тарайтын TException класы болады, программада бұл класстың сипаттамасы SysUtils стандарт модулінде беріледі.

Қасиеттері. TException класынан тарайтын жоғарыда аталған тума кластар үшін анықталған қасиеттер:

Message қасиеті (типі AnsiString) ерекше жағдайдың немесе қатенің сипаттамасын сұхбат терезіне шығару үшін қолданылады.

__property AnsiString Message = {read=FMessage, write=FMessage};

HelpContext қасиеті ( типі THelpContext) анықтама жүйесіндегі объект түрінде анықталған қатеге сәйкес бөлімнің номерін немесе идентификатор номерін көрсету үшін қолданылады.

__property int HelpContext = {read

=FHelpContext, write=FHelpContext, nodefault};

Ерекше жағдайларды өңдеу. Қосымшаларда ерекше жағдайларды өңдеу екі түрлі жолмен жүзеге асырылады: ерекше жағдайларды жалпы өңдеуші /глобальный обработчик/ және дербес өңдеуші /локальный обработчик/. Қосымшадағы ерекше жағдайларды жалпы өңдеушінің жұмысын қамтамасыз ету Application объектісінің қызметіне жатады, Application объектісі жүйе тарапынан ерекше жағдайдың пайда болғаны жөнінде хабар алысымен TExceptionEvent типіне жататын OnException оқиғасын генерациялайды да, осы пайда болған оқиғаның өңдеушісі, қосымшадағы ерекше жағдайларды жалпы өңдеушінің қызметін атқарады. Әдетте қосымшалардағы ерекше жағдайларды жалпы өңдеуші бұл- Application объектісінің әдісі болып есептелетін HandleException(System::TObject* Sender); функциясы. Бұл функция арқылы шақырылатын қосымшаның ShowException(System::TObject* ExceptObject, void * ExceptAddr); әдісі, пайда болған ерекше жағдайдың сипаттамасын экранға, сұхбат терезесіне шығарады, мысалы қосымшаның орындалуы кезінде «нольге бөлу немесе бөлшектің бөлімі нольге тең» болған ерекше жағдайларда жалпы өңдеуші бұл жөнінде қолданушыға хабарлайды /4.13- сурет/.

4.13-сурет. Ерекше жағдайды жалпы

өңдеуші қызметінің мысалы
Программада дербес өңдеушіні қолданудың жолдары:


  • try ... catch блогында ерекше жағдайды өңдеу;

  • try ... __finally блогын пайдаланып кодты «мусордан» тазалау.

try ... сatch операторы. Ерекше жағдайларды өңдеуде программисттің дербес өңдеушілерді қолдануы үшін try ... сatch операторы пайдаланылады.

Жалпы жазылуы:



try

{ // «қорғалған блоктың» басы



throw 1-өрнек;

/ / бұл оператор ерекше жағдайды оны өңдеушіге лақтырады.



throw 2-өрнек;

...

throw n-өрнек;

} // «қорғалған блоктың» соңы



catch(1-өрнектің типіне сәйкес айнымалының типі)

{

1-өрнекке сәйкес ЕЖ өңдеушінің коды



}

catch(2-өрнектің типіне сәйкес айнымалының типі)

{

2-өрнекке сәйкес ЕЖ өңдеушінің коды



}
catch(n-өрнектің типіне сәйкес айнымалының типі)

{

n-өрнекке сәйкес ЕЖ өңдеушінің коды



}
мұндағы, try («орындап көру, байқап көру» - деген мағынаны білдіреді) сөзімен басталып, {…} фигуралы жақшаға алынған программа мәтінінің фрагменттерін қорғалған блоктар немесе уақытша блоктар деп атайды, яғни ерекше жағдай туғызуы мүмкін программа коды осы қорғалған блокта орналасуы керек.

Өңдеуші код catch қызметші сөзінен басталады. Содан кейін жай жақшаның ішінде ЕЖ типі көрсетіледі, егер жай жақшаның ішінде көп нүкте /... / тұрса онда ол ол кез-келген ЕЖ өңдей алады, мысалы:

catch(int i)

{ // int типті ЕЖ өңдеуші код

}

catch(char* str)

{ // char* типті ЕЖ өңдеуші код

}

catch (...)

{ //кез-келген типті ЕЖ өңдеуші код

}
Жаттығу жұмыстары
1-жаттығу. Консолдық қосымшада қарапайым ЕЖ өңдеуді орындап көру.

#include

#include

#include

#pragma hdrstop

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

#pragma argsused

int main()

{

double d = 1.0;



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

{

try

{

cout << endl<< "try-block bastaldi..." <

switch (i)

{

case 0:



throw " goldi laktiru "; // char* типті жолды лақтыру

case 1:

throw 5; // int.-бүтінді лақтыру.

default:

throw d; // double –ді лақтыру.

}

// Келесі оператор ЕЖ байланысты орындалмай



cout<< "Byl try-block-ka bailanisti orindalmaidi" << endl;

} // try-блоктың соңы



catch(int i)

{ // int типті ЕЖ өңдеуші код

cout << "Int laktirildi /thrown /: " << 1 << endl;

}

catch(char* str)

{ //char* типті ЕЖ өңдеуші код

cout << "string-gol laktirildi: " << str << endl;

}

catch (...) { //Кез-келген ЕЖ өңдеуші код

cout << "kalgan type laktirildi."<< "Program will.terminate." << endl;

cin.ignore () ;

return -1; // Программадан шығу

}

cout<< "sikldin soni"<< endl;



} // циклдың соңы.

cout << "progr soni" << endl; // Бұл операторлар орындалмайды

себебі, үшінші catch (...) //программаны аяқтап тастайды

return 0;

}

Бұл мысалда цикл төрт рет орындалуы керек. Цикл ішінде і- цикл параметрінің мәндеріне сәйкес int, char* және double типті ЕЖ шақыратын қорғалған блок орналасқан. і=0 болғанда throw операторы char* типті жолды лақтырады, ал оны char* типті екінші тұрған өңдеуші ұстап алады да, соған сәйкес жазуды шығарады, себебі кодта содан басқа ештеңе жазылмаған, тура сол сияқты і=1 болғанда қорғалған блоктағы throw операторы int типті ЕЖ лақтырады, оны бірінші тұрған catch(int i) өңдейді. і=2 болғанда double типті ЕЖ пайда болады, ал оған сәйкес catch қарастырылмаған, бірақ оны кез-келген жағдай үшін орындалатын үшінші catch (...) ұстайды және ондағы кодтағы cin.ignore () және return -1; командалары программадан шығуды немесе аяқтауды орындайды, яғни цикл төртінші рет і=3 үшін орындалып үлгермейді.



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


2-жаттығу. Windows-ға арналған қосымшада қарапайым ЕЖ-ды

  1. жалпы өңдеушінің /глобальный обработчик/ көмегімен орындап көру;

  2. дербес өңдеуші көмегімен орындап көру.

Дербес өңдеушінің жұмысын көру үшін жалпы өңдеушіні уақытша тоқтата тұру керек, ол үшін Tools -> Debugger Options командаларын орындап, пайда болған терезеде Language Exceptions жапсырмасының Stop on Delphi Exceptions және Stop On C++ Exceptions немесе Integrated debugging опцияларындағы флажокты алу керек /4.14(А,Б,С)-4.15(А,Б,С) суреттер/ .
Программа мәтіні:

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

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

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

void __fastcall TForm1::Button1Click(TObject *Sender)



{

float a,b,c;

float d,x1,x2;

a=StrToInt(Edit1->Text);

b=StrToInt(Edit2->Text);

c=StrToInt(Edit3->Text);



try

{ d=b/a;


x1=log(c);

x2= d;


Edit4->Text=FloatToStrF(x1,ffGeneral,5,2);

Edit5->Text=FloatToStrF(x2,ffGeneral,5,2);

}

catch(...)

{ MessageDlg("try-блокта кате бар",mtError, TMsgDlgButtons()



<< mbOK, 0);

//return;

}

Edit6->Text="Мен орындалдым";



Программа орындалуының нетижелері:

1) ЕЖ –ды жалпы өңдеуші / глобальный обработчик/ ұстады.


4.14-сурет. а)Ерекше жағдайларды жалпы өңдеуші

/глобальный обработчик/ ұстады.

4.14-сурет. б)Ерекше жағдайларды жалпы өңдеуші

/глобальный обработчик/ ұстады.

4.14-сурет. с)Ерекше жағдайларды жалпы өңдеуші

/глобальный обработчик/ ұстады.
2) ЕЖ –ды дербес өңдеуші /локальный обработчик/ ұстады.

4.15-сурет. а) Ерекше жағдайларды дербес өңдеуші /локальный

обработчик/ ұстады және оны қолданушының коды өңдеді.

4.15-сурет. б) Ерекше жағдайларды дербес өңдеуші /локальный

обработчик/ ұстады және оны қолданушының коды өңдеді.

4.15-сурет. с) Ерекше жағдайларды дербес өңдеуші /локальный

обработчик/ ұстады және оны қолданушының коды өңдеді.
try…__ finally операторының (немесе қорғалған блогының) программадағы жазылуы:

try

{

//қорғалған блок



}

__ finally

{

// ерекше жағдайлар туса да орындалатын код



}
Өзіндік жұмыс тапсымалары
Келесі мазмұндағы есептерді шешу программаларындағы ерекше жағдайларды анықтап оны екі жолмен өңдеуді /жалпы және дербес өңдеушілер/ қарастырыңыз.

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

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

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

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

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

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

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

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

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

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


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

Wіndows интерфейсінің компоненттерін қолданып файлдарды басқару
Әдістемелік нұсқаулар
Windows ОЖ стандартты диалогтық терезелерінде жұмыс жасау, мысалы файлды таңдау, сақтау, түсін өзгерту және т.б.. C++ Builder ортасында диалогты терезелермен жұмыс жасау үшін TOpenDialog, TSaveDialog компоненттері қолданылады.

Компоненттердің қасиеттерімен әдістері:



Filter – диалогпен көрсетілетін файл типі;

FilerIndex – үнсіздік бойынша қолданылатын фильтр нөмірі;

DefaultExt – стандартты кеңейтілім, қолданушы көрсетпеген жағдайда;

Files – қолданушы таңдаған файл аты;

Title – текст, диалог тақырыпшасында көрінетін;

Execute() – диалогты шақыру.

Опциялары:



ofReadOnly — диалогты терезе пайда болғанда "Read only" жалаушасы белгіленген болады;

ofHideReadOnly — диалогты терезе пайда болғанда "Read only" жалаушасын көрсетпейді;

ofNoReadOnlyRetum — ОК батырмасын басқанда “тек оқуға арналған” файлды таңдауға тиым салып, басқа файл таңдау қажеттін хабарлайды.

ofPathMustExist — файл тек бар каталогтардың бірінде болатының көрсетеді. Қолданушы файлды жоқ каталогтан іздеген жағдайда қате екенін хабарлайды;

ofFileMustExist — тек бар файлдардың бірін таңдауға болатынын көрсетеді;

ofOverwritePrompt — егер қолданушы жазба үшін бар файлды таңдаса, оны бекітуді сұрайды;

ofShowHelp — диалогқа Help батырмасын қосады;

ofNo Validate — файл атын енгізгенде рұқсат етілмеген символдардын болмауын тексереді;

ofAllowMultiSelect — бірнеше файлды бір мезгілде таңдауға мүмкіндік береді;

ofShareAware — таңдалынған файлды басқалардың қолдануына тексеруді сөндіреді. Бұл опция болмаған жағдайда файл басқа қосымшамен ашылған болса, басқалары бұл файлды қолдана алмайды.

Файлды ашу мысалы:



OpenDialog1->Execute();

if (OpenDialog1->FileName!="")

{

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

Form1->Caption=OpenDialog1.Filename+” - My Text Editor”;

}

Бұл жерде файлды ашудан басқа, таңдалынған файл аты форма тақырыбында "My Text Editor" мәтінімен жазылады.



TColorDialog компоненті – қолданушы түсті анықтауға арналған.

Color –түстер;

Опциялары:



cdFullOpen — диалогты толық көрсету. Қолданушы түсті таңдағанда түстердің жүйелік палитрасынан ғана емес, өзі де түс бере алады;

cdPreventFullOpen — диалогты толық көрсетуге рұқсат бермейді;

cdShowHelp — Help батырмасын көрсетеді.

TPrintDlalog компоненті – тексті принтерге шығару параметрлерін орнатуға арналған.

TSavePictureDialog, TSavePictureDialog компоненттері –файл-бейне атын таңдауға арналған, келешекте жазу немесе оқу үшін қолдануға болатын.

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

Опциялары:



frDown — бұл опцияны қолданған жағдайда іздеудің алғашқы бағыты – төменге (басынан аяғына дейін). Сәйкесінше радиокнопка орнатылады;

frDisableUpDown — бағытты таңдауға тиым салады. Радиокнопкалар тобы сұр түспен көрсетіледі;

frHideUpDown — бағытты таңдауға тиым салады және радиокнопкалар тобын көрсетпейді.

Жалаушалар күйіне келесі опциялар жауапты:



frHideMatchCase — регистр жалаушасын көрсетпейді;

frDisableMatchCase — регистр жалаушасын көрсетеді, бірақ ол белсенді болмайды.

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

Қасиеті, әдістері және оқиғалары:

FindText – ізделінетін мәтін;

CloseDialog – диалогты жабады.

TrayIcon – жүйелік треймен жұмыс жасауға арналған.

Қасиеті:


PopupMenu – трейді контекстті мәзірмен байланыстырады, контекстті мәзір жеке компонентпен қосылған болуы керек;

PopupMenuOn – контекстті мәзірді ашу;

RestoreOn – басты терезені жаю.

СSpinButton компоненті – жұп батырмалар қарама-қарсы бағытшамен, басқан кезде белгілі бір өлшемде арттыруға немесе кемітуге арналған. Жоғарғы немесе төменгі батырманы басқанда сәйкесінше OnDownClick, OnUpClick оқиғалары пайда болады.

СDirectoryOutline – бұл компонент файлдың иерархиялық бұтағын және ағымдағы диск каталогтарын көрсетуге арналған.

Қасиеті:


Drive – ағымдағы диск мәні, яғни бұтақта көрсететін файлдық жүйе құрамы;

Directory – ағымдағы каталог;

Ауыстыру буферімен жұмыс жасайтын функциялар:



CopyToClipBoard() – буферге көшіру;

PasteFromClipBoard() – буферге қою;

CutToClipBoard() – буферге қию;
Өзіндік жұмыс тапсымалары
Келесі нұсқалар бойынша мәтіндік редактор құру:

  1. Файлды ашу, сақтау;

  2. Файлды баспаға шығару;

  3. Фон түсін өзгерту;

  4. Буфермен жұмыс жасау функциясын қосу;

  5. Жүйелік трейге жұлдызша қосу;

  6. Контекстті мәзірді жүйелік трейге шақыру мүмкіндігін қарастыру;

  7. Жүйелік трейдегі жұлдызшаны тышқанмен бір басқанда терезенің қалпына келуін орнату;

  8. Трейді контекстті мәзірмен байланысын орнату;

  9. Файлдың иерархиялық бұтағын және диск каталогтарын көрсетуге арналған қосымша құру;

  10. Ауыстыру буферімен жұмыс жасайтын қосымша құру.


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

С++ Buildеr 6 ортасындағы графика. Объектіні қозғалысқа келтіру. Анимация
Әдістемелік нұсқаулар
1.Графиктік файлдардың форматтары. C++ Builder ортасында графиктік файлдардың 3 түрлі типімен жұмыс жасауға болады.



Файл типі

Кеңеймесі

Биттік матрица (Bitmaps)

Пиктограммалар

Метафайлдар (Metafiles)

IPEG Image file

EnhancidMetafiles


. bmp

. ico


. wmf

. ipg; . ipeg

. emf


Бұл файлдардың барлығында суреттер немесе кескіндер сақталады, бірақ бұлардың файлдағы сақталу тәсілдері әртүрлі болады. Мысалы, .btm; .ico - кескіндер файлға биттік матрица түрінде сақталады.Бұл биттік матрицалар кескіндегі әрбір пиксельдің (нүктенің) түсін көрсетеді. Бұл биттік матрицада сақталған кескінді кез келген компьютер өзінің мүмкіндігіне қарай көрсете алады. Келесі .іco кеңеймесімен берілген файлда пиктограммалар (значоктар) сақталады. Пиктограммалардың өлшемін өзгерту қажет емес. Метафайлдарда кескіннің биттері сақталмайды, керісінше сол кескінді салу әдістері сақталады. Яғни олар сурет салу командалары.



2.Графиктік файлдарды сақтауға арналған C++ Builder-дің класстары. C++ Builder ортасында графиктік кескінді сақтауға арналған келесі кластар қолданылады:

TBitMap Бұл кластардың барлығы үшін түпкі класс

TIcon TGraphic. Мұндағы TРicture класы – өзінде

TMetafile қалған 3 кластың қасиеттерін қамти алады.

TPicture

Сондықтан, төмендегідей і



TPicture.TІcon; TРicture.TМetafile;

ТРicture.TBitMap

қасиеттерін шақыру мүмкін болады.


3. Кескінді немесе суретті қарау және суретті салу.

1.Image компоненті. Бұл Additational жапсырмасында орналасқан. Мұнда жоғарыда айтылған графиктік файлдар сақталған кескінді көруге болады.

Негізгі қасиеттері:



Қасиеттің аты

Қызметі және қабылдайтын мәндері


Picture(TPicture)

бұл қасиет файлдағы кескінді Image терезесіне жүктейді. Image терезесінде суретті көруге ғана емес, сақтауға да болады.

AvtoSize (Boolean)

Егер бұл қасиет true мәнге ие болса, онда іmage компонентінің өлшемдері ол көрсететін кескін өлшеміне қарай келтіріледі.

Stretch (Boolean)

Егер бұл қасиет true мәнге ие болса, керісінше, кескін немесе сурет өлшемдері іmage компонентінің өлшемдеріне келтіріледі. Бұл қасиет пиктограммаларға әсер етпейді, себебі пиктограммалардың өлшемдері өзгермейді.

Center (Boolean)

Егер бұл қасиет true мәнге ие болса, онда бұл кескін іmage компонентінің ортасында орналасады.

Transparent (Boolean)

Егер бұл қасиет true мәнге ие болса, онда кескін көрінбей тұрады, (түссіз (празрачный) болып кетеді), бұл әсіресе бір кескіннің үстіне екіншісін беттестіргенде жиі қолданылады. Бұл қасиет тек биттік матрицаларға ғана жүреді.

Іmage компонентінің терезесіне кескінді жүктеу үшін немесе сақтау үшін сәйкесінше OpenPictureDialog және SavePictureDialog стандарт диалогтық терезе қолданылады.

4. Канва (Холст, кенеп, Canvаs. C++ Builder ортасында графикамен жұмыс істеу үшін кескінді орналастыратын орын немесе бет керек. C++ Builder – де ол үшін Canvаs қасиеті анықталған. Мұндай қасиет Image, Form, PaintBox, ListBox, StringGrid, BitMap, т.б. бар. Канваның өзінің қасиеттері және әдістері бар. Канва нүктелерден тұрады, бұл нүктелердің (х,у) координаталары болады. (4.16-сурет) Канваның (0,0) нүктесі оның сол жақ төбесінде орналасады.

Бұл (х,у) координаталары пиксельмен есептеледі. Пиксельдің ең негізгі қасиеті - оның түсі. Канвада сурет салу үшін оның Pixels қасиеті қолданылады. Бұл екі өлшемді массив түрінде анықталады және ол пикселдің түсін береді, яғни типі Pixels[X] [Y] : clColor;


Жаттығу жұмыстары
f(x)=exp(0.5*Х) графигін [-5,5 ] аралығында h=0.01қадаммен салу керек /4.17-сурет/.

4.17-сурет. f(x)=exp(0.5*Х) функция графигі


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

#include

#pragma hdrstop

#include "Unit1.h"

#include "math.h"

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

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

float f(float x) //функцияның мәндерін есептеу

{

float f=exp(0.5*x);

return f;

}

void GrafSizy() // график сызатын функция

{ float x1,x2,y1,y2,x0,y0;

float x,mx,my;
//график салынатын облысты даярлау

int Ibik=Form1->Image1->ClientHeight; // image1-дин биктги

int Iyz=Form1->Image1->Width; //image1-дин узындыгы

// Y осьти сызу, ол (xY,yY) басталып (xY,cY) нүктеде бітеді;



float xY=Iyz/2;

float yY=10;

float cY=Ibik-10;

Form1->Image1->Canvas->MoveTo(xY,yY);

Form1->Image1->Canvas->LineTo(xY,cY);

// X осьти сызу ол (xХ,yХ) басталып (сХ, yX ) нүктеде бітеді;



float xX=10;

float yX=Ibik/2;

float cX=Iyz-10;

Form1->Image1->Canvas->MoveTo(xX,yX);

Form1->Image1->Canvas->LineTo(cX,yX);

//бастапкы мандерди аныктау

x1=-5; x2=5; y1=f(x1); y2=f(x2);

//масштабты тагайындау

mx=Iyz/(x2-x1); my=Ibik/(y2-y1);

//координата бас нуктеге (xY,yX) бару

x0=xY; y0=yX;

Form1->Image1->Canvas->MoveTo(x0,y0);

//график сызу басталды

x=x1;


while (x{

Form1->Image1->Canvas->Pixels[x0+mx*x][y0-my*f(x)]=clBlack;



x=x+0.01;

}

//



Form1->Image1->Canvas->TextOutA(x0,y0,'0');

Form1->Image1->Canvas->TextOutA(xY,yY,"Y");

Form1->Image1->Canvas->TextOutA(cX,yX,"X");

}

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



__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

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



void __fastcall TForm1::Button1Click(TObject *Sender)

{

GrafSizy();



}

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



void __fastcall TForm1::FormCreate(TObject *Sender)

{

Memo1->Text="Программа у=ехр(х) функциясынын [-5,5] аралыгындагы графигин 0.01 кадаммен салып шыгады";



}

5. Канвада қолданылатын сурет салу құралдарын пайдалану, Pen(қалам,қарындаш, , қылқалам. Канваның Pen(ТPen) қасиеті бар. ТРen қасиеті объект ретінде қарастырылады. Бұл объектінің өзінің де қасиеттері бар.

Негізгі қаситтері:



Colorқалам түсі

Width қалыңдығы (қалыпты жағдайда 1 пикселге тең!)

Height - биіктігі

Style қалам стилін білдіреді

Канваның келесі қасиеттерін пайдаланып суреттер салуға болады:



PenPos(TPoint)бұл қасиет канваның қаламының бастапқы позициясын анықтайды, яғни қаламның қай жерде тұрғанының координатасын көрсетеді.

K=Image1->Canvas-> PenPos ;

MoveTo(x,y)қасиеті қаламды координаталары (x,y) нүктесіне апарып қояды;

Draw(x,y; Graphic:); - бұл графиктік обьектіні канваға шығарады. График обьектісінің орнында .bmp, .ico немесе метафайл болуы мүмкін.

6. Суретке мәтін шығару.TextOut(x,y; const AnsiString Text); - бұл х,у нүктесінен бастап текст тұрақтысында сақталған мәтінді канваға шығарады.

7. Тұйық облыстарды бояу.FillRect(const TRect Rect); - канвада Rect төртбұрышын бояйды. Бояу үшін қылқаламның түсі және стилі қолданылды.

FloodFill(x,y; TColor Color; TFillStyle FillStyle); - х,у нүктесінен бастап немесе х,у нүктесі жататын тұйық облысты Color түске FillStyle стилмен немесе өрнекпен /узор/ бояйды.

Brushбұл канваның қасиеті болып табылады. Канвадағы тұйық фигураларды бояйды. Канваның өзінің фонын көрсетеді.

Brush обьектісінің негізгі қасиеттер:

Color – түсін береді

Style BSSolid - тұтас бояйды;

BSHorizontalгоризонталь сызықтармен бояйды.

8. Сурет салуға болатын обьектілер немесе компоненттер. Суретті салуға немесе қарауға Image компонентіне басқа Form немесе PaintBox компоненттерін де қолдануға болады. Оларда да Canvas қасиеті бар. Формада сурет салғанда оның OnPaint оқиғасы қолданылады.

Image- де сурет салған кезде оның DrawIng қасиеті қолданылады.

Аннимация. Аннимация – бұл кесінді немесе суретті қозғалтуды айтады.

C++ Builder-де Windows -тың дайын аннимацияларын қолдануға болады немесе салынғансуреттің оның бөліктерін қозғалту арқылы жылжытуға болады.

Кескінді қозғалысқа келтірудің бірнеше тәсілдері бар:


  1. Timer компоненттері пайдаланылады. Мұнда уақытқа байланысты кескінді жылжытуға болады. Мұнда кескін алдын-ала процедура түрінде анықталып алынады. Уақытқа байланысты кескіннің қозғалатын бөлігінің координаталары өзгертіледі.

  2. Кескіннің түсін Canva-ның түсімен сәйкестендіру. Мұнда сурет салушы қаламның түсін өзгертіп отырады.

  3. Animate компоненті бар. Win32-де орналасқан.Бұл компонент Windows-тағы стандарт видеоклиптерді формада көрсету үшін қолданылады. Бұл видеоклиптердің кеңеймесі. AVI. Стандарт видеоклиптерінің Shell 32.dll библеотекасы болады.


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


Тапсырмалар:

a) Функцияның графиктерін салу программасын құрыңыз:




1. y=a*x^2+b*x




2. y=x^3+a*x^2+b*x




3. y=a*sinx +b




4. y=-a*x^2+b*x




5. y=a*x^5




6. y=a*cos(x-1)+|x|




7. y=a/x




8. y=(x+a)/(x-b)




9. y=a+b/x+c/x^2




10. y=a-b/x-c/x^2




b) Суреттерді салу және оларды қозғалту программасын құрыңыз:

Вариант 1 –“тышқан” Вариант 2 – “нысана”




В
ариант 3 – “қорған”
Вариант 4 – “робот”


Вариант 5-“танк” Вариант 6 –“штанга”



Вариант 7-“Саққұлақ” Вариант 8 –“қоян”



Вариант 9- «чебурашка» Вариант 10 – «жұлдызша»





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

С++ Buildеr 6 ортасында деректер қорын құру
Әдістемелік нұсқаулар
Borland C++ Builder қолданып, бiр қолданушылық деректер қорымен, сонымен қатар ДҚБЖ серверлерімен, яғни Oracle, Sybase, Informix, Interbase, MS SQL Server, DB2, сондай-ақ ODBC-көздерімен жұмыс жасайтын қосымша құруға болады.

C++ Builder-де деректер жиыны – бұл жазбалар жиынынан тұратын объект, олардың әрқайсысы өрістерден және ағымдағы жазба көрсеткіштерінен тұрады. Деректер жиыны C++ Builder –де TDataSet абстрактілі класының (абстрактілі клас- басқа кластарды туындататын класс, бірақ берілген кластан объект экзамплярын құруға болмайды) тума класстары болады. Мысалы, Data Access парағының компоненттер палитрасындағы TQuery, TTable және TStoredProc компоненттері - TDBDataSet мұрагерлері, олар өз кезегінде TDataSet мұрагерлері. TDataSet - кестелерді ашу, сұраныстарды және жолдар бойынша ауыстыруларды орындайтын құралдармен қамтамасыз ететін, кестелерді басқару және сұраныстар абстракциясынан тұрады.

TDataSource компоненті

DataSource компоненті TDataSet (TTable, TQuery, TStoredProc) және Data Controls компоненттері арасындағы аралық қызметін атқарады. Data Controls компоненттері - формада деректердің ұсынылуын қамтамасыз ететін басқару элементтері. TdataSet компоненттері Borland Database Engine (BDE) кітапханасымен байланысты басқарады, ал DataSource компоненті Data Controls компоненті деректерімен байланысты басқарады.

ДҚ-ның қарапайым қосымшаларында DataSource компоненті - TDataSet (TTable немесе TQuery) бір компонентімен және Data Controls (DBGrid, DBEdit және т.б.) бірнеше компонентімен байланысты. DataSource компонентінің TDataSet және DataControls компоненттерімен байланысы келесі қасиеттер мен оқиғаларды қолдану арқылы жүзеге асады:



DataSet қасиеті – TDataSource компонентінің атын белгілейді. DataSet мәнін объектілер инспекторы арқылы орнатылады.

Enabled қасиеті - TDataSource және Data Controls компоненттері арасындағы байланысты белсенді етеді немесе тоқтады. Егер Enabled қасиетінің мәні true болса, онда TDataSource Data Controls компоненттерімен байланысқан, яғни деректер жиыны өзгерiстерiн қабылдайды. Enabled қасиетін қолдану TDataSource пен Data Controls визуальды компоненттерiн уақытша айыруға мүмкiндiк бередi. Мысалы, іздеу жағдайында, экранда барлық кестелерді парақтағанда кестеде үлкен көлемдегі жазбаларды көрсетпеу үшін.

AutoEdit қасиеті - Data Controls компоненттерінде өңдеу қалай басталатынын бақылайды. Егер мәні true болса, онда өңдеу тәртiбі TDataSet компонентімен байланысқан Data Controls компонентiнің фокус алу кезiнен басталады. Қарсы жағдайда өңдеу режимі TDataSet компонентінің Edit әдісін шақыру кезінде басталады, мысалы DBNavigator компонентіндегі Edit батырмасын қолданушы басқаннан кейін.

OnDataChange оқиғасы – өрістер, жазбалар, кестелер, сұраныстар мәндерін өзгерту кезінде шақырылады.

OnUpdateData оқиғасы - қолданушы TDataSet-тегі ағымдағы жазбаны өзгерткісі келгенде шақырылады.

TTable компоненті

Деректер қорындағы кестелерге қатынаудың ең қарапайым жолы TТable компонентін қолдану, ол бір кестеге қатынауға рұқсат береді. Осы мақсатта жиі қолданатын қасиеттері төмендегілер:



Active – берілген кесте ашық (true) немесе жоқ (false) екенін көрсетеді.

DatabaseName - құрамында ізделінетін кесте бар каталог аты, немесе қашықтағы ДҚ псевдонимі (alias) (Псевдонимдер BDE конфигурациясы утилиталары арқылы орнатылады, немесе мәзірдің Database/Explore пункті арқылы шақырылатын SQL Explorer арқылы орнатылады). Бұл қасиет кесте жабық (оның Active қасиеті false болғанда) болған жағдайда ғана өзгертіледі.

Мысалы:


Table1->Active = false;

Table1->DatabaseName = "BCDEMOS"

Table1->Active = true;

TableName – кесте аты.



Exclusive – егер бұл қасиет true мәнін қабылдаса, кесте берілген қосымшамен ашық болғанда, кестені басқа ешқандай қолданушы аша алмайды. Егер бұл қасиет false (үнсіздік бойынша) болса, онда басқа қолданушыларда осы кестені аша алады.

IndexName – кестеге екінші индексті белгілейді. Бұл қасиетті кесте ашық болғанда өзгертуге болмайды.

MasterFields – басқа кестемен байланыс жасау үшiн өрiстiң атын анықтайды.

MasterSourceTDataSource компонентінің аты, TTable осы арқылы байланысқан кестеден деректерді алады.

ReadOnly - егер бұл қасиет true болса, кесте "тек қана оқу үшiн" тәртiбінде ашылған. Кесте ашық болғанда ReadOnly қасиетiн өзгертуге болмайды.

Fields - TField объектілері массиві. Бұл қасиетті қолданып, кесте құрылымы алдан-ала белгілі болғанда, өрістерге нөмірі бойынша қатынауға болады:

Edit1->Text=Table1->Fields[2]->AsString;



TTable компонентімен жұмыс жасағанда жиі қолданылатын әдістер:

Open және Close - Active қасиетіндегі True және False мәндеріне сәйкес.

Refresh - ДҚ деректер жиынын қайтадан санауға мүмкiндiк бередi.

First, Last, Next, Prior ағымдағы жазба көрсеткішін біріншіге, соңына, келесіге және алдынғы жазбаларға сәйкес ауыстырады, мысалы:

Table1->First();

while (!Table1->Eof)

{

//бірнәрсе жасаймыз...



Table1->Next();

};


Insert, Edit, Delete, Append – жазба қосу үшін кестелерді жазу, өңдеу, алып тастау, жазбаларды қосу режимдерiне ауыстырады

Post – өзгертілген деректерді физикалық сақтауды жүзеге асырады.

Мысалы,


Table2->Insert();

Table2->Fields[0]->AsInteger = 100;

Table2->Fields[1]->AsString =Edit1->Text;

Table2->Post();



Cancel – енгізілген өзгертулерді (физикалық сақталмаған) болдырмайды.

Формаға TТable компонентін енгізу үшін, келесілерді орындау қажет:



  • Data Access парағындағы TТable компонентін формаға немесе деректер модуліне орналастыру;

  • DatabaseName қасиетіне ДҚ орналасқан каталог немесе псевдоним атын беру;

  • TableName қасиетіне кесте атын беру немесе тізімнен кесте атын таңдау;

  • Формаға DataSource компонентін орналастыру және DataSet қасиетінің мәніне TТable компоненті атына беру;

  • Data Controls компоненттерін орналастыру және оларды DataSource компонентімен байланыстыру, яғни ДҚ кестелеріндегі деректер экранда көріну үшін.


TDBGrid компоненті

TDBGrid компоненті TTable немесе TQuery компоненттері деректерін экранда кестелік түрде көрсетуді қамтамасыз етеді. Қосымшада берілген ДҚ көрсету, қою, жою, өңдеу үшін TDBGrid қолданады. Әдетте TDBGrid DBNavigator-мен бірге қолданылады, сонымен қатар басқа да интерфейстік элементтерді TTable компонентінің First, Last, Next, Ptior, Insert, Delete, Edit, Append, Post, Cancel өңдеуші оқиға әдістерін қосу арқылы қолдануға болады.

Кестенің сыртқы түрін (мысалы, баған тақырыбы жазуын) өңдеушінің Columns Editor қасиеті арқылы өзгертуге болады. Columns Editor шақыру DBGrid компонетінің контекстті мәзірінен сәйкес опцияны таңдау арқылы немесе объектілер инспекторы бағанынан Columns қасиетінің мәнін беру арқылы жүзеге асады.


4.18-сурет. DBGrid бағаны қасиетін Columns Editor арқылы орнату.


DBGrid сипаттамаларын берудің тағы бір жолы TField компоненттері жиынының статистикалық әдістері бойынша. Деректер жиынындағы әр өріске құрылған TField типіндегі компонент арқылы DBGrid-те көріну үшін енін, форматын, маскасын, орналасатын жерін және басқа да сипаттамаларын орнатуға болады.

Float, Integer және Date өрістері DisplayMask қасиетіне ие. Бұл қасиетті, деректерді DBGrid компонентінде немесе Data Controls-тың басқа компонентінде форматтау үшін қолдануға болады. Мысалы, дата типті өрістерге mm-dd-yy экрандық форматын қолдануға болады.

Кейбір TField (мысалы, TStringField) компоненттері EditMask қасиетіне ие, ол DBGrid және басқа Data Controls компоненттеріне деректерді енгізуді орнатады.



EditMask қасиетін орнату үшін Object Inspector-дегі Field компонентін орнатып, EditMask қасиетін таңдау керек, кейін Input Mask Editor диалогты панелі көрінеді /4.19-сурет/. Өңдеу маскасын тексеру үшін Test Input өрісіне мән енгізу қажет


4.19-сурет. Input Mask Editor диалогтік панелі



Жаттығу жұмыстары
Қарапайым қосымша құру

ДҚ кестелерін өңдеуге арналған қарапайым қосымша құрып көрейік. Ол үшін BCDEMOS деректер қорындағы COUNTRY кестесін қолданамыз, C++ Builder комплектісінің құрамындағы.

Жаңа жоба құрамыз және оның басты формасын COUNT1.CPP деп сақтаймыз, ал жобаның өзін COUNT.MAK деп сақтаймыз. Data Access парағының компоненттер палитрасын қолдана отырып, TTable және DataSource компоненттерін формаға орналастырамыз. Table1 компонентінің Database Name қасиетіне BCDEMOS мәнін орнатамыз, TableName қасиетіне COUNTRY.DB мәнін, Active қасиетіне true мәніне теңестіреміз. Ары қарай DataSource1 компонентінің DataSet қасиетінің мәніне Table1 теңестіреміз.

Data Controls парағының компоненттер палитрасын қолданып, формаға DBGrid және DBNavigator компоненттерін орналастырамыз. Екі компоненттің DataSource қасиетіне DataSource1 мәнін меншіктейміз.

4.20-сурет. COUNT қосымшасының басты формасы


Алынған жобаны компиляциялауға және тестілеуге болады.

Бұдан басқа, осындай қосымша құрудың өте қарапайым әдісі бар. Осы мақсатта мәзірден Database/Explore пунктін таңдап, SQL Explorer утилитасын қолдануға болады. SQL Explorer терезесінің сол жақ бөлігінен Databases парағын таңдап және сәйкесінше деректер қоры атының жаңындағы "+" белгісін басып, Tables опциясын таңдау қажет. Осыдан кейін терезенің оң жақ бөлігінен Summary бүктемесін таңдаймыз және қажетті кесте аты (біздің жағдайда COUNTRY.DB) жұлдызшасын тышқан арқылы бос формаға әкелеміз. Формада TDBGrid, TDataSource және TTable компоненттері пайда болады. Осыдан кейін DBNavigator-ды қосып, оны TDataSource-пен байланыстырамыз және кестені белсенді етеміз.



4.21-сурет. SQL Explorer


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


  1. Студенттердің стипендиясын есептеу. Студенттерге төлейтін стипендияны есептейтін деректер қорын құру, онда келесі мәліметтер болуы керек: сынақ кітапшасының нөмірі, фамилиясы, аты, студенттің тегі, туған жылы, топ шифры, рейтинг, ақы коэффициенті, негізгі степендия, ақы суммасы, жалпы сумма, айлық төлем және т.б. Жоғарғы стипендия алатын студенттер санын, орташа стипендияны, стипендия алмайтындар санын анықтау (%-бен), сонымен қатар жалпы стипендиялық фондты анықтау.

  2. Автотранспорттық шаруашылық жұмысының есебі. Келесі мәліметтері бар деректер қорын құру: жүргізушінің табельдік нөмірі, фамилия және инициалы, класс, дата, жүру уақыты, тоннасы, жол парағының нөмiрi, автомобил типі, нөмірі және т.б. Әрбір жүргізушіге ағымдағы айлығын есептеу, 1 км_тоннасы – 3 000 т.

  3. Компьютерлік фирма жұмысы есебі. Келесі мәліметтері бар деректер қорын құру: компьютер маркасы, процессор типі, қатты диск және оперативті жады өлшемі , бағасы, бастапқы саны, сатылу датасы, сатып алушы фамилиясы, сатылғандар саны және т.б. Белгілі уақыт аралығында сатылған бір маркалы компьютерлер санын есептеу және тізімін шығару.

  4. Аэропорт кассасы жұмысының есебі. Келесі мәліметтері бар деректер қорын құру: рейс нөмірі, белгіленген пункт, ұшу уақыты, жолаушылардың фамилиясы және инициялы, документ нөмірі, рейске билет құны, рейс билеттерінің сатылу санын анықтау

  5. Оқытушылардың жүктемесiн есептеу. Келесі мәліметтер бойынша деректер қорын құру: табельдік нөмірі, фамилиясы, аты, тегі, жұмысқа кірген жылы, атағы, ғылыми дәрежесі, пәндері, семестр нөмірі, сағат саны, экзамен немесе сынық және т.б. Профессорлер, доценттер және ассистенттер құрамының пайызын есептеу, сонымен қатар әр оқытушының жалпы жүктемесін сағатпен есептеу.

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

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

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

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

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

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

С++ Buildеr 6 ортасында деректер қорын басқару
Әдістемелік нұсқаулар



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




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

    Басты бет