Пользовательские и библиотечные функции.

      Комментарии к записи Пользовательские и библиотечные функции. отключены

Понятия программы, модуля, программной единицы.

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

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

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

Структура программы.

Программа на языке С++ состоит из директив препроцессора, указаний компилятору, объявлений переменных и/или констант, объявлений и определений функций.

Объявление переменной задаёт имя и атрибуты переменной. Атрибутами переменной могут быть тип, количество элементов (для массивов), спецификация класса памяти, а также инициализатор. Инициализатор – это константа соответствующего типа, задающая значение, которое присваивается переменной при создании.

Объявление переменной имеет следующий синтаксис:

[] [= ] [, [= ] …];

Примеры объявления переменных:

int x; //Объявление переменной целого типаdouble y=exp(1); //Переменная вещественного типа инициализируется числом еint a,b=0; //Объявление двух переменных целого типа. Переменная b инициализируется значением 0.

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

Объявление, начинающееся с ключевого слова typedef, вводит новое имя для типа, не для переменной данного типа. Целью такого объявления часто является назначение короткого синонима для часто используемого типа. Например, при частом применении unsigned char можно ввести синоним uchar.

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

Пользовательские и библиотечные функции.

Объявление функции задаёт имя функции, тип возвращаемого значения и количество и типы параметров, которые должны присутствовать при вызове функции. Указание void в качестве возвращаемого значения означает, что функция не возвращает значения.

Определением функции является объявление функции, в котором присутствует тело функции. Определение функции имеет следующий синтаксис:

(){ [] [] }

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

Все функции в программе существуют на глобальном уровне и не могут быть вложены друг в друга.

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

Функция должна возвращать значение, если она не объявлена как void. И наоборот – значение не может быть возвращено из функции, если она объявлена как void. Как и передача параметров, семантика возврата значения из функции идентична семантике инициализации. Возвращаемое значение задаётся инструкцией return.

int f1(){} //Ошибка –не возвращается значениеvoid f2(){} //Правильноint f3(){return 1;} //Правильноvoid f4(){return 1;} //Ошибка – значение возвращается в функции void

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

inline int max(int x, int y) { return xy ? x : y; }

Заголовочные файлы.

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

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

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

Статьи к прочтению:

Язык программирования Си: Создание пользовательских библиотек функций


Похожие статьи: