Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Ситкин. Информатика. Программирование в DELPHI

.pdf
Скачиваний:
142
Добавлен:
18.07.2019
Размер:
1.49 Mб
Скачать

Правила записи типовых действий

 

 

 

 

 

Таблица 2.8

 

 

 

Стандартные функции и процедуры

 

 

 

 

 

 

 

Математ. запись

Запись на язы-

Тип

или действие

ке программ.

аргумента

результата

|x|

Abs(x)

Целый

Целый

Вещественный

Вещественный

 

 

 

 

x2

Sqr(x)

Целый

Целый

Вещественный

Вещественный

 

 

 

 

 

 

 

Sqrt(x)

Целый

Вещественный

 

x

 

Вещественный

Вещественный

 

 

 

 

ex

Exp(x)

Целый

Вещественный

Вещественный

Вещественный

 

 

 

 

Lnx

Ln(x)

Целый

Вещественный

Вещественный

Вещественный

 

 

 

 

Sinx

Sin(x)

Целый

Вещественный

Вещественный

Вещественный

 

 

 

 

Cosx

Cos(x)

Целый

Вещественный

Вещественный

Вещественный

 

 

 

 

Arctgx

Arctan(x)

Целый

Вещественный

Вещественный

Вещественный

 

 

 

 

Целая часть x

Int(x)

Вещественный

Вещественный

Дробная часть x

Frac(x)

Вещественный

Вещественный

Округл. x до це-

Trunc(x)

Вещественный

Целый

лого в сторону 0

 

 

 

Округл. x до

Round(x)

Вещественный

Целый

ближайш. целого

 

 

 

Случайное целое

Random(N)

Целый

Целый

x от 0 до N

 

 

 

Случайное ве-

Random

 

Вещественный

ществ. x от 0 до 1

 

 

 

 

Число

Pi

 

Вещественный

Увелич. х на 1

Inc(x)

 

 

Увелич. х на n

Inc(x, n)

 

 

Уменьш. х на 1

Dec(x)

 

 

Уменьш. х на n

Dec(x, n)

 

 

31

Приведём примеры записи некоторых вычислений (выражений)

 

 

 

 

 

a

 

 

 

 

 

x2 y 2

 

sqrt(abs(sqr(x) sqr(y)));

b

a/(a+1)+b;

 

 

 

 

 

 

a 1

 

 

 

 

 

 

 

xy = ey·lnx exp(y*ln(x)); logax ln(x)/ln(a);

tgx sin(x)/cos(x).

При вводе (выводе) данных в компоненты Edit, LabeledEdit, Memo, Label и др. сами данные получают строковый тип данных, так уста-

новлено системой программирования. Поэтому, даже если в поле Edit1

введено число, например, 55, то оно воспринимается как строка из двух символов 5, т.к. Edit1.Text свойство строкового типа по умолча-

нию. Для того, чтобы программа воспринимала числа, как числа, и

над ними можно было выполнять арифметические операции, содержимое Edit1.Text следует преобразовать из строки символов в число. А

при выводе данных, наоборот, следует преобразовать число в строку

символов. Некоторые функции преобразований описаны в табл. 2.9.

 

 

 

Таблица 2.9

 

Функции преобразования типов

 

 

 

 

 

Функция

Преобразование

Тип

аргумента

результата

 

 

StrToInt(s)

строка символов

Строковый

Целый

целое число

 

 

 

StrToFloat(s)

строка символов

Строковый

Вещественный

веществ. число

 

 

 

IntToStr(n)

целое число

Целый

Строковый

строка символов

 

 

 

FloatToStr(n)

веществ. число

Вещественный

Строковый

строка символов

 

 

 

Примеры преобразований

var x1, x2:byte;

y1, y2:real;

32

begin

x1 StrToInt(Edit1.Text); y1 StrToFloat(Edit2.Text);

…………………………………………………………...

Label1.Caption IntToStr(x2); Label2.Caption FloatToStr(y2);

Структура процедуры обработки события

Процедура состоит из заголовка, раздела описаний и раздела операторов и имеет следующую структуру

procedure имя_процедуры(параметры) ; // заголовок

const {начало раздела описаний} // объявление констант type // объявление пользовательских типов

var // объявление переменных begin {начало раздела операторов}

оператор1;

…………...

операторN;

end; // конец процедуры

Заголовок начинается со служебного слова procedure, за которым идёт имя процедуры с указанием в скобках параметров. Заголовок полностью формируется автоматически в момент назначения проце-

дуры обработки события. Далее следует раздел описаний, в котором описываются (объявляются) константы, переменные, пользователь-

ские типы данных, которые будут использованы в данной процедуре.

Между служебными словами begin и end располагается раздел опера-

торов, содержащий команды, которые должны быть выполнены по данной процедуре. В тексте допускается использование комментари-

ев, игнорируемых компилятором. Однострочный пишут после симво-

ла «//», многострочный размещают в фигурных скобках. Константы,

типы, переменные, описанные внутри процедуры, являются локаль-

33

ными и могут быть использованы только в ней, а описанные вне про-

цедур после слова implementation, являются глобальными для данно-

го проекта и могут использоваться в любой процедуре проекта.

Пример 2.1

Разработаем проект для вычисления значения выражения

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

z a

x2

5

a2

y2 5

 

 

( y 2)2 5

,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

5

 

 

 

y

 

5

 

 

y 2

 

5

 

 

где x и y переменные, a константа.

 

 

 

 

 

 

 

 

 

 

начало

 

 

 

 

 

 

 

Поскольку в выражении часто встречается число

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

«5», то целесообразно также взять его за константу.

a=3, b=5

 

 

Блок-схема алгоритма вычисления представлена на

ввод x, y

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

рис. 2.1. После ввода значений переменных x и y по-

z1

 

 

x2

b

 

 

 

следовательно вычисляются значения трёх дробей. За-

 

 

 

 

 

b

 

 

 

 

 

x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

тем в первом случае значение дроби умножается на

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

z2

 

y2

 

b

 

 

 

значение константы a,

 

во

втором на его квадрат,

 

 

 

b

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y

 

 

 

промежуточные результаты складываются, и полу-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

z3

( y 2)2

b

 

 

чившийся итоговый результат выводится.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y 2

b

 

 

 

Реализуем разработанный алгоритм в проекте.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Для ввода переменных x и y разместим на форме два

z=az1+a2z2

 

 

 

 

 

 

+z3

 

 

компонента

Edit, для пояснений к ним добавим два

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

компонента Label. Для вывода результата предусмот-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

вывод z

 

 

рим третий компонент Label. Поместим также команд-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

конец

 

 

 

 

 

 

ную кнопку Button, со щелчком по которой свяжем

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 2.1

 

 

 

 

 

 

считывание

исходных

данных из компонентов

Edit,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

вычисление значения выражения и его вывод в Label3. На рис.

2.2

34

изображён примерный вид разработанной формы запущенного на ис-

полнение приложения. Текст процедуры будет иметь вид procedure TForm1.Button1Click(Sender: TObject); const a=3; b=5;

var x, y, z, z1, z2, z3:real;

begin

x:=StrToFloat(Edit1.Text); //считывание и преобр. значения x из Edit1 y:=StrToFloat(Edit2.Text); //считывание и преобр. значения y из Edit2

z1:=(sqr(x)+b)/(sqrt(abs(x))+b);

z2:=(sqr(y)+b)/(sqrt(abs(y))+b);

z3:=(sqr(y-2)+b)/(sqrt(abs(y-2))+b);

z:=a*z1+sqr(a)*z2+z3;

Label3.Caption:='z='+ FloatToStr(z); //вывод значения z в Label3

end;

Label1

 

 

 

 

 

Form1

 

 

 

 

Button1

 

 

 

 

 

 

 

Edit1

 

 

 

 

 

 

 

 

 

 

 

 

 

Label2

Label3

 

Edit2

Рис. 2.2

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

FloatToStr(z). Для представления вещественного результата в задан-

ном формате применяют функцию FloatToStrF(n, f, m, k),

где n – строка символов, которую нужно представить в виде числа; f – формат представления (ffGeneral – универсальный, ffFixed – c

фиксированным положением разделителя, ffExponent – экспоненци-

35

альный); m – общее количество цифр; k – количество цифр после за-

пятой.

Задание

Разработать проект для вычисления значения выражения z, где x

и y – переменные, a и b – константы. Представить результат в трёх форматах: обычном, экспоненциальном, с округлением до трёх знаков после запятой.

1.

z

 

 

 

 

x

 

 

 

x2

 

 

 

 

 

 

 

 

 

x 2

 

 

 

 

(x 2)2

 

 

 

 

 

 

 

 

2 y

 

 

4 y 2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2a

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

b

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2.

z a

 

 

 

 

 

 

 

 

x2 1 x

2a

 

 

 

 

 

 

 

 

 

 

y2

1 y

 

 

 

 

 

 

 

 

( y b)2 1 y b

 

sin x cos x

sin y

cos y

sin( y b) cos( y b)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

z a

 

 

 

 

 

 

 

 

 

 

x3 7 a5

 

 

 

 

 

 

 

 

 

 

 

(x b)3 7

 

 

 

 

 

 

 

 

 

 

 

 

y3 7

3.

 

 

 

 

 

 

x

 

 

 

 

x b

 

 

 

 

 

 

 

y

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4.

z

 

 

 

 

x

 

 

 

 

x y

3

 

 

 

 

 

 

 

x a

 

 

(x a) y3

 

 

 

 

 

 

 

 

 

 

x

 

 

x ( y b)3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y

 

 

 

 

 

 

y x3

 

 

 

 

 

 

 

 

y

 

y (x a)3

 

 

 

y b

 

y b x3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x3 y2

 

 

 

(ax)3 y2

 

 

 

x3

 

(by)2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5.

z

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y

3

x

2

y

3

 

(ax)

2

 

 

 

(by)

3

x

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6.

z 2

 

x3

3 y

 

 

(x a)3 3

y b

 

2

 

x3

3 x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y2

3 x

( y b)2 3

x a

x2

 

3 x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7.

z a

e X

 

3a

 

e2 X

 

b

eY

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

4

1

 

 

 

 

 

 

 

 

4

 

 

1

y

4

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

16x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

8.

z a

(x y)2

 

 

 

 

 

 

 

 

 

x y

 

 

10

 

b

4(x y)2 2

 

x y

 

 

10

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

y

 

20

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

x y

 

20

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

9.

z a

 

y X y3

 

b

xY x3

 

 

 

y2 y3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

Y

x

4

 

 

y

X

y

4

2

Y

16

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

36

Проанализируйте выражение на предмет возможности появле-

ния ошибок выполнения при определённых исходных данных. Опре-

делите области их допустимых значений.

Содержание отчёта

цель работы и задание;

блок-схема алгоритма вычисления значения выражения;

текст модуля;

пример работы приложения с указанием компонентов формы;

тестирование приложения альтернативным расчётом;

выводы по работе.

Контрольные вопросы

1.Что определяют типы данных, какова их классификация?

2.Что такое константы и переменные, каков синтаксис их объявле-

ния, как присвоить значение переменной?

3.Чем следует руководствоваться при назначении типа данных при объявлении переменной?

4.Перечислите правила записи арифметических операций и основных стандартных действий.

5.В чём заключается причина использования функций преобразова-

ния типов, перечислите их.

6. Какова структура процедуры обработки события, каково назначе-

ние её разделов?

7. В чём состоит разница между локальными и глобальными констан-

тами и переменными, где осуществляется их описание (объявление)? 8. В каких форматах можно представить число при его отображении на форме?

37

Лабораторная работа № 3

ПОДПРОГРАММЫ

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

те же действия необходимо выполнить над разными объектами, например, переменными. Это приводит к повторяющимся фрагментам в программном коде, где выполняемые действия одинаковы, а изменяются лишь имена объектов, над которыми эти действия выполняются. В таких случаях эффективнее один раз описать последовательность этих действий, а затем несколько раз выполнить их, подставляя соответствующие имена объектов. Часто это приводит к значительному снижению объёма программного кода, уменьшает количество ошибок, упрощает программу и её отладку. Кроме того, иногда проще разбить большую задачу на несколько подзадач, а затем, комбинируя их, получить результат. Такие возможности предоставляют подпрограммы.

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

Классификация и структура подпрограмм

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

38

вместе с системой программирования и описывают типовые действия,

например, вычисление синуса, косинуса, квадратного корня,

ввод/вывод данных и т.п. Пользовательские функции и процедуры разрабатывает сам программист. Эти подпрограммы не являются об-

работчиками событий, они используются ими. Поэтому, они не назначаются через окно Object Inspector и полностью прописывают-

ся программистом. Текст пользовательской подпрограммы помещает-

ся в разделе implementation модуля и должен предшествовать тексту процедуры обработки события, которая будет её использовать.

Структура функции в общем случае имеет вид

function имя_функции(формальные параметры: тип): тип;

const //объявление локальных констант

type //объявление локальных пользовательских типов var //объявление локальных переменных

begin //начало раздела операторов

оператор1;

…………...

операторN;

имя_функции:= значение; //присвоение имени ф-ии значения end; //конец функции

Структура процедуры в общем случае имеет вид

procedure имя_процедуры(формальные параметры: тип);

const //объявление локальных констант

type //объявление локальных пользовательских типов var //объявление локальных переменных

begin //начало раздела операторов

оператор1;

…………...

операторN;

end; //конец процедуры

39

Первая строка подпрограммы её заголовок. Он начинается со служебного слова function или procedure, за которым указывается имя подпрограммы, выбираемое программистом, с перечислением в скобках формальных параметров с указанием их типа. Далее следует раздел описаний, где объявляются локальные константы и перемен-

ные, т.е. используемые только в этой подпрограмме. Между служеб-

ными словами begin и end располагается раздел операторов, содер-

жащий команды, которые должны быть выполнены по данной под-

программе, описанные с использованием формальных параметров.

Главное отличие функции от процедуры состоит в том, что функция в процессе своей работы вырабатывает значение определён-

ного типа данных, которое связывается с её именем, т.е. имя функции является носителем этого значения. У процедуры же имя не является носителем значения. Поэтому, в заголовке функции указывают тип значения, которое она вырабатывает, и описание функции завершает-

ся присвоением результата её имени, у процедуры всего этого нет.

Механизм работы подпрограммы и обмена параметрами

Само по себе описание подпрограммы никаких действий не производит, а формальные параметры не имеют значений. Чтобы вос-

пользоваться подпрограммой, её нужно вызвать, задав конкретные,

фактические значения параметров. Вызов подпрограммы имеет вид имя_функции(фактические параметры) или имя_процедуры(фактические параметры);

При вызове подпрограммы значения фактических параметров заме-

няют формальные параметры в описании подпрограммы, и для фак-

тических параметров выполняются действия, которые были описаны

40