Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
15-16 Працэдуры і функцыі.doc
Скачиваний:
4
Добавлен:
09.11.2019
Размер:
327.68 Кб
Скачать

Механізмы структуравання праграм Працэдуры і функцыі

Поўная сінтаксічная дыяграма вызначэння працэдуры:

Загаловак працэдуры:

Цела працэдуры ў агульным выглядзе вызначаецца наступнай сін­так­січ­най дыяграмай.

Вызначэнне блока глядзіце ў тэме «Агульная структура Pascal-пра­грамы».

Опцыя INTERRUPT (опцыя – тое, што і рэжым) служыць для выз­на­чэн­ня так званых працэдур перарыванняў, калі ў праграме неабходна вы­зна­чыць асабістыя алгарытмы рэакцыі на перарыванні аперацыйнай сіс­тэ­мы, скасаваўшы пры гэтым стандартныя рэакцыі. Гэта працэдуры спе­цы­я­ль­на­га віду.

У мове Pascal, пачынаючы з версій  4.0, інтэрфейс сувязі з мовай Асэм­б­лер прыняў завершаны выгляд: мова дазваляе задаваць цела пад­пра­гра­мы непасрэдна ў выглядзе паслядоўнасці машынных каманд, вы­ка­ры­стоў­ва­ю­чы спецыяльную канструкцыю з опцыяй INLINE, ці ў вы­гля­дзе серыі асэмблерных інструкцый з выкарыстаннем опцыі ASSEMBLER.

Опцыі NEAR ці FAR вызначаюць, як кампілятару будаваць машыннае ўяў­лен­не падпраграмы: бліжэйшы тып выкліку – NEAR, больш далёкі – FAR. Гэтыя оп­цыі ўжываюцца ў асноўным пры выкарыстанні падпраграм у якасці фар­ма­ль­ных параметраў для дадзеных працэдурных тыпаў.

Опцыя EXTERNAL выкарыстоўваецца тады, калі трэба звярнуцца да пад­п­раг­ра­мы, цела якой напісана па-за вашай праграмай і знаходзіцца ў выг­лядзе аб’ектнага кода (ці было запісана ў машынных камандах, ці пасля тран­с­ля­цыі з нейкай алгарытмічнай мовы). Гэта так званае знешняе апі­сан­не. У Pascal-праграме паказваецца загаловак знешняй падпрагра­мы, пасля яко­га замест цела падпраграмы павінна ісці службовае слова EXTERNAL. Ак­ра­мя таго, дзе-небудзь у тэксце праграмы неабходна за­даць дырэктыву кам­пі­ля­та­ра $L, аргументам якой з’яўляецца імя obj-файла, які змяшчае код знешняй падпраграмы.

Але можна і так: {$I імя_файла} – уключыць файл (лакальны). Гэ­та паведамленне кампілятару аб неабходнасці ўключыць у кампіляцыю на­зва­ны файл. (Разумеецца імя_файла.Pas.)

Функцыі карыстальніка

Функцыя ў адрозненне ад працэдуры вяртае толькі адно простае ска­ляр­нае ці радковае значэнне, якое можна скарыстаць у тым ці іншым вы­ра­зе.

Сінтаксічная дыяграма вызначэння функцыі:

Цела функцыі аналагічна целу працэдуры, за выключэннем таго, што ад­сут­ні­чае опцыя INTERRUPT.

У целе функцыі ў раздзеле аператараў павінен знаходзіцца па мен­шай ме­ры адзін аператар, які надае ідэнтыфікатару функцыі выніковае зна­чэн­не.

Кожная працэдура ці функцыя можа мець свае працэдуры ці фун­к­цыі – лакальныя.

Параметры

Параметры забяспечваюць механізм замены, які дазваляе выконваць пад­п­раг­ра­мы з рознымі данымі.

Працэдуры і функцыі могуць мець (а могуць і не мець) спіс фар­ма­ль­ных параметраў. Кожны параметр апісваецца некаторым іменем. Тып жа па­ра­мет­ра можа быць любым дазволеным.

Пры выкліку падпраграмы фармальныя параметры замяняюцца фак­тыч­ны­мі данымі. Спісы фармальных і фактычных параметраў павінны мець адну колькасць параметраў, тыпы фармальных і фактычных па­ра­мет­раў павінны быць эквівалентнымі, інакш кампілятар заўважыць па­мыл­ку: «TYPE mismatch» – несупадзенне ці неадпаведнасць ты­паў.

Спіс фармальных параметраў:

Секцыя фармальных параметраў:

Тып параметра:

Тып функцыі:

Адразу зразумела, што нельга рабіць такія апісанні:

PROCEDURE InCorr(VAR A : ARRAY[1..10] OF Byte);

Трэба тып масіву апісаць асобна і затым выкарыстаць яго:

TYPE mas = ARRAY[1..10] OF Byte;

PROCEDURE InCorr(VAR A : mas);

Сустракаецца кананічная форма секцыі фармальных параметраў, калі кож­ны параметр – гэта адна секцыя.

У мове Pascal бываюць і фармальныя параметры – «адкрытыя ма­сі­вы», якія вызначаюцца ў секцыі фармальных параметраў пры дапамозе кан­с­т­рук­цыі ARRAY OF тып_элементаў. Напрыклад:

PROCEDURE InCorr(aArray : ARRAY OF Integer)

Масіў aArray толькі аднамерны, індэкс яго заўсёды пачынаецца з 0 і змяняецца да велічыні High(aArray). У падпраграме індэкс так і змя­ня­юць.

Значыць, калі параметры-масівы пажадана ўжываць для ад­на­мер­ных масіваў рознай даўжыні, можна карыстацца ад­к­ры­ты­мі масівамі, у якіх указваецца базавы тып элементаў масіву, але не ак­рэс­лі­ва­юц­ца яго па­меры і межы.

High(x) – вяртае максімальнае значэнне тыпу-дыяпазону, да якога на­ле­жыць пераменная x.

Прыклад.

CONST A : ARRAY[-1..2] OF Integer = (0, 1, 2, 3);

B : ARRAY[ 5..7] OF Integer = (4, 5, 6);

PROCEDURE ArrayPrint(aArr : ARRAY OF Integer; c : char);

VAR k : Integer;

BEGIN

Writeln(c);

FOR k := 0 TO High(aArr) DO Write(aArr[k]:8);

Writeln;

END;

BEGIN

ArrayPrint(A, 'A');

ArrayPrint(B, 'B');

Readln;

END.

У мове Pascal выкарыстоўваюцца і параметры CONST (апісанне аналагічна апі­сан­ню VAR з тыпам), а праграмы працуюць з параметрамі-канстантамі так, што ў падпраграме любыя змены з такімі параметрамі не дапускаюцца.

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