Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа ПЗ C++3.doc
Скачиваний:
2
Добавлен:
12.09.2019
Размер:
347.65 Кб
Скачать

Лабораторна робота «Основи програмування та алгоритмічні мови»

Лабораторна робота №3

Тема: «Програмування з використанням функцій» Мета заняття:

Закріплення теоретичних знань щодо опису функцій, вибору параметрів, організації звернень до функцій, механізму передачі аргументів в функцію та повернення результатів із функції, оволодіння практичними вміннями та навичками розв’язування задач практичного змісту з курсу математики, фізики, економіки з використанням функцій засобами мови C/С++

Теоретичні питання для самостійної підготовки:

  1. Проектування та складання програм модульної структури.

  2. Узгодження та взаємодія формальних та фактичних параметрів.

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

Методичні рекомендації:

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

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

  • Між формальними та фактичними параметрами базових типів повинна бути деяка відповідність:

Формальний параметр

Можливий фактичний параметр виклику

1.

Змінна арифметичного типу

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

2.

Вказівник чи масив

Адресний вираз, який повністю співпадає за типом з формальним параметром. Виключення – формальний параметр void*

3.

Посилання

Змінна типу формального параметру

4.

Вказівник на вказівник

Ім’я багатовимірного масиву чи вказівник на вказівник

5.

Вказівник на функцію

Ім’я реальної функції чи вказівника на функцію

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

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

  • При виході з функції передача результатів може виконуватися трьома способами: через ім’я функції, апарат зв’язку формальних та фактичних параметрів та через зовнішні імена. Передача значення функції через її ім’я здійснюється для типізованих функцій за допомогою оператору return <вираз>; з функцій типу void результат через ім’я не передається. Якщо формальними параметрами є імена масивів, вказівники чи посилання, то відповідні їм результати формуються в полях фактичних параметрів. Якщо результат отримано в полі зовнішньої величини, то його можна використовувати як у функції, що викликає, так і в іншій довільній функції, яка має доступ до цієї величини. При виході з функції на основі збереженої у стеку інформації здійснюється повернення у відповідну точку функції, що викликає. При цьому звільняється участок стеку, який було занято локальними об’єктами функції та її формальними параметрами.

Вимоги до оформлення звіту:

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