Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Управление многофайловыми проектамиСодержание книги
Поиск на нашем сайте
Поскольку большинство программ состоит из нескольких файлов, желательно иметь возможность автоматической идентификации тех файлов, которые должны быть перекомпилированы и скомпонованы. Эти и многие другие обязанности выполняет встроенный администратор (менеджер) проектов системы Borland C. Администратор проектов позволяет задавать те файлы, которые относятся к описываемому проекту. Когда осуществляется перекомпиляция проекта, администратор проектов автоматически обновляет информацию, которая хранится в файле проекта. В файл проекта входит следующая информация: - имена всех файлов, входящих в проект; - пути для поиска файлов; - какие файлы зависят от других файлов, какие должны быть откомпилированы в первую очередь (решаются вопросы, касающиеся автоматически отслеживаемых зависимостей); - какие компиляторы и параметры командной строки должны использоваться при создании каждой из частей программы; - куда следует поместить результирующую программу; - размер кода, размер данных и число строк, полученных в результате последней компиляции. Использование администратора проектов Использование администратора проектов не представляет затруднений. Для построения проекта следует: - выбрать имя файла проекта (с помощью команды Project|Open Project); - добавить к проекту имена исходных файлов (с помощью команды Project| Add Item); - задать системе Borland C компиляцию файла (с помощью команды Compile|Make EXE). Затем, когда в меню Project станут доступны команды ведения проекта, можно: - добавлять имена файлов в проект или удалять их из него; - задавать параметры файла, входящего в проект; - просматривать содержимое файлов, включенных в конкретный проект. Пример работы с администратором проектов. Имеется программа, которая состоит из основного исходного файла с именем mymain.c, дополнительного файла myfuncs.c, содержащего определения функции и данные, обращения к которым имеются в основном файле, и файла myfuncs.h, где находятся объявления функций.
Файл mymain. c выглядит следующим образом: #include <stdio.h> // заголовочный файл в стандартном каталоге #include "myfuncs.h" // заголовочный файл в активном каталоге
main (int argc, char *argv[ ]) // передача в функцию main() параметров из //окружающей среды: argc – количество параметров, argv[i] - массив строковых //параметров, разделённых пробелом, argv[о] – имя программы { char *s; // класс памяти по умолчанию auto if (argc > 1) s = argv[1]; // выбор второго строкового параметра из массива else s = " вселенной"; // инициализация указателя строковой константой printf("%s %s.\n",GetString(),s); // вывод результирующей работы функции // GetString() и строки, связанной с указателем s }
Файл myfuncs.c выглядит следующим образом: char ss[] ="Приют на границе"; // массив ss[ ] проинициализирован строковой // константой char *GetString(void); // определение функции { return ss; // доступ к массиву из функции разрешён, т.к. класс памяти по // умолчанию extern } А файл myfuncs. h выглядит следующим образом: extern char *GetString(void); // класс памяти глобальный - extern. Пример /* ЗАНЯТИЕ N18 lab18.cpp - Основной файл проекта Разработал Петров Ю.В. Объявить глобальные переменные r (extern) и f (extern и static), а также локальные переменные. Объявить в отдельном файле функции, выполняющие работу с переменными с различными классами памяти. Определение функций также разместить в отдельных файлах. Выполнить инициализацию переменных. Вывести значения рассчитанных глобальных и локальных переменных на экран */
#include <iostream.h> #include <conio.h> #include "my_18.h"
int r=5; //Глобальная переменная r extern float f; //Глобальная переменная f = 0
void main() { auto int r; // Локальная переменная (auto) r r = Sum_Variable(4, 5); //Функция объявлена в файле "my_18.h" r=9 clrscr(); cout << "Локальная (auto) r=\t" << r << " Глобальная r="<<::r << endl; r+=10; //Локальная переменная r=19 ::r = Sum_Variable(4, 3); //Глобальная переменная::r=7 cout << "Локальная (auto) r=\t" << r << " Глобальная r=\t"<<::r << endl; cout << "Глобальная f=" << f; cout << endl << " Локальная (auto) f=\t" << Function_1() << " Статическая (static) f=\t" << Function_2(); cout << endl << " Локальная (auto) f=\t" << Function_1() << " Статическая (static) f=\t" << Function_2(); cout << endl << " Локальная (auto) f=\t" << Function_1() << " Статическая (static) f=\t" << Function_2(); getch(); } /* Локальная (auto) r= 9 Глобальная r= 5 Локальная (auto) r= 19 Глобальная r= 7 Глобальная f= 0.2 Локальная (auto) f= 8 Статическая (static) f= 2 Локальная (auto) f= 8 Статическая (static) f= 3 Локальная (auto) f= 8 Статическая (static) f= 4 */
// lab18f1.cpp – первый вспомогательный файл проекта // Объявление переменной r и определение функций extern r; // Глобальная переменная r
float Function_1() { auto float f= r; // Локальная переменная f return ++f; }
int Sum_Variable(int a, int b) {return a + b; }
// lab18f2.cpp – второй вспомогательный файл проекта //Определение функции static float f=1;//Статическая переменная (static) f float Function_2() { return ++f; }
// my_18.h – заголовочный файл //Объявление переменных и функций int Sum_Variable(int, int); float Function_1(); float Function_2(); static float f = 0.2; Ход работы 1 Изучить теоретические сведения. 2 В соответствии с индивидуальным заданием разработать алгоритм и программу, содержащую заголовочный файл и несколько модулей (2-3).В каждом модуле разработать отдельные функции. 3 Выполнить объявление переменных на внешних и внутренних уровнях с различными классами памяти. 4 Разработать функции, вызываемые из дополнительных модулей. Использовать объявленные переменные с различной областью действия (классами памяти). 5 Создать заголовочные файлы, содержащие информацию о функциях в дополнительных модулях. 6 Написать основную программу, подключающую необходимые заголовочные модули и использующую функции и переменные из других модулей. 7 Показать изменение переменных в различных областях действия. 8 Проверить доступ к переменным с различными классами памяти (внутри блока, модуля и в других модулях). 9 Как ограничивается доступ к членам класса? Как ограничивается доступ к членам класса? 10 Проверить выполнение инициализации переменных с классом памяти static, объявленных на внешнем уровне и внутри функции при нескольких вызовах. 11 Проверить доступ к функциям, объявленным с различными классами памяти. 12 Разработать функции, имеющие одно имя и различные области действия. Осуществить вызов этих функций. 13 Набрать программу на компьютере, и устранить ошибки. 14 Получить результат. 15 Оформить отчет. 16 Подготовиться к защите лабораторной работы, изучив контрольные вопросы по данной теме.
Индивидуальное задание к лабораторной работе №18 Составить проект для многофайловой структуры программы. Разработать заголовочный файл содержащий глобальные данные и объявления внешних функций. Разработать вспомогательный файл содержащий определения внешних функций и объявления и переопределения данных. Проект должен содержать: - объявление и использование глобальных и локальных переменных; - передача глобальных данных в качестве параметров функций; - переопределение глобальных данных внутри функций; - вызов из вспомогательного файла внешней функции; - вызов из основного файла внешних функций; - переопределение функций во вспомогательных файлах. Индивидуальные задания находятся в таблицах 18.1 и 18.2 Таблица 18.1 – индивидуальные задания
Таблица 18.2 - индивидуальные задания
Требования к содержанию отчёта приведены в лабораторной работе №1. Контрольные вопросы для подготовки и самостоятельной работы 1 Какие классы памяти (КП) допустимы применительно к переменным и функциям? 2 Какие классы памяти используются для переменных и функций по умолчанию? 3 Назовите область действия и время жизни данных и функций с различными классами памяти. 4 Можно ли использовать переменные с КП register в левой части выражения присваивания? 5 В каких случаях можно использовать переменные, а также функции с одинаковыми именами? 6 Можно ли переобъявить переменную во вложенных блоках? Какова область действия таких переменных? 7 Можно ли получить доступ к глобальной переменной в блоке, где объявлена локальная переменная с тем же именем? 8 Производится ли инициализация переменных с различными классами памяти? 9 Сколько раз производится инициализация переменных с КП static, объявленных в теле функции? 10 Какую информацию содержат заголовочные файлы и где они находятся? 11 Как предотвратить повторное включение заголовочных файлов в нескольких модулях? Лабораторная работа № 19 Изучение графических средств С (2 часа) Цель работы: приобрести практические навыки в использовании графических функций языка С.
Теоретические сведения Графические функции предназначены для управления видеорежимами работы дисплея, выводом графической информации на экран.
Графические функции void far detectgraph(int far *graphdriver, int far *graphmode); – определение доступного видео-драйвера. void far initgraph(int far * graphdriver, int far *graphmode, char far *pathtodriver); - установка видеорежима. vo id far setgraphmode(int mode); - установка видеорежима. void far restorecrtmode(void); - временный переход из графического видеорежима в текстовый. void far closegraph(void); - закрытие графической системы. void far setvisualpage(int page); - установка активной видеостраницы. void far setactivepage(void); -вывод на активную видеостраницу. int far getmaxx(void); - определение максимального значения координаты х. int far getmaxy(void); - определение максимального значения координаты у. void far setviewport(int left, int top, int right, int botton, int clip); - установка нового графического окна. void far getviewsettings(struct viewporttype far *viewport); - получение параметров текущего окна. void far moveto(int x, int y); void far moverel(int dx, int dy); - перемещение текущей графической позиции в координаты x, y или на величину dx, dy. void far setlinestyle(int linestyle, unsigned upattern, int thickness); - установка типа линии. i nt far getx(void); -получить текущую графическую позицию (х). int far gety(void); - получить текущую графическую позицию (у). void far clearviewport(void); - очистка текущего графического окна. void far cleardevice(void); - очистить активную видеостраницу. int far getmaxcolor(void); -определить максимальное количество цветов. void far setpalette(int colornum, int color); - установка палитры. void far setbkcolor(int color); -установка цвета фона. Доступ к пикселям unsigned far getpixel(int x, int y); - получить текущие параметры пикселя. void far putpixel(int x, int y, int color); - вывести пиксель с параметрами. Графические примитивы void far bar(int left, int top, int right, int botton); void far bar3d(int left, int top, int right, int botton, int depth, int topflag); void far fillpoly(int numpoints, int far *polypoints); void far fillelipse(int x, int y, int xradius, int yradius); void far pielipse(int x, int y, stangle, int endangle, int radius); void far sector(int x, int y, int stangle, int endangle, int xradius, int yradius); void far line(int x1, int y1, int x2, int y2); void far linerel(int dx, int dy); void far lineto(int x, int y); void far rectangle(int left, int top, int right, int botton); void far drawpoly(int numpoints, far *polypoints); void far circle(int x, int y, int radiuces); void far arc(int x, int y, int stangle, int endangle, int radius); void far ellipse(int x, int y, int stangle, int endangle, int xradius, int yradius); Пример /* ЗАНЯТИЕ N 19 Разработал Гармаш В.Н. Объявить массивы для вывода текста в графическом режиме, выполнить их инициализацию. Инициализировать графический режим работы. Выполнить расчеты и построить заданную геометрическую фигуру. Вывести тексты на экран с применением необходимых функций. */ #include <graphics.h> #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <math.h> #include <DOS.H> #define ANGLES 15 #define PIXEL_COUNT 1000 #define DELAY_TIME 100 /* in milliseconds */
char *str[]={"А","л","ь","ф","а"," ","Ц","е","н","т","а","в","р","а","."}; char st[]="_"; void demo(int x,int y,int size,int color); void demo1(void);
void main() {// Инициализация графического режима работы int graphdriver=DETECT,graphmode,errorcode; initgraph(&graphdriver,&graphmode,""); errorcode = graphresult(); if (errorcode!= grOk) { printf("Graphics error: %s\n", grapherrormsg(errorcode)); printf("Press any key to halt:"); getch(); exit(1); } //Рисование рамки по контуру экрана setcolor(9); //Установка цвета setlinestyle(0,0,3); //Установка типа линии line(0,0,getmaxx(),0); // Рисование линии line(0,0,0,getmaxy()); line(getmaxx(),0,getmaxx(),getmaxy()); line(0,getmaxy(),getmaxx(),getmaxy()); setcolor(10); // Вывод текста "ЗАДАНИЕ 19" settextstyle(GOTHIC_FONT,HORIZ_DIR,4); outtextxy(260,10,"ЗАДАНИЕ 19"); demo(320,250,125,11); // Функция вывода рисунка demo1(); // Функция вывода текста "Альфа Центавра" getch(); closegraph(); // Окончание графического режима работы clrscr(); }
void demo(int x,int y,int size,int color) { setcolor(color); setlinestyle(0,0,1); int xx[ANGLES],yy[ANGLES],i,j; for (i=0;i<=ANGLES-1;i++) { xx[i]=x+(int)(cos(i*2*M_PI/ANGLES)*size); yy[i]=y-(int)(sin(i*2*M_PI/ANGLES)*size); } for (i=0;i<=ANGLES-1;i++) { for (j=0;j<=ANGLES-1;j++) if (i!=j) { line(xx[i],yy[i],xx[j],yy[j]); } } }
void demo1(void) { int f1 = installuserfont("rtri.CHR"); //Установка шрифта unsigned int sz; void far *ptr; sz=imagesize(10,10,50,50); ptr=malloc(sz); getimage(10,10,50,50,ptr); int size = 2,tt,ff,i; while(!kbhit()) { tt=0; settextstyle(DEFAULT_FONT, HORIZ_DIR, size); for(i=0; i<3; i++) { setcolor(3); outtextxy(260,60,st); delay(90); setcolor(0); outtextxy(260,60,st); delay(90); } setcolor(3); ff=260; for(i=0; i<15; i++) { setcolor(3); settextstyle(f1, HORIZ_DIR, 4); outtextxy(260+tt, 50, str[i]); tt+=textwidth(str[i]); sound(30); delay(20); nosound(); settextstyle(DEFAULT_FONT, HORIZ_DIR, 2); outtextxy(260+tt+4, 60, st); delay(40); setcolor(0); outtextxy(260+tt+4, 60, st); delay(10); } settextstyle(DEFAULT_FONT, HORIZ_DIR, 2); for(i=1;i<4;i++) { setcolor(3); outtextxy(260+tt+4, 60, st); delay(90); setcolor(0); outtextxy(260+tt+4, 60, st); delay(90); } setcolor(3); ff=tt+260; tt=0; for(i=14;i>=0;i--) { settextstyle(f1, HORIZ_DIR, 4); tt+=textwidth(str[i]); sound(30); delay(20); nosound(); putimage(ff-tt, 50, ptr, COPY_PUT); settextstyle(DEFAULT_FONT, HORIZ_DIR, 2); setcolor(3); outtextxy(ff-tt-4, 60, st); delay(40); setcolor(0); outtextxy(ff-tt-4, 60, st); delay(10); } } } Ход работы 1 Изучить теоретические сведения. 2 В соответствии с индивидуальным заданием разработать алгоритм решения задачи и оформление интерфейса программы. 3 Подготовить и разметить на экране эскиз чертежа детали в масштабе 1:1. 4 Составить программу с использованием графических функций языка С для вывода на экран подготовленной графической информации. Размеры, указанные на чертеже, ввести с клавиатуры. 5 Набрать программу на компьютере и устранить ошибки. 6 Получить результат. 7 Оформить отчет. 8 Подготовиться к защите лабораторной работы, изучив контрольные вопросы по теме.
Индивидуальное задание к лабораторной работе №19. Варианты индивидуальных заданий находятся в таблице 19.1. Таблица 19.1 - индивидуальные задания
Рисунок 19.1 - индивидуальные задания
Требования к содержанию отчёта приведены в лабораторной работе №1. Контрольные вопросы для подготовки и самостоятельной работы 1 Какая функция применяется для установки видеорежима, инициализации графического режима работы? 2 Что означают параметры функций в приведенном примере? 3 Как закрыть графический режим работы? 4 Можно ли получить и установить координаты курсора на экране? В чём измеряются эти координаты? 5 Какие функции позволяют устанавливать цвета для выводимой информации, цвет фона, осуществлять различные виды заливки изображения? 6 Какие графические примитивы можно изобразить с помощью библиотечных функций? Какие параметры необходимы для построения этих примитивов? Лабораторная работа №20
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2016-04-26; просмотров: 360; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.225.149.158 (0.01 с.) |