русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Составные типы данных в D Pascal


Дата добавления: 2014-05-03; просмотров: 2006; Нарушение авторских прав


 

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

 

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

FUNCTION Max2(P1, P2: INTEGER): INTEGER;

{(P1 > P2 --> Max2 := P1) | (P2 >= P1 --> Max2 := P2)}

BEGIN {Max2}

IF P1 > P2

THEN

Max2 := P1 {возвращаем P1 как значение Max2}

ELSE

Max2 := P2 {возвращаем P2 как значение Max2}

END; {Max2}

Синтаксические правила для объявления функции представлены ниже:

<раздел объявления функций/процедур> ::= <объявления функций/процедур> |

<объявления функций/процедур> ::= <объявление функции/процедуры>

| <объявления функций/процедур> <объявление функции/процедуры>

<объявление функции/процедуры> ::= <заголовок>; <блок>;

<заголовок>::= PROCEDURE <идентификатор> <список формальных параметров>

| FUNCTION <идентификатор> <список формальных параметров> : <тип результата>



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

FUNCTION Max3(P1, P2, P3: INTEGER): INTEGER;

{Max3 присваивается наибольшее значение из P1, P2, P3}

VAR

T: INTEGER;

BEGIN {Max3}

T := Max2(P2, P3);

Max3 := Max2(P1, T);

END; {Max3}

Когда Max2 вызывается первый раз , она возвращает наибольшее из P2, P3, которое присваивается T. Далее T используется как фактический параметр во втором вызове Max2. Поскольку вызовы функций могут появляться везде, где появляются выражения, а параметры Max2 являются параметрами-значениями, Max3 может быть переписана так, что первый вызов Max2 будет параметром в ее втором вызове.

FUNCTION Max3(P1, P2, P3: INTEGER): INTEGER;

{Max3 присваивается наибольшее значение из P1, P2, P3}

BEGIN {Max3}

Max3 := Max2(P1, Max2(P2, P3));

END; {Max3}

Выражение в операторе присваивания будет вычислено сначала вызовом Max2 для получения максимума P2, P3 и далее вызовом Max2 с P1 и результатом предыдущего вызова.

 

Следующие синтаксические правила включают вызовы функций в синтаксис выражений добавлением и к <множителю>.

 

<множитель> ::= <переменная> | <вызов функции>

|<беззнаковая константа> | (выражение) | NOT <множитель>

<вызов функции> ::= <идентификатор функции> <список фактических параметров>

<идентификатор функции> ::= <идентификатор>

<список фактических параметров> ::= (<список фактических параметров>) |

<список фактических параметров> ::= <список фактических параметров>,

<фактический параметр> | <фактический параметр>

<фактический параметр> ::= <выражение>

 

Заметим, что <список фактических параметров> может быть пустым – функция может не иметь параметров.

Составные типы данных в D Pascal

 

Эта глава описывает три механизма создания составных значений в Паскале: множества, файлы и записи. Предлагается ограниченная версия множеств. Файлы расширяют текстовые фалы CF Pascal до фалов иных, чем CHAR типов. Записи предлагают механизм группировки для любого конечного набора типов.

 

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

 

<новый тип> ::= <новый порядковый тип> | <составной тип>

<составной тип> ::= <структурированный тип>

<структурированный тип> ::= SET OF <базовый тип>

| FILE OF <тип компонентов>

| RECORD <список полей> END

<базовый тип> ::= <порядковый тип>

<порядковый тип> ::= <новый порядковый тип> | <идентификатор порядкового типа>

<идентификатор порядкового типа> ::= <идентификатор типа>

<тип компонентов> ::= <описатель типа>

 

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

 



<== предыдущая лекция | следующая лекция ==>
Функции. | Множества.


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.103 сек.