Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпора по яп 2.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
204.42 Кб
Скачать

49. Функции. Определение функции, объявление функции и вызов функции. Возвращаемое значение функции.

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

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

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

Функция - это совокупность объявлений и операторов, обычно предназначенная для решения определенной задачи. Каждая функция должна иметь имя, которое используется для ее объявления, определения и вызова.

Структура функции

С использованием функций в языке СИ связаны три понятия :

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

  • описание функции (задание формы обращения к функции),

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

1. Определение функции – это ее полная реализация.

Определение задает:

1) заголовок функции, в котором определены

  • тип возвращаемого значения,

  • имя функции,

  • типы и число формальных параметров

2) тело функции, содержащее объявления переменных и операторы, определяющие действие функции.

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

Пример1:

int min(int a, int b)

{

if (a<b) return a;

else return b;

}

Очень важным оператором тела функции является оператор возврата в точку вызова:

return выражение;

или

return;

Выражение в операторе return определяет возвращаемое функцией значение. В теле функции может быть несколько операторов return. Тип возвращаемого значения определяется типом функции. Если функция не возвращает значения, т.е. имеет тип void, то выражение в операторе return опускается. В этом случае не обязателен и сам оператор return в теле функции.

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

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

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

2. Объявление (прототип) функции имя функции, тип возвращаемого значения, типы и число формальных параметров. Прототип является предварительным объявлением данных функции:

- имени функции;

- количества и типов параметров;

- типа результата.

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

Для функции, определенной в примере1, прототип может иметь вид

int min(int a,int b);

или

min(int,int);

Если функция не принимает параметры или ничего не возвращает, то используется ключевое слово void:

void print(void);

При наличии описания вызываемые функции не обязательно должны размещаться в одном файле с вызывающей функцией. В программах на языке СИ широко используются, так называемые, библиотечные функции, т.е. функции предварительно разработанные и записанные в библиотеки. Прототипы библиотечных функций находятся в специальных заголовочных файлах, поставляемых вместе с библиотеками в составе систем программирования, и включаются в программу с помощью директивы #include. При включении библиотечных функций мы используем следующую директиву: #include <имя_файла>. Например, #include <stdio.h>. Имя_файла определяет текстовый (заголовочный) файл, содержащий описание функций. Сами же функции оттранслированы и оформлены в виде объектных модулей и находятся в библиотеке компилятора.

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

int min(int a, int b); // описание функции

void main()

{

c=min(2,6); // вызов функции

}

// определение функции

int min(int a, int b) // заголовок функции

{ // тело функции

if (a<b) return a; // ...

else return b;

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]