- •Предисловие.
- •1. Основные сведения, необходимые для создания программ на языке c.
- •1.1 Общая характеристика языка c.
- •1.2. Процесс создания исполняемого файла.
- •1.3. Распределение памяти программы.
- •1.4. Основные правила работы с программами.
- •2. Программная имитация электронных схем.
- •3. Описание программы образца.
- •3.1. Подпрограммы общего назначения.
- •3.2. Подпрограммы мехатронного объекта.
- •3.3. Подпрограммы графических примитивов.
- •3.4. Подпрограммы системных сообщений.
- •3.5. Подпрограммы звуковой сигнализации.
- •3.6. Глобальные константы и переменные.
- •4. Тексты исходных файлов программы образца.
- •4.1. Подпрограммы общего назначения.
- •4.2. Подпрограммы мeхатронного объекта.
- •4.3. Подпрограммы графических примитивов.
- •4.4. Подпрограммы системных сообщений.
- •4.5. Подпрограммы звуковой сигнализации.
- •4.6. Глобальные константы и переменные.
- •5. Методические указания к лабораторным работам.
- •6. Задания на выполнение лабораторных работ.
- •6.1. Лабораторная работа 1. Разработка графического отображения титульного листа программы.
- •6.2. Лабораторная работа 2. Разработка логической схемы мехатронного объекта.
- •6.3. Лабораторная работа 3. Разработка графического отображения логической схемы мехатронного объекта.
- •6.4. Лабораторная работа 4. Разработка графического отображения работы логической схемы мехатронного объекта.
- •6.5. Лабораторная работа 5. Разработка средств сигнализации (системные сообщения, звуковая сигнализация, дата, время).
- •7. Варианты лабораторных работ.
- •8. Описание dvd диска
- •Литература.
- •Содержание.
4.3. Подпрограммы графических примитивов.
ФАЙЛ SYS_PRIM.H.
[1] /*#########################################*/
[2] /*
[3] Copyright (C) 2008 by A.E.Stefanovich tel. 236-2729, 268-3916.
[4] Moscow State University of Instrument-making and Computer Sciences.
[5] (MGUPI).
[6] Chair TI-1.
*/
[7] /*#########################################*/
[8] /*
[9] File: SYS_PRIM.h
[10] PRIMITIVES
[11] */
[12] /*########################################*/
[13] #ifndef SYS_PRIM_
[14] #define SYS_PRIM_
[15] /*============================= Declarations */
[16] /*---- Elements and devices */
[17] int E
[18] (char *t,int n,int lx,int ly,int dx,int dy,int kx,int ky);
[19] int B
[20] (char *t,int n,int lx,int ly,int dx,int dy,int kx,int ky);
[21] /*---- Primitives */
[22] int RectangleN
[23] (int left_x,int left_y,int right_x,int right_y,int n);
[24] int Rectangle2
[25] (int left_x,int left_y,int right_x,int right_y);
[26] int EllipseN
[27] (int x, int y,int stangle,int endangle,
[28] int x_radius,int y_radius,int n);
[29] int Ellipse2
[30] (int x, int y,int stangle,int endangle,
[31] int x_radius,int y_radius);
[32] /*##################################### SUBPROGRAMS */
[33] /*IIIIIIIIIIIIIIII ЛОГИЧЕСКИЙ ЭЛЕМЕНТ СХЕМЫ */
[34] int E
[35] (char *t,int n,int lx,int ly,int dim_x,int dim_y,
[36] int kx,int ky)
[37] {
[38] /*---- Variable */
[39] char buf_str[80];
[40] /*---- Device */
[41] settextstyle(SMALL_FONT,HORIZ_DIR,4);
[42] setlinestyle(SOLID_LINE,0,NORM_WIDTH);
[43] setcolor(LIGHTGRAY);
[44] if(dim_x<3) dim_x=3;
[45] if(dim_y<3) dim_y=3;
[46] RectangleN(lx*kx,ly*ky,(lx+dim_x)*kx,(ly+dim_y)*ky,2);
[47] setcolor(YELLOW);
[48] settextjustify(RIGHT_TEXT,CENTER_TEXT);
[49] outtextxy((lx+dim_x-1)*kx,(ly+1)*ky,t);
[50] setcolor(WHITE);
[51] itoa(n,buf_str,10);
[52] settextjustify(LEFT_TEXT,CENTER_TEXT);
[53] outtextxy((lx+1)*kx,(ly+dim_y-1)*ky,buf_str);
[54] /*----*/
[55] return 0;
[56] }
[57] /*IIIIIIIIIIIIIIII БЛОК ЛОГИЧЕСКИХ ЭЛЕМЕНТОВ СХЕМЫ */
[58] int B
[59] (char *t,int n,int lx,int ly,int dim_x,int dim_y,
[60] int kx,int ky)
[61] {
[62] /*---- Variable */
[63] char buf_str[80];
[64] /*---- Device */
[65] settextstyle(SMALL_FONT,HORIZ_DIR,4);
[66] setlinestyle(SOLID_LINE,0,NORM_WIDTH);
[67] setfillstyle(SOLID_FILL,LIGHTGRAY);
[68] if(dim_x<3) dim_x=3;
[69] if(dim_y<3) dim_y=3;
[70] bar(lx*kx,ly*ky,(lx+dim_x)*kx,(ly+dim_y)*ky);
[71] setcolor(YELLOW);
[72] rectangle(lx*kx,ly*ky,(lx+dim_x)*kx,(ly+dim_y)*ky);
[73] settextjustify(RIGHT_TEXT,CENTER_TEXT);
[74] outtextxy((lx+dim_x-1)*kx,(ly+1)*ky,t);
[75] setcolor(WHITE);
[76] itoa(n,buf_str,10);
[77] settextjustify(LEFT_TEXT,CENTER_TEXT);
[78] outtextxy((lx+1)*kx,(ly+dim_y-1)*ky,buf_str);
[79] /*----*/
[80] return 0;
[81] }
[82] /*ПРЯМОУГОЛЬНИК С ТОЛЩИНОЙ ЛИНИЙ В N ПИКСЕЛ. */
[83] int RectangleN
[84] (int left_x,int left_y,int right_x,int right_y,int n)
[85] {
[86] int i;
[87] for(i=0;i<n;i++)
[88] {
[89] rectangle
[90] (left_x+i,left_y+i,right_x-i,right_y-i);
[91] if((left_x+i)>=(right_x-i)) break;
[92] if((left_y+i)>=(right_y-i)) break;
[93] }
[94] /*----*/
[95] return 0;
[96] }
[97] /*III ПРЯМОУГОЛЬНИК С ПЕРИМЕТРОМ ИЗ ДВУХ ЛИНИЙ */
[98] int Rectangle2
[99] (int left_x,int left_y,int right_x,int right_y)
[100] {
[101] rectangle
[102] (left_x,left_y,right_x,right_y);
[103] rectangle
[104] (left_x+2,left_y+2,right_x-2,right_y-2);
[105] /*----*/
[106] return 0;
[107] }
[108] /*IIIIIIIIII ЭЛЛИПС С ТОЛЩИНОЙ ЛИНИЙ В N ПИКСЕЛЕЙ */
[109] int EllipseN
[110] (int x, int y,int stangle,int endangle,
[111] int x_radius,int y_radius,int n)
[112] {
[113] int i;
[114] for(i=0;i<n;i++)
[115] {
[116] ellipse
[117] (x,y,stangle,endangle,x_radius-i,y_radius-i);
[118] if(x_radius<=0) break;
[119] if(y_radius<=0) break;
[120] }
[121] /*----*/
[122] return 0;
[123] }
[124] /*IIIIIIIIIIIIIII ЭЛЛИПС С ПЕРИМЕТРОМ ИЗ ДВУХ ЛИНИЙ */
[125] int Ellipse2
[126] (int x, int y,int stangle,int endangle,
[127] int x_radius,int y_radius)
[128] {
[129] ellipse
[130] (x,y,stangle,endangle,x_radius,y_radius);
[131] ellipse
[132] (x,y,stangle,endangle,x_radius-2,y_radius-2);
[133] /*----*/
[134] return 0;
[135] }
[136] /*IIIIIIIIIIIIIIIIIIIIIIIIIIIIII*/
[137] #endif /* SYS_PRIM_ */
[138] /*########################################################*/