Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР 4-АП.doc
Скачиваний:
1
Добавлен:
15.11.2018
Размер:
187.9 Кб
Скачать

Создание собственных заголовочных файлов

Программист может сам создавать требующиеся ему заголовочные файлы с определением собственных функций.

Заголовочные файлы содержат объявления и определения, общие для различных программных файлов, и поэтому часто создаются и включаются в файлы программ директивой компилятора #include. В качестве таких объявлений и определений выступают классы, структуры, объединения, перечислимые типы и прототипы функций или их определения.

Директива #include используется для включения копии указанного в директиве файла в то месте, где находится эта директива. Чаще всего она применяется для включения в текст копии заголовочного файла.

Существуют три формы директивы.

#include <имя_заголовочного_файла>

#include "имя_заголовочного_файла"

#include идентификатор_макроса

Различие между первыми двумя формами директивы заключается в методе поиска препроцессором включаемого файла.

1. Если имя файла заключено в угловые скобки, то последовательность поиска препроцессором заданного файла в каталогах определяется заданными каталогами включения (include directories).

2. Если же имя файла заключено в кавычки, препроцессор ищет файл, просматривая каталоги в следующей последовательности:

  • каталог того файла, который содержит директиву #include;

  • текущий каталог;

  • каталоги, указанные опцией компилятора.

Если имя файла указано с путем, то препроцессор нигде больше этот файл не ищет.

3. Третья форма директивы предполагает наличие макроса, определяющего включаемый файл (в данной работе эта форма не рассматривается).

В качестве примера, иллюстрирующего вторую форму директивы #include, рассмотрим программу, где объявления пользовательских функций max3( ) и fakt() – вычисление факториала, вынесено в отдельно созданный заголовочный файл с именем u_head.h, а определения пользовательских функций max3( ) и fakt() – вычисление факториала, вынесено в отдельно созданный файл с именем u_head.cpp.

// Программа 4_7

// Создание пользовательского заголовочного файла u_head.cpp для

// определения функции max3() – поиска максимального из трех чисел

// и функции fakt() – расчет факториала аргумента

// Место объявления функций - пользовательский заголовочный файл

// u_head.h

// Место определения функций - пользовательский заголовочный файл

// u_head.cpp

// Вызов функции - по имени

// Возвращаемое значение – используется

// Метод передачи параметров в функцию - по значению

// Пользовательский заголовочный файл (u_head.h)

// Объявление функции max3()

double max3(double x, double y, double z);

// Объявление функции fakt()

int fakt(int x);

#include <iostream.h>

#include <conio.h>

#include "u_head.h" // Подключение пользовательского

// заголовочного файла u_head.h

// Полный путь указывать

// не обязательно (отсчет ведется с текущей директории bin)

using namespace std;

int main ()

{

clrscr();

double a, b, c;

int d;

cout << "\n ПОСЛЕДОВАТЕЛЬНО ВВЕДИТЕ ТРИ ЧИСЛА: a,b,c: " << endl;

cin >> a; cin >> b; cin >> c;

cout << "\n ВЫ ВВЕЛИ: a = " << a << "\t b = " << b << "\t c = " << c ;

cout << "\n ПОЭТОМУ max (a,b,c) = " << max3(a,b,c);

cout << "\n ВВЕДИТЕ ОДНО ЦЕЛОЕ ЧИСЛО: " << endl;

cin >> d;

cout << " \n ВЫ ВВЕЛИ ЧИСЛО " << d;

cout << "\n\n ВЫЧИСЛЕНИЕ ФАКТОРИАЛА ЧИСЛА: fakt(" << d

<< ") = " << fakt(d);

return 0;

}

// Пользовательский файл (u_head.cpp)

// Определение функции max3()

double max3(double x, double y, double z)

{

double max=x;

if (y > max)

max = y;

if (z > max)

max = z;

return max;

}

// Определение функции fakt()

int fakt(int x)

{

int f = 1;

for (int i=1; i<=x; i++)

f *= i; // или f = f * i;

return f;

}

Вариант результата работы программы:

4.2. Выполнения лабораторной работы

Порядок выполнения работы и методические указания к ее выполнению:

- создать заготовку консольного приложения, воспользоваться для этого мастером создания приложений Win32;

- наполнить полученную заготовку консольного приложения конкретным содержанием в соответствии с предложенным заданием;

- устранить все ошибки, возникшие на этапе компиляции исходного текста программы;

- выполнение программы осуществить в пошаговом режиме;

- вывести в окно предварительного просмотра значения всех промежуточных переменных;

- итоговый запуск исполняемого модуля выполнить из командной строки;

- с помощью динамической справки выяснить назначение всех служебных слов в программе;

- выполнить экспериментальную часть работы согласно полученного задания;

- оформить отчет и сдать преподавателю.

Задание 2.1 (по вариантам).

Используя механизм перегрузки функции, разработать и отладить программу вычисления значения y = f(x, y, z) для различных типов параметров. Конкретный вариант функции взять из задачи 2 ЛР№1. Предусмотреть задание параметров функции «по умолчанию» и с клавиатуры.

В качестве образцов использовать фрагменты программ 4_1, 4_5, 4_6.

Задание 2.2 (по вариантам).

Разработать и отладить программу вычисления выражения y = f(x), приведенного в приложении 1.

Каждой из трех ветвей вычисления значения у должна соответствовать отдельная функция (fun_1, fun_2 и fun_3). НА 12 БАЛЛОВ: Передача параметров в функцию fun_1 должна осуществляться по значению, в функцию fun_2 – используя указатели, а в функцию fun_3 – на базе ссылок.

В качестве образцов использовать фрагменты программ 4_3 и 4_4.

Задание 2.3 (по вариантам).

Аналогично заданию 2.2, однако все объявления и определения функций поместить в отдельный заголовочный файл с именем ***.h, а определения функций поместить в отдельный файл с именем ***.cpp.

В качестве образцов использовать фрагменты программ 4_3, 4_4 и 4_7.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]