Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Добавление новых файлов в проект в среде разработки Visual Studio 2008Содержание книги
Поиск на нашем сайте
Для добавления новых файлов в проект новых файлов в проект необходимо вызвать контекстное меню над именем проекта в «Проводнике решений» (Solution Explorer) (см. рисунок 13.1) и далее выбрать раскрывающийся пункт «Добавить» (Add). В нем нас на текущий момент будут интересовать два подпункта “New Item …” (Новый объект) и “Exiting Item …” (Существующий объект). Первый создает новый файл, одного из предложенных типов, а второй добавляет к проекту уже существующий. Диалоговое окно с вариантами доступных для создания файлов представлено на рисунке 13.2. Результат добавления файлов в проект представлен на рисунке 13.3. Теперь достаточно воспользоваться директивой #include для использования функций, констант и типов данных, располагающихся в новых файлах. Рисунок 13.1 – Добавление нового файла в проект
Рисунок 13.2 – Диалоговое окно выбора типа добавляемого файла
Рисунок 13.3 – Результат добавления новых файлов в проект
Пример работы с многофайловыми проектами Разберем работу с многофайловыми проектами на примере задачи из предыдущей лабораторной работы.
Пример: Нахождение расстояния между точками Задание. Написать программу, которая находит расстояние между двумя точками. Координаты могут задаваться как в декартовой, так и в полярной системе координат. Предусмотреть функции перевода из декартовой системы в полярную и обратно.
Алгоритм решения: - Задать или ввести с клавиатуры координаты точек. - Для пары точек определить расстояние по одной из формул: o для декартовой системы: o для полярной системы: - Вывести результаты на экран.
Определение требуемых типов данных.
Для удобства хранения информации о координате точки в одной из систем координат удобно воспользоваться структурами, хранящими пары координат одной и той же точки. Для простоты назовем их cartesian для декартовой, и polar для полярной системы координат.
Разбиение на подзадачи.
В результате описанного алгоритма и задания определяем спецификации нужных нам функций. Для удобства использования воспользуемся перегрузкой: 1. double len(cartesian a, cartesian b) – принимает две координаты в декартовой системе и возвращает длину. 2. double len(polar a, polar b) – принимает две координаты в полярной системе и возвращает длину. 3. double len(cartesian a, polar b) – принимает первую координату в декартовой системе, а вторую в полярной, и возвращает длину.
4. double len(polar a, cartesian b) – принимает первую координату в полярной системе, а вторую в декартовой, и возвращает длину. 5. polar cartesian_to_polar(cartesian x) – переводит координаты точки из в декартовой системы в полярную. 6. cartesian polar_to_cartesian(polar x) – переводит координаты точки из в полярной системы в декартову.
Разбиение на модули. Исходя из логики работы программы, а также, возможного дальнейшего применения полученных результатов естественным будет разбить ее на два файла: PRG-Lab13.cpp – содержащий точку входа в программу, а также основные вызовы функции и взаимодействие с пользователем; points.cpp – содержащий реализации вышеперечисленных функций; а также points.h – содержащий интерфейсы данных функций и типы данных, и служащий для подключения возможностей работы с точками в различных системах координат.
Файл points.h
// points.h: Содержит определения основных типов и прототипы функций. // #ifndef POINTS_H #define POINTS_H
//Объявления типов //Точка в декартовой системе координат struct cartesian{ double x, y; };
//Точка в полярной системе координат struct polar{ double r, pi; };
//Прототипы функций double len(polar a, polar b); double len(cartesian a, cartesian b); double len(cartesian a, polar b); double len(polar a, cartesian b);
polar cartesian_to_polar(cartesian x); cartesian polar_to_cartesian(polar x); #endif
Файл points.cpp
Примечание. Обратите внимание на повторное использование вызовов уже существующих функций. Данная техника позволяет добиться быстрого и удобного внесения корректив (хотя и за счет несущественной потери в производительности). Например, при наличии ошибки, скажем, при неверно запрограммированной формуле, ее достаточно исправить лишь в одном месте, а не искать по всему тексту модуля.
// points.cpp: Содержит определения функций // #include "points.h" #include <math.h> double len(polar a, polar b) { return sqrt(pow(a.r, 2) + pow(b.r, 2) - 2*a.r*b.r*cos(a.pi - b.pi)); } double len(cartesian a, cartesian b) { return sqrt(pow(a.x - b.x, 2) + pow(a.y - b.y, 2)); } double len(cartesian a, polar b) { cartesian c; c = polar_to_cartesian(b); return len(a, c); } double len(polar a, cartesian b) { return len(b, a); } polar cartesian_to_polar(cartesian x) { polar y; y.r = sqrt(pow(x.x, 2) + pow(x.x, 2)); if (y.r == 0) y.pi = 0; else y.pi = asin(x.y/y.r); return y; } cartesian polar_to_cartesian(polar x) { cartesian y; y.x = x.r*cos(x.pi); y.y = x.r*sin(x.pi); return y; }
Файл PRG-Lab13.cpp
// PRG-Lab13.cpp: Основной файл проекта, содержит точку входа в программу // #include <iostream> #include "points.h" using namespace std; void main(int argc, char* argv[]) { setlocale(LC_ALL, "Russian"); const double PI = 3.14159; cartesian a = {3, 0}, b = {1, 1}; polar c = {1.41, PI/4}, d = {3.1, 0.95}; //вызовы перегруженных функций //для точек в различных системах координат //декартова - декартова cout << len(a, b) << endl; //полярная - полярная cout << len(c, d) << endl; //декартова - полярная cout << len(a, d) << endl; //полярная - декартова cout << len(c, b) << endl; }
Таким образом мы получили собственную мини библиотеку, которую можно расширять в дальнейшем и использовать в других проектах. Препроцессор Препроцессор языка С — это небольшой текстовый редактор. Ему передается текст программы, написанной на языке С, он просматривает текст и первым делом удаляет из него все комментарии, оставляя на месте каждого комментария пробел. Затем он ищет предназначенные ему директивы и выполняет их. Каждая директива препроцессору записывается на отдельной строке. Перед директивой в этой строке могут быть только пробельные символы. Директива начинается со знака номера #. Вот этот знак и отыскивает препроцессор, чтобы выполнить указания директивы.
|
||||
Последнее изменение этой страницы: 2016-12-11; просмотров: 272; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.144.2.48 (0.009 с.) |