Функції
Функція – цедопоміжний алгоритм
(підпрограма), результатом роботи якої є деяке
значення.
Приклади:
• обчислення , ,
• розрахунок значення по складених формулах
• відповідь на запитання (просте число або ні?)
Для чого?
• для обчислення однакових розрахунків в різних місцях
програми
• для створення загальнодоступних бібліотек функцій
xsin xxcos
3.
Функції
Задача: скласти функцію,яка обчислює більше з двох
значень, і навести приклад її використання
Функція:
формальні параметри
function Max (a, b: integer): integer;
begin
if a > b then Max := a
else Max := b;
end. це результат
функції
4.
Функції
Особливості:
• заголовок починаєтьсясловом function
• формальні параметри описуються так само, як і для процедур
• можна використовувати параметри-змінні
• в кінці заголовка через двокрапку вказується тип результату
• функції розміщуються ВИЩЕ основної програми
Max (a, b: integer): integer;function
function Max (a, b: integer): ;integer
function qq( a, b: integer; x: real ): real;a, b: integer; x: real
function Max ( a, b: integer): integer;var
5.
Функції
Особливості:
• можна оголошуватиі використовувати локальні змінні
• значення, яке є результатом, записується в змінну, ім’я якої
співпадає з назвою функції; оголошувати НЕ ПОТРІБНО:
function Max (a, b: integer): integer;
begin
...
end;
Max := a;
function qq (a, b: integer): float;
begin
...
end;
var x, y: float;
6.
Програма
program qq;
var a,b, max: integer;
begin
writeln(‘Введіть два числа');
read(a, b);
max := Max ( a, b );
writeln(‘Найбільше число ', max );
end.
function Max (a, b: integer): integer;
begin
...
end;
c
c
c
Імена змінних, функцій і процедур не
повинні співпадати!
!
фактичні параметри
виклик функції
7.
Логічні функції
Задача: скластифункцію, яка визначає, чи дійсно, що задане число –
просте.
Особливості:
• відповідь – логічне значення (True або False)
• результат функції можна використовувати як логічну величину
в умовах (if, while)
Алгоритм: рахуємо кількість дільників в інтервалі від 2 до N-1, якщо
воно не дорівнює нулю – число складене.
count := 0;
for i := 2 to N-1 do
if N mod i = 0 then
count := count + 1;
if count = 0 then
{ число N просте}
else { число N складене }
Як краще??
8.
Логічні функції
program qq;
varN: integer;
begin
writeln(‘Ввести ціле число');
read(N);
if Prime(N) then
writeln(N, ' – просте число')
else writeln(N, ' – складене число');
end.
function Prime (N: integer): boolean;
var count, i: integer;
begin
i := 2; count := 0;
while i*i <= N do
if N mod i = 0 then count := count + 1;
i := i + 1;
end;
Prime := (count = 0);
end;
виклик функції
результат – логічне значення
перебір тільки до N
умова – це логічне значення
9.
Завдання
"4": Скласти функцію,яка визначає суму всіх чисел від 1 до N і навести
приклад її використання.
Приклад:
Ввести число:
100
сума = 5050
"5": Скласти функцію, яка визначає, скільки зерен попросив положити на
N-ту клітку винахідник шахмат (на 1-шу – 1 зерно, на 2-у – 2 зерна, на
3-ю – 4 зерна, …)
Приклад:
Ввести номер клітки:
28
На 28-ой клітці 134217728 зерен.
10.
Завдання (варіант 2)
"4":Скласти функцію, яка визначає найбільший спільний дільник двох
натуральних чисел і навести приклад її використання.
Приклад:
Ввести два числа:
14 21
НСД(14,21)=7
"5": Скласти функцію, яка обчислює синус як суму ряду (с точністю 0.001)
Приклад:
Ввести кут в градусах:
45
sin(45) = 0.707
!7!5!3
sin
753
xxx
xx
x в радіанах!