Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
SAOD_Konspekt-I.doc
Скачиваний:
14
Добавлен:
03.11.2018
Размер:
2.32 Mб
Скачать

2. Простые структуры данных

2.1. Понятие о типах данных

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

Более крупные и содержательные, нежели бит, "строительные блоки" для организации произвольных данных можно получить на основе понятия типов данных.

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

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

Если имеется только один составляющий тип, т.е. все компоненты относятся к одному типу, то он называется базовым.

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

Если для значений некоторого типа существует отношение порядка, то такой тип называется упорядоченным или скалярным.

2.2. Перечисляемый тип данных

Любой новый простейший тип определяется простым перечислением входящих в него различных значений. Такой тип называется перечисляемым. Его определение, например, на языках Си/Си++, имеет следующий вид:

enum Seasons { winter, spring, summer, autumn } s1,s2,s3;

Имена в перечислении Seasons – целые константы: winter = 0, spring = 1 и т.д.

enum days { Su = 5, Mo, Tu, We = 11, Th, Fr, Sa };

2.3. Стандартные типы данных

К простейшим стандартным типам относятся целые числа, логические значения, символы, вещественные числа.

2.3.1. Целочисленные типы

ЭВМ оперирует с числами, содержащими конечное число разрядов. Возможны следующие типы чисел:

Целые двоичные числа длиной 8,16 и 32 и двоично-кодированные десятичные числа длиной 8 бит. Двоичные числа допускают интерпретацию как целых без знака и целых со знаком, а десятичные числа знака не имеют. В двоичных целых числах без знака все разряды считаются знача­щими и диапазон представляемых чисел составляет 0…255 для чисел длиной 8 бит и 0…65535 для чисел длиной 16 бит.

Все разряды числа являются значащими, а двоичная точка находится справа или, как говорят, фиксирована после младшего значащего разряда. Отсюда появляется еще одно название этого формата и других аналогичных форматов – формат с фиксированной точкой. Следовательно, в этом формате представимы только целые числа 0, 1, 2, ..., 2n–1 и любая комбинация битов (двоичный набор) является допус­тимой.

Среди стандартных типов языков программирования может быть целый набор целочисленных типов, например, в Си/Си++:

char k1; // знаковый символьный тип (целочисленный)

int a; // знаковый целый тип

int b, c; // знаковый целый тип

Переменные беззнаковых типов должны быть явно указаны как беззнаковые:

unsigned char k2; // беззнаковый символьный тип (1 байт)

unsigned int d; // беззнаковый целый тип (2 – 4 байта, в зависимости от разрядности ЭВМ)

unsigned e; // беззнаковый целый тип

unsigned long int a1; // беззнаковый длинный целый тип ( не короче 4-х байт)

unsigned long a2; // беззнаковый длинный целый тип

unsigned short int s1; // беззнаковый короткий целый тип (не длиннее 2-х байт)

unsigned short s1; // беззнаковый короткий целый тип

Символьные типы языков Си/Си++ также являются целочисленными и имеют размер в 1 байт.

Целые знаковые двоичные числа. Чтобы компьютеры могли оперировать положительными и отрицательными числами, один из разрядов необходимо отвести для изображения знака чисел S. Обычно им является старший (левый) бит, а стандартное кодирование имеет такой вид: S=0 – число положительное; S=1 – число отрицательное.

В языках Си/Си++ знаковые типы могут быть явно указаны:

signed char k1; // знаковый символьный тип

signed int a; // знаковый целый тип

но в большинстве случаев в этом нет необходимости:

char k1; // знаковый символьный тип

int b, c; // знаковый целый тип (слово signed можно не указывать)

long int alpha; // знаковый длинный целый тип

long beta; // знаковый длинный целый тип (слова int можно не указывать)

short int gamma; // знаковый короткий целый тип

short delta; // знаковый короткий целый тип

Для новых 64-разрядных процессоров семейства x86 в некоторых версиях языка Си++ используется 64-разрядный целочисленный тип int64.

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