Процедури та функції. Процедури та функції у Паскалі

Процедури та функції.  Процедури та функції у Паскалі
Процедури та функції. Процедури та функції у Паскалі

8 клас. Програмування на мовою ABC Pascal

Вчитель інформатики НІШ м. Уральська ФМН Зеленов Борис Олександрович


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

  • Сформувати поняття про процедури та функції у мові програмування.

  • Учні знають поняття «процедури» та «функції», визначає формальні та фактичні параметри

Очікувані результати - Дескриптори:

1.Знає визначення «процедури»

2.Знає визначення «функції»

3.Визначає фактичні та формальні параметри

4.Розрізняє параметри значень та змінних

5.Знаходить звернення до процедури або функції програмного коду



Стандартний план Ельвіри

1. Прибрати папірці

2. Полити квіти

3. Помити парти

4. Витерти шибки

Кінець алгоритму

Як покращити організацію цього процесу?




Тема урока

Підпрограми:


Ішки бағдарлама

Підпрограма

Процедура

Процедура

Параметрлер

Корисні фрази:

Для передачі значень змінних процедуру (функцію) використовуються фактичні параметри …

Щоб описати процедуру, слід спочатку…., потім…


Поняття підпрограми

Визначення

Підпрограма- Це окрема функціонально незалежна частина програми.

Підпрограми

Процедури


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

  • Намалювати паркан, використовуючи мову програмування

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


  • Опишіть як раціонально виконати малюнок ялинки серед програмування

  • Є самостійні фрагменти програм, оформлені особливим чином і мають власне ім'я.

Взаємодія основної програми та підпрограми



Блок-схема

  • Блок виклику підпрограми (процедури або функції)

Ім'я підпрограми (процедури чи функції)


Блок-схема


Опис процедури має вигляд:

procedureім'я (список формальних параметрів); розділ описів beginоператори end ;


Опис функції має вигляд:

functionім'я (список формальних параметрів): тип значення, що повертається;

розділ описів beginоператори end ;


Розміщення у програмі

Program ...;

//Розділ описів Uses, Const, Var, …

procedure A ;

begin ....... end ;

procedure B ;

begin ........ end ;

Function C ;

begin ........ end ;

//Основна програма

begin ........ end .


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

Процедури

Функції

Може мати кілька результатів або виконувати певну дію

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

Результатами може бути значення будь-якого типу масиви, рядки, числа тощо.

Результат може бути лише значенням типу real, integer чи char.

Команда виклику процедури – окрема команда, що використовується самостійно

Звернення до функції може використовуватись лише як компонент виразу відповідного типу.

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


b then max:=a else max:=b; MaxNumber:=max; end;" width="640"

Процедура чи функція?

MaxNumber(a,b: integer): integer;

var max: integer;

MaxNumber:=max;


b then max:=a else max:=b; end;" width="640"

Процедура чи функція?

MaxNumber(a,b: integer; var max: integer);

if ab then max:=a else max:=b;


Процедура чи функція?

ChangeColor(C1, C2: Word);

TextBackGround(C2)


Процедура чи функція?

Add(X, Y: Integer): Integer;


Фактичні

  • Вказуються у розділі основної програми

Формальні

  • Вказуються у підпрограмі
  • Вказуються у підпрограмі

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

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

  • Список фактичних параметрів- це їх перерахування через кому.

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

Передача параметрів. Формальні параметри

Змінні

Значення

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

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

Змінні


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

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

  • При першому способі (передача значення) значення фактичних параметрів копіюються у відповідні формальні параметри.

Процедура

Procedure Name (a, b: integer);

Основна програма

При зміні цих значень під час виконання процедури (функції) вихідні дані (фактичні параметри) не можуть змінитися


Var c, d: integer;

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

Процедура

Procedure Name (a, b: integer, Var c: real);

Основна програма

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


Ви пишете:

1.Фактичні параметри ___________

Procedure Kvad(R: real; var S: real);

2. Формальні параметри ___________

3. Формальні параметри-значення __________

5.Ім'я процедури ___________

6.Звернення до процедури із програми _____________________


Інтерактивне завдання

http://www.bzfar.net/load/podprogrammy_procedury_i_funkcii_parametry/23-1-0-498


Ельвір староста класу. Їй належить скласти план виконання генерального прибирання у класі: прибрати папірці, полити квіти, помити парти, витерти шибки. Як краще організувати роботу? Допоможіть Ельвірі.


Просунутий план Ельвіри

Підпрограми:

Арсен – прибирає папірці

Мила – поливає квіти

Віталій – миє парти

Індіра – витирає шибки

1. Виконати Арсен

2. Виконати Міла

3. Виконати Віталій

4. Виконати Індіра

Кінець алгоритму


  • З якими новими структурами мови програмування ми сьогодні познайомились?
  • Назвіть вивчені параметри
  • Як передаються параметри процедури?

  • Конспект уроку
  • Знайти визначення: «Локальні змінні» та «Глобальні змінні»
  • Скласти дві задачі, у яких можна використовувати процедури чи функції.

  • Як ви визначили б тему уроку? (Придумайте свою назву)
  • Що, на вашу думку, ви маєте дізнатися на наступному уроці?

Зустрінемось

на наступному уроці!

Щоб користуватися попереднім переглядомпрезентацій створіть собі акаунт ( обліковий запис) Google і увійдіть до нього: https://accounts.google.com


Підписи до слайдів:

Процедури та функції у Паскалі. Рекурсія Виконав учитель інформатики ДБОУ школа 1362 Саніна Марина Сергіївна

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

Підпрограми процедура функція PROCEDURE FUNCTION

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

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

Також у підпрограми є змінні. з якими вона надалі працює. Вони діляться знову ж таки на два типи: 1) Глобальні змінні, тобто діючі у всій програмі 2) Локальні – ті, які діють лише у процедурі чи функції

Процедури Використовуються у випадках, коли в підпрограмі необхідно отримати кілька результатів. Існує два види процедур: із параметром; без параметра.

Структура процедури аналогічна структурі програми і складається із заголовка та блоку (тіла процедури). procedure Ім'яПроцедури; var … begin … // Тіло процедури end; begin // тіло головної програми end.

Процедури без параметрів procedure pr; var i: integer; begin for i:=1 to 60 do write (' * "); writeln ; end . begin pr ; end. Ця програмавиводить рядок із 60 зірочок.

Процедура параметра. Скласти програму обміну місцями двох чисел з=5 та d=7 program obmenDan; var c,d:integer; procedure obmen (a, b: integer); var m:integer; begin m:=a; a:=b; b:=m; writeln (a, b); end; begin writeln ("Введіть 2 числа:"); readln (c, d); obmen (c, d); writeln (c," ",d); End.

Розбір задачі 1) при виклику процедури obmen з двома параметрами 5 і 7, змінні a і b поміщаються також числа 5 і 7 відповідно: з 5 d 7 a 5 b 7

Для того щоб змінні c і d , a і b посилалися на ті самі клітинки пам'яті (якщо зміняться значення a і b , то зміняться значення і c , d) необхідно при описі формальних параметрів, перед потрібними змінними додати слово VAR: procedure obmen (var a, b: integer); з 5 d 7 a b

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

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

Опис функції: function (): тип; ( розділ опису локальних імен ) Begin ( розділ операторів , що виконуються ) :=; (обов'язковий параметр) End;

Виклик функції: = (); 1 . У правій частині оператора присвоювання. 2. У виразі, що стоїть за умови оператора розгалуження. 3. У процедурі виведення, як наслідок роботи функції.

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

Скласти рекурсивну функцію, що обчислює факторіал числа n наступним чином: n! = 1 якщо n = 1 n! = (n -1)! · n, якщо n > 1

function f (n: integer): integer; begin if n = 1 then f:= 1 else f:= n * f (n -1); (функція f викликає саму себе) end;

Завдання Поміняти значення змінних a, b, c так, щоб вони були розташовані в порядку незменшення (a ≤ b ≤ c). Дано n цілих чисел. Знайти серед них число, яке має суму цифр максимальне значення.


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


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


Процедури та функції У мові Паскаль існує два види підпрограм: процедура (PROCEDURE) та функція (FUNCTION). Процедури та функції в Паскалі оголошуються в розділі опису розділу змінних. Program Ім'яПрограми; VAR … // Розділ опису змінних головної програми; procedure Ім'яПроцедури; var … begin … // Тіло процедури end; begin // Тіло головної програми end.


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




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


Приклад 1. Процедура без параметрів, яка друкує рядок із 60 зірочок. procedure pr; var i: integer; begin for i:=1 to 60 do write (* "); writeln; end; begin pr; end.


Приклад 2. Скласти програму обміну місцями двох чисел з=5 та d=7 program obmenDan; var c,d:integer; procedure obmen (a, b: integer); var m:integer; begin m:=a; a:=b; b:=m; writeln(a,b); end; begin writeln ("Введіть 2 числа:"); readln(c,d); obmen(c,d); writeln(c," ",d); end. с5 d 7 a 5 b 7 1) при виклику процедури obmen з двома параметрами 5 і 7, змінні a і b поміщаються також числа 5 і 7 відповідно: 2) далі в процедурі здійснюється перестановка значень осередків пам'яті a і b: с5 d 7 a 7 b 5 3) але змінних c і d дані не змінилися, т.к. вони знаходяться в інших осередках пам'яті


Для того щоб змінні c і d, a і b посилалися на ті самі клітинки пам'яті (якщо зміняться значення a і b, то зміняться значення і c, d) необхідно при описі формальних параметрів, перед потрібними змінними додати слово VAR: procedure obmen (var a, b: integer); с5 d 7 a b


Приклад 3. Дано 3 різних масиву цілих чисел (розмір кожного не перевищує 15). У кожному масиві знайти суму елементів та середньоарифметичне значення. program proc; var i, n, sum: integer; sr: real; procedure work (r:integer; var s:integer; var s1:real); var mas: array of integer; j: integer; begin s:=0; for j:=1 до r до початку read (mas[j]); s:=s+mas [j]; end; s1:=s/r; end;


(Головна програма) begin for i:=1 to 3 do begin write ("Vvedite razmer ",i, "masiva: "); readln(n); work (n, sum, sr); (виклик процедури work) writeln ("Summa elementov = ", sum); writeln ("Srednearifmeticheskoe = ",sr:4:1); end; end.


Результат роботи програми: У програмі тричі викликається процедура work, у якій формальні змінні r, s, s1 замінюються фактичними n, sum, sr. Процедура виконує введення елементів масиву, обчислює суму та середнє значення. Змінні s і s1 повертаються в головну програмутому перед їх описом ставиться службове слово var. Локальні параметри mas, j діють лише у процедурі. Глобальні – i, n, sum, sr доступні у всій програмі.


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




Приклад 4. Написати підпрограму-функцію ступеня а x де a, х – будь-які числа. Скористаємося формулою: x = e x ln a program p2; var f, b, s, t, c, d: real; (Глобальні змінні) function stp (a, x: real): real; var y: real; (локальні змінні) begin y: = exp (x * ln (a)); stp:= y;(присвоєння імені функції результату обчислень підпрограми) end; (Опис функції закінчено) begin d: = stp (2.4, 5); (обчислення ступенів різних чисел та змінних) writeln (d, stp (5,3.5)); read (f, b, s, t); c: = stp (f, s) + stp (b, t); writeln (c); end.


Функції Підпрограма частина програми, оформлена у вигляді окремої синтаксичної конструкції та має ім'я (самостійний програмний блок), для вирішення окремих завдань. Опис процедури: procedure() (розділ виконання локальних імен) Begin (розділ виконання операторів) End; Опис функції: function(): тип; (розділ опису локальних імен) Begin (розділ операторів, що виконуються) := ; (Обов'язковий параметр) End; Виклик процедури: (); Виклик функції: = (); 1. У правій частині оператора присвоєння. 2. У виразі, що стоїть за умови оператора розгалуження. 3. У процедурі виведення, як наслідок роботи функції. Опис підпрограм Процедури


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


1 function f (n: integer): integer; begin if n = 1 then f:= 1 else f:= n * f (n -1); (функція f викликає сам "title="Приклад 5. Скласти рекурсивну функцію, що обчислює факторіал числа n наступним чином: n! = 1, якщо n= 1 n!= (n -1)! · n, якщо n > 1 function f (n: integer): integer, begin if n = 1 then f:= 1 else f:= n * f (n -1);(функція f викликає сам" class="link_thumb"> 19 !}Приклад 5. Скласти рекурсивну функцію, яка обчислює факторіал числа n в такий спосіб: n! = 1, якщо n = 1 n! = (n -1)! · n, якщо n > 1 function f (n: integer): integer; begin if n = 1 then f:= 1 else f:= n * f (n -1); (функція f викликає саму себе) end; 1 function f (n: integer): integer; begin if n = 1 then f:= 1 else f:= n * f (n -1); (функція f викликає сам"> 1 function f (n: integer): integer; begin if n = 1 then f: = 1 else f: = n * f (n -1); "> 1 function f (n: integer): integer; begin if n = 1 then f:= 1 else f:= n * f (n -1); (функція f викликає сам" title="Приклад 5. Скласти рекурсивну функцію, що обчислює факторіал числа n наступним чином: n!=1, якщо n=1 n!=(n-1)!· n, якщо n > 1 function n = 1 then f:= 1 else f:= n * f (n -1);(функція f викликає сам"> title="Приклад 5. Скласти рекурсивну функцію, яка обчислює факторіал числа n в такий спосіб: n! = 1, якщо n = 1 n! = (n -1)! · n, якщо n > 1 function f (n: integer): integer; begin if n = 1 then f:= 1 else f:= n * f (n -1); (функція f викликає сам"> !}




Підпрограми в Turbo Pascal


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

Причини використання підпрограм

  • спростити розробку великих програм методом декомпозиції (поділу) завдання на кілька підзавдань;
  • велика наочність програми;
  • економія пам'яті

Види підпрограм

процедури

функції

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

Процедури без параметрів

  • Формат запису :

procedure ;

end ;

  • Усі змінні, які використовуються у процедурах без параметрів, описуються в основній програмі (модулі Var).

приклад . Скласти програму знаходження об'єму циліндра.

Program cylinder;

Var R, H, V: real;

Procedure Input; (Процедура введення даних)

Writeln ('введіть значення радіусу');

writeln ('введіть значення висоти');

Procedure formula; { процедура обчислення обсягу }

V: =PI*sqr(R)*H;

Procedure Output; (Процедура виведення результатів)

writeln ('V=',V);


Процедури c параметрами

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

Процедури c параметрами

  • Глобальні змінні

приклад .

Program zadacha;

Var a, b: integer;

Procedure lokal;

Var a, x: char; Для процедури lokal:

begin змінна x – локальна змінна

a:=’! '; (Програма не може змінити її значення)

b: = b +1; змінна b – глобальна змінна

end; (Всі зміни значення цієї змінної у процедурі

BEGIN зберігаються і після виходу із процедури)

b:=100; змінна a в основній програмі цілого типу,

lokal; а у процедурі – символьного типу. Змінна а

writeln ('a =', a); цілого типу недоступна у процедурі lokal.

writeln ('b=',b);

Результат виконання програми: а = 0; b = 101.


); begin; end; " width="640"

Передача параметрів у Turbo Pascal

  • 1. Передача параметрів за значенням
  • Параметри-значення змінні, описані після імені процедури круглих дужках. Перед ними відсутнє службове слово Var.
  • Формат запису :

procedure (:

змінної);

end ;


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

приклад .

Program parameter;

Var m, n: integer;

Procedure summa (a, b: integer);

writeln ('S=',S);

summa (m,n); або summa (100,10);

Змінні a і b є формальними параметрами, а змінні m і n - Фактичними. Значення фактичних параметрів m =100 і n =10 передаються формальним параметрам a і b .

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


; Var змінної:); begin; end; " width="640"

Передача параметрів у Turbo Pascal

  • 2. Передача параметрів на ім'я
  • Параметри-змінні змінні, описані після імені процедури у круглих дужках та перед якими записано службове слово Var .
  • Формат запису :

procedure (:

змінної; Var

змінною:);

end ;



b then min: = b; якщо min c then min:= c; end; BEGIN writeln ('введіть три числа'); readln (a1, b1, c1); writeln (' введіть три числа'); readln (a2, b2, c2); minimum (a1, b1, c1, min1); minimum (a2, b2, c2, min2); S: = min1 + min 2; writeln ('S=', S); END. приклад. Дано дві трійки чисел: a 1, b 1, c 1 і a 2, b 2, c 2. Знайти значення суми: S=min (a1, b1, c1) + min (a2, b2, c2) " width=" 640"

Var a1, b1, c1, a2, b2, c2, min1, min2, S: real;

Procedure minimum (a, b, c: real; Var min: real);

якщо min b then min:= b;

якщо min c then min:= c;

writeln ('введіть три числа');

readln (a1, b1, c1);

writeln (' введіть три числа');

readln (a2, b2, c2);

minimum (a1, b1, c1, min1);

minimum (a2, b2, c2, min2);

S: = min1 + min 2;

writeln ('S=', S);

приклад. Дано дві трійки чисел: a 1, b 1, c 1 і a 2, b 2, c 2. Знайти значення суми: S = min (a1, b1, c1) + min (a2, b2, c2)


Функція- Це підпрограма, результатом роботи якої є певне значення.

  • Формат запису :

function (:

end ;

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

Program вираження;

функція modul (a: real) : real;

writeln ('введіть значення змінної');

y:= modul (x-3) + modul (x+6);

writeln ('y=', y);

приклад . Обчислити значення виразу: y = | x-3 | + | x+6 |

Cлайд 1

Cлайд 3

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

Cлайд 4

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

Cлайд 5

Cлайд 6

Опис процедури Program Pr1; Const … Type … Var … Procedure (); Описова частина Begin Тіло процедури End; Begin … (); … end. При виклик процедури формальні параметри замінюються фактичними.

Cлайд 7

Процедура обчислення суми двох чисел program pr1; Uses crt; Var a, b, s: real; procedure summa(x,y:real;var z:real); begin z:=x+y; end; begin clrscr; writeln("введіть a,b"); readln(a,b); summa(a,b,s); writeln(" сума чисел ",a:3:1," і ",b:3:1," = ",s:3:1); readln; end. x,y,z – формальні параметри, локальні змінні a, b, s– глобальні змінні a,b,s – фактичні параметри x y z a b s Параметри-значення Параметр-змінна

Cлайд 8

Cлайд 9

Cлайд 10

Обчислити значення виразу a:=(3n!+2m!)/(m+n)! Для знаходження факторіалу який тип змінних доцільно використати? program pr2; Uses crt; Var m,n,x,y,z:integer; a:real; procedure fact(d:integer;var q:integer); var i:integer; begin q:=1; для i:=1 до d q:=q*i; end; begin clrscr; writeln("введіть значення n, m"); readln(n,m); fact(n,x); fact(m,y); fact(m+n,z); a:=(3*x+2*y)/z; writeln("значення виразу при m=",m:4," і n=",n:4,"рівно",a:8:3); readln; end. N! = 1 · 2 · 3 · ... · N

Cлайд 11

Введення виведення елементів одномірного масиву Функція Random(X) формує випадкове число від 0 до Х цілого або речового типу (перед зверненням до функції її необхідно ініціалізувати, використовуючи процедуру Randomize). Якщо параметр Х не заданий, результат буде типу Real від 0.0 до 1.0. Для отримання масиву цілих випадкових чисел з діапазону random(B-A+1)+A Завдання: Оформити введення елементів одновимірного масиву за допомогою генератора випадкових чисел (діапазон значень від -10 до 20) та виведення елементів як процедури. Для А=-10 В=20 random(20-(-10)+1)+(-10)

Cлайд 12

Cлайд 13

Cлайд 14

Опис функції Функції призначені для того, щоб обчислювати лише одне значення, 1. тому її перша відмінність полягає в тому, що процедура може мати нові значення у кількох параметрів, а функція тільки одне (воно буде результатом). 2. Друга відмінність полягає у заголовку функції. Він складається зі слова FUNCTION, за яким йде ім'я функції, потім у круглих дужках іде список формальних параметрів, після чого через двокрапку записується тип результату функції. 3. У тілі функції обов'язково має бути хоча б один оператор присвоєння, де в лівій частині стоїть ім'я функції, а в правій – її значення. Function (): Описова частина Begin Тіло функції:=; End;

Cлайд 15

Обчислити значення виразу a:=(3n!+2m!)/(m+n)! program fn2; Uses crt; Var m,n:integer; a:real; function fact(d:integer) :longint; var i:integer; q:longint; begin q:=1; для i:=1 до d q:=q*i; fact:=q; end; begin clrscr; writeln("введіть значення n, m"); readln(n,m); a:=(3*fact(n)+2*fact(m))/fact(m+n); writeln("значення виразу при m=",m:4," і n=",n:4,"рівно",a:8:3); readln; end.

Cлайд 16

Скласти програму, яка знаходитиме аb, тобто b-й ступіньчисла А, де А і В – це цілі числа та В>0, що вводяться з клавіатури. Складіть програму, замінивши процедуру функцію program pr2; Uses crt; Var a, b: integer; c:longint; Function stepen(x,y:integer):longint; var i:integer; s:longint; begin s:=1; for i:=1 to y do s:=s*x; Stepen:=s; end; begin clrscr; writeln("введіть значення a, b"); readln(a,b); C:=stepen(a,b); writeln("s=",s); readln; end.

Cлайд 17

Cлайд 18

Механізм передачі параметрів до функцій та процедур Що буде надруковано процедурою, а що програмою? Глобальні змінні Локальні змінні a b 3 3 -3 Адреса з a b c 48 Адреса з A:=b+3 B:=3*a C:=a+b Стан З 24 5 8 Відповідь

Cлайд 19