Основні теоретичні відомості

Завдання на лабораторну роботу

Мета роботи

Лабораторна робота № 6 Програмування задач з використанням функцій

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

1. Що таке символ?

2. Що таке ASCII-код символу?

3. Уявлення рядка у пам’яті.

4. Наведіть функції для роботи з рядками.

5. Яка бібліотека містить функції для роботи з рядками?


Одержання знань і навиків, необхідних для створення функцій

1. Ознайомитися з теоретичними відомостями.

2. Скласти та виконати на ПЕОМ програми з таблиці 5.1 відповідно до варіанту.

3. Оформити звіт та захистити роботу.

 

Таблиця 6.1 – Індивідуальні завдання до лабораторної роботи №6

№ варіанта Номери задач № варіанта Номери задач
424, 470, 317 440в, 342, 331б
425, 469, 318 441, 344, 331б
426, 468, 319 442, 345, 332
427, 467, 320 443, 346, 333
428, 466, 321 444, 347, 334а
429, 465, 322 445, 348, 334б
430, 464, 323 446, 349, 334в
431, 463, 324 447, 350а, 334г
432, 462, 325 455, 350б, 335а
433, 461, 326 456, 350в, 335б
434, 453, 327 457, 350г, 335в
435, 336в, 328 458, 350д, 335г
440а, 336г, 329 460а, 351а, 336а
440б, 340, 330 4606, 351б, 336б

Дати визначення функції.

Функції – це будівельні блоки деякої програми на мові С++.

Функції бувають двох типів:

– функції користувачів (включно main());

– стандартні (бібліотечні) функції мови С та С++.

Форма запису функцій:

тип_результату ім’я_функції (список_параметрів);

{

//Тіло функції

}

де тип_результату – задає тип данних, що повертаються функцією, список_параметрів – задає список змінних, що передаються функції при зверненні.

Дуже важливим оператором тіла функції є оператор повернення в точку виклика:

return вираз; або return;

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

Навіть у випадку, коли функція не виконує ніяких дій й не повинна повертати деяке значення, тіло функції буде складатися з фігурних дужок {}.

Приклад:

int max(int a, int b) {

if (a>b) return a;

else return b;}

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

тип_функції ім’я_функції(специфікація_формальних_параметрів);

Наприклад:

int max(int a, int b);

У визначенні функції специфікація параметра може містити його значення за замовченням. Це значення використовується у тому випадку, якщо при зверненні до функції відповідний параметр відсутній.

Наприклад:

int max (int a, int b=0);

Функція main()

Функція main() не має прототипа. Тобто, можна використовувати різні форми запису функції main(). Для мови С++ мають місце наступні варіанти функції main()(дозволяються й інші форми):

1. int main();

2. int main(int argc, char *argv[]);

Як видно з другої форми запису, функція main() підтримує два параметра – argc та argv. Ці дві змінні будуть зберігати кількість аргументів командного рядка та покажчик на них. Параметр argc має цілий тип, та його значення завжди буде не менше за 1, тому що у мові С++, першим аргументом завжди є ім’я програми. Параметр argv повинен бути оголошений як масив символьних покажчиків, в якому кожний елемент вказує на аргумент командного рядку.

Масиви не можуть(не рекомендовано) бути параметрами функцій, але можна передати покажчик на масив. Функції можуть повертати покажчик на масив в якості результата.

Посилання в мові С++

В мові С++ посиланням є інше ім’я існуючого об’єкту. Для визначення посилання використовується символ &, якщо він використовується у такому контексті:

type&ім’я_посилання ініціалізатор

У відповідності із синтаксисом ініціалізатора, наявність якого обов’язкове, визначення посилання може бути таким:

type&ім’я_посилання=вираз; або type&ім’я_посилання(вираз);

При визначенні посилання обов’язковою є його ініціалізація. Однак в опису посилань ініціалізація не обов’язкова. До таких описів посилань відносяться:

а) опис зовнішніх посилань (через специфікатор extern):

float& ref; //Помилка – немає ініціалізації

extern float& ref2; //Допустимо – ініціалізується

//в іншому блоці;

б) опис компонентів класу;

в) описи (специфікації) формальних параметрів функції;

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

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