На занятті буде пояснений алгоритм роботи з функціями на Паскалі, розглянуті стандартні функції. Будуть розібрані приклади використання функцій з параметрами і без параметрів.
Стандартні функції мови Pascal
Арифметичні функції (основні)
Функція Призначення Тип результату abs (x) абсолютне значення аргументу збігається з типом аргументу sqr (x) квадрат аргументу збігається з типом аргументу sqrt (x) квадратний корінь аргументу речовинний cos (x) косинус аргументу речовинний sin (x) синус аргументу речовинний arctan (x ) арктангенс аргументу речовинний exp (x) ex речовинний ln (x) натуральний логарифм речовинний int (x) ціла частина числа речовинний frac (x) дрібна частина числа речовинний
Функції перетворення типів
round (x) - округлює дійсне число до найближчого цілого. trunc (x) - видає цілу частину дійсного числа, відкидаючи дробову.
Функції для Pascal
Функція в Паскалі - це підпрограма, яка на відміну від процедури завжди повертає якесь значення. Для цього в тілі функції її імені присвоюється обчислене значення - результат, який вона повертає.
Розглянемо синтаксис:
var ...; {Оголошення глобальних змінних} function назва (параметри): тип результату; var ...; {Оголошення локальних змінних} begin ... {тіло функції} назва: = результат; {Результат обчислень завжди присвоюється функції} end; begin ... {тіло основної програми} end.
var ...; {оголошення глобальних змінних} function назва (параметри): тип результату; var ...; {Оголошення локальних змінних} begin ... {тіло функції} назва: = результат; {Результат обчислень завжди присвоюється функції} end; begin ... {тіло основної програми} end.
Приклад: написати функцію, яка обчислює найбільше з заданих двох значень
Рішення:
Виклик функції:
Приклад: Написати функцію на Паскалі, яка складає два будь-яких числа
1 2 3 4 5 6 7 8 9 10 11 12 var x, y: integer; function f (a, b: integer): integer; begin f: = a + b; end; begin writeln ( 'pervoe chislo:'); readln (x); writeln ( 'vtoroe chislo:'); readln (y); writeln ( 'summa =', f (x, y)); end.
var x, y: integer; function f (a, b: integer): integer; begin f: = a + b; end; begin writeln ( 'pervoe chislo:'); readln (x); writeln ( 'vtoroe chislo:'); readln (y); writeln ( 'summa =', f (x, y)); end.
У розглянутому прикладі використання функції в Паскалі: функція f має два цілочисельних параметра - a і b. Через двокрапка в заголовку функції (рядок 2) зазначено, що значення, що обчислюється функцією, буде теж цілочисельним. У тілі функції обчислюється сума присвоюється імені функції. А в основній програмі виклик функції здійснюється в якості параметра оператора writeln.
Таким чином, головна відмінність функції від процедури - це те, що функція виробляє будь-які обчислення і видає в програму результат у вигляді значення, в той час як процедура найчастіше виконує будь-які дії з результатом, наприклад, виводить його на екран ( функція цього робити не може).
Завдання function 1. За допомогою функції знайти середнє арифметичне двох чисел (функція з двома параметрами).
Показати рішення: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 var x: integer; function fact (a: integer): integer; var i: integer; begin if a <= 1 then begin fact: = 1; exit; end; result: = 2; for i: = 3 to a do result: = result * i; fact: = result; end; begin writeln ( 'chislo:'); readln (x); writeln (fact (x)); end.
var x: integer; function fact (a: integer): integer; var i: integer; begin if a <= 1 then begin fact: = 1; exit; end; result: = 2; for i: = 3 to a do result: = result * i; fact: = result; end; begin writeln ( 'chislo:'); readln (x); writeln (fact (x)); end.
У розглянутому прикладі функція має один параметр - a. Обчислюється функцією значення має цілочисельний тип, це вказується в заголовку функції (рядок 2). У тілі функції в циклі for обчислюється факторіал числа. Результат обчислення присвоюється ім'я функції (рядок 9). У тілі програми для виведення результату функції вона викликається в операторі writeln (рядок 14), який і виводить результат на екран.
Завдання function 2.Скласти функцію, яка визначає суму всіх чисел від 1 до N і привести приклад її використання.
приклад:
Введіть число: 100 сума = 5050
Завдання function 3. Скласти функцію, яка визначає, скільки зерен попросив покласти на N-у клітку винахідник шахів (на 1-у - 1 зерно, на 2-у - 2 зерна (в два рази більше попереднього результату), на 3-ю - 4 зерна, на 4-ю - 8 зерен ...)
приклад:
Введіть номер клітини: 28 На 28-ій клітці 134217728 зерен.
Завдання function 4. Обчислення ступеня числа за допомогою функції на мові Паскаль.
Завдання function 5. Описати функцію Calc (A, B, Op) дійсного типу, що виконує над ненульовими дійсними числами A та B одну з арифметичних операцій і повертає її результат. Вид операції визначається цілим параметром Op: 1 - віднімання, 2 - множення, 3 - розподіл, інші значення - складання. За допомогою Calc виконати для даних A і B операції, які визначаються даними цілими N1, N2, N3.
* З задачника М. Е. Абрамян (Proc22)
Самостійна робота
1 варіант:
Описати функцію CircleS (R) дійсного типу, яка знаходить площу круга радіуса R (R - дійсне). За допомогою цієї функції знайти площі трьох кіл з даними радіусами. Площа круга радіуса R обчислюється за формулою S = π * R2. Як значення Пі рівним 3.14.
* З задачника М. Е. Абрамян (Proc18)
2 варіант: Описати функцію TriangleP (a, h), що знаходить периметр рівнобедреного трикутника по його основи a і висоті h, проведеної до основи (a і h - речові). За допомогою цієї функції знайти периметри трьох трикутників, для яких дані підстави і висоти (периметр = сумі довжин всіх сторін). Для знаходження збоку b трикутника використовувати теорему Піфагора: b2 = (a / 2) 2 + h2.
* З задачника М. Е. Абрамян (Proc20)
Потренуйтеся в рішенні задач по темі, клацнувши по піктограмі: