Заголовочные внешние файлы – хранилища служебной информации, в частности, объявлений функций (структур, аналогичных их заголовкам). 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Заголовочные внешние файлы – хранилища служебной информации, в частности, объявлений функций (структур, аналогичных их заголовкам).



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

Внешние, как любые файлы, хранятся на магнитных носителях (дисках).

Препроцессор– системная программа для предварительной (до компиляции) машинной обработки программного модуля пользователя.

Основное назначение препроцессора (в большинстве случаев) – включение текстов заголовочных внешних файлов.

Использование препроцессора позволяет облегчить написание Си/Си++-программ, делать их мобильными, легко читаемыми и удобными для отладки.

Исходя из изложенного, можно для языка Си/Си++ дать поясняющее определение программы.

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

Физически любая Си/Си++-программа реализуется как исходный модуль, состоящий из заголовка программы и её тела, расположенных последовательно (рис. 3.10).

Рис. 3.10. Структура исходного модуля программы

Рассмотрим основные элементы программы.

Заголовок программы

Заголовок (шапка)– начальная часть программы, предназначенная для выполнения некоторых вспомогательных операций до начала основных вычислений.

Заголовок содержит последовательность основных элементов (рис. 3.11).

Рис. 3.11. Структура заголовка программы

Комментарий– строка (строки) символов, подлежащих распечатке в тексте программы (исходном модуле).

Структура комментария:

/* текст */

, где      текст – последовательность символов, создающих комментарий;

   /* */ – ограничители комментария.

Комментарии могут быть заголовочными и внутренними.

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

Внутренние комментарии используют для облегчения читаемости программы (отдельных её участков). Они располагаются в тексте программы. Варианты расположения различны.

ü Внимание! Комментарий, в отличие от символьной строки, улучшает понимание текста программы, а не результатов ее выполнения.

Комментарий может содержать любое число строк. Использование вложенных комментариев запрещается.

Рассмотрим варианты выполнения комментариев.

Пример комментария в виде отдельной строки:

/* Это строчный комментарий */

Примеры многострочных комментариев представлены в табл. 3.17.

Таблица 3.17

Трёхстрочный оформленный одним Трёхстрочный неструктурированный Трёхстрочный структурированный
/*Три строки – один комментарий */ /* Три строки */ /* – */ /* один комментарий */ /*  Три строки  */ /*             –       */ /* один комментарий */

Первый (левый) вариант может использоваться только в самостоятельных строках (не содержащих операторов).

Третий (второй) универсален, т.к. может применяться как в самостоятельных строках, так и завершать строки с операторами.

На основании изложенного выполним структурированный вариант конкретного заголовочного комментария:

/* Программа расчёта площади прямоугольника */

/* Линейный вычислительный процесс */

/* Разработал студент гр. А031 Юдин С.П. */

/* Дата последней модификации 12.11.2004 */

Его сокращённый вариант может иметь вид:

/* Расчёт площади прямоугольника. Линейный процесс. */

/* Разработал студент гр. А031 Юдин С.П. */

Внутренние комментарии также выполняются несколькими вариантами:

· оформленным отдельной строкой, например

/* Формирование ввода-вывода исходных данных */

scanf(…

printf(…

· записанным после оператора, например

int p; /* счетчик числа посетителей */

· завершающим операторы, например

int k;      /* описатели */

float x, y; /* переменных */

Директива препроцессора– указание (команда), предписывающая препроцессору выполнение конкретных действий.

ü Внимание! Область действия директив – от точки их расположения до конца программы (файла).

Следовательно, для распространения действия директивы на всю программу, ее необходимо помещать в заголовок.

Характерный признак директивы – специальный символ (#), указываемый перед ней. Между знаком # и названием директивы могут располагаться пробелы.

Наиболее распространены два вида директив;

· включающие;

· заменяющие (подставляющие).

Включающая директива– предписание подключения указанного в ней внешнего заголовочного файла в исходный модуль программы пользователя.

Структуры включающей директивы:

# include “СВФ”

# include <СВФ>

, где         # – символ директивы;

    include – название директивы (ключевое слово «включить»);

        СВФ – спецификация внешнего заголовочного файла, включаемого в программу;

   “ ” (< >) – ограничители СВФ.

Директива предписывает препроцессору включение в точке её расположения содержимого файла с указанной СВФ.

Ограничители < >, предписывают поиск заголовочного файла в стандартных каталогах. Ограничители “ ”, определяют начало поиска с каталога программ пользователя и продолжение поиска в стандартных каталогах.

В качестве СВФ, в большинстве случаев, используется структура:

имя.h

, где имя – идентификатор заголовочного файла;

    h – тип (расширение имени) внешнего файла;

   .  – разделитель имени и типа.

Например, в качестве директив препроцессора могут использоваться:

Первая директива предписывает в исходный модуль включить файл с именем stdio (объявления функций стандартного ввода-вывода), вторая – stdlib (объявления стандартных функций), третья – math (объявления математических функций).

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

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

Количество внешних файлов, подлежащих включению в программу пользователя, не ограничено.

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

В частности файл stdio.h содержит объявления функций необходимых при решении любых задач:

scanf – форматный ввод с клавиатуры;

printf – форматный вывод на экран;

fprintf – форматный вывод в поток.

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

Структура директивы:

#define имя значение

, где            # – символ директивы;

  define  – название директивы (ключевое слово «заменить»);

    имя    – идентификатор переменной;

значение – константа, заменяющая указанную именем переменную.

Представленный вариант структуры является простейшим и используется при необходимости замены поименованной величины её конкретным значением.

Подставляющая директива предписывает во всём диапазоне своего действия заменить имя (указанное слева) на значение (указанное справа).

Например, директива

#define PI 3.1416

предписывает замену идентификатора (PI) указанным значением (3.1416) при выявлении его в теле программы.

Идентификаторы рекомендуется записывать заглавными буквами.

Описатели переменных подробно рассмотрены в разд. 3.5.2.3.

Рассмотрим некоторые дополнительные сведения. В языке Си/Си++ с каждым операндом связывается область действия – часть программы, в которой этот операнд доступен. Область действия зависит от расположения описателя операнда в программе.

Переменные, в зависимости от места описания в программе, делятся на глобальные (внешние) и локальные (внутренние).

Глобальные– переменные, описанные в заголовке программы, т.е. доступные в пределах всей программы (ее исходного модуля).

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

Локальные– переменные, описанные внутри тела функции (блока) и доступные в ее (его) пределах, но совершенно невидимые для других функций (внешних блоков), если они имеются.

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

Идентификаторы локальных переменных рекомендуется записывать строчными буквами.

Тело программы

Тело– основная конструкция программы, реализующая требования алгоритма (взаимосвязанных алгоритмов) решения.

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

В простейшем варианте решение состоит из одного (основного) алгоритма. При этом тело программы есть одна (главная) пользовательская функция.

Структуры возможных вариантов тела программы представлены на рис. 3.12.

Рис. 3.12. Варианты структур тела программы

Заголовок пользовательской функции определяется ее структурой (см. разд. 3.5.2.4).

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

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

Тело главной (дополнительной) функции оформляется в виде составного оператора и объединяет используемые в решении операторы.

Тело функции детализируется последовательностью элементов (рис. 3.13).

Структуры и правила описания переменных, операторов (ввода-вывода, присваивания и т. п.) и комментариев изложены ранее.

 

Рис. 3.13. Структура тела функции



Поделиться:


Последнее изменение этой страницы: 2021-01-08; просмотров: 85; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.117.196.217 (0.024 с.)