ҚҰрастырылған және енгізілген орындаушылар


Консольдық программа құру



Pdf көрінісі
бет8/9
Дата06.02.2020
өлшемі1,91 Mb.
#57312
1   2   3   4   5   6   7   8   9
Байланысты:
17KTJ9


Консольдық программа құру

Программа мәтіні келесідей болады:

. . .

typedef double (*TFun)(double); 



// Көрсеткіштер типін функцияға жүктеу

double fun1(double);

// Функция прототиптерін қолданушыға жүктеу

double fun2(double);

void Out_Rez (TFun,double,double,double);

void main()

{

double a, b, h;



puts("Input a,b,h");

scanf("%lf%lf%lf", &a, &b, &h);

puts("\n\t Function - 2*exp(x)");

Out_Rez (fun1,a,b,h);

puts("\n\t Function - sin(x)*sin(x)"); Out_Rez (fun2,a,b,h);

puts("\n Press any key ... ");

getch();

}

//---------- қолданушы функциясын жүзеге асыру ---------------------------------



double fun1( double r){

        return 2*exp(r*r);

}

double fun2(double r) {



        return pow(sin(r), 2);

}


62

void Out_Rez (TFun f,double xn,double xk,double h) {

   

for(double x=xn; x<=xk; x+=h)



      

printf(" x = %5.2lf, y = %8.4lf\n",x,f(x));



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

1. Төмендегі есептерді функцияны пайдаланып шешіњдер:

1.

)!

(



!

!

m



n

m

n

C

m

n



2.

!

)!



(

!

k



k

m

m

F



2. Цилинддр  көлемін есептейтін функцияны жаз . Функция  параметрлері  ретінде  



цилиндрдің радиусы және биіктігі алынады .

3. Үлес (вклад )  бойынша  кірісті  (доход) есептейтін  Dohod  функцияны жаз .Функция 

берілгендері : үлес шамасы , проценттік қойылым (жылдық ) және үлес уақыты (күндер 

саны ). 


4. Квадрат теңдеуді  шешуді қамтамасыз  ететін функцияны жаз . Функция параметрлері  

ретінде теңдеудің коэффициенттері  мен түбірлері алынады . Теңдеудің түбірлері туралы  

функцияның қайтаратын мәндері : 2-әртүрлі түбір , 1-түбірлері бірдей , 0-теңдеудің 

түбірлері жоқ . Сонымен қатар , функция берілгендердің  дұрыстығын тексеру керек . Егер 

берілгендер дұрыс болмаса , онда функция    -1-ді қайтарады .

5. Аргумент ретінде алынған 2 бүтін санның ең үлкенін  қайтаратын функцияны жаз .

6. Экранға бірдей параметрлерден тұратын жолды  шығаратын  функцияны жаз . Жол 

ұзындығы  және символ   функция  параметрлері болады .

7. Берілген санды  дәрежелеу  функциясын жазыңыз .

8. Берілген массив элементтерін өсу ретімен орналастыратын  функция жазыңыз .    



9. Берілген массив элементтерін кему  ретімен орналастыратын  функция жазыңыз .    

10. Берілген массив элементтерінің  ішіндегі оң элементтерін  0- мен , ал  теріс элементтерін 

1-мен  ауыстыратын функция жазыңыз .

11. Берілген бүтін санды  2-еселеп , сол санның факториалын есептейтін функция құрыңыз .

12. 1-ден 100-ге дейінгі тақ сандардың  қосындысын беретін  функцияны  жазыңыз.

13. 1-ден 100-ге дейінгі жұп  сандардың  қосындысын беретін  функцияны жазыңыз .

14. 1-ден 100-ге дейінгі жай  сандардың  қосындысын беретін  функцияны  жазыңыз .

15.


Матрицаны  транспонирлеуді   атқаратын функцияны жазыңыз . 

Бақылау  сұрақтары:

1. Функцияларды құру кезінде неге көңіл аудару керек ?

2. Функцияны шақыруды қалай  ұйымдастырамыз ?

3. Функция операторлары қалай орындалады ?

4.  «Функция» терминнің мағынасы қандай?

5. Функцияны анықтаудың жалпы синтаксисі қандай?

6. Функцияның  формальды  және  фактілі  параметрлердің  бір  бірінен  айырмашылығы 

қандай?


7. Функцияның белгілі және белгісіз хабарлаудың айырмашылығы қандай?

8. Функцияны шақыру үрдісін сипаттандар?

9. «Рекурсивті функция» терминнің мағынасы қандай?

Блиц-тест

1. Компоненттердің С++ тілінің басқа объектілер класстарынан ерекшеліктері келесі 

түрде болады

A. барлық жауап дұрыс

B. компоненттердің барлығы ортақ TComponent класынын ұрпағы


63

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

D. компоненттер  new операторы арқылы динамикалық жадыда (heap) орналасады

E. компоненттердің көбісі қолданушы интерфейсін басқару элементтері болып табылады;



2. Қасиеттер дегеніміз

A. объект, әдістер, қасиеттер

B. компоненттің сыртқы түрі мен жұмысын анықтайтын атрибуттар.

C. инкапсуляция, полиморфизм, мұралау

D. класс, базалық класс, туынды класс

E. ашық, жабық, қорған режим



3. Қасиеттерді сипаттау синтаксисі:

A. property <қасиеттипі> <қасиет аты> = {< атрибуттар тізімі>} ;

B. property  <қасиет аты> = {< атрибуттар тізімі>} ;

C. public <қасиеттипі> <қасиет аты> = {< атрибуттар тізімі>} ;

D. private  <қасиеттипі> <қасиет аты> = {< атрибуттар тізімі>} ;

E. protected  <қасиеттипі> <қасиет аты> = {< атрибуттар тізімі>} ;



4. void __fastcall TForm1::Button1Click(TObject *Sender)

{float x,y;

//айнымалыны сипаттау

x=StrToFloat(Edit1->Text);//  х  айнымалысының  мәнін  жолдықтан  нақты 

айналдырып //енгізу

y=3*pow(x,2)+7;

//у функциясының мәні

Edit2->Text=FloatToStr(y);

X=3 болғанда нәтиже неге тең болады?

A. 15


B. 25

C. 34


D. 19

E. 29


5. #pragma package(smart_init) директивасының қызметі қандай

А)инициализация пакеттерінің тізімін анықтайды.

Б)Unit1.h файлын іске қосады

В)берілген  файлмен  атымен  аты  сәйкес  болатын  *.dfm  файлын  формада  қолдану 

қажеттігі

Г)форма объектісін хабарлау

Д)hdrstop опциясы препроцессор жұмысының өзгешеліктерімен байланысты

Жұмысты  орындауға тапсырмалар

1. Лекциялар, әдебиеттер, әдістемелік нұсқау бойынша теориялық материалды қайталау.

2. Бақылау сұрақтарына ауызша жауап беру.

3. Тапсырма вариантын таңдау және орындау

4.  Есеп жазу

Есеп мазмұны

1. Жұмыстың тақырыбы және мақсаты.

2. Бақылау сұрақтарына жауап  жазу.

3. Тапсырманың блок-схема,  алгоритмі.

4. C++ Builder  тілінде программасы


64

Әдебиеттер

1. Атымбаева Объектіге бағытталған программалау негіздері.Алматы, 2005 ж.             

2. Програ ммирование в среде С ++ Builder. А. Вальвачев, Д. Сурков, К. Сурков. 

Мин.1998г    

3. С ++ Builder.  С.В.Глушаков, В.Н. Зорянский, С.Н. Хоменко

4. С++ и информатика .   Н.Культин, М. 2002г.4. 4 4

5. С ++ Builder  книга рецептов.  В. Ермолаев. Кудиц. – образ. 2006г. 

6. Справочник по С ++ Builder.  Учебное пособие. 2005г.

7. Разработка приложений в среде С ++ Builder 6 и решение задач информационно-

радиационного профиля. Учебное пособие.  А.И. Купчишин, Т.А. Шмыгалева.



Лабораториялық жұмыс № 19-20

Тақырыбы: C++ Builder ортасында графикамен жұмыс

Мақсаты: - С/С++ тілінің графикалық мәліметтерді өңдеу мүмкіндіктерімен,      графикалық 

компоненттер танысу.

-

, файлдарында сипатталған негізгі графикалық 

функциялардың прототиптерін үйрену. 



Материалдар және жабдықтар: ДК, C++ Builder  программалау ортасы

Жұмыстың мазмұны және орындалу тәртібі:

1. Вариант бойынша тапсырманы алу

2. Есептің қойылымы

3. Есепті шешу алгоритмі

4. Есепті шешу программасын C++ Builder программалау ортасында құру

5. Программа листингі

6. Орындалған жұмыс жөнінде есеп беру

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

Графикалық компоненттер

Windows  операциялық жүйесі өңдеушілерге графикалық  бейнелерді құруға арналған 

қосымша  құрал  GDI  (Graphics  Device  Interface)  графикалық  қондырғылардың  интерфейсін 

ұсынады.    GDI  өзінің  көптеген  қосымша  әрекеттерімен  көп  уақыт  алады.  Бұл  әрекеттер 

программисттерді негізгі міндеті – графика құрудан алаңдатады.

C++  Builder  Windows  GDI    функцияларын  әртүрлі  деңгейде  қолданады.  Ең  қажет 

тәсілдерінің  бірі  –  бұл  графикалық  компоненттердің  өз  бейнелерін  монитор  экранында 

көрсетуі  болып  табылады.  GDI  функциясын  тікелей  шақырғанда  таңдалған  сурет  салуға 

арналған  құрал-жабдықтың  міндеттелуі  үшін  контекст  қондырғысының  дескрипторын  беру 

қажет.  Графикалық  бейнелермен  жұмыс  жасап  болған  соң  контекст  қондырғысын  қалпына 

келтіру  керек.  Сонда  ғана  одан  шығуға  болады.  Осындай  деңгейдегі  графикамен  жұмыс 

орындауға  қарағанда  C++  Builder  қарапайым  әрі  аяқталған  графикалық  компонент 

интерфейсі  Canvas(Канва)  ұсынады.  Бұл  дұрыс  контект  қондырғысын  көрсеттеді  және  бұл 

графикалық  компонент  жұмыс  аяқталғаннан  кейін  немесе  қажет  болмаған  жағдайда  оны 

тоқтатуға  болады.  істен  шығуға  болады. 

Windows 

GDI  функциясына  қарағанда  канва 

негізінен  барлық құралдардың сипаттамасын көрсететін қасиеттерге ие.

Негізінде  қолданушының  орындайтын  әрекеті  бұл  графикалық  компоненттермен 

жұмыс  жасауда  қолданылатын  құрал-жабдықтың  сипаттамаларын  білу  қажет.  Қолданатын 

құрал  –саймандардың  тоқтатуда,  жүйелік  ресурстарды  құруда  қадағаламауға  болады  яғни 

канва  бұл  әрекеттерді  өзі  атқарады  C++  Builder-дің  графикамен  жұмыс  істеудегі 

ерекшеліктерінің бірі – бұл жүйенің графикалық ресурстарына кэш жадыны қолдану болып 

табылады.  Егер  программада  сурет  салуға  арналған  құрал-жабдықтардың  бірі  қайтадан 


65

құрып  қолдану  қажет  болса  онда  барлық  қадамдарды  қайталауға  тура  келеді.  C++  Builder 

кэш  жадыны  графикалық  ресурстарды  сақтауға  қолданады.  Сондықтан  жаңадан  сурет 

салатын  болсақ  онда  көп  қолданылатын  құрал-жабдық  кэш  жадыдан  өздігінен  таңдалады. 

Графикалық қосымшаның қайталану операциясының тиімділігі өсуде. 

                                Суреттермен жұмыс

C++  Builder  ортасындағы  графикалық  жұмыстардың  негізгі  мазмұны  Canvas  бұл 

канвада  өзіңізге  қажет  формада  сурет  салу  немесе  онда  орналасқан  басқа  да 

компоненттерден  тұрады.  Сонымен  бірге  сыртқы  бейнелерді  яғни  пиктограммаларды, 

метафайлдарды,  палитраларды  автоматты  түрде  басқаруды  орындайды.    C++  Builder 

ортасында графикаға қатысты 3 негізгі обхект бар. Олар:

        -Канва  –  формада,  графикалық  компоненттерде,  принтеде  және  сурет  салуға  арналған 

биттік  карта  бетін  көрсетеді.  Канва  өзіндік  объект  емес.  Ол  әрқашанда  басқа  графикалық 

объект қасиеті болып табылады. 

        -Графика  –  кейбір  файлдар  мен  ресурстардың  растрлық  бейнесі  болып  келеді.  C++ 

Builder    Tbitmap,  Ticon  және  Tmetafile  объектілі  класын    Tgraphic  өзіңіздің  қосымшаңызда 

әртүрлі графиканы қолдануға арналған минимальді стандартты интерфейсті көрсетеді.

       - Сурет – әртүрлі объектілердің класын және графиканың контейнерін көрсетеді.Сөйтіп  

Tpicture  контейнерлі  класы  метафайлдар  мен  пиктограммаларды  жүктейді.  Көптеген 

бейнелерді    басқару  компоненттері  Tpicture  қасиетіне  ие.  Бұл  әртүрлі  түрдегі  графикадағы 

бейнелерді көрсетуге мүмкіндік береді. Әдетте суретпен жұмыс жасауда Tpicture контейнері 

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

сізге  белгілі  бір  графикалық  объектке  қатынау  көрсету  қажет  болса  онда  оны  берілген 

суретке graphic қасиетін береміз. 

 Графикалық файлдар

Кез-келген  уақытта  C++  Builder  қосымшасымен  жұмыс  жасауда  суреттермен 

графикаларды бейнелер файлардарының стандартты форматында сақтау керек. Бейнелердің 

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

мүмкін. Файлдағы суреттің бейне түрінде жүктелуі  LoadFromFile әдісін қолдануға болады. 

Ал бейнені файлда сақтау үшін SaveToFile сурет әдісін пайдаланамыз. Бұл әдістердің жалғыз 

параметрі файл аты болып табылады. LoadFromFile әдісі графикалық объектілерді құру мен 

жүктеу кезіндегі түрлерін тануда файлдар кеңейтілуін қолданады.

Void_fastcall TForm1::FormCreate(TObject*Sender) {

Image1->Picture->LoadFromFile (“C:\\windows\\clouds.bmp”);

Мұнда  сурет  биттік  образдағы  файлдің  стандартты  кеңкйтілімін  анықтайды  және  Tbitmap 

объектілі  класы  сияқты  өз  графикасын  құрады.  Одан  кейін  көрсетілгенатпен  файлдан 

бейнелерді жүктеу үшін LoadFromFile әдісін шақырады.  

                            Биттік бейнені  көшіру

C++ Builder бір канвадан келесі канваға бейнелерді көшірудің төрт тәсілін көрсетеді. 

Өзіңізге қажет көшіру тәсілін келесі кестеден таңдауға болады. 

               Қажет нәтиже

                       Әдіс

Графиканы толығымен көшіру

         Draw

Масштабтау арқылы көшіру

 StretchDraw

Канваның тікбұрышты аумағын көшіру

 CopyRect

Растрлық операциялармен көшіру

BrushCopy



66

Күрделі  графикалық  бейнелерді  құруда  форма  немесе  компоненттерді  канвада 

салудан алшақтаған жөн.Ол үшін алдымен биттік бейнедегі объектіні құру үшін оны канвада 

салуға болады және содан кейін оны көшіруге мүмкіндік туады. Биттік бейнені экраннан тыс 

канвада салу  үшін  графикалық  компоненттердің  Paint  әдісі қолданылады. Биттік  образдағы  

экраннан тыс күрделі бейнелерді салуға Samples бетіндегі Индикатор (Gauge) арқылы жүзеге 

асады.

                                           



Форманы жобалау

Қосымшаны жобалауда келесі компоненттерді палитрадан формаға алып бару арқылы 

жүзеге асады:

 Additional   бетіндегі Timage контейнері мен  System бетіндегі  TpaintBox контейнері.  

DrawBox объектісінің   Timage  және PaintBox класының  TPaintBox класы 

графикаларды екі есе буферлейді. Алдымен DrawBox объектілерінде канвада фигура 

мен фон салады одан кейін PaintBox объектісінде канва бейнесін экранға көшіреді.

 Standard  бетінде TPanel құрал – саймандар панелі.

 System  бетіндегі таймер TTimer.

 Анимация жылдамдығын басқару үшін Samples бетіндегі TspinEdit компонентін 

редакциялау.

 Программаның жұмыс жасауын басқару үшін Additional   бетіндегі TSpeedButton 

батырмасы.

 Dialogs бетінің TopenDialog компоненті



Анимация

1-сурет негізінен қосымша формасын көрсетеді. Clouds.bmp  файлындағы

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

файлындағы екі самолет пен Helicopters.bmp. файлдағы вертолеттер атқарады. Figures 

объектілі компонентінің Picture қасиетін екі рет тышқанмен шерт арқылы бейнелердің 

редакторын ашуға болады. Әрбір фигураның бейнесі үштік биттік образда көрсетілген. Яғни 

алғашқы екеуі фигура анимациясының фазасы, ал үшіншісі сыртқы контурдың бинарлы 

қалқасын (маска) көрсетеді. Екі фигурада түстерімен ажыратылады. Олар бірдей формада 

сондықтан бір қалқаны бөліседі. 

1-сурет


TSpeedButton  компонентінің  батырмалары  программаны  басқаруға  арналған.  Бірінші 

батырмасы  Background  объектісін  TImage  класының  фон  бейнесін  файлдан  ашады  әрі 

жүктейді.Ал  екінші  батырма    Figures  объектісінің  Timage  класындағы  фигура  бейнесін 

файлдан ашады және жүктейді. Үшінші батырма фигураларды бастапқы күйіне әкеледі және 

таймерді  қосады.  TSpinEditредакциялау  компонентінің  батырмасы  негізінде  таймер 

интервалының  мәнін  үлкейтіп  және  кішірейтіп  отырады.  Timerl  объектісінің  OnTimer



67

қасиеті қосымша ядросының өңдеушісі болып табылады. 

2-сурет. DrawBox және  PaintBox объектілерінің канвадағы структурасы



Мысал

Сhart және Image компоненттерінің көмегімен таңдалған функцияның графигін сызатын 

программу құру.

Форманы қалыпқа келтіру

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

. . .

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

  double a,b,h,y_min,y_max;

  int n;


  typedef double (*Tfun)(double);

  Tfun f;

  double fun0(double);

  double fun1(double);

  double fun2(double);

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



void __fastcall TForm1::FormCreate(TObject *Sender)

{

        Edit1->Text="-3,1416";    

// a

        Edit2->Text="3,1416";     

// b

        Edit3->Text="50";

// n

        RadioGroup1->ItemIndex = 0;



}

//----------------- Задать начальные значения  ------------------------



void __fastcall TForm1::Button1Click(TObject *Sender)

{

double x, r;



68

a=StrToFloat(Edit1->Text);

b=StrToFloat(Edit2->Text);

n=StrToInt(Edit3->Text);

h = (b-a)/n;

switch(RadioGroup1->ItemIndex) {

        case 0: f = fun0; break;

        case 1: f = fun1; break;

        case 2: f = fun2; break;

}

y_min = y_max = f(a);



for (x = a+h; x<=b; x+=h) {

                r = f(x);

                if(y_min>r) y_min = r;

                if(y_max

}

}

//------------------------ Построить график в Chart ----------------------------



void __fastcall TForm1::Button2Click(TObject *Sender)

{

Chart1->Series[0]->Clear();

// Очистка графика

for(double x=a; x<=b; x+=h)

      Chart1->Series[0]->AddXY(x,f(x));

}

//--------------------- Копировать в буфер ----------------------------------------



void __fastcall TForm1::Button3Click(TObject *Sender)

{

 Chart1->CopyToClipboardMetafile(True);



}

//--------------------- Построить график в Image ---------------------------



void __fastcall TForm1::Button4Click(TObject *Sender)

{

int xmax, ymax, xt, yt, y0, x0;

double hx,hy,x;

  Image1->Canvas->Pen->Color=clBlack;  // Установка цвета пера

// Поиск координат правого нижнего угла холста Image

xmax = Image1->Width;

  ymax = Image1->Height;

// Закрашивание холста Image текущей белой кистью

  Image1->Canvas->Rectangle(0,0,xmax,ymax);

// Поиск середины холста

  y0=ymax/2;   x0=xmax/2;

// Вычерчивание координатных линий

  Image1->Canvas->MoveTo(0,y0);

  Image1->Canvas->LineTo(xmax,y0);

  Image1->Canvas->MoveTo(x0,0);

  Image1->Canvas->LineTo(x0,ymax);

  Image1->Canvas->Pen->Color=clRed; 

// Установка цвета пера

  Image1->Canvas->Pen->Width=2; 

// Установка ширины пера

// Поиск шагов по х и у с масштабированием  

hx=(b-a)/xmax;

  hy=(y_max-y_min)/ymax;

Image1->Canvas->MoveTo(ceil(x0+a/hx),ceil(y0-f(a)/hy));

for(x=a; x<=b; x+=h)

   Image1->Canvas->LineTo(ceil(x0+x/hx),ceil(y0-f(x)/hy));



69

}

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

  double fun0(double r) {

        return sin(r);

  }

  double fun1(double r) {



        return r*r;

  }


  double fun2(double r) {

        return r*r*r;

  }

Тапсырма: Берілген функция үшін масштаб және ауысуды анықтаңыз. Функцияның 

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

Координат өстерін енгізуді карастырыңыз. -

Аргументтердің және функцияның мәндерінің таблицасын сызатын программа құрыңыз. 



Тапсырма варианттары.

Вариант


функция 

Интервал


шаг

1

y=e



x

sinx


[0;2

]

/10



2

y=x


3

[-5;5]


0,5

3

y=xsinx



[0;2

]

/10



4

y=|x|


[-10;10]

1

5



y=

x

[0;64]



4

6

y=(sinx)/x



[

/;2]


/10

7

y=xcosx



[0;2

]

/10



8

y=x


2

+4x


[-5;5]

1

9



y=tgx

[-

;]



/5

10

y=x



2

+sinx


[-

;]


/8

11

y=2x



2

+x+4


[-5;5]

1

12



y=shx

[-1;1]


0,1

13

y=thx



[0;2]

0,2


14

y=chx


[-1;1]

0,1


15

y=-2x


2

[-5;5]


1

Бақылау сұрақтары:

1. С++ Builder ортасының графикалық мүмкіндіктері

2. С++ Builder ортасының графикалық примитивтерді құру арналған компоненттері

3. Графиктерді тұрғызу ерекшеліктері

4. Пиксел дегеніміз не?

5. Графикалық ақпарат қалай сақталады?

6. Графикалық режимге қалай ауысуға болады? 

7. Текстік режимге қалай оралуға болады?

8. Шрифттерді қалай таңдауға болады?

9. Сызық сипаттамасы мен қалындығын қалай тағайындауға болады? 

10. Бояу стилін қалай тағайындауға болады? 

11. Графикалық экранда терезені қалай ашуға және қалай жабуға 

болады?

12. Горизонталь және вертикаль бойынша нүктелердің максимальді 



координат мәндерін қалай алуға болады?

70

13. Терезенің координаттар жүйесінде ағымдық координаттарды алуға 

болады?

Блиц-тест

1. ListBox компонентінің Columns  қасиет 

A. тізімде белгіленген элементтің реттік номерін көрсетеді

B. компонент терезесіне тізім толық бейнеленбеген болса, бағандар санын анықтайды

C. тізімдегі жолдардың санын анықтайды.

D. тізімдегі жолдар автоматты түрде алфавит бойынша сұрыпталатындығын көрсетеді

E. тізімнің қандай элементтері белгіленгендігін анықтайтын индекстік массив.




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




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

    Басты бет