Подпрограммы_2.ppt
- Количество слайдов: 12
Procedure <ІМ’Я> (Список параметрів); Procedure Ploshad 3(a, b, c: real; var s: real); В програмі до процедури звертаються: <ІМ’Я> (Список параметрів); Ploshad 3 (AB, BC, AC, S);
Блок/схема процедури записується окремо від основної програми. Команда виклику процедури
B ПРИКЛАД: Написати програму для знаходження площі 4 -кутника, заданного довжинами його сторін і діагоналлю. C A Діагональ ділить 4 -кутник на два 3 -кутника, можна використувати формулу Герона: D
program Prog 3; uses CRT; var AB, BC, CD, DA, AC, S 1, S 2: real; Procedure Ploshad 3 (a, b, c : real; var s : real); var p: real; begin p: =(a+b+c)/2; s: =sqrt(p*(p-a)*(p-b)*(p-c)); end; Формальні параметри begin Clrscr; Writeln('Задайте сторони 4 -кутника ABCD і його діагональ AC'); readln (AB, BC, CD, DA, AC); Ploshad 3(AB , BC , AC , S 1); Ploshad 3(DA, AC, CD, S 2); Writeln ('Площа ABCD= ', S 1+S 2: 8: 2); readln; end. Фактичні параметри
Підпрограма-функція Загальний вигляд описання підпрограми-функції: Function ім’я (формальні величини): тип результату; Var описання локальних змінних; Begin Команди функції (виконувана частина); ім’я : = змінна-результат обчислень; End; Обов’язкова команда перед кінцем функції
program Function_of_user; uses Crt; var AB, BC, CD, DA, AC, S 1, S 2, S: real; Function f(a, b, c: real): real; var p: real; begin p: =(a+b+c)/2; F: =Sqrt(p*(p-a)*(p-b)*(p-c)); end; begin readln (AB, BC, CD, DA, AC); S 1: =f(AB, BC, AC); S 2: =f(CD, DA, AC); s: =S 1+S 2; writeln (S: 8: 2); Writeln (f(AB, BC, AC)+ f(CD, DA, AC): 8: 2); readln; end. Звернення до функції
Порівняння процедур і функцій. Процедури Функції 1 Може мати декілька Має тільки один результат, тип результатів або виконувати якого вказується окремо при деякі дії описі функції. 2 Результатами можуть бути Результат може бути тільки значения довільного типу значення типу real, integer або масиви, рядки, числа і т. д. char. 3 Команда виклику процедури – вернення до функції може окрема команда, яка використовуватися тільки як використовується самостійно компонент виразу відповідного типу. 4 В тілі функції обов’язково буде хоч один оператор присвоєння, в лівій частині якого вказано ім’я функції.
Приклад. Написати програму виведення на екран комп’ютера таблиці тригонометричних функцій sin x, cos x. tg x. Для обчислення функції tg x використати функцію користувача, а для виведення таблиці – процедуру.
Program Table_of_function; uses CRT; var x, nx, kx: integer; function Tg(xx: integer): real; begin if cos(xx)<> 0 then Tg: =sin(xx)/cos(xx) else Tg: =-100; end; procedure output(a: integer; b, c, d: real); var i: integer; begin for i: =1 to 35 do write('_'); writeln (a: 8, b: 8: 2, c: 8: 2, d: 8: 2); end; begin clrscr; writeln ('Zadayte diapason dlja x: nx, kx'); Readln (nx, kx); {*** zagolovok tablizy***} writeln (' x sinx cosx tgx'); for x: =nx to kx do output(x, sin(x), cos(x), tg(x)); readln; end.
Приклад 2 Написати програму, яка визначає, чи є білет «Щасливим» , тобто сума правих трьох цифр числа повинна бути рівна сумі лівих трьох цифр. Для написання цієї програми нада операції DIV ціла частина від ділення і MOD остача від ділення. 20 div 7 =2 20 mod 7 =6 123 div 10 = 12 123 mod 100 = 23
Program Bilet; uses Crt; var Nomer: longint; lev, prav: integer; function summa(x: integer): integer; var i, j, k: integer; begin i: =x div 100; { sothi} j: =x div 10 mod 10; {desjatki} k: =x mod 10; {edinizy} summa: =i+j+k; end; begin clrscr; writeln (‘ Zadayte nomer bileta-); writeln (‘zeloe 6 -zn chislo'); readln (nomer); lev: = nomer div 1000; prav: = nomer mod 1000; if summa(lev)=summa(prav) then writeln ('Yes') else writeln ('No'); readln; end.
Подпрограммы_2.ppt