Жаттығу жұмыстары
Музыка тыңдауды және суреттер қарауды орындай алатын әмбебап қосымша
құрыңыз. Қосымша тӛрт терезеден тұрады. /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;
//---------------------------------------------------------------------------
__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)
{
4.12-сурет. StringGrid компонентiн таңдау
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
2.
2
A(N,M)
Матрицаның әрбір жолының оң элементтерінің қосындысын
және олардын санын есептеп есте сақтау.Нәтижесін екі
баған түрінде баспадан шығару.
N<=4
M<=5
3.
3
B(N,N)
Матрицанын бас диагоналындағы және одан тӛмен
орналасқан элементтердің қосындысын және элементтер
санын есептеу.
N<=6
4.
4
B(N,N)
Матрицаның бас диагоналынан тӛмен орналасқан оң
элементтерінін қосындысын және олардың элементтер
санын есептеу.
N<=4
Bij>0
5.
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 операторы пайдаланылады.
Жалпы жазылуы:
Достарыңызбен бөлісу: |