функції, виконання якої триває з точки, наступної за рекурсивним викликом. p align="justify"> Класичним прикладом рекурсивної функції є обчислення факторіала (це не означає, що факторіал слід обчислювати саме так). Для того щоб отримати значення факторіала числа n, потрібно помножити на n факторіал числа (п-1). Відомо також, що 0! = 1 і 1! = 1. p align="justify"> Рекурсивні функції найчастіше застосовують для компактної реалізації рекурсивних алгоритмів, а також для роботи зі структурами даних, описаними рекурсивно, наприклад, з двійковими деревами. Будь-яку рекурсивну функцію можна реалізувати без застосування рекурсії, для цього програміст повинен забезпечити зберігання всіх необхідних даних самостійно. Перевагою рекурсії є компактна запис, а недоліками - витрата часу і пам'яті на повторні виклики функції і передачу їй копій параметрів, і, головне, небезпека переповнення стека. p align="justify"> Функція main ()
Функція, якою передається керування після запуску програми, повинна мати ім'я main. Вона може повертати значення в викликала систему і приймати параметри із зовнішнього оточення. Значення, що повертається повинно бути цілого типу. При запуску програми параметри розділяються пробілами. Імена параметрів у програмі можуть бути будь-якими, але прийнято використовувати argc і argv. Перший параметр (argc) визначає кількість параметрів, переданих функції, включаючи ім'я самої програми, другий параметр (argv) є покажчиком на масив покажчиків типу char *. Кожен елемент масиву містить покажчик на окремий параметр командного рядка, що зберігається у вигляді С-рядка, що кінчається нуль-символом. Перший елемент масиву (argv [0]) посилається на повне ім'я запускається на виконання файлу, наступний (argv [l]) вказує на перший параметр, argv [2] - на другий параметр, і так далі. Параметр argv [argc] повинен бути дорівнює 0. p align="justify"> Якщо функція main () нічого не повертає, що викликала система отримає значення, що означає успішне завершення. Ненульове значення означає аварійне завершення. Оператор повернення з mainO можна опускати. p align="justify"> Функції стандартної бібліотеки
Будь-яка програма на C + + містить звернення до стандартної бібліотеці, в якій знаходяться визначення типів, констант, макросів, функцій і класів. Щоб використовувати їх у програмі, потрібно за допомогою директиви # iinclude включити у вихідний текст програми заголовні файли, в яких знаходяться відповідні оголошення. У програмах на C + + можуть використовуватися функції, успадковані від бібліотеки С.
Функції бібліотеки можна розбити на групи за їх призначенням: введення/висновок, обробка рядків, математичні функції, робота з динамічною пам'яттю, пошук і сортування і т.д.
Контрольні питання:
1. Дайте визначення функції.
2. Назвіть приклади функцій.
. Рекурсивні функції.
Лекція № 10
Тема: Покажчики та адресна арифметика
План:
1. Організація пам'яті
2. Адресація
Для більшості типів TT * є типом арифметичний покажчик на T. Тобто, у змінній типу T * може зберігатися адреса об'єкту типу T.
Покажчики діляться на дві основні категорії: покажчики об'єктів і покажчики функцій. Покажчики обоіхтіпов представляють собою спеціальні об'єкти, що зберігають адреси пам'яті. p align="justify"> Два етіклассауказателей мають відмінні один від одного властивості, призначення та правила маніпулювання, хоча і ті й інші розділяють між собойопределенние операцііTurbo C + +. Взагалі кажучи, покажчики функцій використовуються для доступу до функцій і для передачіодніх функційдругім в качествеаргументов; виконання арифметичних операційс указателяміфункцій не допускається. І навпаки, указателіоб'ектов при скануванні масивів або більш складних структур пам'яті регулярно инкрементируется і декрементируется. p align="justify"> Хоча покажчики містять числа сбольшінством характеристик тіпаunsigned int, вони мають свої власні правила і обмеження на присвоєння, перетворення івиполненіе з ними арифметичних дій. Приклади в наступних кількох розділах ілюструють ці правила і обмеження. p align="justify"> Оголошення покажчиків
Оголошення покажчика завжди повинно встановлювати його на деякий конкретний тип, навіть якщо цей тип void (що фактіческіозначает покажчик на будь-який тип). Однак, вже після оголошення покажчик звичайно може бути перепризначений на об'єкт іншого типу. Turbo C + + дозволяє перепризначувати покажчики без приведення у відповідність типу,...