1 Підпрограми 2 Підпрограми При розробці програм іноді
1 Підпрограми
2 Підпрограми При розробці програм іноді з’являються повторювані групи дій або виникає необхідність поділити програму на окремі модулі. Для цього існують підпрограми. Підпрограма – це іменована, логічно закінчена група операторів, яку можна викликати для виконання будь-яку кількість разів із різних місць програми. Підпрограми мають структуру, аналогічну до структури головної програми на Паскалі. Кожна підпрограма – це міні-програма в програмі. В ній діють всі закони, що притаманні будь-якій програмі.
Виконання підпрограм Програма Підпрограма <Оператор>; <Оператор>; <Оператор>; <Оператор>; <Виклик підпрограми> <Оператор>; <Оператор>; 3
4 Види підпрограм У Паскалі розрізняють два види підпрограм: функції (function) та процедури (procedure). Функція – це підпрограма для проведення математичного обчислення виразу чи функції. Результат її виконання – певне числове значення, яке повертається у програму. При використанні підпрограм змінні бувають: локальні – описані в підпрограмах, глобальні – описані в основній програмі.
Локальні і глобальні змінні 5
6 Місце описання підпрограм Всі підпрограми описуються перед командами основної програми. Заголовок основної програми Описання підпрограми Тіло основної програми
7 Підпрограма-процедура Загальний вигляд описання підпрограми-процедури: Procedure ім’я (формальні параметри); Var описання локальних змінних; Begin Команди процедури (виконувана частина); End; Формальних параметрів може і не бути, якщо процедура не отримує даних із головної програми для їх обробки (процедура без параметрів) Ім’я буде потрібне для виклику процедури у програмі!
8 Підпрограма-процедура Формальні параметри: вхідні і вихідні Procedure ім’я (вхідні п.: типи; var вихідні п. : типи); Var описання локальних змінних; Begin Команди процедури (виконувана частина); End;
9 Існують багато ситуацій, коли необхідно одні й ті ж дії виконувати в програмі не один раз. Але не підряд! Задача: Розрахувати кінетичну енергію тіла. При кожному введенні чи виведені даних програвати звуковий фрагмент. Для створення звуку в Паскалі існує оператор Sound(частота) та оператор NoSound. Також знадобиться оператор тривалості Delay(час в мілісекундах). Наприклад такий набір команд: Sound(200); Delay(50); Sound(400); Delay(50); NoSound; пропищить звук із двох фрагментів 200 Гц і 400 Гц. Підпрограма-процедура
10 Program Energy; Uses Crt; Var m,v,e:real; Procedure Zvuk; Begin Sound(200); Delay(50); Sound(400); Delay(50); NoSound; End; Begin Zvuk; Readln(m); Zvuk; Readln(v); e:=m*v*v/2; Zvuk; Writeln(‘Енергія= ’,e:3:2); Readkey; End. Підпрограма-процедура
11 Підпрограма-функція Існують багато функцій, які вбудовані у мову Паскаль. Наприклад sin(x), сos(x), abs(x), sqrt(x) та інші. Та бувають випадки, коли при розрахунках потрібно багато разів розраховувати вираз для якого готової функції Паскаля немає. Наприклад: Тут було б добре порахувати відношення синуса до косинуса окремо, та такої готової функції немає. Створимо її самі!
12 Підпрограма-функція Загальний вигляд описання підпрограми-функції: Function ім’я (формальні величини):тип результату; Var описання локальних змінних; Begin Команди функції (виконувана частина); ім’я : = змінна-результат обчислень; End; Обов’язкова команда перед кінцем функції
13 Підпрограма-функція Загальний вигляд описання підпрограми-функції: Function ім’я (вхідні п.: типи; var вихідні п. : типи):тип результату; Var описання локальних змінних; Begin Команди функції (виконувана частина); ім’я : = змінна-результат обчислень; End;
14 Задача Знайти значення виразу. Величини а та b вводить користувач.
15 Розв’язок задачі Program FFF; Uses Crt; Var a,b,y:real; Function SB(s,n:real):real; Var s,n,z:real; Begin z:=sin(s)/cos(n); SB:=z; End; Begin Readln(a,b); y:=SB(a,b)/sqr(SB(a,b))-sqrt(SB(a,b))+(sqr(SB(a,b))*SB(a,b)); Writeln(y:3:2); Readkey; End. Підпрограма-функція Обчислення за допомогою функції
16 Підпрограми Виклик процедури ім’я (фактичні параметри) Виклик функції y:=вираз; Всередині виразу стоїть виклик функції y:= ім’я (фактичні параметри)
17 Формальні і фактичні параметри параметрів може не бути взагалі (процедури без параметрів); параметри поділяються на вхідні і вихідні; під час виклику підпрограми фактичні параметри необхідно задавати у тому ж порядку, в якому перелічені формальні; (необхідно дотримуватись суворої відповідності типів форм. і факт. параметрів)
18 Формальні і фактичні параметри якщо формальний параметр є результатом роботи підпрограми, то його необхідно описувати як параметр-змінну (var …) якщо формальний параметр є тільки аргументом (вхідним п.), то його описують як параметр-значення; параметрами процедури можуть слугувати процедури і ф-ції (процедурний тип даних); імена фактичних параметрів можуть співпадати з іменами формальних.
19 program func_var; var a,b: integer; function f(x:integer):integer; begin x:=x+1; f:=x; end; function g (var x: integer):integer; begin x:=x/2; g:=x; end; begin a:=12; b:=f(g(a)); writeln('a=',a,'b=',b); end. Коментар до п. 4
20 4 варіанти оголошення процедурного типу: type <ідентифікатор типу> = procedure(параметри); <ідентифікатор типу> = procedure; <ідентифікатор типу> = function(параметри):тип; <ідентифікатор типу> = function:тип; Процедурний тип даних
Рекурсія 21
Рекурсія 22
16328-5_f+unc.ppt
- Количество слайдов: 22

