Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР Методы программирования Build1.0.pdf
Скачиваний:
97
Добавлен:
10.06.2015
Размер:
1.89 Mб
Скачать

14

Оператор with..do

Очень удобный оператор “для лентяев”. Он обеспечивает ускоренный доступ к полям записей или объектов. Каким образом? Допустим, что наша программа использует запись вида:

var MyRecord : record

IntField : integer; StrField : string; SnglFiled : single; BField : boolean;

end;

Не будь в нашем распоряжении with ..do, то при заполнении полей записи мы были бы вынуждены написать следующий код:

MyRecord.IntField:=1;

MyRecord.StrField:=’AAA’;

MyRecord.SnglFiled:=1.567;

MyRecord.BField:=false;

и т.д., повторяя из строки в строку имя владельца поля – MyRecord. А если таких полей несколько десятков? Никчемное и рутинное занятие. Лень, во истину двигатель прогресса. Разработчики Pascal предложили следующую конструкцию:

with <объект> do begin

<действие с полем 1 объекта>

. . .

<действие с полем N объекта> end;

Теперь обращение к полям записи происходит без многократного упоминания имени самой записи. Оператор with..do значительно упрощает наш с Вами непосильный труд программиста.

with MyRecord do begin

IntField:=1;

StrField:='AAA';

SnglFiled:=1.567;

BField:=false;

end;

Встретив конструкцию with..do компилятор понимает, что далее идёт речь только о конкретном объекте (в нашем случае это запись MyRecord) и больше не требует упоминания его имени.

Процедуры и функции

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

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

Процедуры

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

15

операторы, заключенные между ключевыми словами begin .. end. Ключевому слову begin могут предшествовать блоки объявления типов, констант и переменных (type, const и var). Объявленные внутри тела процедуры переменные называются локальными, причина такого названия в том, что жизненный цикл такой переменной начинается с вызовом процедуры и заканчивается в момент её завершения. Эти переменные не доступны извне процедуры.

procedure имя_процедуры (параметр_1; …, параметр_N); директивы; <локальные_объявления>

begin

<операторы> end;

Рассмотрим следующий пример. Придуманная нами процедура SquareRectangle() решает следующие задачи:

-вычисляет площадь прямоугольника;

-выводит на экран результат расчета.

Procedure SquareRectangle(X, Y : integer); begin

Square:=X*Y;

WriteLn(Square); end;

Для того, чтобы вызвать эту процедуру из программы необходимо указать имя процедуры и передать ее параметры (соблюдая их последовательность):

SquareRectangle(100, 200);

Функции

Функции, как и процедуры, предназначены для размещения дополнительных блоков внутри основной программы. Единственное отличие функции в том, что она всегда должна возвращать вызвавшей её программе какое-то значение (результат своих действий). Синтаксис определения функции почти аналогичен синтаксису процедуры. Исключение составляет заголовок. Он должен начинаться с ключевого слова function и заканчиваться типом возвращаемого значения.

function имя_процедуры (список_параметров) : тип результата; директивы; <локальные_объявления>

begin

<операторы> end;

В каждой из функций Delphi автоматически создаётся идентификатор Result имеющий тот же тип, что и возвращаемое функцией значение. Этому идентификатору и присваивается возвращаемое функцией значение.

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

Function SquareRectangle(X,Y : integer):integer;

Begin

Result:=X*Y; end;

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

var Square:integer;

. . .

Square := SquareRectangle(100, 200);

{переменной Square присвоено значение, возвращаемое функцией SquareRectangle}

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

Дальнейший материал представляет собой лабораторные работы к дисциплине “Методы программирования”.

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