Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lab_cpp.doc
Скачиваний:
10
Добавлен:
07.06.2015
Размер:
2.81 Mб
Скачать

Контрольные вопросы для подготовки и самостоятельной работы

  1. Приведите общий формат объявления функции.

  2. Приведите формат определения функции.

  3. Какие классы памяти используются при объявлении функций.

  4. Охарактеризуйте формальные параметры приведенных функций.

  5. Что означает запись FILE*?

  6. Что означает термин-поток?

  7. Какие стандартные потоки открываются при выполнении программы?

  8. Какие существуют режимы работы с файлами?

  9. Какие заголовочные файлы содержат объявления библиотечных функций для работы с потоками.

  10. Какие функции обеспечивают форматированный ввод/вывод данных?

  11. Что такое буферизация и можно ли ею управлять?

Лабораторная работа № 18

Разработка программ с многофайловой структурой. Заголовочные файлы. Классы памяти переменных и функций

(4 часа)

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

Теоретические сведения

Управление многофайловыми проектами

Поскольку большинство программ состоит из нескольких файлов, желательно иметь возможность автоматической идентификации тех файлов, которые должны быть перекомпилированы и скомпонованы. Эти и многие другие обязанности выполняет встроенный администратор (менеджер) проектов системы 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

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