Параметри функції зі значеннями за замовчуванням - студопедія

Досить часто при проектуванні функції розробник усвідомлює, що деякі з її параметрів в переважній більшості викликів мають конкретні певні значення, і лише іноді їм присвоюються інші значення. Відомим прикладом з математики є функція витягання кореня. Найбільш вживаними є квадратний корінь, тому в науковій мові слово «корінь» за замовчуванням означає «квадратний корінь». Також і під час запису математичних формул у квадратного окрня дозволяється опускати ступінь:.

Це наводить на думку, що в більшості випадків передача таких параметрів - чиста формальність, замість цього їм можна присвоїти конкретні значення за замовчуванням і користуватися ними. У різних мовах програмування ця ідея реалізована у вигляді параметрів функції зі значеннями за замовчуванням. Розглянемо спочатку ілюструє приклад.

using namespace std;

double root (double x, unsigned int n = 2)

if (n == 2) return sqrt (x);

cout<

У наведеному прикладі функція витягання кореня з числа правильно обчислює коріння лише для позитивних чисел. Природно, не важко буде доопрацювати її до повноцінної математичної функції, яка вміє, наприклад, витягувати коріння непарних ступенів з негативних чисел, а також корінь будь натуральної ступеня з нуля.

Однак тут слід звернути увагу на інше: другий параметр функції за замовчуванням має значення 2. Це видно з опису функції: після імені параметра присутній знак «=» і значення за замовчуванням. Тому даної функції при виклику можна передавати або один, або два параметри, що демонструється в функції main. Не буде помилкою виклик функції у вигляді root (4,2), і це певною мірою сприяє прозорості коду. З іншого боку, якщо функція має десяток параметрів, з яких половина практично завжди має одні й ті ж значення, то можна істотно зменшити код, надавши їм значення за замовчуванням.

Відзначимо деякі ситуації, в яких має сенс використовувати такий підхід (і це реалізовано в системних функціях):

· Читання символьного рядка з консолі. Природним обмежувачем є символ перекладу рядка, тому за замовчуванням відповідний параметр має значення '\ n'. При бажанні можна вказати інший символ-обмежувач.

· Висновок табулированного тексту (в кілька колонок рівної ширини). Колонки прийнято розділяти пробілами, проте можна використовувати і інший символ-роздільник.

При використанні параметрів функції зі значеннями за замовчуванням потрібно дотримуватися наступних правил:

1. При наявності параметрів, які не мають значень за замовчуванням, вони повинні розташовуватися на початку списку параметрів. Параметри зі значеннями за замовчуванням слідують за ними.

2. Слід вкрай акуратно розробляти перевантажені функції з параметрами, що мають значення за замовчуванням. Наприклад, компілятор допускає перевантаження функції наступним чином:
int f (int x, int y = 1)
return x * y;
>
int f (int a) return 2 * a;
>
Але спроба викликати таку функцію оператором f (3) призводить до помилки компіляції, так як неможливо визначити, що мав на увазі програміст під цим викликом.

3. Параметри зі значеннями за замовчуванням повинні бути простих типів: числові, булеві, покажчики (зокрема, рядки як покажчики на масиви символів). Масиви і структури не можуть мати значення за замовчуванням.

Приклад обчислення площі фігури (під графіком функції)

Параметри функції зі значеннями за замовчуванням - студопедія

Знайти площу фігури, обмеженої лініями x = a,

x = b, y = 0, y = f (x). Площа ф. вважаємо рівній сумі площ

N трапецій. Висота трапеції - H = (b-a) / N.

S = H * (f (a) + f (a + H) + f (a + H) + f (a + 2H) + ... + f (b)) / 2

using namespace std;

double MyS (double, double, unsigned = 1000000);

Схожі статті