Курсовая работа: Розробка програм мовою С++

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

1.4 Використання вказівників при роботі з функцією, з даними аргумента і параметрами. Передача вказівників

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

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

Другий спосіб полягає в тому, щоб використати як аргумент функції вказівник на масив.

1.5 Передача за посиланням

В С++ можна здійснювати передачу за посиланням з аргументами-посиланнями. Посилання є неявним вказівником і використовується як інше ім’я вже існуючого об’єкта. Формат визначення посилання є таким:

<тип>& <ім’я посилання> = <вираз; або

<тип>& <ім’я посилання> (<вираз>);

Як вираз, що ініціалізується, має бути ім’я певного об’єкта, що має місце в пам’яті. Значенням посилання після визначення з ініціалізацією стає адреса цього об’єкта. Наприклад,

int х = 7; //Визначена й ініціалізована змінна х

int& ref= х;//Визначене посилання, значенням її є адреса змінної х

Для доступу до вмісту ділянки пам’яті, на який вказує посилання, не треба виконувати розіменування, що є обов’язковим при зверненні до значення змінної через вказівник. Кожна операція над посиланням є операцією над тим об’єктом, з яким вона пов’язана. Можна змінити значення х, записавши х = 35; або ref = 35;.

Існують обмеження при визначенні і використанні посилань:

Не можна взяти адресу змінної типу посилань;

Не можна створити масив посилань;

Не можна створити вказівник на посилання;

Не допускаються посилання на бітові поля.

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

1.6 Організація та активація функцій з інформаційним зв’язком через зовнішні змінні

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

1.7 Рекурсивні функції

Функція називається рекурсивною, якщо вона викликає сама себе. Розрізняють пряму та непряму рекурсії. Функція називається непрямою рекурсивною в тому разі, якщо вона містить звернення до іншої функції, що містить прямий або непрямий виклик першої функції. Якщо в тілі функції явно використовується виклик цієї функції, то має місце пряма рекурсія. Класичним прикладом рекурсії є обчислення факторіала. Факторіал невід’ємного цілого числа n дорівнює

n х (n–1) х (n–2) х. .. х 3 х 2 х 1,


причому за визначенням факторіал 1! і 0! дорівнює 1. Факторіал числа дорівнює добутку попередніх щодо нього послідовностей чисел, тобто n! = nx(n–1)!. Якщо обчислення факторіала оформити у виді рекурсивної функції, то програма може бути подана в ось якому вигляді:

// Обчислення факторіала

#include <iostream.h>

unsigned long factorial (unsigned int);

void main( )

К-во Просмотров: 497
Бесплатно скачать Курсовая работа: Розробка програм мовою С++