Структура данных
Структура данных (англ. data structure) — программная единица, позволяющая
хранить и обрабатывать множество однотипных
и/или логически связанных данных в вычислитель
Термин «структура данных» может иметь несколько близких, но тем не менее различных значений:
- Абстрактный тип данных;
- Реализация какого-либо абстрактного типа данных;
- Экземпляр типа данных, например, конкретный список;
- В контексте функционального программирования — уникальная единица (англ. unique identity), сохранящаяся при изменениях. О ней неформально говорят как об одной структуре данных, несмотря на возможное наличие различных версий.
Структуры данных формируются с помощью типов данных, ссылок и операций над ними в выбранном языке программирования.
Различные виды структур данных подходят для различных приложений; некоторые из них имеют узкую специализацию для определённых задач. Например, B-деревья обычно подходят для создания баз данных, в то время как хеш-таблицы используются повсеместно для создания различного рода словарей, например, для отображения доменных имён в интернет-адреса компьютеров.
При разработке программного обеспечения
сложность реализации и качество
работы программ существенно зависит
от правильного выбора структур данных.
Это понимание дало начало формальным
методам разработки и языкам программирования, в которых именно структуры данных,
а не алгоритмы, ставятся во главу архитектуры
программного средства. Большая часть
таких языков обладает определённым типом модульности, позволяющим структурам данных безопасно переиспользоваться в различных приложениях. Объектно-
Многие классические структуры
данных представлены в стандартных
библиотеках языков программирования
или непосредственно встроены в
языки программирования. Например,
структура данных хэш-таблица встроена
в языки программирования Lua,
Фундаментальными
Сравнение структур данных в функциональном и императивном программировани
Проектировать структуры данных для функциональных языков более сложно, чем для императивных, как минимум по двум причинам[1]:
- Почти все структуры данных интенсивно используют присваивание, которое в чисто функциональном стиле не используется;
- Функциональные структуры данных являются более гибкими, и поэтому там, где в императивном программировании старая версия теряется, просто заменяясь новой, в функциональном она автоматически продолжает существовать. Другими словами, в императивном программировании (если не принять особых мер, могущих серьёзно усложнить программу) структуры данных являются эфемерными (англ. eph
emeral), а в функциональных программах они как правило постоянные (англ. Pers istent)
ВВЕДЕНИЕ
Данная контрольная работа
содержит задачи, которые встают перед
любым пользователем, особенно начинающим,
при начале работы на РС и понимании
необходимости автоматизации
Представление и преобразование информации в ЭВМ описано в первой части.
Особенно важна 3 часть
данной контрольной работы, потому
что без использования
1. ПРЕДСТАВЛЕНИЕ И ПРЕОБРАЗОВАНИЕ ИНФОРМАЦИИ В ЭВМ
Системой счисления принято называть совокупность приёмов наименования и обозначения чисел, т.е. способ записи чисел с помощью заданного набора специальных знаков (цифр).
Существуют позиционные
и непозиционные системы
В непозиционных системах вес цифры (т.е. тот вклад, который она вносит в значение числа) не зависит от ее позиции в записи числа. Так, в римской системе счисления в числе ХХХII (тридцать два) вес цифры Х в любой позиции равен просто десяти.
В позиционных системах счисления вес каждой цифры изменяется в зависимости от ее положения (позиции) в последовательности цифр, изображающих число. Например, в числе 757,7 первая семерка означает 7 сотен, вторая - 7 единиц, а третья - 7 десятых долей единицы.
Любая позиционная система
счисления характеризуется
При переводе чисел из десятичной системы счисления в систему с основанием P > 1 обычно используют следующий алгоритм:
1) если переводится целая
часть числа, то она делится
на P, после чего запоминается
остаток от деления.
2) если переводится дробная
часть числа, то она
С развитием электронно-
Несмотря на то, что десятичная СС имеет широкое распространение, ЭВМ строятся на двоичных (цифровых) элементах, так как реализовать элементы с десятью четко различными состояниями сложно.
В двоичной системе счисления используются только две цифры 0 и 1. И значит, имеется только два однозначных числа.
Из всех систем счисления особенно проста и поэтому интересна для технической реализации в компьютерах двоичная система счисления. Компьютеры используют двоичную систему потому, что она имеет ряд преимуществ перед другими системами:
1. Для её реализации нужны технические устройства с двумя устойчивыми состояниями (есть ток - нет тока, намагничен - не намагничен и т.п.), а не с десятью, - как в десятичной;
2. Представление информации посредством только двух состояний надёжно и помехоустойчиво;
3. Возможно применение аппарата булевой алгебры для выполнения логических преобразований информации;
4. Двоичная арифметика намного проще десятичной.
Недостаток двоичной системы - запись числа будет, как правило, длиннее, чем в десятичной.
Шестнадцатеричная и восьмеричная СС используются при составлении программ на языке машинных кодов для более короткой и удобной записи двоичных кодов - команд, данных, адресов и операндов.
Если необходимо перевести число из двоичной системы счисления в систему счисления, основанием которой является степень двойки, достаточно объединить цифры двоичного числа в группы по столько цифр, каков показатель степени.
Задача перевода из одной
системы счисления в другую часто
встречается при
В ВТ, с целью упрощения реализации арифметических операций, применяют специальные коды. За счет этого облегчается определение знака результата операции, а операция вычитания чисел сводится к арифметическому сложению. В результате упрощаются устройства, выполняющие арифметические операции. В ВТ применяют прямой, обратный и дополнительный коды. Прямой двоичный код - это такое представление двоичного числа X, при котором знак "плюс" кодируется нулем в старшем разряде числа, а знак "минус" - единицей. При этом старший разряд называется знаковым.
Обратный код для
Дополнительный код
При алгебраическом сложении двоичных чисел с использованием дополнительного кода положительные слагаемые представляют в прямом коде, отрицательные - в дополнительном коде и производят арифметическое суммирование этих кодов, включая разряды знаков, которые при этом рассматриваются как старшие разряды. При возникновении переноса из разряда знака единицу переноса отбрасывают, в результате получают алгебраическую сумму в прямом коде, если эта сумма положительна, и в дополнительном коде, если сумма отрицательна.
В ЭВМ применяются две формы представления чисел: с фиксированной (ффт) и плавающей (фпт) точкой. В случае ффт положение точки фиксируется в определенном месте относительно разрядов числа, как правило, перед старшим или после младшего; в первом случае представляются числа N<1, во втором - только целые числа.
По традиции нумерация
бинарных разрядов (битов) в ЭВМ общего
назначения ведется слева направо.
Знаковый разряд является, как правило,
крайним слева. В случае использования
прямого кода диапазон представления
чисел составляет 1N 2 -1; дополнительный
код позволяет использовать числа
в диапазоне -2 N2 -1, что при n=32 примерно
соответствует диапазону
В ЭВМ общего (универсального)
назначения основной является форма
представления чисел с
В таком формате, как правило, крайний левый бит определяет знак мантиссы, следующая за ним группа битов - порядок со знаком и остальные биты - модуль мантиссы. Действия над числами в фпт требуют выполнения операций как над мантиссой, так и над порядком (вычитание, сложение, сравнение и др). Для упрощения операций над порядками их представляют в смещенном коде, что позволяет работать с порядками, как с целыми без знака. Это достигается представлением р-порядка в виде р =р+2 , где к - число битов, отводимых под р; смещенный порядок (р всегда положителен).
Так как под мантиссу отводится фиксированное число битов, то для получения максимальной точности используются нормализованные числа, для которых выполняется условие А М<1. В некоторых ЭВМ используется другое условие нормализации - 1М<A, т.е. старший бит мантиссы в А-с. с. отличен от нуля. Если в процессе вычислений получается ненормализованное число, оно, как правило, автоматически нормализуется: если d старших битов мантиссы нулевые, то производится ее сдвиг на d битов влево (младшие биты обнуляются) с одновременным уменьшением порядка числа на d единиц (при нулевой мантиссе нормализации не производится). В различных ЭВМ используются фпт при А=2 (m=1,3,4,...); при этом, р-порядок представляется целым числом, а М-мантисса - бинарным числом, состоящим из групп по m битов, изображающих цифры мантиссы в А-с. с. Наиболее распространенными являются основания A{2,8,16}. Использование небинарного А-основания несколько уменьшает точность вычислений, но позволяет увеличивать диапазон представимых чисел и скорость выполнения ряда операций, уменьшая вероятность появления ненормализованных чисел. Диапазон представимых чисел в фпт зависит от А-с. с. и числа битов, отведенных под р-порядок; тогда как точность вычислений определяется числом битов М-мантиссы. С увеличением разрядности мантиссы растет точность вычислений, но уменьшается скорость выполнения арифметических операций. Ввиду различных требований, предъявляемых к точности вычислений, многие ЭВМ используют несколько форматов для представления чисел в фпт (разные разрядности мантиссы). В первую очередь, это относится к сопроцессорам ПК и микро-ЭВМ. Такое архитектурное решение позволяет более гибко организовывать вычислительный ход.
Кодирование символьной информации осуществляется на основе двоичных кодов, первоначально для нужд телеграфной связи. Этот двоичный код называется ASCII (American Standard Code for Information Interchange). Оба эти кода совпадают по первым 128 позициям. Это фактически есть неизменяемая часть любого кода для ЭВМ.
Коды от 128 до 255 - для национальных
алфавитов и специальных
В настоящее время широко распространен BCD - Binary Coded Decimal - каждая десятичная цифра записывается четырехбитовым двоичным эквивалентом.
Теоретической базой обработки
логической информации является Булева
алгебра логики. Эта двузначная алгебра
была разработана для формального
описания логических построений задолго
до появления первых ЭВМ. Элементы этой
алгебры могут иметь одно из двух
значений: истина и ложь. Распространенной
формой задания логических функций
являются таблицы истинности. Базовыми
функциями булевой алгебры
В АЛУ ЭВМ имеется набор элементарных логических устройств, соответствующих основным логическим операциям. На входы логических устройств подаются двоичные коды, которые рассматриваются как логические переменные, а выход зависит от таблицы истинности. Логическому значению "истина" соответствует 1, а значению "ложь" - 0.
Для обработки текстовой информации на компьютере необходимо представить ее в двоичной знаковой системе. Для кодирования каждого знака требуется количество информации, равное 8 битам, т. е. длина двоичного кода знака составляет восемь двоичных знаков. Каждому знаку необходимо поставить в соответствие уникальный двоичный код из интервала от 00000000 до 11111111 (в десятичном коде от 0 до 255).
Человек различает знаки
по их начертанию, а компьютер - по их
двоичным кодам. При вводе в компьютер
текстовой информации происходит ее
двоичное кодирование, изображение
знака преобразуется в его
двоичный код. Пользователь нажимает на
клавиатуре клавишу со знаком, и
в компьютер поступает
Формы представления чисел в ЭВМ
Машинным изображением числа называют
его представление в разрядной
сетке ЭВМ. В вычислительных машинах
применяются две формы
- естественная форма или форма с фиксированной запятой (точкой);
- нормальная форма или форма с плавающей запятой (точкой);
Пример:
(естественная форма) 452,34 = 452340*10-3 = 0,0045234*105 = 0,45234*103(нормальная форма)
Всякое десятичное число, прежде чем оно попадает в память компьютера, преобразуется по схеме:
X10 → X2 = M1 × [102]r
После этого осуществляется ещё одна важная процедура:
- мантисса с её знаком заменяется кодом мантиссы с её знаком;
- порядок числа с его знаком заменяется кодом порядка с его знаком.
Указанные коды двоичных чисел - это
образы чисел, которые и воспринимают
вычислительные устройства. Каждому
двоичному числу можно
Существуют следующие коды двоичных чисел:
- Прямой код;
- Обратный код;
- Дополнительный код.
Последние две формы применяются
особенно широко, так как позволяют
упростить конструкцию
Содержание [убрать]
|
Естественная форма
В форме с фиксированной запятой в разрядной сетке выделяется строго определенное число разрядов для целой и для дробной частей числа. Левый (старший) разряд хранит признак знака (0 – "+", 1 – "-") и для записи числа не используется.
Сама запятая никак не изображается, но ее место строго фиксировано и учитывается при выполнении всех операций с числами. Независимо от положения запятой в машину можно вводить любые числа, т.к.
A = [A] · KА,
где А – произвольное число, [A] – машинное изображение числа в разрядной сетке, KА - масштабный коэффициент.
Естественная форма числа в неявном, условном виде реализуется формулой:
т.е. число записывается только с помощью набора значащих цифр xj без явного указания их весов и знаков сложения между ними. Отсчет ведется от точки, которая обычно фиксируется между целой и дробной частями числа.
С фиксированной запятой числа изображаются в виде последовательности цифр с постоянным для всех чисел положением запятой, отделяющей целую часть от дробной(например, 32,54; 0,0036; –108,2). Форма представления чисел с фиксированной запятой упрощает аппаратную реализацию ЭВМ, уменьшает время выполнения машинных операций, однако при решении задач на машине необходимо постоянно следить за тем, чтобы все исходные данные, промежуточные и окончательные результаты находились в допустимом диапазоне представления. Если этого не соблюдать, то возможно переполнение разрядной сетки, и результат вычислений будет неверным. От этих недостатков в значительной степени свободны ЭВМ, использующие форму представления чисел с плавающей точкой, или нормальную форму. В современных компьютерах форма представления чисел с фиксированной запятой используется только для целых чисел.
Нормальная форма
С плавающей запятой (ПЛЗ) числа изображаются в виде:
X = ± M×P ±r,
где M - мантисса числа (правильная дробь в пределах 0,1 ≤ M < 1), r - порядок числа (целое), P - основание системы счисления. Например, приведенные выше числа с фиксированной запятой можно преобразовать в числа с плавающей запятой так: 0,3254×102, 0,36×10-2, –0,1082×103.
Нормализованная экспоненциальная запись числа - это запись вида a= m*Pq, где q - целое число (положительное, отрицательное или ноль), а m - P-ичная дробь, у которой целая часть состоит из одной цифры. При этом m - мантиссa числа, q - порядк числа.
Tо есть нормальная форма реализуется формулой:
Нормальная форма
При представлении чисел с
В конкретной ЭВМ диапазон представления чисел с плавающей запятой зависит от основания системы и числа разрядов для представления порядка. При этом у одинаковых по длине форматов чисел с плавающей запятой с увеличением основания системы счисления существенно расширяется диапазон представляемых чисел. Точность вычислений при использовании формата с плавающей запятой определяется числом разрядов мантиссы. Она увеличивается с увеличением числа разрядов.
Алгоритм представления числа с плавающей запятой:
- перевести число из p-ичной системы счисления в двоичную;
- представить двоичное число в нормализованной экспоненциальной форме;
- рассчитать смещённый порядок числа;
- разместить знак, порядок и мантиссу в соответствующие разряды сетки.
При представлении информации в
виде десятичных многоразрядных чисел
каждая десятичная цифра заменяется
двоично-десятичным кодом. Для ускорения
обмена информацией, экономии памяти и
удобства операций над десятичными
числами предусматриваются
Прямой код
Представление числа в привычной форме "знак"-"величина", при которой старший разряд ячейки отводится под знак, а остальные - под запись числа в двоичной системе, называется прямым кодом двоичного числа. Например, прямой код двоичных чисел 1001 и -1001 для 8-разрядной ячейки равен 00001001 и 10001001 соответственно.
Положительные числа в ЭВМ всегда представляются с помощью прямого кода. Прямой код числа полностью совпадает с записью самого числа в ячейке машины. Вообще, положительные числа в прямом, обратном и дополнительном кодах изображаются одинаково — двоичными кодами с цифрой 0 в знаковом разряде.
Например,
Прямой код отрицательного числа отличается от прямого кода соответствующего положительного числа лишь содержимым знакового разряда. Но отрицательные целые числа не представляются в ЭВМ с помощью прямого кода, для их представления используется так называемый дополнительный код.
Прямой код двоичного числа(а это либо мантисса, либо порядок) образуется по такому алгоритму:
- Определить данное двоичное число - оно либо целое (порядок), либо правильная дробь (мантисса).
- Если это дробь, то цифры после запятой можно рассматривать как целое число.
- Если это целое и положительное двоичное число, то вместе с добавлением 0 в старший разряд число превращается в код. Для отрицательного двоичного числа перед ним ставится единица.
Например,
Обратный код
Обратный код положительного двоичного числа совпадает с прямым кодом.Для отрицательного числа все цифры числа заменяются на противоположные (1 на 0, 0 на 1), а в знаковый разряд заносится единица.
Например,
Дополнительный код
Дополнительный код
При представлении целых чисел со знаком старший (левый) разряд отводится под знак числа, и под собственно число остаётся на один разряд меньше.
Алгоритм получения дополнительного кода отрицательного числа:
- модуль отрицательного числа представить прямым кодом в k двоичных разрядах;
- значение всех бит инвертировать:все нули заменить на единицы, а единицы на нули(таким образом, #получается k-разрядный обратный код исходного числа);
- к полученному обратному коду прибавить единицу.
Дополнительный код
Для компьютерного представления целых чисел обычно используется один, два или четыре байта, то есть ячейка памяти будет состоять из восьми, шестнадцати или тридцати двух разрядов соответственно.
Например,
ЧТО ТАКОЕ БАЗЫ ДАННЫХ?
В самом общем смысле база данных - это набор надписей и файлов, которые организованы специальным образом. В своем компьютере вы, например, могли бы хранить фамилии и адреса всех ваших друзей или клиентов. Может, вы храните все написанные вами письма, и они сгруппированы по адресатам, а возможно, у вас есть набор файлов с данными по финансовым делам: полученным или выставленным счетам, расходам по чековой книжке или балансам. Один из типов баз данных - это документы, набранные при помощи текстовых редакторов и сгруппированные по темам. Другой тип - это файлы с электронными таблицами, которые вы объединяете в группы по характеру их использования. Если вы очень организованный человек, то, используя специальную структуру каталогов и подкаталогов, вы, возможно, справитесь с несколькими сотнями электронных таблиц. В этом случае вы являетесь диспетчером базы данных. Но что делать, когда решаемая вами задача становится слишком большой? Как собрать информацию обо всех клиентах и их заказах, если эти данные разбросаны по отдельным текстовым файлам и электронным таблицам? Как сохранить связи между файлами при вводе новой информации? Как убедиться, что данные вводятся правильно? Что делать, если одна и та же информация может потребоваться нескольким пользователям, но при этом нельзя допустить, чтобы два человека в одно и то же время корректировали одни и те же данные? Когда вы оказываетесь перед подобными проблемами, вам нужна система управления базами данных (СУБД).
Реляционные базы данных

- Структура делового общения
- Структура делового общения
- Структура делового письма
- Структура денежной массы в мире
- Структура денежной массы. Денежная база
- Структура денежной системы
- Структура державного боргу України
- Структура готовності педагога вищої школи до професійної діяльності
- Структура гражданского общества
- Структура Гражданской обороны страны и ОЭ
- Структура Гражданской обороны страны и ОЭ
- Структура грошового ринку
- Структура группы сказуемого в современном английском языке
- Структура группы. Факторы сплоченности группы