Процес компіляції програми

Функції. Передача параметрів функцій. перевантаження функцій

Функція являють собою відносно самостійні фрагменти програм, відповідним чином оформлені і забезпечені ім'ям (програмні блоки). Тема блоку визначає форму виклику підпрограми. Заголовки функцій завжди складаються з ідентифікатора функції (службового слова в різних мовах різні) імені, зазначених в круглих дужках змінні які необхідно передати в функція і значення, що повертається.

Існує два способи передачі параметрів функції:

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

Коли викликається функція, додатково виділяється пам'ять під її формальні параметри, і кожен формальний параметр ініціалізується відповідним йому фактичним параметром. Семантика передачі параметрів ідентична семантиці ініціалізації. Зокрема, тип фактичного параметра зіставляється з типом формального параметра, і виконуються всі стандартні і визначені користувачем перетворення типів. Є особливі правила для передачі векторів, засіб передавати параметр без перевірки і засіб для завдання параметрів за замовчуванням.

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

Тестуванням називають процес виконання програми з різними вихідними даними, для яких за-раніше відомі результати. Інтуїтивно початківці програмісти зазвичай

метою тестування вважають перевірку правильності програми, що вдосконалення-шенно не вірно. У більшості випадків перебрати всі можливі комбіна-1іі даних неможливо, а вибіркове тестування не доводить правиль-ності програми, так як те, що програма працює на десяти наборах даних, не означає, що вона буде давати правильні результати на одіннадца-те наборі . Тому метою тестування є виявлення помилок.

Відповідно хорошим слід вважати тест, який виявляє ошиб-ку. Для формування таких тестів визначені дві стратегії:

стратегія «білого» ящика (або тестування маршрутів);

стратегія «чорного ящика».

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

При тестуванні з використанням стратегії «чорного ящика» струк-тура програми вважається невідомою, і тести підбирають так, щоб про-вірити виконання всіх функцій програми, а потім відстежити реакцію на введення некоректних даних.

На практиці найкращі результати отримують, використовуючи при розробці ті-стов обидві стратегії.

Схожі статті