Теоретичні відомості до другої лабораторної роботи

 

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

Область дії ідентифікатора - це частина програми, в якій його можна використовувати для доступу до пов'язаної з ним області пам'яті. У залежності від області дії змінна може бути локальної або глобальної.

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

Час життя може бути постійним (протягом виконання програми) і тимчасовим (Протягом виконання блоку).

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

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

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

Структура кожної функції співпадає зі структурою головної функції програми main(). Функції іноді ще називають підпрограмами.

Основу процедурного програмування на будь-якій мові програмування складає процедура (походить від назви) або функція (як різновид, що саме відповідає мові програмування Сі).

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

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

[модифікатор] тип_значення,_що_повертається ім'я_функції ([список_аргументів]) {

оператори тіла функції

}

Розглянемо складові частини визначення.

За допомогою необов'язкового модифікатора можна явно задати область видимості функції, використовуючи ключові слова extern і static:

· extern - глобальна видимість у всіх модулях програми (за замовчуванням);

· static - видимість тільки в межах модуля, в якому визначена функція.

тип_значення,_що_повертається функцією може бути будь-яким, крім масиву і функції (але може бути покажчиком на масив або функцію). Якщо функція не повинна повертати значення, вказується тип void.

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

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

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

Механізм повертання результату роботи функції реалізується оператором

return [вираз];


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: