Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основы.doc
Скачиваний:
47
Добавлен:
07.03.2016
Размер:
3.6 Mб
Скачать

Контрольні питання

  1. Що таке функція?

  2. Розкрийте сутність глобальних та локальних змінних.

  3. Чим відрізняються автоматичні та статичні змінні?

  4. Які ви знаєте способи передачі змінних до функції?

  5. В чому відмінність передачі змінних по значенню та за посиланням?

  6. Для чого потрібен прототип функції?

  7. Як передавати значення змінних функції за умовчанням?

  8. Розкрийте сутність статичних змінних.

  9. Наведіть приклад передачі змінних по значенню.

  10. Наведіть приклад передачі змінних за посиланням.

  11. Яким чином передати одновимірний масив до функції?

  12. Яким чином передати двовимірний масив до функції?

  13. Що таке вказівка на функцію?

  14. Як передати ім’я (адресу) функції у якості параметру до іншої функції?

  15. Застосування перевизначення типів typedef для опису вказівок на функції.

  16. Наведіть приклади передачі вказівок функції.

  17. Що таке перевантаження функцій?

  18. Наведіть приклади перевантаження функцій.

  19. Що таке шаблони функцій?

  20. Наведіть приклади використання шаблонів функцій.

Завдання

Скласти програму з використанням функцій. Якщо функції мають обмежену область визначення, дослідити їх та зробити контроль вхідних даних.

Приклад виконання завдання.

Скласти програму з використанням функції .

Код програми має наступний вигляд:

#include <iostream>

#include <cmath>

using namespace std;

double func(double x)

{

return 2*(log(x*x+2)+1)*sin(x);

}

void main()

{

double x,y;

cout<<"Введите значение x ";

cin>>x;

y = func(x);

cout<<"\ny = "<<y;

}

Варіанти індивідуальних завдань

  1. ;

  2. ;

  3. ;

  4. ;

  5. ;

  6. ;

  7. ;

  8. ;

  9. ;

  10. ;

  11. ;

  12. ;

  13. ;

  14. ;

  15. ;

  16. ;

  17. ;

  18. ;

  19. ;

  20. ;

  21. ;

  22. ;

  23. ;

  24. ;

  25. ;

  26. ;

  27. ;

  28. ;

  29. ;

  30. .

Розділ 10. Рекурсивне програмування

10.1. Основні поняття рекурсії. Визначення факторіалу числа

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

Класичним прикладом рекурсивної функції є обчислення факторіалу (це не означає, що факторіал слід обчислювати саме так). Для того, щоб отримати значення факторіалу числа n, потрібно помножити на n факторіал числа (n-1). Відомо також, що 0!=1 і 1!=1.

long fact (long n)

{

if (n==0 || n==1) return 1;

return (n * fact(n - 1));

}

Tе ж саме можна записати коротше:

long fact (long n)

{

return (n>1) ? n * fact(n - 1): 1;

}

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