Процедурное программирование на языке С. Часть 1. Основные понятия языка С: Методические указания к лабораторным работам по курсам «Алгоритмические языки и программирование» и «Процедурное программирование», страница 5

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

Алгоритм каждого блока кодируется совокупностью операторов-объявлений переменных и исполнимых операторов. Данная совокупность и связывается с понятием «функция». Таким образом, функции в языке Си – это своеобразные строительные элементы, «кирпичики», из которых «строится»  любая программа. Но перед тем, как «строить» программу из «кирпичиков», эти «кирпичики» следует создать в соответствии с определенными правилами, о которых речь пойдет дальше. Количество функций в одной программе не ограничено. Все функции в языке Си делятся на две большие группы:

·  функции, написанные программистом (или коллективом программистов) в процессе решения поставленной  задачи;

·  библиотечные стандартные функции.

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

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

2.2. ПРАВИЛА РАБОТЫ С ФУНКЦИЯМИ

Правило  2.1. Действия, которые можно выполнять с любой функцией:

·  определение (описание) функции (описание действий, ею выполняемых);

·  объявление функции (задание формы обращения к функции);

·  вызов функции.

Правило  2.2Определение функции состоит из заголовка функции и тела функции.

В соответствии с синтаксисом языка  форма определения функции:

[<спецификация класса памяти>][<спецификация типа возвращаемого значения>]<имя функции>([<список формальных параметров>])

[операторы объявления формальных параметров]

{ операторы объявления локальных переменных

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

  [<оператор return>]

}

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

Рассмотрим основные понятия в том порядке, в котором они должны следовать в соответствии с данной формой. Начнем с заголовка функции.

[<спецификация класса памяти>] Понятие класс памяти актуально только для программ, составленных из нескольких файлов.

[<спецификация типа возвращаемого значения>] Результат работы функции (возвращаемое значение)  при выполнении программы подставляется в точку вызова функции, где бы этот вызов ни встретился. Причем возвращаемое функцией значение всегда одно (или отсутствует). Функция не может вернуть в точку вызова несколько значений. Тип этого возвращаемого значения  указывается в заголовке функции и интерпретируется как тип функции. Если функция не имеет возвращаемого значения, то ее тип задается ключевым словом void, которое в данном контексте переводится как «пустой».