![]() Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь 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; просмотров: 368; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.119.132.23 (0.012 с.) |