Меню сайту
Категорії розділу
Пошук

Каталог - Сайти шкіл та освітніх закладів

Lazarus. Підпрограми

Підпрограми. Формальні та фактичні параметри. Процедури та функції в Лазарус

Перейти на попередню сторінку "Текстові величини та операції з ними"

Навчальна презентація "Процедури та функції в Паскаль"

Навчальна презентація "Процедури та функції в Лазарус"

Процедура користувача, як й інші процедури, – це відокремлена частина програми, яка має своє ім’я та яка може бути викликана для виконання в будь-якій іншій частині програми.
Процедури користувача можуть бути:

  • без аргументів і без результатів; 
  • з аргументами і без результатів; 
  • без аргументів і з результатами; 
  • з аргументами і з результатами.

Аргументи процедури – це змінні, які отримують свої значення в команді виклику процедури перед початком виконання команд процедури. 
Результати процедури – це змінні, які передають свої значення з процедури певним змінним у команді виклику процедури.

Найчастіше використовують процедури останнього типу. Загальний вигляд цих процедур у Lazarus такий:
procedure <ім’я> (<списки аргументів з їхніми типами>; var списки результатів з їхніми типами>); 
var (<списки локальних змінних процедури з їхніми типами>); 
begin

         <команди>

end;
Загальний вигляд команди виклику процедури з аргументами і результатами такий:
<ім’я> (<списки виразів, значення яких передаються аргументам процедури>, <списки змінних, яким передають свої значення результати процедури>); 
У  команді виклику процедури порядок виразів, значення яких передаються аргументам процедури, і змінних, яким передають свої значення результати процедури, повинен строго відповідати порядку запису аргументів і результатів процедури в рядку її заголовка.
Змінні, які вказані в заголовку процедури, називаються формальними параметрами процедури.
Змінні, які вказуються в команді виклику процедури, називаються фактичними параметрами процедури. 

Процедура може не мати результатів, а може мати один або більше результатів. Якщо процедура має один результат, то зручніше її оформити і викликати як функцію користувача.
Функція користувача, як і процедура користувача – це відокремлена частина програми, яка має своє ім’я та яка може бути викликана для виконання в будь-якій іншій частині програми.

Приклад1. Створення та виклик процедури та функції знаходження НСД двох чисел (двома способами):

Опис процедури та функції:

Спочатку слід описати глобальні параметри m,n,x

var
  Form1: TForm1;
  m,n,x:integer;

Після implementation додаємо програмний код процедури чи функції:

implementation
procedure NSD(a,b:integer;var c:integer);
var r:integer;
  begin
  r:=a mod b;
  while (r>0)do
  begin
    a:=b;
    b:=r;
    r:=a mod b;
  end;
  c:=b;
  end;
function NSD(a,b:integer):integer;
 var r:integer;
  begin
  r:=a mod b;
  while (r>0)do
  begin
    a:=b;
    b:=r;
    r:=a mod b;
  end;
  NSD:=b;
  end;    

Потім описуємо процедури, що викликаються кліком відповідної кнопки:

procedure TForm1.Button1Click(Sender: TObject);
begin
m:=StrToInt(Edit1.Text);
n:=StrToInt(Edit2.Text);
NSD(m,n,x);    Зверніть увагу на команду виклику процедури!
Label1.Caption:=IntToStr(x);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
m:=StrToInt(Edit1.Text);
n:=StrToInt(Edit2.Text);
Label1.Caption:=IntToStr(NSD(m,n));    зверніть увагу на команду виклику функції!
end;   

Приклад 2. Знайти площу чотирикутника за відомими 4 сторонами та 1 діагоналлю. Проаналізуйте програмний код та виконайте цю ж задачу з використанням функції.

var
  Form1: TForm1;
  a,b,c,d,e:integer;
  s1,s2,s:real;

implementation
procedure geron(x,y,z:integer; var st:real);
var p:real;
begin
 p:=(x+y+z)/2;
 st:=sqrt(p*(p-x)*(p-y)*(p-z));
end;   

procedure TForm1.Button1Click(Sender: TObject);
begin
 a:=strtoint(edit1.text);
 b:=strtoint(edit2.text);
 c:=strtoint(edit3.text);
 d:=strtoint(edit4.text);
 e:=strtoint(edit5.text);
 geron(a,b,e,s1);
 geron(c,d,e,s2);
 s:=s1+s2;
  Edit6.text:=floattostr(s);
 end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  close;
end;    

Приклад 3. Створити калькулятор з використанням редактора меню

Інструкція.

  1. Помістіть компонент MainMenu на форму.
  2. Щоб почати формування пунктів меню двічі клацнути по компоненту TMainMenu1 на формі або натисніть на кнопку з трьома крапками у властивості Items компонента в інспектора об'єктів.
  3. На формі в горизонтальному меню з'явитися перший пункт, який за замовчуванням має ім'я Новий ITEM1 (Новий Елемент1). Відкриється спеціальне вікно редактора меню.
  4. У інспектора об'єктів в властивість Caption введіть ім'я першого пункту меню Скласти.
  5. Щоб створити наступний пункт меню, встановіть курсор на поточний елемент меню і відкрийте контекстне меню правим клацанням. Виберіть "Вставити новий пункт (після)". На формі з'явиться наступний пункт горизонтального меню. В інспектора об'єктів в властивість Caption введіть назву другого пункту меню: Розділити.

      

6. Створіть загальну для всіх пунктів меню процедуру Знака, параметром якої буде символ арифметичної операції «+» або «/». Процедура буде отримати числові значення з полів Edit1 і Edit2, обробляти зазначену в якості параметра операцію і виводити отриманий результат в поле Edit3.
7. Текст процедури потрібно помістити в розділ implementation (Реалізація) після директиви {$ R * .lfm}.

 

implementation

{$R *.lfm}
procedure Znak(zn:char);
label mitka;
var result, num1, num2:real;
begin
    num1:=StrToFloat(form1.edit1.text);
    num2:=StrToFloat(form1.edit2.text);
    case zn of
    '+': result:=num1 + num2;
    '/': if num2<> 0 then result:=num1/num2;
    else
      begin
       showMessage('Ділити на 0 не можна!');
       form1.edit2.text := '';
       form1.edit2.SetFocus;
       form1.edit3.text := '';
       goto mitka;
      end;
   end; // casse
   form1.Edit3.Text := FloatToStr(result);
   mitka:
end;

Обробник для пункту меню Скласти. Для цього двічі клацніть на цьому пункті меню у редакторі меню.
procedure TForm1.MenuItem1Click(Sender: TObject);
 begin
    znak('+');
 end;

Обробник для пункту меню Розділити:
procedure TForm1.MenuItem2Click(Sender: TObject);
begin
  znak('/');
end;

Обробник події Очистити форму:
 procedure TForm1.Button1Click(Sender: TObject);
begin
  Edit1.Text:=' ';
  Edit2.Text:=' ';
  Edit3.Text:=' ';
end;

Завершення роботи, вихід:

procedure TForm1.Button2Click(Sender: TObject);
begin
  Close;
end;

8. Доповніть форму новими пунктами меню: Відняти, Помножити та опишіть відповідні події у програмному коді.        


Всім привіт!
Спеціалізована загальноосвітня школа І - ІІІ ступенів № 8 вітає відвідувачів сайту.


Статистика

Онлайн всього: 1
Гостей: 1
Користувачів: 0
Наша школа
Це цікаво!
Під землею виявлений Гігантський Океан, який в три рази більше всіх океанів на Землі Радимо прочитати
Україна надзвичайна! Перейти на блог
ТОП 9 Youtube каналів українською мовою з розвиваючим відео для дітей (для вчителів, батьків, учнів)
МОН пропонують відмовитись від «зубріння» в школі Читайте тут 
Освіта майбутнього: поступовий відхід в онлайн Читайте тут
Міносвіти схвалило зміни до навчальних програм для 9 - 11 класів Прочитати

Переможці конкурсу сайтів
Сайти вчителів школи знову відзначені на міському та обласному конкурсі освітніх сайтів.

Офіційний сайт школи - ІІ місце на міському конкурсі. Сайт початкової школи СЗШ № 8 - II місце в обласному конкурсі веб-сайтів. 

І місце в місті та ІІ місце в області: персональні сайти вчителя математики та інформатики Кравчук Г.Т. (перейти на сайт) та вчителя початкової школи Бігус І.М. Перейти на сайт.

ІІІ місця: в області - персональний сайт вчителя світової літератури Шенькарук А.В., (перейти на сайт) в місті - персональні сайти вчителя хімії Мороз Л.О.(перейти на сайт), та вчителя початкових класів Атаманюк Н.В.(перейти на сайт). Сайт "Інклюзивна освіта" Атаманюк Н.В. в області - 4 місце.

Серед учнівських проектів отримали дипломи сайти "Вивчаємо інформатику" (перейти на сайт), "Моя Україно" (перейти на сайт), електронний посібник "Художня культура. 11 клас" (перейти на сайт)

«Методичний портал»


Copyright MyCorp © 2017
Безкоштовний конструктор сайтів - uCoz