Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЯП - ПОИТ (Бахтизин) часть 1 редакт.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
1.76 Mб
Скачать

5. Функции

5.1. Общие сведения

Функция по своей сути – это подпрограмма, которая может манипулировать данными и возвращать некоторое значение. Каждая программа имеет, по крайней мере, одну функцию main(), которая при запуске программы вызывается автоматически. Функция main() может вызывать другие функции, те в свою очередь могут вызывать следующие и т.д.

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

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

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

Таким образом, запись:

int myFunction();

означает, что функция myFunction возвращает целочисленное значение.

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

int myFunction(int x, float y);

Это объявление означает, что функция myFunction не только возвращает целое число, но и принимает два значения в качестве параметров: целочисленное и вещественное. Параметр описывает тип значения, которое будет передано функции при её вызове. Фактические значения, передаваемые в функцию, называются параметрами функции. Параметры функции могут быть разного типа.

int a = myFunction(3, 9.9);

Здесь переменная целого типа а инициализируется значением, возвращаемым функцией myFunction, а в качестве параметров этой функции передаются значения 3 и 9.9.

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

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

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

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

Рис.5.1. Составные части прототипа функции

В прототипе и в определении функции тип возвращаемого значения, имя и список формальных параметров должны соответствовать друг другу. Если такого соответствия нет, компилятор покажет сообщение об ошибке. Однако прототип функции не обязан содержать имена параметров, можно ограничиться только указанием их типов. Например:

long area(int, int);

Этот прототип объявляет функцию с именем area(), которая возвращает значение типа long и принимает два целочисленных параметра.

Для каждой функции всегда известен тип возвращаемого значения (если он явно не объявлен, то по умолчанию принимается тип int). Если функция не возвращает никакого значения, то в качестве типа возвращаемого значения, используйте void.

Определение функции состоит из заголовка функции и её тела. Заголовок подобен прототипу функции, с тем различием, что параметры поименованные и в конце заголовка отсутствует точка с запятой.

int area(int length, int width)

{

return (length * width);

}

Тело функции представляет собой набор выражений, заключённых в фигурные скобки.