Понятие подпрограммы, формальные и фактические параметры
Подпрограмма представляет собой группу операторов, логически законченную и специальным образом оформленную. Подпрограмму можно вызывать неограниченное число раз из различных частей программы. Использование подпрограмм позволяет улучшить структурированность программы и сократить ее размер.
По структуре подпрограмма почти полностью аналогична программе и содержит заголовок и блок, однако в блоке подпрограммы отсутствует раздел подключения модулей. Кроме того, заголовок подпрограммы по своему оформлению отличается от заголовка программы.
Работа с подпрограммой имеет два этапа: 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 Все материалы защищены законодательством РФ.
|