Сделай Сам Свою Работу на 5

Понятие подпрограммы, формальные и фактические параметры





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

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

Работа с подпрограммой имеет два этапа: 1) описание подпрограммы; 2)вызов подпрограммы.

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

В различных модулях Delphi имеется большое число стандартных подпрограмм, которые можно вызывать без предварительного описания. Некоторые из них приведены при описании типов данных и выражений. Кроме того, программист может создавать свои подпрограммы, которые также называют пользовательскими.



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

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

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

• с использованием файлов;

• с помощью глобальных переменных;

• с помощью параметров.

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



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

Сущ-ют неск видов формальных параметры и фактических : значение, константа, переменная, нетипизированная константа и переменная.

 


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

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

Заголовок состоит из ключевого слова 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 на символ *.


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

Описание функции состоит из заголовка и блока. Заголовок включает ключевое слово 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 из предыдущего примера.


Классы и объекты

Особенности объектно-ориентированного Программирования

Язык Object Pascal является объектно-ориентированным расширением языка Pascal и реализует концепцию объектно-ориентированного программирования. Это означает, что создаваемое приложение состоит из объектов, которые взаимодействуют между собой. Каждый объект имеет свои свойства, то есть характеристики (атрибуты) этого объекта, методы, определяющие поведение этого объекта, и события, на которые реагирует объект.

Классы и объекты

В языке Object Pascal классы являются специальными типами данных и используются для описания объектов. Соответственно объект, имеющий тип какого либо класса, является экземпляром этого класса или переменной этого типа.

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

Свойства занимают промежуточное положение между полями и методами. С одной стороны, свойства можно использовать как поля, например, присваивая им значения с помощью оператора присваивания; с другой стороны, внутри класса доступ к значениям свойств выполняется методами класса.

 


Принцип инкапсуляции

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

Инкапсуляция .Класс представляет собой единство трех сущностей - полей, методов и свойств. Объединение этих сущностей в единое целое и называется инкапсуляцией. Инкапсуляция позволяет во многом изолировать класс от остальных частей программы, сделать его “самодостаточным” для решения конкретной задачи. В результате класс всегда несет в себе некоторую функциональность. Например, класс TForm содержит (инкапсулирует в себе) все необходимое для создания Windows-окна, класс TMеmо представляет собой полнофункциональный текстовый редактор, класс TTimer обеспечивает работу программы с таймером и т. д.

Инкапсуляцияпредставляет собой мощное средство обмена готовыми к работе программными заготовками. Библиотека классов Delphi - это фактически набор “кирпичиков”, созданных программистами Borland для построения ваших программ.

 

 








Не нашли, что искали? Воспользуйтесь поиском по сайту:



©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.