Cтраница 2
В языке Си поддерживается два базовых механизма, обеспечивающих возможность использования структурированных типов данных - массивы и структуры. [16]
Оператор конструирования позволяет из компонентов образовывать структурированный тип, и, наоборот, оператор выбора из структурированного типа данных выделяет образующие его компоненты. [17]
Простой тип данных не обладает внутренней структурой и служит для отображения простых фактов и задания основных базисных компонент структурированных типов данных. [18]
Таким образом, t является или именем типа переменной, или типовым выражением, состоящим из имен и операторов конструирования структурированного типа данных. Здесь могут иметь место два случая: 1) именем является идентификатор, соответствующий определенному в данном языке программирования типу данных, например integer, real, и 2) именем типа может являться идентификатор, задаваемый пользователем и соответствующий определяемому им типу данных. [19]
Помимо стандартных скалярных типов ( REAL, INTEGER, BOOLEAN, CHAR) в языке ПАСКАЛЬ имеются нестандартные ( простые, неструктурированные) скалярные и структурированные типы данных. Имя типа описывается в разделе определения типов. [20]
Эта книга в очередной раз свидетельствует о том, что эйфория от языка Пролог уже давно сменилась поисками новых языков, которые отражали бы последние достижения в области вычислительной алгебры, теории объектно-ориентированных структурированных типов данных, представления знаний, а также новых методов вычисления логических программ. Основное внимание в ней уделено языку Дейталог - логическому языку запросов к базам данных, разработка и интенсивное изучение которого осуществлялись в течение последних шести лет. [21]
Эти типы данных предназначены для задания сложных структур данных. Структурированные типы данных конструируются из составляющих элементов, называемых компонентами, которые в свою очередь могут обладать структурой. Основой их конструирования являются определенные правила ( операции) конструирования ( конструкторы типов), причем каждому из них соответствует определенный структурированный тип данных. [22]
Ранее были рассмотрены основные структурированные типы данных. Эти структурированные типы данных можно использовать не только самостоятельно. Но как уже было показано на нескольких примерах, используя суперпозицию типов данных, можно получить сложные структуры данных. Например, рассмотрим расписание занятий в учебном заведении. Перед началом учебного года указывается список лекций, где для каждой лекции указывается ее название и имя ответственного преподавателя. [23]
Этот набор данных не может содержаться в одном массиве, поскольку нарушен основной принцип, который должен выполняться для элементов массива, - они все должны быть одного типа. В этой главе мы вводим новый структурированный тип данных - записью. Тип записи позволит нам обрабатывать как единое целое набор элементов данных, составленный из различных типов. [24]
В результате использованного в языке Паскаль подхода понятие типа данных является простым и достаточно строгим, что нетрудно заметить по приведенной на рис. 9.1 древовидной структуре, иллюстрирующей иерархию типов в языке Паскаль. Анализируя рис. 9.1, легко заметить, что все структурированные типы данных построены на основе использования других типов данных, которые, в частности, сами могут быть структурированными. Но в конечном счете в основе всего все равно лежат неструктурированные типы данных, в свою очередь базирующиеся на примитивных типах данных и их поддиапазонах и на перечислимых типах данных. Конечно, в конкретных случаях в целях повышения эффективности реализации трансляторы с языка Паскаль могут вводить дополнительные ограничения, например запрет использовать в качестве компонентов файлов структурированные объекты, что, в частности, не позволяет иметь файлы файлов. [25]
В настоящем варианте язык Паскаль не допускает возможности инициализации переменных определенными значениями на этапе трансляции. Одним из возможных решений этой проблемы является введение конструкторов для построения структурированных типов данных, предложенных К. [26]
Как правило, переменные не занимают всего места в памяти, которое выделяет для них Паскаль-машина. Запоминающие устройства большинства компьютеров поделены на слова, а Паскаль-машина использует для одной переменной одно или несколько слов ЗУ. При использовании структурированных типов данных ( множество, файл, массив, запись ( см. урок 8)) целесообразно в некоторых случаях экономить место в ЗУ путем упаковки компонентов. Благодаря этому в машине может разместиться программа, объем которой в противном случае был бы слишком большим для данной машины. Так как прием упаковки не учитывает структуру запоминающего устройства, то доступ к компонентам упакованного типа данных сложнее, чем к неупакованным. Платить за экономию места в ЗУ приходится поэтому увеличением времени счета. [27]
Одним из наиболее оригинальных аспектов языка Паскаль является понятие типа. Мы намерены отложить обсуждение вопросов, связанных со структурированными типами данных до § 9.3.5, а в данном параграфе обсудить остальные связанные с типами вопросы. [28]
Эти типы данных предназначены для задания сложных структур данных. Структурированные типы данных конструируются из составляющих элементов, называемых компонентами, которые в свою очередь могут обладать структурой. Основой их конструирования являются определенные правила ( операции) конструирования ( конструкторы типов), причем каждому из них соответствует определенный структурированный тип данных. [29]
Настоящая статья построена по следующей схеме: сначала обсуждаются полезные и легко понимаемые конструкции, имеющиеся в других языках программирования, но не включенные в язык Паскаль. Затем рассматривается несколько примеров, демонстрирующих, что использование языка Паскаль в качестве средства для обучения программированию сопровождается теми же самыми неприятностями, которые возникают при обучении программированию и. После этого обсуждаются основные недостатки языка Паскаль, касающиеся меток, оператора перехода goto, типов данных ( в том числе поддиапазонов и структурированных типов данных), функций, процедур и передачи параметров. [30]