Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб S++BuilderZert27каз.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
7.48 Mб
Скачать

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Мысалы,

void __fastcall TForm1::CheckBox1Click(TObject *Sender)

{

if (CheckBox1->Checked = = true)

Memo1->Font->Size=10;

}

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

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

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

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

#include "Unit1.h"

#include "stdlib.h"

TForm1 *Form1;

float a[100];

int Elem_sani=0;

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

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

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

void __fastcall TForm1::Button1Click(TObject *Sender)

{

float max=a[0];

float min=a[0];

if (Edit1->Text=="")

{ShowMessage("Massiv elementterinin sanin beriniz");

Edit1->SetFocus();}

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

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

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

}

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

}

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

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

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

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

}

if (CheckBox3->Checked == True)

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

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

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

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

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

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

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

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

}

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

void __fastcall TForm1::Button2Click(TObject *Sender)

{

if (Edit1->Text=="")

{ShowMessage("Massiv elementterinin sanin beriniz");

Edit1->SetFocus();}

Elem_sani=StrToInt (Edit1->Text);

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

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

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

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

}

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

void __fastcall TForm1::FormActivate(TObject *Sender)

{Edit1->SetFocus();}

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

void __fastcall TForm1::Button4Click(TObject *Sender)

{Form1->Close();}

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

void __fastcall TForm1::Button3Click(TObject *Sender)

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

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

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

2-жаттығу.

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

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

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

Компоненттің аты

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

Form1

Caption = 'RadioButton компонентiн пайдалану мысалы'

Label1

Caption = 'Фамилия'

Label2

Caption = 'Аты'

Label3

Caption = 'Туган жылы'

Memo1

Lines.Strings = ( ')

Edit1

Text қасиеті тазаланады, OnKeyPress = Edit1KeyPress

Edit2

Text қасиеті тазаланады, OnKeyPress = Edit2KeyPress

Edit3

Text қасиеті тазаланады, OnKeyPress = Edit3KeyPress

Button1

Caption = 'ЕНГIЗУДI ОРЫНДАУ', OnClick = Button1Click

Button2

Caption = 'СУРЫПТАУДЫ ОРЫНДАУ', OnClick = Button2Click

RadioGroup1

Caption = 'Сурыптау'

Items.Strings = (

'Фамилия бойынша'

'Аты бойынша'

'Туган жылы бойынша ')

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

#include "Unit1.h"

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

class stud

{public:

AnsiString fam, ati;

int tugG;

};

stud grup[10]; int n=0;

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

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

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

void __fastcall TForm1::Button1Click(TObject *Sender)

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

{

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

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

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

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

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

n++;

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

Edit1->SetFocus();

}

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

void __fastcall TForm1::Edit1KeyPress(TObject *Sender,

char &Key)

{

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

}

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

void __fastcall TForm1::Edit2KeyPress(TObject *Sender,

char &Key)

{

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

}

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

void __fastcall TForm1::Edit3KeyPress(TObject *Sender,

char &Key)

{

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

}

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

void __fastcall TForm1::Button2Click(TObject *Sender)

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

{

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

{ Memo1->Clear();

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

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

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

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

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

} // fam boinsha syriptay bitti

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

{ Memo1->Clear();

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

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

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

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

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

} //ati boinsha syriptay bitti

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

{Memo1->Clear();

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

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

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

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

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

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

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

grup[maxI]=grup[i];

grup[i]=max;

}

}//tugG boinsha syriptay bitti

}