Формальные и фактические параметры



Формальные параметры - это параметры которые объявляются в заголовке функции при описании.

Фактические параметры - это параметры которые подставляются при вызове функции.

void myfunc(int x); // Объявление функции
void main(void)
{
int a;
a=5;
myfunc(a); // a- фактический параметр
}
// Описание функции
void myfunc(int x) // x - формальный параметр
{
x = x + 10;
printf("Вывод x = %d",x);
}

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

Перегрузка функций

При определении функций в программах обычно необходимо указать тип возвращаемого функцией значения, а также количество параметров и тип каждого из них. В прошлом (в первых версиях «чистого» С), если существовала функция с именем add_values, которая работала с двумя целыми значениями, а необходимо ещё было использовать подобную функцию для сложения трех целых значений, следовало создать функцию с другим именем. Аналогично если нужно было использовать подобную функцию для сложения значений типа float, то была бы необходима еще одна функция с еще одним именем.

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

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

#include <iostream.h>

int add_values(int a,int b)

{
return(a + b);
)

int add_values(int a, int b, int c)

(
return(a + b + c);
)

void main(void)

{
cout << "200 + 801 = " << add_values(200, 801) << endl;
cout << "100 + 201 + 700 = " << add_values(100, 201, 700) << endl;
}

Программа определяет две функции с именами add_values Первая функция складывает два значения типа int, в то время как вторая складывает три значения. Нет необходимости что-либо предпринимать специально для того, чтобы предупредить компилятор о перегрузке.

Одним из наиболее общих случаев использования перегрузки является применение функции для получения определенного результата, исходя из различных параметров. Например, предположим, что в программе есть функция с именем day_of_week, которая возвращает текущий день недели (0 для воскресенья, 1 для понедельника, ..., 6 для субботы). Программа могла бы перегрузить эту функцию таким образом, чтобы она верно возвращала день недели, если ей передан юлианский день в качестве параметра, или если ей переданы день, месяц и год:

int day_of_week(int julian_day)

{
// Операторы
}

int day_of_week(int month, int day, int year)

{
// Операторы
}

Значения параметров по умолчанию

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

Для обеспечения значения по умолчанию необходимо присваивать значение параметру с помощью оператора присваивания С++ прямо при объявлении функции, как показано ниже:

void some_function(int size=12, float cost=19.95)

//---->Значения по умолчанию

{
// Операторы функции

}

Использование библиотек функций

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

Ранее было сказано, что до того, как программа сможет вызвать функцию, компилятор C++ должен узнать определение или прототип функции. Поскольку функции библиотеки этапа выполнения не определены в основной программе, необходимо указать прототип для каждой библиотечной функции, которую намерен использовать программист. Для упрощения использования библиотечных функций компилятор C++ предоставляет заголовочные файлы, содержащие корректные прототипы. Таким образом, программам необходимо просто включить требуемый заголовочный файл с помощью оператора #include, а затем вызвать необходимую функцию. Например, следующая программа будет использовать функции библиотеки этапа выполнения time и ctime для вывода текущей системной даты и времени. Прототипы этих двух функций библиотеки этапа выполнения содержатся в заголовочном файле time.h:

#include <iostream.h>
#include <time.h> // Для функций библиотеки этапа выполнения

void main(void)

{
time_t system_time;
system_time = time(NULL);
cout << "Текущее системное время " << ctime(&system_time) << endl;
}

Порядок выполнения работы

1. Ознакомиться с теоретическими сведениями.

2. Получить вариант задания у преподавателя.

3. Выполнить задание.

4. Продемонстрировать выполнение работы преподавателю.

5. Оформить отчет.

6. Защитить лабораторную работу.


Дата добавления: 2019-09-13; просмотров: 221; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!