Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЗФ_ОАиП / Лекции ГГУ Скорины - Программирование.doc
Скачиваний:
179
Добавлен:
21.03.2016
Размер:
2.27 Mб
Скачать

4. Что такое программа на языке с

Программы на языке С составляются их исходных файлов (с расширением .c или .cpp) и заголовочных файлов (с расширением .h или .hpp).

Файл с исходным текстом программы на языке С: task.cpp (или task.c). Заголовочные файлы подключаются к файлам с программами с помощью #include.

Для того чтобы выполнить программу, необходимо ее перевести на язык, понятный процессору – в машинные коды. Этот процесс состоит из нескольких этапов.

1. Сначала программа передается препроцессору, который выполняет директивы препроцессора, содержащиеся в ее тексте (например, #include – включение файла в текст программы).

2. Получившийся текст передается на вход компилятора. Заголовочные файлы не компилируются отдельно, исходные файлы включают их в себя. В результате компиляции программы создается объектный файл: task.obj.

3. Затем выполняется редактирование связей, чтобы из объектных модулей, библиотек и исполнительной библиотеки собрать конечную программу (исполняемый файл task.exe, загрузочный файл). Эту работу выполняет компоновщик (линковщик, редактор связей). Компоновщик физически связывает файлы (например, несколько obj-файлов), в один исполняемый файл и разрешает внешние ссылки. Внешняя ссылка создается каждый раз, когда программа из одного файла ссылается на код из другого файла (например, это происходит при вызове системных функций).

Если программа состоит из нескольких исходных файлов, они компилируются по отдельности и объединяются на этапе компоновки. Исполняемый модуль имеет расширение .exe и запускается на выполнение обычным путем.

Начальный код связан с процедурами инициализации, которые исполняются перед тем, как управление будет передано функции main(), и запуском функции main() на выполнение.

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

Про тесты и bat-файлы:

Для каждой программы необходимо подготовить:

  • полное множество тестов, размещая каждый тест в отдельном файле в том же каталоге, где находится исходный файл (создание файлов Shift+F4, F4 – редактор, файлы должны быть в DOS-кодировке, что важно для русских букв);

  • один командный файл (.bat) вида: task <test1.in task <test2.in ... task <testN.in где task – имя загрузочного модуля задачи, testI.in (I=1..N) – файлы с тестами в DOS-кодировке.

Работа в bc аналогична работе в bp:

  1. Ctrl-F9 – запустить программу на выполнение

  2. Alt-F9 – выполнить компиляцию модуля (.cpp → .obj)

  3. F9 – создать для программы exe-файл

  4. F8 – выполнить строку программы (если есть вызов функции, то вход в нее не выполняется)

  5. F7 – выполнить строку программы (если есть вызов функции, то выполняется вход в нее)

  6. F4 – выполнить программу да заданной строки и остановиться

  7. Ctrl-F8 – установить/снять контрольную точка (после запуска программа останавливается в этой точке)

  8. Ctrl-F2 – завершить выполнение программы

  9. Alt-F5 – посмотреть результат работы программы (не надо для этого запускать программу заново!!!)

  10. Окно watch (Ctrl-F7) – просмотр значений переменных

  11. Alt-0 – список окон (удобно переходить между окнами + показывает последние закрытые окна)

  12. Alt-N – переход к окну с номером N

Если при компиляции программы будет обнаружена ошибка, она появится в окне сообщений (Message window). Наличие ошибок (errors) не позволяет выполнить программу. Необходимо исправить найденные ошибки и снова скомпилировать программу. Однако даже если в программе нет синтаксических ошибок, некоторые ситуации могут вызвать подозрение у компилятора. Когда компилятор встречается с одной из таких ситуаций, то печатается предупреждение (warning). Чаще всего предупреждение указывает на реальную ошибку в программе. Программист должен проанализировать указанную ситуацию и принять соответствующее решение. В ваших программах предупреждений быть не должно.

Какие могут быть стандартные проблемы:

  1. bc не запускается – скорее всего запустили bc из каталога, к которому нет доступа по записи (не из своего каталога) или нет свободного места в вашем каталоге;

  2. выдало сообщение «Linker Error: Unable to open fileC0x(L).obj’» – надо подключить библиотеки (Options → Directories → везде должет быть диск C:);

  3. выдало сообщение «Error: Unable to open include file <stdio.h – надо подключить библиотеки (Options → Directories → везде должен быть диск C:) или неверно написано название h-файла;

  4. выдало сообщение «Error: Functionclrscrshould have a prototype» – надо написать #include для заголовочного файла, в котором определен прототип этой функции (стать курсором на функцию, нажать Ctrl-F1 и справа посмотреть название файла, который надо подключить).