Осымшадағы ауыстырғыштардың қызметі
Әдістемелік нұсқаулар
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];
intElem_sani=0;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---Орындау батырмасының коды ----------------------------
void __fastcallTForm1::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 (inti=0;i
if(a[i]>max) max=a[i];
}
Edit2->Text=FloatToStrF(max,ffFixed,5,2);
}
if(CheckBox2->Checked == True) //min элементті табу
{for (inti=0;i
if(a[i]
Edit3->Text=FloatToStrF(min,ffFixed,5,2);
}
if(CheckBox3->Checked == True)
// массивті өсу ретімен сұрыптау
for(inti=0;i<elem_sani;i++)
{ max=a[i]; intNmax=i;
for(intj=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 __fastcallTForm1::Button2Click(TObject *Sender)
{
if(Edit1->Text=="")
{ShowMessage("Massiv elementterinin sanin beriniz");
Edit1->SetFocus();}
Elem_sani=StrToInt (Edit1->Text);
for(inti=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 __fastcallTForm1::FormActivate(TObject *Sender)
{Edit1->SetFocus();}
//---------------------------------------------------------------------------
void __fastcallTForm1::Button4Click(TObject *Sender)
{Form1->Close();}
//---------------------------------------------------------------------------
void __fastcallTForm1::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;
classstud
{public:
AnsiString fam, ati;
int tugG;
};
stud grup[10]; int n=0;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------</elem_sani;i++)
</elem_sani;j++)
</elem_sani;i++)
void __fastcallTForm1::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 __fastcallTForm1::Edit1KeyPress(TObject *Sender,
char &Key)
{
if(Key==13) Edit2->SetFocus();
}
//---------------------------------------------------------------------------
void __fastcallTForm1::Edit2KeyPress(TObject *Sender,
char &Key)
{
if(Key==13) Edit3->SetFocus();
}
//---------------------------------------------------------------------------
void __fastcallTForm1::Edit3KeyPress(TObject *Sender,
char &Key)
{
if(Key==13) Button1->SetFocus();
}
//---------------------------------------------------------------------------
void __fastcallTForm1::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
}
Өзіндік жұмыс тапсымалары:
Қолданушының таңдауына сәйкес тізбек мүшелерін арифметикалық, геометриялық прогрессия ережелері немесе т.б. заңдылықтар бойынша құратын және алынған тізбектің min –элементін табатын және тізбек элементтерін кему реті бойынша орналастыратын программа жазыңыз.
Қолданушының таңдауына сәйкес “Өте жақсы“, “өте жақсы және жақсы“, “жақсы және қанағаттанарлық“, ”тек қанағаттанарлық“ бағалармен оқитын студенттердің тізімін шығарып беретін программа жазыңыз.
Қолданушының таңдауына сәйкес фамилиясы “A”-дан басталатын қызметкерлер тізімін, орташа жалақыдан жоғары жалақы алатын қызметкерлер тізімін, орташа жалақыдан төмен жалақы алатын қызметкерлер тізімін шығарып беретін программа құрыңыз.
Қолданушының таңдауына сәйкес аяқ киім дүкенінің ассортиментінен әйел адамның аяқ киімдерін, ер адамдар аяқ киімдерін, балалар аяқ киімдерін олардың құнымен, шығарған фирмасымен және размерімен көрсететін программаны жазыңыз. Ең қымбат және ең арзан балалар аяқ киімін де көрсететін болсын.
Қолданушының таңдауына сәйкес автосалондағы машиналарды маркасына, шыққан жылына және бағасына және түсіне қарай сұрыптап шығарып беретін программа жазыңыз.
Қолданушының таңдауына сәйкес поликлиникадағы дәрігерлердің аты-жөні бойынша, мамандығы бойынша және еңбек өтілі бойынша сұрыптап шығаратын программа құрыңыз.
Кітапханадағы кітаптарды, авторы, шыққан жылы, бағасы және тиражы бойынша сұрыптайтын программа құрыңыз.
Нақты сандардан тұратын бір өлшемді масивтегі оң және теріс элементтерді сұрыптап шығаратын және оң элементтердің ең үлкенін табатын программа құрыңыз.
Аэропорт анықтамалық бюросының мәліметтеріне сәйкес рейстерді бағыттары бойынша, апта күндері бойынша және номерлері бойынша сұрыптайтын программа құрыңыз.
Стоматологқа келушілердің тізімінен қажет фамилияларды бас әрпі бойынша, келген күні бойынша және дәрігері бойынша сұрыптап шығарып беретін программа құрыңыз.
6 - зертханалық жұмыс.