Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lab_rab5_6.doc
Скачиваний:
7
Добавлен:
02.02.2015
Размер:
493.57 Кб
Скачать

1.1.11 Процедуры и функции. Модули.

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

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

Наиболее часто употребляемые библиотечные процедуры и функции называют стандартными. Некоторые стандартные функции и процедуры были описаны ранее (это стандартные математические функции, процедуры ввода-вывода и т.п.).

Если планируется использование процедур во многих программах, то эти процедуры помещаются в отдельный модуль.

Процедуры и функции находятся в разделе описаний (см. табл. 1.1).

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

Заголовок процедуры в общем случае выглядит так:

PROCEDURE <имя> (<список формальных параметров>);

Имя процедуры – ее название. Обычно процедуры называются так, чтобы было понятно, для чего она предназначена.

Формальные параметры – это переменные, через которые передаются значения из программы в процедуру и обратно. Используются при описании процедуры.

Список формальных параметров выглядит так:

(Парам1:Type1; Парам2:Type2;… VAR ПарамN:TypeN…);

При этом параметры, стоящие перед VAR – это параметры, передаваемые в процедуру (параметры-значения), а после VAR – параметры, вычисляемые в процедуре или результат работы процедуры (параметры-переменные).

Особенности:

  1. Если есть несколько параметров одного типа, они записываются через запятую, как в описаниях переменных.

  2. В спецификации параметров можно использовать только идентификатор типа. Например, можно написать (a, b, c: real) но нельзя написать (a:array[1..10] of real). При использовании массив, необходимо предварительно задать тип переменной массива:

Const n=10;

Type Matr = array[1..n] of real;

Фактические параметры – это идентификаторы конкретных переменных, используемые при вызове процедуры.

Вызов процедуры в программе осуществляется следующим образом:

<имя> (<список фактических параметров>);

Список фактических параметров выглядит так:

(Парам1, Парам2, … ПарамN);

Пример. Векторное произведение.

Необходимо вычислить векторное произведение Для этого сначала вычисляется векторное произведение , а затем вычисляется

Program NameProg;

Const n=3;

Type Vector = array[1..n] of real;

Var

i: integer;

x,y,z,rez: Vector;

Procedure VectMult (a,b: Vector; var c: Vector);

Begin

c[1]:= a[2]*b[3]– a[3]*b[2];

c[2]:= a[3]*b[1]– a[1]*b[3];

c[3]:= a[1]*b[3]– a[3]*b[1];

End;

Begin

VectMult (x,y,z);

VectMult (x,z,rez);

End.

Формальные параметры здесь – это a, b, c, а фактические – при первом вызове процедуры – x,y,z и при втором – x,z,rez.

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

Заголовок функции в общем случае выглядит так:

FUNCTION <имя> (<список форм. параметров>): <тип результата>;

Вызывается просто по имени.

Пример1. Вычисление синуса угла, заданного в градусах

Program NameProg;

Var

i: integer;

x,y,z: real;

Function SinGrad(x: real): real;

Begin

SinGrad := sin(x*3,1415926/180);

End;

Begin

y:= 5* SinGrad(x) – 2 sqr(x);

z:= sqr( sqr(x))/7 – 13* SinGrad(x) – 2;

End.

Пример2. Вычисление длины вектора

Program NameProg;

Const n=3;

Type Vector = array[1..n] of real;

Var

DLx, DLy: real;

x,y: Vector;

Function DlVect(a: Vector): real;

Var i: integer;

Begin

DlVect:=0;

for i:=1 to 3 do

Begin

DlVect:= DlVect+sqr(a[i]);

End;

End;

Begin

DLx:= DlVect(x);

DLy:= DlVect(y);

End.

Пример 3. Вычисление котангенса угла в градусах

Program NameProg;

Var

a,y: real;

Function CtgGrad (a: real): real;

Const pi=3,14;

Var x: real;

Begin

x:=a*pi/180;

if (sin(x) <> 0) then

ctgGrad:=cos(x)/sin(x)

else

WriteLn(‘ctg не существует’);

End;

Begin

y:=ctgGrad(x);

End.

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

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

Например, Function Integral(a,b:real; Function f(x:real):real): real;

Можно вводить описание процедурных и функциональных типов в разделе описания типов:

type

FuncType = Function(x: Real): Real;

ProcType = Procedure (a,b: Real; var x,y: Real);

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

После объявления процедурного или функционального типа его можно использовать для описания формальных параметров – имен процедур и функций. Кроме того, необходимо написать те реальные процедуры или функции, имена которых будут передаваться как фактические параметры. Эти процедуры и функции должны компилироваться в режиме дальней адресации (far) с ключом {$F+}.

Модули (объекты UNIT) – это комплекс специально подобранных процедур и функций, которые хранятся на диске в откомпилированном виде (файлы с расширением tpu).

Наиболее часто используемые готовые модули:

– для управления режимом экрана – модуль Crt,

– для создания программ интерфейса, рисования – модуль Graph,

– для обработки прерываний – модуль DOS.

Возможно создание своей собственной библиотеки процедур и функций, объединение их в модуль, компиляция – и дальнейшее использование в своих программах.

Borland Pascal содержит следующие стандартные модули:

Crt, Dos, Graph, Graph3, Objects, ODialogs, Overlay, Printer, Strings, System, Turbo3, WinAPI, WinCrt, WinDOS, WinPrn, WinProcs,WinTypes.

Данные стандартные модули обеспечивают поддержку всех ваших программ на Borland Pascal и хранятся в отдельных файлах TPW.TPL (для среды Windows), TPP.TPL (для защищенного режима DOS) или TURBO.TPL (для реального режима DOS).

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]