Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Многомодульные проекты

 

Разбиение программы на несколько файлов позволяет организовать многомодульный проект программы, в котором можно выполнять раздельную компиляцию отдельных частей проекта (только тех, которые были изменены) и сборку приложение из объектных модулей. При этом нужно помнить, что необходимые для компиляции библиотеки нужно подключать в каждом модуле. Внешний вид менджера решений и файлов проекта показан на рисунках.

 


// Пример 2.2.6

// многомодульные проекты

 

// прототипы личных функций - файл MyFunc.h

// объявление функции для вычисления среднего арифметического двух целых

double AVG(int,int);

 

// реализации личных функций- файл MyFunc.cpp

// подключение системных библиотек

#include <iostream>

using namespace std;

// включение прототипов личных функций из файла MyFunc.h

#include "MyFunc.h"

// реализация функции для среднего арифметического двух целых

double AVG(int x, int y) {

double result;

cout << "Мы в функции AVG(). x=" << x << "; y=" << y << endl;

result=(x+y)/2.;

cin.get();

return result;

}

 

// Главная программа - файл L2.5.6.cpp

#include <iostream>

using namespace std;

// включение личных функций из файла MyFunc.сpp

#include "MyFunc.h"

// Главная функция

int main() {

setlocale(LC_ALL, "Russian"); // для вывода на экран русского текста

int a,b; // исходные данные - локальные переменные функции main()

double r; // среднее арифметическое

cout << "Мы в main()-функции!\n";

cout << "Введите два числа через пробел: ";

cin >> a >> b;

cout << "\nmain: Вызываю функцию AVG()\n";

r=AVG(a,b); // вызов функции, a,b - параметры -> переменные

cout << "Мы снова в main()-функции!\n";

cout << "r= " << r << endl;

cin.get();

cout << "\nmain: Вызываю функцию AVG()\n";

r=AVG(5,7); // вызов функции, 5,7 - параметры -> константы

cout << "Мы снова в main()-функции!\n";

cout << "r= " << r << endl;

cin.get();

cout << "\nmain: Вызываю функцию AVG()\n";

r=AVG(5*a,7-b);// вызов функции, 5*a,7-b - параметры -> выражения

cout << "Мы снова в main()-функции!\n";

cout << "r= " << r << endl;

cin.get();

return 0;

}

Аналогичным образом можно оформить проекты для примеров 2.2.2,

2.2.3, 2.2.4.

Практические задания

1. Напишите и отладьте программу, печатающую на экране “I want learn C++”.

2. Добавьте к этой программе начальный стандартный блок комментариев.

3. Напишите программу для вычисления периметра и площади квадрата. Данные введите с клавиатуры, а результаты выведите на экран.

4. Напишите 3- варианта программы для вычисления суммы, разности, произведения, частного, средего значения двух целых чисел a и b и вывода результатов на экран:

a) числа a и b проинициализировать;

b) числам a и b присвоить значения;

c) значения чисел a и b ввести с клавиатуры.

5. Напишите прототип функции для вывода сведений об авторе программы, языке программирования, типе компьютера и ОС. Напишите ее реализацию. Вызовите ее из главной функции.

6. Напишите прототип функции для вычисления средней зарплаты трех человек. Напишите ее реализацию. Вызовите ее из главной функции.

Контрольные вопросы

1. Чем отличается компилятор от препроцессора?

2. Что делает директива #include?

3. Для чего в программе нужно подключать заголовочные файлы?

4. Какие две формы комментариев вы знаете, и чем они отличаются?

5. Какой объект применяют в С++ для вывода на экран? Для ввода с клавиатуры?

6. В чем разница между числами 100, 0100, 0x100,100L, 100.?

7. Как ввести с клавиатуры число 1.5·10-12?

8. Как вывести на экран символ псевдографики?

9. Правильна ли следующая константа ‘\t\t\t’?

10.Что произойдет, если при вводе числа вы наберете 10a34?

11.В чем разница между переменной, константой и неименованной константой?

12.Какое значение даст выражение 3/4? Как получить правильный результат?

13.Назовите основные типы переменных С++ и ключевые слова для их обозначения.

14.Объясните фразу “значение переменной - мусор”?

15.Для чего нужно инициализировать переменные? Как это сделать?

16.Для чего используются функции?

17. В чем особенность функции main()?

18.Как объявить главную функцию, если она завершена return 0;?

19.Для чего используются функции? Как дают имена функциям?

20.Для чего используются прототипы функций? Где их располагают?

21.В каком месте программы должны размещаться реализации функций?

22.Из каких частей состоит прототип? Каков их порядок следования?

23.Что такое тип возвращаемого значения? Что означает тип возврата void?

24.Сколько параметров может быть у функции?

25.Как вы понимаете термин “фактические параметры функции”?

26.Что может быть “фактическим параметром”?

27.Как вы понимаете термин “формальные параметры функции”?

28.Являются ли формальные параметры локальными переменными функции?

29.Какие имена могут иметь “формальные параметры”?

30.Как вызвать функцию, имеющую тип возврата void?

31.Как вызвать функцию, имеющую тип возврата не void?

32.Можно ли вызвать функцию, имеющую тип возврата не void без присваивания?

33.Можно ли при вызове изменять порядок следования параметров?

34.Для чего в функции используется оператор return?

35.Какое расширение должны иметь файлы прототипов и реализаций функций?

36.Каков смысл угловые скобок/двойных кавычек директивы #include?

37.Почему вы используете системные функции не описывая их прототипы?

38.В чем преимущество многомодульных проектов?

 


Тема 3: Переменные и константы

<== предыдущая лекция | следующая лекция ==>
Личные файлы заголовков и реализаций | Стандартные типы
Поделиться с друзьями:


Дата добавления: 2014-01-03; Просмотров: 1147; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.