Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТТП (методичка).doc
Скачиваний:
3
Добавлен:
10.11.2018
Размер:
2.24 Mб
Скачать
  1. Процесс создания программы

Для того чтобы исходная программа на Си была переведена в машинный код (файл с расширением exe в операционной системе DOS), она должна пройти через три этапа: обработку препроцессором, трансляцию и компоновку.

В задачи препроцессора (preprocess — предварительно обрабатывать) входит подключение при необходимости к данной программе на Си внешних файлов, указываемых при помощи директивы #include, и подстановку макросов (macro — общий, macros — макроопределение).

Компилятор (compile — собирать) за несколько этапов транслирует (translate — переводить) то, что вырабатывает препроцессор, в объектный файл (файл с расширением obj), содержащий оптимизированный машинный код, при условии, что не встретились синтаксические или семантические ошибки. Если в исходном файле с программой на Си обнаруживаются ошибки, то программисту выдается их список, в котором ошибки привязываются к номеру строки, в которой они появились. Программист циклически выполняет действия по редактированию и трансляции до тех пор, пока не будут устранены все ошибки в исходном файле.

Компоновщик связывает между собой объектный файл (obj), получаемый от компилятора, с программами из требуемых библиотек (lib) и, возможно, с другими файлами. Компоновщик часто называют редактором связей или линковщиком (link — соединять, связывать). В результате компоновки получается файл с расширением exe (exe‑файл), который может быть исполнен компьютером. Полученный exe‑файл может быть запущен на выполнение из интегрированной среды разработки Turbo C аналогично запуску из командной строки DOS.

Рисунок 18 — Блок-схема процесса создания программы на Си

  1. Комментарии

Текст на Си, заключенный в скобки /* и */, компилятором игнорируется. Комментарии служат двум целям: документировать код и облегчить отладку. Так, если в программе на Си используется некоторый специальный алгоритм, то будет уместен комментарий, содержащий ссылку на источник, в котором описывается этот алгоритм. Вообще говоря, в программу следует вносить любой текст, поясняющий код. Но комментариями не нужно и злоупотреблять.

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

Внимание!

В среде программирования Turbo C, используемой в лабораторном практикуме, допустимо использовать однострочный комментарий // (заимствованный из Си++). В данном случае комментарием будет считаться любой текст, помещенный до конца текущей строки.

  1. Директива #include

Во многие программы на Си подставляется один или несколько файлов, обычно в самое начало исходного текста программы. Появление директив

#include <файл_1>

#include “файл_2”

...

#include <файл_n>

приводит к тому, что препроцессор подставляет в место директив тексты файлов файл_1, файл_2, …, файл_n соответственно.

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

Если имя файла заключено в двойные кавычки (как, например, “файл_2”), то поиск файла производится сначала в текущем каталоге. Если файл не обнаружен, то система переходит к поиску файла в специальном каталоге, заданном в настройках. Если и здесь требуемый файл не найден, то препроцессор выдаст сообщение об ошибке и процесс создания объектного файла будет прерван.

Внимание!

Обычная ошибка — добавление после директивы #include точки с запятой. В отличие от операторов языка Си директива #include не должна заканчиваться точкой с запятой.