Подпрограммы. Создание процедур и функций

Лабораторная работа №1. Подпрограммы

Цели работы:

— Научиться создавать процедуры;

— Научиться создавать функции;

— Научиться связывать несколько модулей между собой.

1.1 Описание понятий процедура и функция

Процедура — это подпрограмма, которая выполняет предназначенное действие и возвращается в точку вызова.

Функция — это подпрограмма, которая выполняет предназначенное действие и возвращается в точку вызова, также возвращает результат своего выполнения.

1.2 Перечень возможных вариантов расположения подпрограмм и влияние расположения на видимость подпрограмм

Подпрограммы могут располагаться в самых разных местах. Место расположения программы не влияет на ее работу, но от этого зависит доступность (видимость) подпрограммы. Ниже рассматриваются варианты расположения подпрограмм и обсуждаются особенности их использования, зависящие от расположения подпрограммы.

Варианты расположения подпрограмм:

— Подпрограммы обработки событий класса формы;

— Другие подпрограммы класса формы;

— Размещение подпрограмм в модуле.

1.3 Способы передачи параметров в подпрограммы

Существует два способа передачи параметров в подпрограммы — передача по значению и передача по наименованию. Способ передачи указывается при объявлении параметра в списке формальных параметров.

Читайте также:  Анализ деятельности кафе "Гурман"

1.3.1 Передача параметров по значению:

— Передача параметров по значению предполагает, что при вызове подпрограммы в памяти будет выделена специальная область для записи копий значений фактических параметров, с которыми и будет работать подпрограмма.

1.3.2 Передача параметров по наименованию

— При передаче параметров по наименованию в подпрограмму передаются адреса фактических параметров. Поэтому такой способ передачи называется еще передачей параметров по адресу или по ссылке.

1.4 Тексты своих процедур setKoef и getKoef

procedure setKoef (a,x,w:Real);

begin

With UnitSubroutine do

begin

Edit1.Text:=FloatToStr (a);

Edit2.Text:=FloatToStr (x);

Edit3.Text:=FloatToStr (w);

end

end;

procedure GetKoef(var a,x,w: Real);

begin

with UnitSubroutine do

begin

a:= StrToFloat(Edit1.text);

x:= StrToFloat(Edit2.text);

w:= StrToFloat(Edit3.text);

end

end;

1.5 Текст дополнительного модуля для своей формулы

unit Unit2;

interface

uses math;

function myFormula1(a,x,w: real):real;

implementation

function myFormula1(a, x, w:real): real;

var firstpart, secondpart, sinus: real;

begin

sinus := sin(w/x) ;

firstpart := a*sinus;

secondpart := power((w/x),(1/a));

myFormula1 := firstpart — secondpart;

end;

end.

1.6 Расчетная формула и контрольные примеры

Читайте также:  Восстановления утраченного судебного производства

процедура функция модуль подпрограмма

=2*sin0-0=0-0=0.

Контрольный пример:

A=2; X=4; W=0

F=0

1.7 Результаты тестирования проекта

Рисунок 1 — Проверка работоспособности программы

1.8 Результаты исследования способов передачи параметров в подпрограммы

1.8.1 Анализ передачи параметров по наименованию

Когда мы ничего не меняем, то процедура работает правильно. Если же мы уберем Var из procedure GetKoef, то процедура не будет получать данные для расчета и ответ будет равен 0.

1.8.2 Передача параметров по значению

При изменении формальных значений программа считает правильно, так как выделяется отдельная ячейка памяти для данного значения. Поэтому изменение формальных результатов не влияет на результат.

Выводы

Научились использовать дополнительные модули, подключать подпрограммы. Изучили разницу в передаче параметров по наименованию и по значению. Научились использовать конструкцию with … do. Научились объявлять процедуру или функцию для нескольких модулей.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...