Пользовательские порядковые и составные типы. Процедуры и функции — КиберПедия 

Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...

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

Пользовательские порядковые и составные типы. Процедуры и функции

2017-10-11 215
Пользовательские порядковые и составные типы. Процедуры и функции 0.00 из 5.00 0 оценок
Заказать работу

Раздел описания типов

 Синтаксис

TYPE

<Имя типа 1> = <Тип 1>;

∙ ∙ ∙

<Имя типа 2> = <Тип 2>;

<Имя типа N> = <Тип N>;

 

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

 

Интервальный тип

 Синтаксис

<Начальное значение>..<Конечное значение>

 

Начальное и конечное значения могут быть любого порядкового типа. Переменные интервального типа могут принимать только значения, находящиеся в указанном интервале.

 Пример

TYPE

Day_of_week = 1..7;

VAR

DOW:Day_of_week;

Letter:'A'..'Z';

∙ ∙ ∙

DOW:=8; { Ошибка }

 

 

Перечислимый тип

 Синтаксис

(<Имя 1>, <Имя 2>, …, <Имя N>)

 

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

 

 Пример

TYPE

Color = (Red,Yellow,Green,Blue);

SubColor = Yellow..Blue;

VAR

C:Color;

Size:(Small,Middle,Big);

∙ ∙ ∙

DOW:=Green;

IF Size=Big THEN Writeln('Большой');

 

Как и для любого из порядковых типов, для перечислимых определенны функции Pred, Succ, Ord и т.д. Например, Pred (Yellow)= Red, Succ (Green)= Blue. Порядковые номера элементов перечислимых типов начинаются с 0, т.е. Ord (Small)=0, Ord (Middle)=1 и т.д.

 

Тип массив

 Синтаксис

ARRAY [<Тип индекса>] OF <Тип элемента>

 

Тип индекса может быть любым порядковым типом. Тип массив описывает в памяти последовательность переменных указанного типа элемента.

 Пример

TYPE

I100=ARRAY [1..100] OF Integer; { Массив из 100
целых чисел}

VAR

A:I100;

B:ARRAY [Char] OF (Letter,Digit);

C:ARRAY [1..10] OF ARRAY [1..20] OF Real;

 

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

 Пример

VAR

C:ARRAY [1..10,1..20] OF Real;

 

 Обращение к элементам массива

<Имя массива>[<Индекс 1>][<Индекс 2>]…[<Индекс N>]

или

<Имя массива>[<Индекс 1>,<Индекс 2>,…,<Индекс N>]

 

 Пример

A[10]:=5;

FOR Ch:='A' TO 'Z' DO B[Ch]:=Letter;

FOR Ch:='0' TO '9' DO B[Ch]:=Digit;

C[2][3]:=C[2,4]-1;

 

 

Строковый тип

 Синтаксис

STRING

или

STRING[<Максимальная длина>]

 

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

 Пример

VAR

S:STRING;

S20:STRING[20]; { Строка максимальной
длины 20 символов}

∙ ∙ ∙

S:='Иванов';

IF S[4]<>'н' THEN Writeln('Ошибка');

S20:=S+' ушел в отпуск';

Writeln(S20);

 

 

Процедуры и функции для работы со строками

Функция Length (S) возвращает длину (количество символов) строки S. Для пустой строки функция возвращает 0.

 Пример

Length('Пример')=6, Length('')=0

 

Функция Copy (S,<Начало>,<Длина>) возвращает часть строки (подстроку) S указанной длины, начиная с позиции, задаваемой параметром <Начало>.

 Пример

Copy('Пример',2,3)='рим', Copy('Пример',4,10)='мер'

 

Процедура Insert (S1, S2,<Позиция>) вставляет строку S1 в строку S2 в указанной позиции.

 Пример

S:='Пер';

Insert('рим',S,2);

 

 Результат выполнения

S='Пример'

 

Процедура Delete (S,<Начало>,<Длина>) – удаляет часть строки заданной длины из S, начиная с указанной позиции.

 Пример

S:='Периметр';

Delete(S,3,4);

 

 Результат выполнения

S='Петр'

 

 

Типизированные константы

Типизированные константы, как и обычные, описываются в разделе описания констант, но их описание несколько отличается.

 Синтаксис

CONST

<Имя>:<Тип> = <Значение>;

 

Хотя типизированные константы и называются константами, на самом деле они работают как переменные, т.е. их значение можно изменять в программе, а также их нельзя использовать в выражениях-константах. Однако, в отличие от обычных переменных, при запуске программы типизированные константы уже имеют определенные значения. По способу выделения памяти эти значения являются глобальными, где бы они ни были описаны.

 

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

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

 Синтаксис

Общий вид процедур и функций:

<Заголовок>

<Описательная часть>

BEGIN

<Исполнительная часть>

END;

 

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

PROCEDURE <Имя>[(Формальные параметры>)];

 

Заголовок функции:

FUNCTION <Имя>[(Формальные параметры>)]:
<Тип результата>;

 

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

 Синтаксис списка формальных параметров

[{VAR | CONST}] <Список имен 1>:<Тип 1>;
[{VAR | CONST}] <Список имен 2>:<Тип 2>;
...

[{VAR | CONST}] <Список имен N-1>:<Тип N-1>;

[{VAR | CONST}] <Список имен N>:<Тип N>

 

Тип результата указывает тип значения, возвращаемого функцией.

 Пример

PROCEDURE PrintNumber(n:Real);

FUNCTION Sub(CONST S:STRING;St,En:Integer):STRING;

 

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

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

 Синтаксис специального оператора присваивания

<Имя функции>:= <Выражение>

 

 Пример

FUNCTION Mul(A,B:Real):Real;

BEGIN

Mul:=A*B;

END;

 

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

 Пример

FUNCTION Mul(A,B:Real):Real;

BEGIN

Result:=A*B;

END;

 

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

 


Поделиться с друзьями:

Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...

Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...

Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...

Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.008 с.