1. Информационные системы. Понятия информации, системы, автоматизированной информационной системы



страница11/18
Дата23.12.2012
Размер1.84 Mb.
ТипДокументы
1   ...   7   8   9   10   11   12   13   14   ...   18

14.3.Типы данных: ассоциативные массивы, множества, записи и объединения.

Ассоциативным массивом называется неупорядоченное множество элементов данных, индексированных таким же количеством величин, называемых ключами. Ключи задаются пользователем и содержатся в самой структуре массива. Таким образом, каждый элемент ассоциативного массива фактически представляет собой пару элементов: непосредственно элемент данных и ключ, используемый для обращения к нему. В качестве встроенной структуры данных ассоциативные массивы присутствуют, в частности, в таких языках, как Perl и PHP, где они называются хэшами или хэш-таблицами, а также Python, где они известны под именем словарей. В некоторых языках, например в Java и Ruby, работа с ассоциативными массивами поддерживается стандартными библиотеками.

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

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

Объединением называется переменная, которая может содержать в различные периоды выполнения программы значения различных типов. В некоторых языках, например в Ada и Pascal, объединения представляют собой лишь часть структур записей, в других, в частности в C, C++ и FORTRAN, являются обособленным типом данных.

14.4.Типы данных: указатели, операции над ними и проблемы, возникающие при работе с ними, ссылки.

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

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

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

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

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

14.5.Абстрактные типы данных.

Абстрактный тип данных — это тип данных, удовлетворяющий следующим условиям:

  • определение типа и операции над объектами данного типа содержатся в одной синтаксической единице;

  • переменные данного типа можно создавать и использовать в других программных модулях;

  • особенности реализации объектов данного типа скрыты от программных модулей-клиентов, использующих этот тип, поэтому над такими объектами можно производить лишь те операции, которые прямо предусмотрены в определении типа.

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

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

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

14.6.Концепции и особенности объектно-ориентированного программирования.

Объектно-ориентированное программирование (ООП) основывается на концепциях абстракции данных. Абстрактные типы данных в ООП обычно называются классами. Экземпляры классов называются объектами. Структура данных, поддерживаемых классом, определяется с помощью переменных и констант, называемых полями. Подпрограммы, определяющие операции над объектами класса, называются методами. Вызовы методов называются сообщениями. Сообщение включает в себя следующие части: конкретный объект, которому оно адресуется, имя метода, определяющего необходимые действия над объектом, и необязательный набор параметров, конкретизирующих выполняемую операцию. Таким образом, вычисления в объектно-ориентированной программе осуществляются с помощью сообщений, передаваемых от одного объекта к другому.

Классы могут иметь два вида полей и методов. К первому типу относятся так называемые поля и методы экземпляра/объекта класса. Поля экземпляра класса представляют собой набор переменных, значения которых в каждый момент времени характеризуют особенности текущего состояния соответствующего объекта. Методы объекта предназначены для выполнения операций над его полями. Ко второму типу принадлежат поля и методы класса. Поля класса — это переменные, которые относятся непосредственно к классу, а не к конкретному объекту, поэтому они имеют одно общее значение для всех объектов. Методы класса предназначены для выполнения операций, присущих классу в целом и обычно реализующих действия, не связанные с конкретными объектами класса.

ООП характеризуется тремя основными свойствами: инкапсуляцией, наследованием и полиморфизмом. В контексте ООП инкапсуляция подразумевает выделение и объединение в описании класса структур данных и выполняемых над ними действий. Кроме того, инкапсуляция предполагает сокрытие внутренней прикладной структуры данных и подпрограмм класса и определение внешних интерфейсов доступа к ним.

Наследование представляет собой отношение между классами, при котором описание одного класса основано на описании другого (так называемое одиночное наследование) или нескольких других (так называемое множественное наследование) классов. Порождаемый таким образом класс называется подклассом, дочерним классом или классом-потомком. Классы, на основе которых создаётся подкласс, называются суперклассами, родительскими классами или классами-предками. Принцип наследования обеспечивает «передачу и сохранение» структур данных и подпрограмм родительских классов в дочерних. Подкласс может дополнять наследуемые структуры своими и модифицировать (замещать или перегружать) операции над данными.

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

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

15.Ассемблер.

15.1.Особенности языка Ассемблер. Основные элементы языка.

Ассемблер — низкоуровневый машинно-ориентированный язык программирования. Реализация языка зависит от типа процессора и определяется архитектурой вычислительной системы. Ассемблер позволяет напрямую работать с аппаратурой компьютера. Программа на языке ассемблера включает в себя набор команд, которые после трансляции преобразуются в машинные команды. Обычно каждой команде ассемблера соответствует одна машинная команда. Благодаря этому ассемблерные программы могут значительно быстрее выполняться, по сравнению с аналогичными программами, написанными на других языках, и позволяют эффективнее работать с ресурсами компьютера. Далее рассмотрим основные элементы и конструкции языка ассемблер для процессора Intel 8088, являющегося «прародителем» современных процессоров Intel Pentium.

Ассемблерная программа может включать в себя следующие основные элементы: константы, команды, директивы и модификаторы. Имена используемых в программе переменных, меток и идентификаторов могут быть длиной до 31 символа и не должны начинаться с цифры. Константы языка ассемблер подразделяются на два типа: целые числа и строки. Целые числа могут быть представлены в двоичном (в этом случае они заканчиваются буквой b), десятичном (без специального окончания или заканчиваются буквой d) и шестнадцатеричном виде (заканчиваются буквой h). Шестнадцатеричные числа обязательно должны начинаться с цифры, т.е. если первым знаком числа является буква, то оно должно предваряться цифрой 0. Кроме того, отрицательные шестнадцатеричные числа должны записываться только в дополнительном коде. Например, число D3h в программе на ассемблере следует записывать как 0D3h, а число –7Bh как 185h. Отрицательные двоичные числа должны быть представлены в модифицированном дополнительном коде. Например, число –10010 будет записано в программе как 1101110. Строка в ассемблере представляет собой набор любых символов, заключенных в одинарные или двойные кавычки. Например: “Язык Ассемблер для процессора Intel 8088”.

15.2.Команды и директивы языка Ассемблер.

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

[<Метка>[:]] <Код оператора> [<Операнды>] [;<Комментарий>]

Элементы команды отделяются друг от друга пробелами. Код оператора представляет собой мнемокод команды, включающий от 2 до 6 букв. Операнд может быть явно заданным прямым или косвенным адресом, именем метки, именем или значением переменной, ассоциативным признаком и т.п. Если операндов несколько, то они отделяются друг от друга запятой. Количество и вид требуемых операндов зависят от кода оператора. В большинстве двухадресных команд присутствуют операнды приемника и источника. При выполнении команды содержимое источника не меняется, а в приемнике первое число, участвующее в операции, заменяется на полученный результат. Метка представляет собой имя команды ассемблера длиной до 31 символа, используемое для обращения к ней из других команд. Если после метки стоит двоеточие, то это означает, что метка находится в текущем сегменте памяти. Комментарий предназначен для пояснения команды и может содержать любой текст.

Директивы или псевдооператоры Ассемблера представляют собой инструкции транслятору. В отличие от команд, являющихся инструкциями машине, директивы обрабатываются только в ходе трансляции программы в машинный код, а не в ходе её выполнения на компьютере. Директивы имеют следующий формат:

[<Идентификатор>] <Код псевдооператора> [<Операнды>] [;<Комментарий>]

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

15.3.Модификаторы в языке Ассемблер.

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

1. Арифметические модификаторы, имеющие формат <Операнд> <Модификатор> <Операнд>. Включают: «+» — сложить, «–» — вычесть, «*» — умножить, «/» — разделить, mod — остаток от деления.

2. Логические модификаторы, имеющие формат <Операнд> <Модификатор> <Операнд>. Включают: and — «логическое и», or — «логическое или», not — «логическое отрицание», xor — «исключающее или».

3. Модификаторы отношения, имеющие формат <Операнд> <Модификатор> <Операнд>. Включают: eq — совпадение, neq — несовпадение, lt — меньше, gt — больше, le — меньше или равно, ge — больше или равно.

4. Модификаторы, возвращающие значения. Имеют формат <Модификатор> <Операнд>. Включают: $ — возвращает значение смещения адреса текущего оператора; seg — возвращает адрес сегмента адреса метки или переменной; offset — возвращает смещение адреса метки или переменной; length — возвращает длину операнда в единицах определения (байтах или словах); type — возвращает атрибут типа переменной (1 — byte, 2 — word, 4 — dword) или метки (1 — near, 3 — far); size — возвращает длину операнда в байтах.

5. Модификаторы присваивания атрибута, включающие:

  • ptr — изменяет атрибут типа операнда или атрибут дистанции адресного операнда. Формат: <тип> ptr <операнд>, где тип — новый атрибут, операнд — идентификатор операнда, чей атрибут изменяется. Атрибуты типа бывают: byte — длиной 1 байт, word — длиной 2 байта, dword — длиной 4 байта. Атрибуты дистанции подразделяются на near — близкий, в пределах одного сегмента, и far — далекий, за пределами одного сегмента.

  • cs, ds, es, ss — изменяют атрибут сегмента адреса. Формат: <имя регистра сегмента>:<адрес>, где адрес может быть задан именем сегмента, переменной, меткой или адресным выражением.

  • short — дополняет атрибут near метки в операторе перехода и указывает, что переход осуществляется на расстояние не более ±128 байтов от текущей команды. Формат: short <метка>.

  • high, low — возвращают соответственно старший и младший байт 16-битового значения операнда. Формат: <модификатор> <операнд>.
1   ...   7   8   9   10   11   12   13   14   ...   18

Похожие:

1. Информационные системы. Понятия информации, системы, автоматизированной информационной системы iconРеферат на тему: "логистические информационные системы. Иерархия использования логистической информационной системы. Функции логистической информационной системы. Поток информации в предпринимательстве."
Основные направления информационно-технического обеспечения логистических систем
1. Информационные системы. Понятия информации, системы, автоматизированной информационной системы iconРазработка автоматизированной информационной системы «кафедра» с помощью современных средств web-программирования
Рассматривается разработка автоматизированной информационной системы «Кафедра» и средства ее реализации
1. Информационные системы. Понятия информации, системы, автоматизированной информационной системы iconБазы данных и информационные системы
...
1. Информационные системы. Понятия информации, системы, автоматизированной информационной системы iconЭкзаменационные вопросы по информатике Направление подготовки «Адаптивная физическая культура»
Основные понятия информатики: информационная среда, информационные технологии, информационные системы, базы данных, интеллектуальные...
1. Информационные системы. Понятия информации, системы, автоматизированной информационной системы iconРабочая программа для студентов направления 230400. 62 «Информационные системы и технологии»
...
1. Информационные системы. Понятия информации, системы, автоматизированной информационной системы iconДисциплина «Интеллектуальные информационные системы», пиэ, 4 курс, 1 семестр вопросы на зачет
Понятие интеллектуальной информационной системы (иис), особенности и основные свойства иис
1. Информационные системы. Понятия информации, системы, автоматизированной информационной системы iconИнформационные системы
Информационная система (ИС) – это комплекс, состоящий из информационной базы (хранилища информации) и процедур, позволяющих накапливать,...
1. Информационные системы. Понятия информации, системы, автоматизированной информационной системы iconРазработка автоматизированной системы эксергетического анализа сложных химико-технологических систем
Поэтому необходимость разработки автоматизированной системы расчета и оптимизации эксергетического баланса хтс произвольной структуры...
1. Информационные системы. Понятия информации, системы, автоматизированной информационной системы iconЛекция 1) гис как специализированная информационная система. Структура информационных систем, представление о модели данных. Последовательность действий при создании информационной системы
Модели данных для пространственной информации. Геокодирование, общее понятие. Геокодирование как процесс перевода пространственной...
1. Информационные системы. Понятия информации, системы, автоматизированной информационной системы iconТемы, вопросы для изучения
Понятия: системы; фаза; гомогенные и гетерогенные системы; процессы и их классификация; параметры и функции состояния системы
Разместите кнопку на своём сайте:
ru.convdocs.org


База данных защищена авторским правом ©ru.convdocs.org 2016
обратиться к администрации
ru.convdocs.org