![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Ход работы. Основные сведения о функциях в языке С++.Функция - это группа операторов, выполняющая законченное действие
Основные сведения о функциях в языке С++. Функция - это группа операторов, выполняющая законченное действие. К функции можно обратиться по имени, передать ей значения и получить из нее результат. Функции нужны для упрощения структуры программы. Передача в функцию различных аргументов позволяет, записав ее один раз, использовать многократно для разных данных. Чтобы использовать функцию, не требуется знать, как она работает - достаточно знать, как ее вызвать. Для использования функции тоже требуется знать только ее интерфейс. Интерфейс грамотно написанной функции определяется ее заголовком, потому что в нем указывается все, что необходимо для ее вызова: имя функции, тип результата, который она возвращает, а также сколько аргументов и какого типа ей нужно передать. Формат простейшего заголовка (прототипа) функции:
тип имя ([список параметров]);
В квадратных скобках записано то, что может быть опущено. Например, заголовок функции main обычно имеет вид:
int mainO;
Это означает, что никаких параметров этой функции извне не передается, а возвращает она одно значение типа int (код завершения). Функция может и не возвращать никакого значения, в этом случае должен быть указан тип void. Вот, к примеру, заголовок стандартной библиотечной функции, вычисляющей синус угла:
double sin (double);
Здесь записано, что функция имеет имя sin, вычисляет значение синуса типа double, и для этого нужно передать ей аргумент типа double. А вот заголовок функции memcpy, копирующей блок памяти длиной n байтов, начиная с адреса src, по адресу dest:
void *memcpy (void *dest, const void *src, size t n);
Эта функция возвращает указатель неопределенного типа на начало области памяти, в которую выполнялось копирование. Какой именно смысл имеет каждый из параметров функции, описывается в документации на функцию. Имена параметров при записи прототипа функции имеют чисто декоративное значение, то есть они могут понадобиться нам, а не компилятору, поэтому их можно опускать:
void *memcpy(void *, const void *. size t);
Неграмотно написанная функция наряду с аргументами использует и глобальные переменные, которые доступны из любого блока текущего файла. Поскольку это никак не отражается на заголовке, для использования такой функции требуется исследовать и ее текст. Все, что передается в функцию и обратно, должно отражаться в ее заголовке. Это требование не синтаксиса, а хорошего стиля. Заголовок задает объявление функции. Определение функции, кроме заголовка, включает ее тело, то есть те операторы, которые выполняются при вызове функции, например:
int sum(int a, int b) /* функция находит сумму двух значений */ { }
В тексте программы может содержаться произвольное количество объявлений одной и той же функции и только одно определение (в этом функции не отличаются от других программных объектов). Тело функции представляет собой блок, заключенный в фигурные скобки. Для возврата результата, вычисленного в функции, служит оператор return. После него указывается выражение, результат вычисления которого и передается в точку вызова функции. Результат при необходимости преобразуется по общим правилам к типу, указанному в заголовке. Функция может иметь несколько операторов возврата, это определяется алгоритмом. Для того чтобы вызвать функцию, надо указать ее имя, а также передать ей набор аргументов в соответствии с указанным в ее заголовке. Вызов функции, возвращающей значение определенного типа (то есть не имеющей тип void), может быть записан в любом месте, где по синтаксису допустимо выражение - в правой части оператора присваивания, в составе выражения, в цепочке вывода и так далее. Вот, например, как можно вызвать функции, приведенные выше:
double y, x1 = 0.34, x2 = 2; y = sin (x1); cout < < y < < ‘ ‘ < < sin (x2) < < endl; y = sin (x1 + 0.5) - sin(x1 - 0.5); char *cite = “ Never say never ”; char b [100]; memcpy (b, cite, strlen(cite) + 1); int summa, a = 2; summa = sum(a, 4);
В определении, в объявлении и при вызове одной и той же функции типы и порядок следования параметров должны совпадать. Для имен параметров никакого соответствия не требуется.
|