Програмування мовою Паскаль
Функції
Функції
Функція – це допоміжний алгоритм (підпрограма), результатом роботи якої є деяке значення.
Приклади: • обчислення , ,
• розрахунок значення по складених формулах
• відповідь на запитання (просте число або ні?)
Для чого?• для обчислення однакових розрахунків в різних місцях
програми
• для створення загальнодоступних бібліотек функцій
xsin xxcos
Функції
Задача: скласти функцію, яка обчислює більше з двох значень, і навести приклад її використання
Функція:
формальні параметри
function Max (a, b: integer): integer;
begin
if a > b then Max := a
else Max := b;
end. це результат функції
Функції
Особливості:
• заголовок починається словом 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
Функції
Особливості:
• можна оголошувати і використовувати локальні змінні
• значення, яке є результатом, записується в змінну, ім’я якої співпадає з назвою функції; оголошувати НЕ ПОТРІБНО:
function Max (a, b: integer): integer;
begin
...
end;
Max := a;
function qq (a, b: integer): float;
begin
...
end;
var x, y: float;
Програма
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
Імена змінних, функцій і процедур не повинні співпадати!!
фактичні параметри
виклик функції
Логічні функції
Задача: скласти функцію, яка визначає, чи дійсно, що задане число –просте.
Особливості:
• відповідь – логічне значення (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 складене }
Як краще??
Логічні функції
program qq;
var N: 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
умова – це логічне значення
Завдання
"4": Скласти функцію, яка визначає суму всіх чисел від 1 до N і навести приклад її використання.
Приклад:
Ввести число:
100
сума = 5050
"5": Скласти функцію, яка визначає, скільки зерен попросив положити на
N-ту клітку винахідник шахмат (на 1-шу – 1 зерно, на 2-у – 2 зерна, на 3-ю – 4 зерна, …)
Приклад:
Ввести номер клітки:
28
На 28-ой клітці 134217728 зерен.
Завдання (варіант 2)
"4": Скласти функцію, яка визначає найбільший спільний дільник двох натуральних чисел і навести приклад її використання.
Приклад:
Ввести два числа:
14 21
НСД(14,21)=7
"5": Скласти функцію, яка обчислює синус як суму ряду (с точністю 0.001)
Приклад:
Ввести кут в градусах:
45
sin(45) = 0.707
!7!5!3
sin753 xxx
xx
x в радіанах!