Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Язык Си для начинающих! С нуля! Учим быстро и просто!


 
Автор выпуска Олег Маркатов
E-mail: markatof@mail.ru

 Здравствуйте, уважаемые читатели!

  

         В этом номере рассылки:
1) Программа работы с компьютерной графикой
2) Лекция – нахождение корня уравнения методом деления отрезка пополам.

Рассмотрим  работу с графикой на языке Си

          Для того, чтобы начать работать с графикой у Вас должна быть соответствующая графическая библиотека, доступ к которой обеспечиваете с помощью соответствующего хидерфайла #include<graphics.h>.  Для работы с компьютерной графикой надо перейти из текстового в графический режим. Функция detectgraph(&Driver,&Mode); позволяет определить графический режим. В Driver пойдет информация о видеокарте, а в Mode информация о том, в каком режиме работает карта. Функция initgraph(&Driver,&Mode,"c:\\tc\\bgi"); выполняет переход о режима работы текстового к режиму работу с графикой. Если перед функцией указать Driver=DETECT;, то программа сама определит (автодетектирует) установленную видеокарту и выберет наилучший для нее режим работы. Третий параметр информация о том, где хранятся файлы с графическими шрифтами (например, для корректного отображения русского текста в графическом режиме нужны соответствующие шрифты). 
Если известно то, как построить точку, то можно построить любое графическое изображение по точкам - putpixel(x,y,c) – где x – координата точки х, y - координата точки y, а третий аргумент с – номер цвета. 
Нарисовать линию можно используя функцию line(x1,y1,x2,y2). 
Для организации паузы (ждем пока не будет нажата любая клавиша) используем конструкцию вида while(!kbhit());
Закрыть графический режим, то есть прейти обратно в текстовый, можем выполнив функцию closegraph();
А теперь рассмотрим готовую программу, использующую эти функции
 

#include<stdio.h>
#include<graphics.h>
#include<conio.h>
#include<dos.h>
char *Drivers[]={"CGA", "MCGA","EGA","EGA64", "EGAMono","IBM8514",
"HercMono","ATT400",
"VGA","PC3270"};
main()
{
int Driver, Mode;
int i,i1,i2;
float f1,f2;
Driver=DETECT;
clrscr();
/* Определение графического режима */
detectgraph(&Driver,&Mode);
printf("\t\t\t Определен графический режим - %s",Drivers[Driver-1]);
/*------------------------------*/
while(!kbhit()); /* Ждет нажатия клавиши */
initgraph(&Driver,&Mode,"c:\\tc\\bgi");
setpalette(1,RED);
/* 1-размер палитры, BLUE - цвет */
setcolor(3);
for(i=0;i<100;i++) putpixel(i,i,i);
delay(50); /* 50 мс. */
i1=getmaxx();
i2=getmaxy();
gotoxy(5,1);printf("maxx=%d maxxy=%d",i1,i2);
line(0,0,i1,i2); /* диагональ */
/*-------------------------*/
for(i=1;i<=479;i++) {
putpixel(i*1.33,i,WHITE);
f1=i*1.33;
f2=i;
gotoxy(30,10); printf("   x=%4.3f y=%4.3f",f1,f2);}
while(!kbhit());
closegraph();
return 10; }

   Текст достаточно очевиден. Добавлю, что функции getmaxx() и getmaxy() позволяют получить координату точки, находящейся в нижнем правом углу экрана. Координаты точки, находящейся в левом верхнем углу, всегда 0,0. 
Опираясь на знания, полученные в предыдущем выпуске рассылки, составим программу, позволяющую рисовать на экране – двигаем точку, а за точкой остается след. Клавиши – стрелка вверх и вниз, вправо и влево – клавиши управления точкой. Нажав клавишу Ввод – меняем цвет точки, а, нажав ESC – выходим из программу. Рекомендую всем самостоятельно загрузить (http://ipload.ru/file.php?File=11849060762 загрузка бесплатная! 453 b
) и рассмотреть исходник программы.
Перехожу ко второму вопросу. 
        Известно, что метод нахождения корня уравнения деления отрезка пополам – один из наиболее широко распространенных численных методов нахождения корня. Предлагаю всем ознакомиться с этим методом, просмотрев графические материалы и прослушав аудиолекцию по рассматриваемой теме. Естественно, что в лекции приводится и исходный текст программы на языке Си для нахождения корня. Лекцию можно загрузить отсюда (доступна БЕСПЛАТНО только в течении 5-ти дней!!! Предоставлена коллегой специально для нашей рассылки).
root.part01.rar 450 Kb http://ipload.ru/file.php?File=84360971799
root.part02.rar 450 Kb http://ipload.ru/file.php?File=67060655265
root.part03.rar 450 Kb http://ipload.ru/file.php?File=86836434026
root.part04.rar 450 Kb http://ipload.ru/file.php?File=14506707081
root.part05.rar 450 Kb http://ipload.ru/file.php?File=70419982371
root.part06.rar 450 Kb http://ipload.ru/file.php?File=71604980901
root.part07.rar 450 Kb http://ipload.ru/file.php?File=35014891168
root.part08.rar 314 Kb http://ipload.ru/file.php?File=03066284507

С уважением, 

Олег Павлович Маркатов

E-mail: markatof@mail.ru

 
 

В избранное