Стандартні підпрограми та підпрограми
користувача. Створення і виклик підпрограм
Мета уроку:
Навчальна: сформувати поняття стандартних підпрограм та підпрограм користувача, локальних та глобальних змінних, формальних та фактичних параметрів підпрограм; сформувати вміння та навички використання стандартних підпрограм та створення процедур і функцій користувача;
розвивати: логічне мислення, інформаційну культуру, пізнавальні інтереси учнів;
виховувати: активність, увагу, дисциплінованість, взаємодопомогу, інтерес до предмета і навчання.
Обладнання та матеріали: персональні комп'ютери, мультимедійний проектор, інтерактивна дошка, програмне забезпечення Delphi 7, комп'ютерна презентація, опорні конспекти, картки із завданнями.
Тип уроку: комбінований.
Структура уроку:
I. Організаційний етап
II.Перевірка домашнього завдання
III.Актуалізація опорних знань
IV.Мотивація навчальної діяльності
V.Сприйняття та усвідомлення нового матеріалу
VI. Первинне закріплення знань
VII. Підбиття підсумків уроку
VIII. Домашнє завдання
Хід уроку
· Організаційний етап
Привітання. Підготовка класу до занять. Оголошення теми, мети і завдань уроку.
· Перевірка домашнього завдання
Аналіз помилок в задачах, які учні попередньо завантажили в додаток ClassRoom
· Актуалізація опорних знань
Використовуються інтерактивні вправи (анаграма, ), створені в програмі Smart NoteBook.
Бесіда з елементами опитування
- Як створити проект?
- За допомогою яких елементів користувач може вводити дані в програму?
- Як ввести дійсне число?
- За допомогою яких елементів користувач може вивести результат?
- Як вивести ціле число? дійсне? текстовий рядок?
- Які властивості елементів керування ви знаєте?
· Мотивація навчальної діяльності
Під час створення програм інколи виникає необхідність повторно використати частини коду. Якщо така необхідність виникає декілька разів, код можна просто скопіювати. Що ж робити, коли код необхідний досить часто?
· Сприйняття та усвідомлення нового матеріалу
Підпрограма(subroutine) - частина програми, яка реалізує певний алгоритм і дозволяє звертатися до неї з різних частин загальної(головної) програми.
Підпрограму часто використовують для скорочення розмірів програм у тих задачах, у процесі розв'язування яких необхідно виконати декілька разів однаковий алгоритм при різних значеннях параметрів. Оператори(команди), які реалізують відповідну підпрограму, записують один раз, а в необхідних місцях розміщують оператори передавання керування на цю програму.
Процедури користувача в Delphi
Під час творення програм можна включати до проекту процедури, не пов'язані з подіями. Такі процедури називаються процедурами користувача.
Процедура користувача, як й інші процедури, - це відокремлена частина програми, яка має своє ім'я та може бути викликана для виконання в будь-якій іншій частині програми.
Процедури користувача можуть бути:
Без аргументів і без результатів;
З аргументами і без результатів;
Без аргументів і з результатами;
З аргументами і з результатами;
Аргументи процедури - це змінні, які отримують свої значення в команді виклику перед початком виконання команд процедури.
Результати процедури - це змінні, які передають свої значення з процедури певним змінним у команді виклику процедури.
Найчастіше використовують процедури останнього типу. Загальний вигляд процедур у Delphi такий:
Procedure<ім'я>(<списки аргументів з їхніми типами>; var <списки результатів з їхніми типами>);
Var (<списки локальних змінних процедури з їхніми типами>);
Begin
<команди>
End;
Загальний вигляд команди виклику процедури з аргументами і результатами такий:
<ім'я>(<списки виразів, значення яких передаються аргументам процедури>,<списки змінних, яким передають свої значення результати процедури>);
У команді виклику процедури порядок виразів, значення яких передаються аргументам процедури, і змінних, яким передають свої значення результати процедури, повинен строго відповідати порядку запису аргументів і результатів процедури в рядку її заголовка.
Приклад 1.Скласти програму знаходження площі чотирикутника за його сторонами та діагоналлю, використовуючи підпрограму обчислення площі трикутника за формулою Герона.
Нехай сторони чотирикутника a,b,c,d, а діагональ - m. Знайдемо площу чотирикутника як суму площ двох трикутників.

1.В основній програмі викликати підпрограму geron для обчислення площі першого трикутника можна, наприклад, такою командою geron (6, 12,10,s1). Змінні x,y,z отримають значення x:=6;y:=12;z:=10, в підпрограмі знаходиться площа першого трикутника, результат обчислень в основній програмі заноситься в s1; при повторному зверненні до підпрограми geron (6, 8, 10,s2). формальним параметрам х, у,z надаються значення x:=6;y:=8;z:=10, в підпрограмі знаходиться площа другого трикутника, результат обчислень в основній програмі заноситься в s2. Площу чотирикутника знаходять як суму площ трикутників: s:=s1+s2;
Параметри, які передаються у процедуру чи функцію при її виклику, називаються фактичними(знаходяться в точці виклику).
Параметри, що вказуються у заголовку підпрограми і які при її виконанні набувають значень фактичних параметрів, називаються формальними.
2. Формальні параметри процедури geron розділені на дві групи:
a) першах, у, z - це довжина сторін трикутника, які передаються в підпрограму для виконання обчислень. Ці параметри називаються параметрами- значеннями і описуються без зарезервованого слова var.
b) друга група містить один параметр f - обчислену площу. Його значення буде «забиратися» з процедури, а тому цей параметр при описіповинен починатися з зарезервованого слова var і називається він параметром - змінною.
Функції користувача в Delphi
Як зазначалося вище, процедура може не мати результатів, а може мати один або більше результатів. Якщо процедура має один результат, то її зручніше оформити і викликати як функцію користувача.
Функція користувача, як і процедура користувача - це відокремлена частина програми, яка має своє ім'я та може бути викликана для виконання в будь-якій іншій частині програми.
Відрізняється функція від процедури таким:
1. Рядок заголовка функції виглядає так:
Function<ім'я > (списки аргументів з їхніми типами >):<тип результату>;
2. Значення, яке функція повинна повернути(передати) команді, яка її викликає, у тексті самої функції має бути присвоєно змінній, ім'я якої збігається з іменем функції.
3. Функція може бути викликана або в правій частині команди присвоєння, або в команді виведення.
Приклад 2.Скласти програму знаходження значення функції:
Z:=x! - y!
Оскільки значення факторіалу - це число, підпрограму можна оформити як функцію. Назвемо її factorial.
Function factorial(n:integer):longint;
Var i:integer; f:longint;
Begin
F:=1;
For i:=1 to n do f:=f*i;
Factorial:=f;
End;
В основній програмі при зверненні до функції factorial перший раз формальному параметру надається значення х factorial(x), в підпрограмі знаходиться х! і результат повертається в основну програму, потім при повторному зверненні до функції factorial параметру n присвоюється значення y factorial(y); і в підпрограмі обчислюється y!, результат повертається в основну програму. На завершенні змінній z:= factorial(x)- factorial(y), тобто z:= x!-y!.
Стандартні процедури та функції в Delphi
У мові програмування Delphi можна використати великий набір стандартних процедур і функцій, призначених для виконання різноманітних операцій над числами, текстами, елементами керування, графічними об'єктами, файлами та ін.
Приведемо приклади стандартних функцій у Delphi

Навчальний матеріал пояснюється на реальному прикладі.
Створити проект для обчислення Z:=x! - y! При x=5,y=3.

Код проекту:
unit UFUN;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function fact(n:integer):longint;
Var i:integer; f:longint;
Begin
F:=1;
For i:=1 to n do f:=f*i;
Fact:=f;
End;
procedure TForm1.Button1Click(Sender: TObject);
var x,y:integer;z:longint;
begin
x:=STRTOINT(edit1.Text);
y:=StrToint(edit2.Text);
z:=fact(x)-fact(y);
Edit3.text:=IntToStr(z);
end;
end.
VI.Первинне закріплення знань
Практичне завдання.
Інструктаж із техніки безпеки.
- Запишіть заголовок процедури з іменем stepin, аргументами якої є змінна a дійсного типу і змінна b цілого типу, а результатом - змінна с дійсного типу, і приклад команди її виклику.
2. Запишіть процедуру з іменем simp, яка здійснює перевірку, чи є дане натуральне число простим і повертає як результат значення змінної f логічного типу ознаку того, чи є число простим, і значення змінної k цілого типу - кількість дільників даного числа.
3. Запишіть заголовок функції з іменем length, аргументами якої є чотири змінні цілого типу, а результат має дійсний тип, і приклад команди її виклику.
4. Запишіть функцію, яка виконує обчислення довжини відрізка за відомими координатами його кінців. Запишіть команду виклику цієї функції для обчислення довжини відрізка а з координатами кінців (0; 0) та (20; 30).
5. Створіть проект, у якому можна знайти максимальне із чотирьох заданих різних цілих чисел. Використайте функцію для знаходження більшого з двох заданих цілих чисел. Створіть у власній папці папку Проект 25 і збережіть у ній проект.
· Підбиття підсумків уроку
Здійснюється за допомогою інтерактивних вправ, створених в програмі Smart NoteBook
VIII. ДОМАШНЄ ЗАВДАННЯ.
1.Опрацювати конспект уроку та розділ підручника 2.10. Виконати завдання, завантажені в додатку ClassRoom.
Низький рівень
Запишіть заголовок функції з іменем stepin, аргументами якої є змінна a дійсного типу і змінна b цілого типу, а результат дійсного типу.
Середній рівень
Запишіть процедуру з іменем square, яка виконує обчислення площі трикутника за відомими довжинами його сторін, значення яких передаються до процедури як аргументи. Для обчислення площі використайте формулу Герона.
Достатній рівень
Створіть проект, у якому для двох заданих на площині точок з цілими координатами визначається, чи лежать вони в одній координатній чверті. Використайте процедуру для визначення координатної чверті, у якій розміщена точка із заданими координатами. Створіть у власній папці папку Проект 2.10.4 і збережіть у ній проект.
Високий рівень
Запишіть функцію, в якій обчислюється значення факторіалу заданого натурального числа n (n! = 1 × 2 × 3 × ... × n). Запишіть команду використання цієї функції для обчислення суми факторіалів перших п'яти натуральних чисел.