«Программалау 3» ПӘнінің ОҚУ-Әдістемелік кешені


Тақырыбы: Мәтіндік файлдар және енгізу/шығару ағындары



бет3/12
Дата17.06.2018
өлшемі1,26 Mb.
#42615
1   2   3   4   5   6   7   8   9   ...   12

Тақырыбы: Мәтіндік файлдар және енгізу/шығару ағындары



.


Дәріс №10

Тақырыбы: С++ тілінде графикалық режимде жұмыс істеу.

Мақсаты: С++ тілінде графиктік операторлармен танысу.

Графикалық режимде жұмыс істеу барысында дисплей экраны нүктелер(пикселдер) матрицасы ретінде көрсетіледі. Мұнда пикселдер бағаны мен жолының саны (дисплей экранының шешімі) видеоадаптер жұмысына байланысты. Әрбір пикселдің түсін басқаруға болады: экран дисплейіндегі тұйықталған облысты түсін толтыру, суреттің фонының түсін беру бейненің қозғалыс эффектісін жасау және т.б.

Экран координаттарының басы ретінде x=0, y=0 координаталарымен жоғарғы сол жақ бұрыш қабылданған, мұндағы х – көлденең координаталық түзу, у – тік координаталық түзу. Си тіліндегі графикалық функциялар кітапханасы қамтитын барлық функциялар мобильдік емес (адаптер типіне тәуелді функциялар) және мобильдік топтарға бөлінеді. Мобильдің емес графикалық программаларды BGI (Borland Graphics Interface) драйвері көрсетеді.

Драйвер дегеніміз – 10h үзілісін өңдеуші, ол жүйелік өңдеушіні мобильдік графикалық функциялар қолданылғанша толықтыру керек. Программа жұмысын аяқтау алдында үзіліс векторларының кестесі қалпына келтіріледі.

Адаптерлердің әртүрлі типтеріне әртүрлі драйверлер қолданылады:

CGA.BGI драйвері – CGA және MCGA адаптерлері үшін, EGAVGA.BGI драйвері - EGA, VGA адаптерлері үшін. HERC.BGI драйвері Hercules монохромды адаптері үшін.

Мобильді топтың графикалық функциялары төмендегідей бөлінеді:


              1. Графикалық жүйені дайындауға және текстік режимге көшуге арналған функциялар.

              2. Дисплей экранында бейнелерді алуға арналған функциялар.

              3. Бейнелеу параметрлерін орнатуға арналған (штрихтеу түрі, сызықтың қалыңдығы және т.б.) функциялар.

              4. Режимдер мен бейнелеу параметрлерін анықтайтын функциялар.

Графикалық жүйені дайындауға арналған функциялар

Графикалық функцияларды қолданбас бұрын графика жүйесін инициализациялау қажет. Графика кітапханасымен қамтылатын графикалық режимдер файлында сипатталған символдық тұрақтылармен беріледі. Графикалық жүйенің инициализациясы initgraph() функциясымен жасалады. Ол графикалық драйверді жүктеп, дисплей экранын өажетті графикалық режимге қосады. initgraph функциясының прототипі:

Initgraph(&g_driver, &g_mode, “ “);

Тырнақшаның ішінде графикалық драйвердің жолын көрсету керек. Егер бос орын қалдырса, онда графикалық драйвер ағымдағы каталогта болуы керек. Бірінші параметр - (&g_driver – графикалық драйвер типі: 1- CGA, 3- EGA, 9- VGA және т.б. Екінші параметр - &g_mode – граикалық режим.

VGA драйвері үшін қарастырайық:

VGA 0 640х200

VGAMED 1 640x350

VGAHI 2 640x480
640x200 типті жазбалар графикалық режимдегі дисплей экранының шешім қабілеті (бағандар санын жолдар санына көбейту).

Графиканың автоматты режимін беру үшін төмендегідей жазба қажет:

Int g_driver=DETECT, g_mode;

Графикалық режимде жұмысты аяқтау үшін closegraph() функциясын қолдану керек.

Бейнені алуға арналған негізгі функциялар


        1. circle(x,y,r) – шеңбер сызу;

        2. bar(x1,y1,x2,y2) – боялған тіктөртбұрыш сызу;

        3. bar3d(x1,y1,x2,y2, тереңдігі, р), р=0 р=1жоғарғы шекара бейнелену/бейнеленбеу – параллелепипед сызу.

        4. line(x1,e1,x2,y2) – сызық сызу;

        5. putpixel(x,y, түсі) – нүкте сызу;

        6. rectangle(x1,y1,x2,y2) - тіктөртбұрыш сызу;

        7. outtext(x,y, «текст») – текст енгізу;

        8. moveto(x,y) – диспдей экранында көрсеткіш орнату;

        9. cleardevice(void) дисплей экранын тазарту;

        10. floodfill(x,y,c); с – сызық түсі, - алдын-ала дайындалған толтырғышпен тұйық облысты толтыру;

Бейнелеу параметрлерін орнатуға арналған функциялар



              1. setcolor(n) – сызық түсін орнату;

              2. setbkcolor(n) – фон түсін орнату;

              3. setfillstyle(толтырғыш номері 0-12, түсі) – тұйықталған сызықтың толтырғышының стилін орнату;

              4. setlinestyle(сызық стилі, 0, қалыңдығы); 0-үздіксіз, 1 – нүктелерден, 2,3-штрих – сызықтың қалыңдығын орнату;

              5. settextstyle(шрифт 0-4, бағыты; 0-көлбеу, 1-тігінен, өлшем 1-0) – текст стилін орнату;



Қолдануға ұсынылған әдебиеттер тізімі




  1. Березин Б.И., Березин С.Б. Начальный курс С и С++. –М:Диалог-МРТИ, 1999. -288с.

  2. Керниган Б., Ритчи Д. Язык программирования Си. –М:Финансы истатистика, 1992.

  3. Касаткин А.И., Вольвачев А.Н. Профессиональное программирование на языке Си: От Turbo-C к Borland C++: Справочное пособие – Мн: Вышейшая школа., 1992.

  4. В.В.Тимофеев. Программирование в среде С++ Builder 5. М.:БИНОМ, 2000.



ЗЕРТХАНАЛЫҚ ЖҰМЫСТАРДЫ ЖҮРГІЗУГЕ АРНАЛҒАН

ӘДІСТЕМЕЛІК НҰСҚАУЛАР

Зертханалық жұмыс №1

Сызықтық және тармақталған есептеу процесстері



Жұмыстың мақсаты:

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


Программалаудың интегралдық ортасы Borland C++ -да жұмыс істеу барысында программа мәтінін енгізу, компиляциялау, редактрлеу, трансляциялау және программаны орындау амалдары орындалады.

  • жаңа файл құру үшін File New Text Edit




  • …\bin\*.cpp тақырыпты терезеде программа мәтінін тереміз.

  • Alt+F9 клаввиштері немесе ProjectCompilе командаларын орындап компиляция жасаймыз.

  • Компиляция нәтижесінде табылған қателерді түзетеміз ( редактрлейміз) .

  • Синтаксистік қатеден тазарған программаны (run) батырмасы арқылы орындауға жіберміз .

  • Программаның соңғы жолында getch( ); функциясын жазсақ нәтиже терезесі басқа клавишті басқанша жабылмайды.

СЫЗЫҚТЫҚ АЛГОРИТМ МЫСАЛЫ

Есептеу керек ,

мұндағы x=2,444, y=0,00869, z=-130, нәтиже: -0.49871.

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

#include

#include

#include

#define x 2.444

#define y 0.00869

#define z -130.0


void main(void)

{

double rezult,dop,a,b,c;



clrscr( ); /* ЭКРАНДЫ ТАЗАРТУ */

puts(" ЗЕРТХАНАЛЫҚ ЖҰМЫС №1 – СЫЗЫҚТЫҚ ПРОГРАММА");

puts("=========================================");

dop=fabs(y-x);

a=pow(x,y+1)+exp(y-1);

b=1+x*fabs(y-tan(z));

c=0.5*pow(dop,2)-pow(dop,3)/3;

rezult=a/b*(1+dop)+c;

printf("\a\n ОТВЕТ: rezult=%lf, Press any key...", rezult);

getch( ); /* КЕЗ-КЕЛГЕН ПЕРНЕНІ БАСҚҚАНҒА ДЕЙІН КҮТУ*/



}
If ОПЕРАТОРЫН ҚОЛДАНУ МЫСАЛЫ

F функциясының мәнін есептеу. Есептеу қай тармақ бойынша жүргізілгендігі туралы хабарламаны шығаруды қарастыру.

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

#include

#include

#include

#include

#define A 1

#define C 3
double max(double m,double n) /* МАКСИМАЛ МӘНДІ ІЗДЕУГЕ АРНАЛҒАН*/

{ /* m ЖӘНЕ n ПАРАМЕТРЛЕРІ БАР */

if (m>n) return m; /*max ФУнкцияСЫ*/
else return n;

}
double min(double m, double n) /* МИНИМАЛ МӘНДІ ІЗДЕУГЕ АРНАЛҒАН*/

{ /* m ЖӘНЕ n ПАРАМЕТРЛЕРІ БАР */

if (mнкцияСЫ*/

else return n;

}
void main()

{

double x,y,f; /* x,y,f АЙНЫМАЛЫЛАРЫН ЖАРИЯЛАУ */



clrscr();

puts("Введите значения x и y");

scanf("%lf %lf",&x,&y); /* х ЖӘНЕ у МӘНДЕРІН ЕНГІЗУ*/

if ((x>0)&&(y<0))

{

f=(A*x+tan(C*y))/(5-2*x);



puts("F=(а*x+tg(c*y))/(5-2*x)");

}

else if ((x<0)&&(y>0))



{

f=max(pow(x,2.0/3.0),cos(y*y)); /* max ФУНКЦИЯСЫН ШАҚЫРУ*/

puts("F=max(pow(x,2/3),cos(y*y))");

}

else if ((x>0)&&(y>0))



{

f=min(0.5*x-2*pow(sin(y),2),exp(y)); /* min ФУНКЦИЯСЫН ШАҚЫРУ*/

puts("F=min(0.5*x-2*pow(sin(y),2),exp(y))");

}

else



{

puts("Функция F не определена\n Press any key...");

getch();

exit(1); /* ПРОГРАММАНЫ МӘЖБҮРЛЕП АЯҚТАУ*/

}
printf("ОТВЕТ: F=%lf,\n Press any key...\n",f); /* НӘТИЖЕНІ ШЫҒАРУ*/

getch();


}
Жеке тапсырмалар:

У функциясының мәнін х аргументінің мәніне байланысты есепте. Функцияның х аргументінің мәні қай тармақ бойынша жүргізілгендігі туралы хабарлама шығаруды қарастыру.



  1. , егер

  2. егер

  3. егер

  4. егер

  5. егер

  6. егер

  7. егер

  8. егер

  9. егер

  10. егер

  11. егер

  12. , егер

  13. , егер

  14. , егер

  15. , егер

  16. , егер

F функциясының мәнін х аргументіне байланысты есептеп, есептеудің қай тармақ бойынша орындалғанын баспаға шығар. ,

  1. ,

  2. ,

  3. ,

  4. ,









3 нүкте берілді А(х1,y1), B(х2,y2), C(х3,y3).

  1. y=kx+1 түзуіне қатысты нүктелердің қалай орналасқанын тап (асты, үсті, бойы).

  2. Әр нүктемен координат басының арақашықтығын тап. Нәтижені өсу ретімен шығар.

  3. Нүктелердің жазықтықтағы орынын анықта. Қандай ширектерде жатқанын шығар.

  4. Осы нүктелер төбелері болатн үшбұрыш салуға бола ма? Болса қандай үщбұрыш?

  5. Радиусы r центрі координаттар басы болатын шеңберге қатысты нүктелердің орынын анықта.





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




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

    Басты бет