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