Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Білет 13.docx
Скачиваний:
1
Добавлен:
16.09.2019
Размер:
31.1 Кб
Скачать

I.

Структурне програмування. Основні структурні елементи алгоритмів.

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

Такий поділ – структурна декомпозиція, а програмування за цим принципом – структурним. Структурне програмування – дедуктивне (від складного до простого).

В структурному програмування більшість програм можна представити як послідовність викликів окремих найбільш загальних підпрограм.

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

продовжуватися до рівня елементарних операторів мови програмування, тому виникає питання: які основні структурні елементи можна виділити в алгоритмів і програм. Для побудови основних елементів алгоритму використовують три базових елементи.

- об’єднуюча частина. Це точка алгоритму, в якій нічого не виконується. Це лише вхід чи вихід з окремого блоку алгоритму.

- функціональна вершина. Відповідає окремій дії алгоритму. Виклик підпрограм, елементарний оператор мови.

- предикатна вершина. Точка розгалуження в алгоритмі, яка здійснює передачу управління на певний під алгоритм при певній умові.

При допомозі цих трьох елементів можна побудувати будь-яку конструкцію алгоритму, а отже і весь алгоритм.

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

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

Підпрограми – це своєрідні міні-програми. Їх призначення –виконувати конкретні завдання в більшій програмі.

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

Поняття процедури і функції, їх призначення. Схема оформлення виклику процедур та функцій.

У мові програмування Паскаль існують два види підпрограм ­­­– процедури та функції, які відрізняються за призначенням та їх використанням.

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

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

Будь-яка процедура у мові програмування Паскаль має таку структуру:

Procedure <назва процедури> (<змінна_1>:<тип змінної_1>;                                                                            <змінна_2>:<тип змінної_2>; var <змінна_3>:<тип змінної_3>);

Const <опис локальних сталих>;

Type <опис локальних типів користувача>;

Var <опис локальних змінних>;

<опис вкладених процедур та функцій>;

Begin

<тіло процедури>

End;

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

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

Локальні, глобальні змінні

Дуже важливою характеристикою змінних є область їх визначення. Є три види областей визначення, що характеризують доступність змінної:

локальна: змінна доступна тільки в поточній процедурі

глобальна: змінна доступна у всьому проекті.

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

Параметр (в програмуванні) — змінна, якій присвоюється значення константи, змінної тощо.

Параметр формальний

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

Тіло функції (її код) визначає сукупність дій над параметрами.

Параметр фактичний

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

Параметри-значення та параметри-змінні

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

У списку формальних параметрів підпрограм можливі три способи їх описання:

  1. Параметри, перед якими відсутнє службове слово var і за якими вказано їх тип (такі параметри називають параметрами-значеннями, а передача цих параметрів відбувається за значенням).

  2. Параметри, перед якими записано службове слово var і за якими вказано їх тип (такі параметри називають параметрами-змінними, а передача цих параметрів відбувається за посиланням).

  3. Параметри, перед якими записано службове слово var, однак за ними не вказано їх тип (передача нетипізованих параметрів за посиланням).

Розглянемо детальніше найпоширеніші види формальних параметрів.

Параметри-значення

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

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

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

Параметри-змінні

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

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

II

Інкапсуляція в об’єктно-орієнтованому програмуванні

Приховування інформації (інкапсуляція) 

Приховування деталей про роботу класів від об'єктів, що їх використовують або надсилають їм повідомлення. Так, наприклад, клас Собака має метод гавкати(). Реалізація цього методу описує як саме повинно відбуватись гавкання (приміром, спочатку вдихнути() а потім видихнути() на обраній частоті та гучності). Петро, хазяїн пса Сірка, не повинен знати як він гавкає. Інкапсуляція досягається шляхом вказування, які класи можуть звертатися до членів об'єкта. Як наслідок, кожен об'єкт представляє кожному іншому класу певний інтерфейс — члени, доступні іншим класам. Інкапсуляція потрібна для того, аби запобігти використанню користувачами інтерфейсу тих частин реалізації, які, швидше за все, будуть змінюватись. Це дозволить полегшити внесення змін, тобто, без потреби змінювати і користувачів інтерфейсу. Наприклад, інтерфейс може гарантувати, що щенята можуть додаватись лише до об'єктів класу Собака кодом самого класу. Часто, члени класу позначаються як публічні (англ. public), захищені (англ. protected) та приватні (англ. private), визначаючи, чи доступні вони всім класам, підкласам, або лише до класу в якому їх визначено. Деякі мови програмування йдуть ще далі: Java використовує ключове слово private для обмеження доступу, що буде дозволений лише з методів того самого класу,protected — лише з методів того самого класу і його нащадків та з класів із того ж самого пакету, C# та VB.NET відкривають деякі члени лише для класів із тієї ж збірки шляхом використання ключового слова internal (C#) або Friend (VB.NET), а Eiffel дозволяє вказувати які класи мають доступ до будь-яких членів.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]