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

Практична робота № 18 «Побудова алгоритмів з використанням процедур і функцій».

Мета.

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

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

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

Тип уроку. Засвоєння нових вмінь і навичок.

Матеріали для роботи з учнями:

Підпрограми

Приклади розв’язування задач.

Процедури і функції

План

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

2. ТБ.

3. Практична робота.

4. Завдання для практичної роботи.

5. Підсумки уроку.

6. Домашнє завдання.

Пам’ятка для учня!

1. Пригадайте правила техніки безпеки при роботі з ПК.

2. Через кожні 15 хв. виконуйте вправи для очей та для зняття м’язової втоми.

Хід уроку

Організаційний момент.

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

1. Наявність.

2. Питання.

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

У мові Паскаль є два види підпрограм: підпрограми-процедури і підпрограми-функції. Спочатку вивчатимемо процедури.

Концепція структурного програмуван­ня полягає в тому, що будь-яку складну чи громіздку задачу потрібно звести до послідовності простіших підзадач, записати підпрограми для їхнього розв’язування і створити головну програму, яка має складатися з викликів цих підпрограм.

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

procedure <Назва процедури>;

<Розділи описів і оголошень процедури> {Оголошені тут змінні називаються локальними}

Begin

<Розділ команд процедури>

end;

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

program <Назва головної програми>;

<Розділ описів і оголошень>;

{Оголошені тут змінні називаються глобальними}

<Процедура 1>;

<Процедура 2>;

Begin

<Розділ команд, який містить:

виклик процедури 1;

виклик процедури 2;>

End.

Розділ команд головної програми складається головно з викликів процедур. Виклик процедури — це команда, яка збі­гається з назвою процедури.

 

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

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

Приклад.

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

program Маіп2;

var a, b, р, s : real;

procedure Rectangular;

Begin

p:= 2*(a + b);

s:= a * b

end;

Begin

write ('Введіть a і b ');

readln(a,b);

Rectangular;

writeln(p:6:2, s:6:2)

End.

Тут a, b, p, s — глобальні змінні. Починає виконуватися розділ команд головної програми, а не процедура, хоча вона записана вище. Користувач вводить дані з клавіатури, натискає на клавішу вводу, і лише тоді виконується команда Rectangular — керування передається процедурі, де обчислюються периметр і площа. Коли процедура виконана, керування передається наступній команді головної програми writeln, яка виводить результати на екран.

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

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

Універсальним способом обміну даними; між процедурами і головною програмою є використання списків формальних і фак­тичних параметрів. Список формальних параметрів записують у круглих дужках після назви процедури:

procedure <Назва> (Ссписок формальних параметрів>)

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

procedure Rectangular(a, b : real; var p, s : real );

Begin

p := 2 * (a + b);

s := a * b

end;

Команда виклику процедури має такий загальний вигляд:

<Назва> (Список фактичних параметрів>)

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

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

Наприклад, процедуру Rectangular можна викликати коман­дою

Rectangular(3, 4, р, s);

Отримаємо такий результат:

р = 14.0, s = 12.0.

Дія команди виклику процедури. Активізується процедура із заданою назвою (Rectangular). Значення фактичних параметрів (вхідні дані 3 і 4) надаються відповідним формальним парамет­рам (а і Ь) процедури. Виконується процедура, де обчислюються периметр (р) і площа (s). Результати виконання процедури при­своюються фактичним параметрам (р і s) у команді виклику. Після цього виконуватиметься наступна команда, що йде за командою виклику.

Підпрограма-функція.

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

function <Назва>(<список формальних параметрів>) : <тип функції>;

<Розділ описів функці>

Begin

<Розділ команд, серед яких є така: Назва := вираз>

End

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

Особливість функцій Назва функції є іменем змінної. Назву функції надає користувач. Тип функції описують у заголовку.

Підпрограма-функція, як і всі стандартні функції (sin(x), cos(x) тощо), повертає в точку її виклику головний результат

— значення функції. Цей результат присвоюється назві функції.

Зверніть увагу, як утворюється результат: тіло функції має містити таку команду присвоєння:

<назва функції> := <вираз для отримання результату>

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

<Назва>(<список фактичних параметрів>)

Вказівник функції, наприклад Gryvni(25), можна використо­вувати лише у виразах так, як sin(x), cos(2*pi) тощо.

Дія вказівника. Серед описів відшуковується функція з відпо­відною назвою, наприклад, Gryvni. Значення фактичних пара­метрів (сталих, змінних, виразів) вказівника передаються фор­мальним параметрам функції. Виконується обчислення у тілі функції. Головний результат через назву функції повертається у головну програму (кажуть: присвоюється вказівнику). Інші резу­льтати, якщо вони є, присвоюються параметрам-результатам.

Прикладі. Скільки гривень можна отримати в банку в обмін на 25 доларів, якщо курс становить 5,05 грн/дол.?

Побудуємо функцію, яка переводить долари в гривні:

function Gryvni(Dollars : integer) : real;

Begin

Gryvni := 5.05 * Dollars

end;

Тепер у головній програмі у будь-якому виразі можна записати звертання до цієї функції — Gryvni(25), наприклад, це зробимо у команді виведення: