Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2014_2015 / lab2_types.pptx
Скачиваний:
12
Добавлен:
27.12.2015
Размер:
9.57 Mб
Скачать

В соответствии с реализуемой целью, функция может

требовать для своей работы один или несколько входных

параметров, или аргументов. Она также может

возвращать некоторый результат. Пример: стандартная

функция sqrt принимает в качестве входного параметра

число x типа double и возвращает другое число типа

double – значение квадратного корня из x. Внутреннее

устройство (или реализация) этой функции скрыты от

пользователя, однако он может получить ее результаты

путем вызова этой функции, например, следующей

записью y = sqrt(x).

 

 

Перед использованием функцию надо определить, задав

ее имя, количество и тип ее аргументов, а также тип

возвращаемого результата. Общая форма записи

 

тип_результата имя_функции(список_аргументов)

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

//

тело

<операторы>;

//функции

}return <возвращаемое_значение>;

 

 

Функция, выбирающая наименьшее из трех вещественных чисел.

Входные параметры для функции – 3 вещественных числа, например a,b,c, результат – также вещественное число, со-держащее минимальное из них.

float minimal(float a, float b, float c) // заголовок

{float m = a; // локальная переменная m if(b<m) // выбираем наименьшее из 2-х m = b;

if(c<m) // выбираем наименьшее из 2-х m = c;

}return m; // возвращаем результат m к месту вызова

Существуют функции, не требующие для своей работы

входных параметров. Примером может служить getch( ) из библиотеки conio.h.

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

Для обращения к функции (ее вызова) используется имя функции с указанием набора передаваемых ей параметров в круглых скобках

имя_функции(список_фактических_параметров)

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

float x = 2.5, y = 3.1, z = 5.8; // 3 числа для сравнения float min;// переменная для результата

min = minimal(x,y,z); // вызываем функцию

. . .

Определение функции в списке аргументов содержит формальные параметры (float a, float b и float c), значения которых неизвестны на этапе написания тела функции. Они обретают конкретное содержание в момент вызова функции, когда в скобках указываются фактические параметры, то есть переменные или константы, имеющие определенное значение (как x, y, z из примера выше). Имена формальных и фактических параметров не обязаны быть одинаковыми. Неукоснительным требованием является лишь соответствие их типов, то есть тип первого в списке фактического параметра (float x) должен совпадать с типом первого формального параметра (float a), тип второго (float y) – со вторым (float b), и т.д.

Типичные ошибки программирования

1.В заголовке определения или в прототипе функции в списке аргументов вместо «,» используется «;» (int a; int b). Эта ошибка сопровождается сообщением «Error: Expression syntax».

2.Однотипные аргументы функции ошибочно определяются как (float x,y) вместо (float x, float y). Компилятор ответит на это сообщением «Error: type name expected».

3.Первая строка определения функции ошибочно завершается символом точки с запятой. Это приведет к сообщению «Error: Declaration terminated incorrectly».

4.Один или несколько аргументов функции повторно объявляются как локальные переменные. Компилятор распознает эту логическую ошибку и ответит на нее сообщением «Error: multiple declaration…».

Типичные ошибки программирования

5. Отсутствует оператор return в функции, которая должна возвращать значение. На этапе компиляции это не будет воспринято как синтаксическая ошибка, однако будет выведено предупреждение «Warning: function should return a value». В проти-воположной ситуации, при попытке возвратить результат из функции, объявленной как void, компилятор выдаст сообщение об ошибке «Error: function cannot return a value».

6.Определение одной функции внутри другой. Такая ошибка приведет к сообщению «Error: Declaration syntax error».

7.Попытка вызова функции, которая не описана ранее, и для которой не найден соответствующий прототип. Сообщение компилятора – «Error: call to undefined function».

Соседние файлы в папке 2014_2015