Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры по инф-ке.docx
Скачиваний:
8
Добавлен:
27.10.2018
Размер:
160.25 Кб
Скачать

10. Процедуры в языках программ-я.

В языке Pascal есть 2 разновидности подпрограмм - процедуры и функции. Структура любой подпрограммы аналог. структуре всей программы. Подпрограмма д.б. описана до того, как она будет исп-на в программе или др. подпрограмме. Все параметры подпрограмм можно разделить на локальные (т.е. доступные только ей самой) и глобальные (доступные как подпрограмме, так и вызывающей её программе). Обмен данными с подпрограммой осущ-ся только с помощью глобальных параметров.

Подпрограмма-процедура предназнач. для вып-я какой-то законченной посл-сти действий. Структура процедуры:

Procedure Имя (Список формальных параметров);

label

const (Описание локальных меток)

type (констант, типов и переменных)

var

procedure (Описание внутренних процедур)

function (и функций)

begin

Операторы

end;

Для вызова процедуры из осн. прогр-мы следует записать оператор, сост. из имени процедуры и списка параметров процедуры, указываемого в круглых скобках. Если, например, процедура MyProc была объявлена так:

procedure MyProc (i : Integer; s : String);

<Тело_процедуры>;

то вызывать её следует так:

MyProc (5, 'SomeString');

Visual Basic

Синтаксически процедура опр-ся

[Private | Public] [Static] Sub имя процедуры (список аргум)

[Exit Sub] [операторы]

End Sub

где Private, Public, Static, Sub, Exit Sub, End Sub – ключ. слова. Sub опр-ет обяз. 1-ый оператор процедуры. End Sub – обяз. последний оператор процедуры;

Имя процедуры образ-ся в соотв-ии с общ. правилами образования имен, но не может иметь описателей типа (имя процедуры не принимает знач.);

Список аргументов имеет след. синтаксис:

[Optional] [ByVal | ByRef] [ParamArray] имя [As] тип, где Optional, ByVal, ByRef, ParamArray и As ключевые слова; имя — имя переменной, массива (в случае массива исп-ся имя ( ) без указания границ знач. индексов, что позволяет исп-ть одну процедуру для разного числа элем. массива в каждом конкр. случае), эл-та управления или формы (в последних двух случаях тип принимает знач. Control и Form); тип м.б. Byte, Boolean, Integer, Long, Currency, Single, Double, Date, String (только переменной длины); As тип необх-мо применять для каждого аргумента.

Список аргументов опр-ет связь по данным между вызывающей (процедура, из которой происходит вызов) и вызываемой (процедура, которая вызывается) процедурами. Локальные данные, опред-ые внутри процедуры (кроме тех, что опред-ны в списке general для форм), не могут исп-ся в др.процедурах (например, переменные с один. именами, но объявленные в разных процедурах, хранятся в разных ячейках памяти и изм-е переменной в одной из процедур не ведет к изм-ю одноименной переменной в др. процедуре). Процедуры, относящиеся к форме, но не являющиеся процедурами обработки событий, помещаются в раздел general формы.

Процедура не м.б. опред-на внутри к-либо процедуры, ф-ии.

Exit Sub вызывает прекращение вып-ия процедуры и выход из нее в вызывающую программу.

Static опред-ет, что лок. данные (переменные, массивы), определенные внутри процедуры, сохр-ся в промежутках между вызовами данной процедуры. Опред-е Static не распр-ся на данные, кот. объявлены вне данной процедуры, но исп-ся в ней (т.е. эти данные будут изменяться незав-мо от опред-я Static). Нельзя исп-ть при рекурсивном вызове процедуры.

Private опред-ет, что процедура м.б. вызвана (доступна) только в том модуле, в кот. она объявлена (никакие др. процедуры в др. модулях не могут вызвать процедуру). Опред-е Private не имеет смысла, если процедура опр-на для какой-либо формы (в этом случае процедура недоступна из вне данной формы).

Public опред-ет, что процедура м.б. вызвана из любого модуля приложения.

Optional опред-ет, что аргумент не явл-ся обязательным.

ByVal опр-ет, аргумент передается в процедуру по знач.

ByRef : аргумент передается в процедуру по ссылке.

ParamArray отн-ся к послед. аргументу в списке аргументов и опред-ет, что конечный (заключительный) аргумент явл-ся необяз. массивом. Не может исп-ся совместно с параметрами ByVal, ByRef, Optional.

Синтаксис оператора обращения к процедуре:

имя процедуры [список значений] или

Call имя процедуры [список значений], где Call — ключ. слово;

список зн-ий — список знач. аргументов (соотв-ет списку аргументов в операторе Sub no кол-ву, порядку след-я и типу, кроме случая, когда исп-ся параметр Optional).

Передача аргументов по ссылке и по знач.

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

В Visual Basic передача по ссылке опред-на по умолчанию.

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

В Turbo Pascal и Visual Basic .NET передача по зн-ию опр-на по умолчанию.

11. Ф-ии в языках программ.

В языке Pascal есть 2 разновидности подпрограмм - процедуры и функции. Структура любой подпрограммы аналог. структуре всей программы. Подпрограмма д.б. описана до того, как она будет использ. в программе или др. подпрограмме. Все параметры подпрограмм можно разделить на локальные (т.е. доступные только ей самой) и глобальные (доступные как подпрограмме, так и вызывающей её программе). Обмен данными с подпрограммой осущ-ся только с пом-ю глобальных параметров.

Структура ф-ии:

FunctionИмя(Список формальных параметров):тип рез-та;

label

const (Описание локальных меток, )

type (констант, типов и переменных )

var

procedure (Описание внутренних процедур )

function (и функций )

begin

Операторы, среди которых хотя бы один, который

присваивает имени функции значение результата

end;

Для вызова ф-ии из осн. программы следует записать выраж-е, состоящее из имени ф-ии и списка параметров ф-ии, указываемого в круглых скобках.

function MyFun (i : Integer; s : String) : integer;

<Тело_функции>;

то вызывать её следует так:

S:=MyFun (5, 'SomeString');