Файл: Информация в материальном мире(Основные типы данных и их классификация).pdf
Добавлен: 22.04.2023
Просмотров: 222
Скачиваний: 1
Введение
Слово «информация» происходит от латинского слова informatio, что означает разъяснение, высказывания, осведомленность. Само слово информация лишь сравнительно недавно стало превращаться в точный термин. До этого информацию воспринимали как то, что присутствует в языке, письме или передается при общении. Сейчас смысл, который вкладывается в это понятие, очень изменился и расширился. Возникла особая математическая дисциплина — теория информации. Хотя в теории информации и вводится несколько ее конкретных определений, все они не охватывают всего объема этого понятия. Рассмотрим некоторые определения.
Информация — это отражение реального (материального, предметного) мира, которое выражается в виде сигналов, знаков.
Информация существует в виде документов, рисунков, текстов, звуковых и световых сигналов, энергетических и нервных импульсов и т.п.
Под информацией понимают сведения об объектах окружающего мира, которые воспринимаются человеком, животным, растительным миром или специальными устройствами и повышают их уровень информированности.
Информация передается с помощью сообщений. Сообщение бывают устными, письменными, в виде рисунков, жестов, специальных знаков или организованными каким-то другим образом. Примерами сообщений являются: показания измерительного устройства, дорожные знаки, текст телеграммы, устный рассказ и тому подобное.
С помощью сообщений происходит обмен информацией между людьми, между людьми и машинами, между машинами; обмен сигналами в растительном и животном мире, от клетки к клетке, от организма в организм и тому подобное. Символьная форма представления информации является наиболее простой, в ней каждый символ имеет какое-то значение.
Текстовая форма представления информации является более сложной. Эта форма предусматривает, что содержание сообщения передается не через отдельные символы (цифры, буквы, знаки), а их сочетанием, порядком размещения. Последовательно расположены символы образуют слова, которые в свою очередь могут образовывать предложения. Текстовая информация используется в книгах, брошюрах, газетах, журналах и т.
Целью данной работы является изучение информации в материальном мире.
Для реализации поставленной цели необходимо выполнить ряд задач:
- Изучить основные типы данных и их классификация;
- Рассмотреть основные структуры данных;
- Изучить передачу информации в компьютерных сетях;
- Рассмотреть взаимосвязь данных и информации;
- Изучить свойство информации и т.д.
При написании данной работы были использованы современные научные и учебные источники.
Глава 1. Понятия и сущность данных
1.1 Основные типы данных и их классификация
Тип данных - фундаментальное понятие языка программирования. Тип данных определяет, что именно представляют собой данные, как они хранятся в памяти, какие операции с ними можно выполнять.
Рисунок 1 Классификация типов данных
Изначально, типы данных делятся на простые и составные. Простой - это тип данных, объекты (переменные или постоянные) которого не имеют доступной программисту внутренней структуры. Для объектов составного типа данных, в противовес простому, программист может работать с элементами внутренней его структуры.[1]
Числовой тип данных разработан для хранения естественно чисел. Символьный - для хранения одного символа. Логический тип имеет два значения: истина и ложь. Перечислимый тип может хранить только те значения, которые прямо указаны в его описании.
Для простых типов данных определяются границы диапазона и количество байт, занимаемых ими в памяти компьютера.
В большинстве языков программирования, простые типы жестко связаны с их представлением в памяти компьютера. Компьютер хранит данные в виде последовательности битов, каждый из которых может иметь значение 0 и 1. Фрагмент данных в памяти может выглядеть следующим образом 00011011011100010110010000111011 ...
Данные на битовом уровне (в памяти) не имеют ни структуры, ни смысла. Как интерпретировать данные, как целочисленное число, или вещественное, или символ, зависит от того, какой тип имеют данные, представленные в этой и последующих ячейках памяти.
Выделяют знаковые и беззнаковые. Как видно из названия, знаковые предназначены для хранения как положительных, так и отрицательных значений, нуль, а беззнаковые - чисел, не меньше нуля.[2]
Беззнаковые типы данных, в отличии от соответствующих знаковых, имеют в два раза больший диапазон. Это из-за их машинного представления. В знаковых типах первый бит указывает на знак числа: 1 - отрицательное, 0 - положительное.
Исходя из машинного представления целого числа, в ячейке памяти из n бит может хранится 2n для беззнаковых, и 2n-1 для знаковых типов.
Рассмотрим теперь конкретные целочисленные типы в трёх языках.
- C#
- C++
- Java
Таблица 1
Числа вещественного типа данных
|
Тип |
Разрядность в битах |
Диапазон чисел |
|
byte |
8 |
0 - 255 |
|
sbyte |
8 |
-128 - 127 |
|
short |
16 |
-32 768 - 32 767 |
|
ushort |
16 |
0 - 65 535 |
|
int |
32 |
-2 147 483 648 - 2 147 483 647 |
|
uint |
32 |
0 - 4 294 967 295 |
|
long |
64 |
-9 223 372 036 854 775 808 - 9 223 372 036 854 775 807 |
|
ulong |
64 |
0 - 18 446 744 073 709 551 615 |
Плавающая запятая — форма представления действительных чисел, в которой число хранится в форме мантиссы и показателя степени. В случае языков программирования, любое число может быть представлено в следующем виде
(1)
N=M∗10p
где N — записываемое число;
M — мантисса;
p (целое) — порядок.
Например: 14441544=1,4441544*107; 0,0004785=4,785*10-4.
Компьютер же на экран выведет следующие числа:
1,4441544E+7; 4,785E-4
Следовательно, в отведенной памяти хранится мантисса и порядок записываемого числа. Рассмотрим, например, типа данных, который хранится в 8 байтах или 64 битах. В данном случае, мантисса составляет 53 бита: 1 для знака числа и 52 для её значения; порядок 10 битов: 1 бит для знака и 10 для значения. Мы можем в данном случае говорить о диапазоне точности, то есть насколько малое и насколько большое число может хранить данный тип данных: 4,94×10−324 до 1.79×10308. Но, поскольку, память компьютера не безразмерна, да и далеко не всегда нужно, храниться несколько первых разрядов мантиссы, которые называются значащими.[3]
Вывод: вещественные типы данных, в отличии от целочисленных, характеризуются диапазоном точности и количеством значащих разрядов.
Рассмотрим конкретные типы данных в наших трёх языках.
- C#
- C++
- Java
Таблица 2
Типы данных
|
Тип |
Разрядность в битах |
Количество значащих цифр |
Диапазон точности |
|
float |
32 |
7 |
от 1,5*10-45 до 3,4*1038 |
|
double |
64 |
15 |
от 4,9*10-324 до 1,7*10308 |
|
decimal |
128 |
28 |
от 1,0*10-28 до 7,9*1028 |
Тип decimal создан специально для операций высокой точности, в частности финансовых операций. Он не реализован как примитивный тип, поэтому его частое использование может повлиять на производительность вычислений.
Символьный тип данных
Значение переменной этого типа данных представляет собой один символ. В действительности, это есть целое число. В зависимости от кодировки, это число превращается в некий символ. Данные типы данных характеризуются лишь размером выделяемой под них памяти.
- C#
- C++
- Java
Таблица 3
Символьный тип данных
|
Тип |
Разрядность в битах |
|
char |
16 |
Логический тип данных
Это тип данных, значения которых могут быть: true (правда) или false (ложь). Логическому типу данных соответствуют в С# и C++ тип bool, в Java - boolean.
Перечислимый тип данных
Во внутреннем представлении, это целочисленный тип данных, только здесь пользователь вместо числе использует заранее определенные строковые значения. Чтобы прочувствовать эту концепцию, приведем пример на языке С++ (в С# и Java аналогично)
enum Forms {shape, sphere, cylinder, polygon};
Теперь переменные перечислимого типа Forms могут принимать лишь значения, определенные в примере кода. Это очень удобно, ведь мы уже оперируем не с числами, а с некими смысловыми значениями, замечу лишь, что для компьютера эти значения всё-равно являются целыми числами.
Массив
Далее перейдем к сложным типам данных. Первый из них - это массив. Массив - это набор однотипных переменных, расположенных в памяти непосредственно друг за другом, доступ к которым осуществляется по индексу. Индекс массива — целое число, указывающее на конкретный элемент массива.[4]
Каждый массив характеризуется типом данных его элементов, который может быть как простым, так и сложным, то есть любым.
В языках программирования нельзя оперировать всем массивом, работают с конкретным элементом. Чтобы доступиться до него в трёх рассматриваемых нами языках используют оператор "[]".
array[0]
Индекс имеет тип данных чаще всего int.
Структура
Ранее были рассмотрены встроенные типы данных. Теперь мы переходим к пользовательским типам данных. Структура - конструкция, позволяющая содержать в себе набор переменных различных типов.
Структуры реализованы в языке программирования, чтобы собрать некие близки по смыслу вещи воедино.
Например, есть колесо автомобиля. У колеса есть диаметр, толщина, шина. Шина в свою очередь является структурой, у которой есть свои параметры: материал, марка, чем заполнена. Естественно, для каждого параметра можно создать свою переменную или константу, у нас появится большое количество переменных, которые, чтобы понять к чему они относятся, нужно в именах общую часть выделять. Имена будут нести лишнюю смысловую нагрузку. Получается запутанная история. А так мы определяем две структуры, а затем параметры в них.
struct Tyre
{
Material material;
int mark;
};
struct Wheel
{
double diameter;
double thickness;
Tyre tyre;
}
Класс
Еще одним пользовательским типом данных является класс. Класс умеет всё, что и структура, но кроме параметров, у него есть и методы, и поддерживает большое количество вещей, связанных с объектно-ориентированным программированием.
1.2 Основные структуры данных
Структуры данных являются важной частью разработки программного обеспечения и одной из наиболее распространенных тем для вопросов на собеседованиях с разработчиками. Хорошая новость в том, что они в основном являются просто специализированными форматами для организации и хранения данных. Из этой статьи вы узнаете о 10 наиболее распространенных структурах данных.[5] Также сюда добавлены видеоролики (на английском языке) по каждой из структур, и код их реализации на JS. А чтобы вы немного попрактиковались, я добавил сюда задачи из бесплатной учебной программы freeCodeCamp.
Обратите внимание, что некоторые из этих структур данных включают временную сложность в нотации Big O. Это не относится ко всем из них, поскольку временная сложность иногда основана на реализации. Если вы хотите узнать больше о нотации Big O, посмотрите видео от Briana Marie.
Несмотря на то, что для каждой структуры я привожу код реализации на JavaScript, вам вероятно, никогда не придется делать этого самостоятельно, только если вы не будете использовать низкоуровневый язык вроде С. JavaScript (как и большинство языков высокого уровня) имеет встроенные реализации многих из этих структур данных.[6]
Тем не менее, знание того, как реализовать эти структуры данных, даст вам огромное преимущество в поиске работы и может пригодиться, когда вы попытаетесь написать высокопроизводительный код.