Підпрограми. Опис підпрограм мовою програмування. Типи підпрограм. Звернення до підпрограм у програмах

Матеріал з Фізмат Вікіпедії
Перейти до: навігація, пошук

Мета: Ознайомити дітей з типами підпрограм, навчити дітей описувати підпрограми мовою програмування.

1.Огранізаційний етап.

Перевірка домашнього завдання і готовності учнів до уроку.

2. Актуалізація опорних знань.

1. Які ви знаєте базові структури алгоритмів?

— О.В.: Слідування, розгалуження, повторення.

2. Який вигляд заголовку програми в Паскалі.

— О.В.: Program “назва”.

3. З чого складається програма на мові Паскаль?

— Програма на мові Паскаль складається із заголовку

program <iм'я> (input, output);

i власне програми, що називається блоком.

4. Які розділи містить блок?

— Блок містить розділи:

1. розділ модулів - uses

2. розділ міток - label

3. розділ констант - const

4. розділ типів - type

5. розділ змінних - var

6. розділ операторів - begin … end.

3.Вивчення нового матеріалу.

— Добре діти, ми з вами повторили основні поняття.

— Давайте поговоримо про проблеми, які виникають під час роботи в середовищі програмування.

— При розробці програми іноді з'являються повторювані групи дій або виникає необхідність поділити програму на функціональні модулі, зробити її структуру ієрархічною. Для цього у всіх мовах програмування існують засоби організації підпрограм. При розв'язанні складної задачі рекомендується спочатку алгоритм, а потім і програму розроблювати «зверху вниз», від більш загального плану до докладного, У такому вигляді головна програма відповідає укрупненому плану розв'язання задачі, а її команди — виклику відповідної підзадачі, реалізованої у вигляді підпрограми. Ідучи таким шляхом створення програми, можна окремі функції, що найбільш часто використовуються, реалізувати спочатку у вигляді невеликих підпрограм, перевірити їх на контрольних прикладах і, переконавшись у правильності, включати їх до складу основної програми. Це зручніше робити, маючи в розпорядженні мову, яка дозволяє повністю виділити підпрограму з тексту основної програми у вигляді окремого модуля. Використання підпрограм дозволяє розробляти програму частинами, доручати реалізацію великих проектів окремим групам розробників.

Давайте запишемо: число, класна робота і далі запишіть, будь ласка, тему та план сьогоднішнього уроку:

Tem1.jpg

У Паскалі підпрограма є частиною основної програми, її опис дається між розділом var головної програми та її програмним блоком (першим begin). Підпрограм може бути декілька, їх описи розміщуються у довільному порядку один за одним. Опис підпрограми можна порівняти із записуваною в математиці формулою «у загальному вигляді», в яку при розрахунках підставляються конкретні значення. Як і формулу, підпрограму можна використовувати для різних даних, які передаються з програми, що її викликає. Тому параметри, які використовуються в описі підпрограми, називають формальними, а параметри, над значеннями яких виконуються операції, вказані в підпрограмі, називають фактичними.

Давайте запишемо в зошити:

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

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

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

ДАВАЙТЕ ЦЕ СОБІ ЗАПИШЕМО.

Розглянемо способи організації підпрограм у Паскалі.

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

Tem2.jpg

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

Розглянемо приклад обчислення найменшого спільного кратного двох натуральних чисел НСК(Х,У), яке можна знайти, використовуючи найбільший спільний дільник (НСД) цих чисел, за формулою ндк(х, y)=х-у/нсд(х, y).

При складанні програми оформимо як процедуру без параметрів програму Е7 — обчислення НСД за алгоритмом Евкліда. Результат роботи процедури заносимо до ділянки з іменем М. Змінна М описується як глобальний параметр, вона використовується і у викликаючій програмі, і в процедурі. У програмі будемо обчислювати НСК кількох чисел, заносячи їх до масиву С. Цей масив формується в розділі констант головної програми. Якщо дані визначаються в розділі констант, то вони не потребують додаткового опису в розділі змінних (var). Змінна X спочатку набуває значення першого числа, а потім їй присвоюється значення, отримане в результаті виконання підпрограми — НСК двох перших чисел. Значення змінної Y є друге число з кожної пари, для якої обчислюється найменше спільне кратне. Таким чином, на кожному наступному кроці циклу обчислюється НСК двох чисел, перше з яких X містить результат попереднього кроку. Наочно цей процес подано в таблиці.

Програма має вигляд:

Tem3.jpg

Процедури з параметрами. ДАВАЙТЕ ЗАПИШЕМО: Для передавання даних до процедури і отримання з неї результатів використовуються формальні і фактичні параметри.

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

ДАВАЙТЕ ЗАПИШЕМО: Слово var у заголовку процедури ставиться перед тими параметрами, імена яких відповідають початковим даним. Фактичні параметри, які відповідають формальним, перед якими стоїть слово var, можуть бути тільки іменами змінних. Перед іменами формальних параметрів, які є вхідними даними процедури, слово var можна не вказувати. Якщо перед формальним параметром у заголовку процедури немає слова var, то йому може відповідати формальний параметр, який має вигляд виразу відповідного типу. Якщо для вхідних даних процедури при описі формальних параметрів вказано слово var, то їм також відповідають фактичні параметри — імена змінних. Наприклад, процедура NSD (знаходження найбільшого спільного дільника) із параметрами може мати заголовок:

Procedure NSD (a,b:integer; var k:integer);

Виклик цієї процедури:

NSD (х,у,m); або NSD (36,54,m);

Змінні a, b, А; у заголовку процедури NSD — це формальні параметри, які заміняються при виконанні процедури на конкретні значення змінних х і у або числа 36 і 54. У заголовку процедури NSD описані формальні параметри: а і b — вхідні дані, для яких знаходиться найбільший спільний дільник; k — результат роботи процедури. При виклику процедури змінна а набуде значення змінної х, а змінна b — значення змінної у. Результат виконання процедури надійде до ділянки пам'яті з іменем т.

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

У програмі Е26 з'явився новий розділ описів — розділ типів даних type, в якому можна описати новий тип даних через уже відомі типи.

Тип даних R — це масиви з n дійсних чисел, R — ім'я типу. Далі цей тип дозволяє скоротити описи, він використовується в головній програмі при описі вихідного масиву У і в заголовку процедури при описі формального параметра — масиву X.

ДАВАЙТЕ ЗАПИШЕМО:

Головна програма складається з трьох основних частин:

1) введення даних — масиву У;

2) виклику процедури Stat з фактичними параметрами — масивом У і отримуваними результатами, які надходять відповідно до ділянок А ( середнє значення), В (найменше) і С (найбільше);

3) друкування результатів роботи програми.

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

Tem4.jpg


Після опису формальних параметрів, які є аргументами функції, в заголовку вказується тип результату, тобто тип самої функції. Цей опис відноситься до імені функції, якому необхідно присвоїти значення результату роботи підпрограми. Як і процедура, функція може містити всі чотири розділи опису локальних змінних — label, const, type i var. Ім'я функції не можна використовувати для проміжних обчислень.

ДАВАЙТЕ ЗАПИШЕМО: Функція викликається за допомогою вказівника. Вказівник — це ім'я функції, після якого в круглих дужках перелічені фактичні параметри — аргументи функції. Вказівник має вигляд:

ім'я_функції (список фактичних параметрів)

Вказівник може з'явитися у виразі відповідного типу, в умовах операторів if, while і repeat після слова until, а також в операторі друку write. Прикладами виклику функцій є арифметичні функції, наприклад write (sin (х));

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

Одна підпрограма може викликати іншу. Розглянемо програму уточнення кореня рівняння методом ділення відрізка навпіл (приклад Е14), яка включає дві підпрограми. 1 Перша підпрограма — процедура, яка реалізує метод діленії ня відрізка навпіл, друга — підпрограма-функція, яка обчислює значення функції у потрібних точках.

4. Закріплення вивченого матеріалу.

Ми розглянули з вами тему “Підпрограми”, можливо у когось виникли якісь запитання, то запитуйте. Якщо запитань нема то давайте повторимо те що ми вивчили на цьому уроці.

1.Що таке підпрограма і для чого вона використовується?

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

2.Поясніть призначення локальних і глобальних змінних.

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

3.Що таке формальні і фактичні параметри?

О.В: Тому параметри, які використовуються в описі підпрограми, називають формальними, а параметри, над значеннями яких виконуються операції, вказані в підпрограмі, називають фактичними.

4.До чого відноситься опис типу в кінці заголовка підпрограми-функції?

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

5.Чим відрізняється виклик функції від виклику процедури?

О.В: Процедура викликається службовим словом PROCEDURE, а функція — службовим словом FUNCTION.

6.Що таке вказівник?

О.В: Вказівник — це ім'я функції, після якого в круглих дужках перелічені фактичні параметри — аргументи функції.

7.Який вигляд має вказівник?

О.В: Ім'я функції (список фактичних параметрів).


Домашнє завдання:

Розв’яжіть таку задачу за допомогою підпрограми, тобто напишіть програму: знайти НСД і НСК таких двох чисел: а) 55 і 103, б) 14 і 58.


Підсумок уроку:

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