Аргументи по умовчуванню

При виклику функції їй передаються конкретні значення параметрів.Можна задати значення параметрів по умовчанню. Значення задається в заголовку функції. Це буде означати, що якщо значення параметра, який описаний як параметр по умовчанню, при виклику не буде вказано, то в тілі функції буде використано значення цього параметру, що вказано по умовчанню. Якщо такий параметр задано при виклику, то в тілі функції буде використовуватись вказане значення. Параметри по умовчанню записуються в заголовку функції останніми. При виклику можна опускати тільки крайні параметри.Наприклад, функції розраховує об‘єм паралелепіпеду: float Vbox(float len=1,float w=1,float h=1) {return len*w*h;} Можна викликати цю функцію наступним чином:Vbox () всі параметри будуть по умовчаннюVbox (2.5) len=2.5, інші по умовчаннюVbox (2.5,4) по умовчанню тільки hVbox (2.5,4,5.9) значень по умовчанню не буде Параметри по умовчанню повинні бути вказані при першому описі функції, як правило в прототипі.Значення по умовчанню можуть бути константами, глобальними змінними, викликами функцій. Перевантаження функційМожна визначити кілька функцій з одним і тим же іменем, якщо ці функції мають різні набори параметрів. Ця особливість називається перевантаженням функцій. При виклику перевантаженої функції компілятор визначає відповідну функцію за допомогою аналізу кількості, типів і порядку слідування параметрів у виклику.Перевантаження, як правило, використовується для створення кількох функцій з однаковим імене призначених для виконання подібних задач, але з різними типами даних.Наприклад: int square (int x) {return x*x;} double square (double x) {return x*x;} Рекурсивні функції

Будь-яка функція в програмі мовою С++ може бути викликана рекурсивно, тобто вона може викликати саму себе. Компілятор допускає будь-яке число рекурсивних викликів. В кожен момент часу доступні тільки значення поточного виклику.

 

n! = 1 при n=0; n*(n-1)! при n>1 Класичний приклад рекурсії - це математичне визначення факторіала n!
long fakt(int n) { return ( (n= =1) ? 1 : n*fakt(n-1) ); }   Функція, що обчислює факторіал

Питання для самоперевірки

1) Записати прототип функції, яка визначає кількість парних чисел в заданому масиві з 15 цілих чисел

2) Записати прототип функції, яка вводить дані в масив 10 дійсних чисел

3) Описати функцію, яка в заданому масиві 20 дійсних чисел визначає кількість чисел додатніх, відємних і рівних нулю.

4) Який тип повинен мати результат функції, якщо вона не повертає значень. Привести приклад прототипу такої функції.

5) Функція знаходить суму двох дійсних чисел. Описати заголовок і тіло функції.

6) Написати функцію, яка визначає і повертає відповідь парне задане ціле число чи ні.

7) Записати функцію, яка виводить сповіщення "Робота закінчена."

8) Записати заголовок функції, яка не отримує жодного параметра і не повертає результату.

9) Знайдіть і опишіть помилку в функції:

int sum(int x,int y)

{

int result;

result=x+y;

}

10) Знайдіть і опишіть помилки в функції:

void fun( float a);

{

float a;

a=2*a;

cout<<a<<endl;

}

11) Напишіть функцію, яка визначає значення гіпотенузи прямокутнього триутника, якщо відомі його катети.

12) Напишіть функцію, яка визначає і повертає відповідь чи одне задане ціле число кратне іншому.

13) Записати заголовок функції, яка знаходить суму елементів двох заданих масивів розміром 15 дійсних елементів кожен.

14) Написати функцію, яка повертає символ проміжку, якщо переданий символ є символом крапки.

15) Написати прототип функції, яка до елементів одного заданого масиву 10 дійсних чисел додає відповідні елементи іншого заданого масиву 10 дійсних чисел .

16) Написати заголовок функції, яка визначає скільки разів вказаний символ зустрічається в масиві з 30 символів.

17) Написати функцію, яка визначає і повертає відповідь чи однакові два переданих їй символи.

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

19) Знайти і пояснити помилки у функції:

void fun(int a; float b)

{

return a+b;

}

20) Знайти і пояснити помилки у функції:

int fun(float a,float &b);

{

b:=2*b;

return a+b;

}

Бібліотечні функції1. Математичні функції2. Обробка символів3. Робота з рядками символів4. Робота з екраном5. Використання графіки

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

Математичні функції

<math.h>

Звернення Пояснення
sin(x)
cos(x) X вимірюється в радіанах
tan(x)  
log(x) ln x
log10(x) lg x
exp(x) ex
sqrt(x) Корінь квадратний
max(<ціле Х>,<ціле Y>) Повертає максимальне ціле з двох цілих аргументів
min(<ціле Х>,<ціле Y>) Повертає мінімальне ціле з двох цілих аргументів
pow(<основа>,<ступінь>) Зведення в ступінь
fabs(<дійсне число>) Абсолютне значення. Результат дійсний
fmod(<дійсне х>,<дійсне y>) Залишок від ділення Х на Y. Результат дійсний
ceil(<дійсне х>) Округлення в більшу сторону. Результат дійсний сeil(8.1)=9 сeil(8.7)=9
floor(<дійсне х>) Округлення в меншу сторону. Результат дійсний floor(8.1)=8 floor(8.7)=8

<stdlib.h>

Звернення Пояснення
atof(<число в символьному представленні>) Перетворення з строкового представлення в число double. Якщо в рядку недопустимий символ, то перетворення відбувається до нього. atof(“78.56”)=78.56, atof(“78*56”)=78, atof(“*56”)=0,
atoi(<число в символьному представленні>) Аналогічно попередньому для int. atoi(“78”)=78, atoi(“78.56”)=78, atoi(“*56”)=0,
atol(<число в символьному представленні>) Аналогічно попередньому для long int
itoa(<ціле х>,<ім‘я масиву символів>, <система числення>) Перетворює ціле число в рядок символівint n; char s[15]; itoa(n,s,10);
ltoa(<довге Х>,<ім‘я масиву символів>, <система числення>) Перетворює довге ціле число в рядок символівlong int n; char s[15]; itoa(n,s,10);
randomize() Задає початкове значення для генерації випадкових чисел. Обов‘язкове підключення <time.h>
random(< ціле n>) Повертає випадкове ціле число з проміжку 0..n-1
rand() Повертає випадкове ціле число з проміжку 0..32767
abs(<ціле х>) Повертає абсолютне значення. Результат цілий
labs(<довге ціле х>) Повертає абсолютне значення. Результат довге ціле

Обробка символів

<ctype.h>

Звернення Пояснення
isdigit(<символ>) Повертає істину(1), якщо <символ>) є цифра
isхdigit(<символ>) Повертає істину(1), якщо <символ>) є шістнадцятирічна цифра
isalfa(<символ>) Повертає істину(1), якщо <символ>) є буква
isalnum(<символ>) Повертає істину(1), якщо <символ>) є цифра або буква
islower(<символ>) Повертає істину(1), якщо <символ>) є буква нижнього регістру
isupper(<символ>) Повертає істину(1), якщо <символ>) є буква верхнього регістру
isspace(<символ>) Повертає істину(1), якщо <символ>) є пробіл
iscntrl(<символ>) Повертає істину(1), якщо <символ>) є управляючий символ
tolover(<символ>) Повертає <символ>) у нижньому регістрі
toupper(<символ>) Повертає <символ>) у верхньому регістрі

<stdio.h>

Звернення Пояснення
getchar() Повертає введений символ
putchar() Виводить символ

<conio.h>

Звернення Пояснення
getch () Повертає введений символ. Символ не відображається на екрані
getchе () Повертає введений символ. Символ відображається на екрані
putch() Виводить символ
kbhit() Повертає істину(1), якщо в буфері клавіатури є символ. Цикл while (!kbhit()); можна використати для очікування натискання клавіши.
Робота з рядками символів

Рядок - це послідовність символів, що обробляється як єдине ціле. Рядок може містити довільні символи., обмежені подвійними лапками.

Рядок в С++ - це масив символів, що закінчується нульовим символом (‘\0‘).

Рядок може бути оголошений як масив символів. Наприклад, char R[30];

При оголошенні рядок може бути ініціалізованим як масив символів або простіше

char R[30]=”Масив символів”;

Крім того, масив можна оголосити як змінну указник на тип char: char *str; з ініціалізацією:

char *str=”Масив символів”;

 

Для ведення даних у рядок можна використовувати потік cin

cin>>str; cin>>R;

Ці оператори будуть вводити набір символів до тих пір, поки не зустрінеться символ проміжку, символ табуляції, символ нового рядку або указник кінця файлу. При цьому, якщо кількість введених символів буде більше ніж розмір оголошеного масиву мінус один(так як в кінці нульовий символ), то символи будуть записуватись за межі оголошеного масиву, що приведе до помилок. Тому, щоб мати гарантію вводу потрібної кількості символів, необхідно використовувати маніпулятор setw().

cin>>setw(30)>>R;

Маніпулятор необхідно використовувати для кожного рядка.

Якщо необхідно вводити повни й текст(тобто з проміжками), то потрібно використовувати функцію getline().

cin.getline(R,30);

<string.h>

Звернення Пояснення
strcat(<рядок 1>,<рядок 2>) Приєднує <рядок 2> в кінець <рядок 1>
strncat(<рядок 1>,<рядок 2>) Приєднує n символів з <рядок 2> в кінець <рядок 1>
stpcpy(<рядок 1>,<рядок 2>) Копіює <рядок 2> в <рядок 1>. Функція повертає указник на кінець сформованого рядка
strcpy(<рядок 1>,<рядок 2>) Копіює <рядок 2> в <рядок 1>. Функція повертає указник на початок сформованого рядка
strncpy(<рядок 1>,<рядок 2, <кількість>) Аналогічно попередньому, але копіюється n перших символів
strchr(<рядок>,<символ>) Функція повертає указник на позицію першого входження заданого символу. Якщо символ не знайдено - NULL
strrchr(<рядок>,<символ>) Функція повертає указник на позицію останнього входження заданого символу. Якщо символ не знайдено - NULL
strcmp(<рядок 1>,<рядок 2>) Зрівнює два рядки в лексикографічному порядку з врахуванням великих і малих літер. Повертає значення <0, якщо перший рядок менше другого, значення >0 - якщо більше, 0 - якщо рядки однакові
strncmp(<рядок 1>,<рядок 2>) Аналогічно попередньому, але зрівнює n символів
stricmp(<рядок 1>,<рядок 2>) Аналогічно попередньому, але без врахування великих і малих літер.
strnicmp(<рядок 1>,<рядок 2>) Аналогічно попередньому, але зрівнює n символів
strcspn(<рядок 1>,<рядок 2>) <рядок 2> вміщує послідовність символів які відшукуються в першому рядку. Повертає номер першого знайденого символу (починаючи з нуля). strcspn(“book”,”aso”)=1
strpbrk(<рядок 1>,<рядок 2>) <рядок 2> вміщує послідовність символів які відшукуються в першому рядку. Повертає указник на перший знайдений символ.
strlen(<рядок>) Повертає довжину рядка без врахування \0
strlwr(<рядок>) Перетворює всі символи рядку в малі літери
strupr(<рядок>) Перетворює всі символи рядку в великі літери
strnset(<рядок>,<символ>, <кількість>) Замінює перші n символів рядка на вказаний символ.char s[10]=“qwertyui”; strnset(s,’9’,4); в результаті s=”9999tyui”
strset(<рядок>,<символ) Замінює всі символи рядка на вказаний символ.
strew(<рядок>) Реверсує рядок. До “вікно”, після “онків”
strstr(<рядок 1>,<рядок 2>) Відшукує місце першого входження <рядок 2> в <рядок 1>. Якщо рядок не знайдено - NULL.
strtok(<рядок 1>,<рядок 2>) Повертає указник на лексему, що обмежена вказаним роздільником(знак табуляції \t, кома пробіл).

 








Дата добавления: 2015-08-26; просмотров: 702;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

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

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.011 сек.