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

15 Формат описания процедуры.

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

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

Procedure <Имя> [ (формальные параметры) ];

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

Пример. Использование процедур.

Рассмотрим процедуру обработки события нажатия кнопки Button1, в которой вызываются две процедуры DecodeDate и ChangeStr.

procedure TForml.ButtonlClick(Sender: TObject);

// Описание пользовательской процедуры ChangeStr

procedure ChangeStr(таг Source: string; const charl, char2: char);

label 10;

var n: integer;

begin

10:

n := pos(charl, Source);

if n > 0 then begin

Source[n] := char2;

goto 10;

end;

end;

var strl: string;

Year, Month, Day: word;

begin

// Вызов процедуры DecodeDate

DecodeDate(Now, Year, Month, Day);

strl := Editl.Text;

// Вызов пользовательской процедуры ChangeStr

ChangeStr(strl, '1', ' * ' ) ;

Editl.Text := strl;

end;

Процедура Changestr выполняет замену в строке source всех вхождений символа, который задает параметр chari, на символ, задаваемый параметром char2.

Предварительное описание пользовательской процедуры changestr выполнено непосредственно в обработчике события нажатия кнопки Button1. Это описание можно вынести за пределы обработчика, в этом случае процедуру Changestr можно будет вызывать не только из данного обработчика. Вызов процедуры changestr обеспечивает замену повсюду в строке str1 символа 1 на символ *.

16 Формат описания Функции.

Описание функции состоит из заголовка и блока. Заголовок включает ключевое слово Function, имя функции, необязательный список формальных параметров, заключенный в круглые скобки, и тип возвращаемого функцией значения. Заголовок имеет формат: Function <Имя>[(Формальные параметры)]: <Тип результата>

Возвращаемое значение может иметь любой тип, кроме файлового. Блок функции представляет собой локальный блок, по структуре аналогичный блоку процедуры. В теле функции должен быть хотя бы один оператор присваивания, в левой части которого стоит имя функции. Именно он и определяет значение, возвращаемое функцией. Если таких операторов несколько, то результатом функции будет значение последнего выполненного оператора присваивания. В этих операторах вместо имени функции можно указывать переменную Result, которая создается в качестве синонима для имени функции. В отличие от имени функции, переменную Result можно использовать в выражениях блока функции. С помощью переменной Result можно в любой момент получить внутри блока доступ к текущему значению функции.

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

Пример. Использование функций.Рассмотрим процедуру обработки события нажатия кнопки Button1, в которой вызываются две функции Length И ChangeStr2.

procedure TForml.ButtonlClick(Sender: TObject);

// Описание функции ChangeStr2

function ChangeStr2(Source: string; const charl, char2: char): string;

label 10;

var n: integer;

begin

Result := Source;

10:

n := pos(charl, Result);

if n > 0 then begin

Result[n] := char2;

goto 10;

end;

end;

var strl: string;

n: integer;

begin

strl := Editl.Text;

// Вызов функции ChangeStr2

strl := ChangeStr2(strl, Ч 1 , ' * ' ) ;

Editl.Text := strl;

// Вызов функции Length

n := Length(strl); end;

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