ТИПЫ ДАН­НЫХ



Прекрасно понимаю, как вам хочется перейти к практике. Но потерпите ещё немного. Чем эффективней мы сейчас с вами поработаем, чем лучше воспримем и поймём, тем легче и быстрей будет наше последующее творчество!

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

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

Человек - это прекрасно, венец творения, изобрёл географию, кофе и туалетную бумагу, но мы изучаем компьютер. Сколько "органов чувств" у компьютера?

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

Компьютер получает, обрабатывает, выводит:

  1. Числовую информацию. Числа компьютер умеет вычитать, складывать, умножать и даже делить.
  2. Символьную. Или - текстовую информацию. Всё, что можно передать с помощью символов, которые вы можете набрать с помощью клавиатуры, посредством Alt-кодов или в текстовом процессоре, используя функцию вставки символа.
  3. Графическую информацию. Статичные изображения, статичная векторная графика. Всё, о чём можно сказать "нарисовано".
  4. Видеоинформацию. Движущиеся картинки. И (да-да!), наши все вот эти YouTube, фильмы, мультфильмы, Симпсоны и Рики и Морти. Всё, что видео, - видеоинформация.
  5. Звуковую информацию. Любой звук, музыка и всё, про что можно сказать "я слышу". Компьютер знает и её.

Быть может, году эдак в 2300-м научат компьютеры воспроизводить и понимать запахи, или вкус. Научат ругаться, научат эмоционально и искренне реагировать. Научат чувству юмора, и будет комп троллить хозяина. Высокопрофессионально троллить, искренне. Здорово же!

Итак, повторим: числа, текст, графика, видео, звук. Всё. Пока больше ничего компьютер не понимает. Но даже и здесь есть загвоздка.

Дело в том, что все данные (и текст, и числа, и полное собрание выступлений Петросяна, напетые в mp3 песни собственного сочинения) - хранятся в компьютере в виде нулей и единиц. В так называемой двоичной системе. Только нули. Только единицы. Весь текст, который вы сейчас читаете, - хранится в памяти и обрабатывается процессором вашего смартфона (планшета или чего там ещё) как последовательный и малопонятный нам набор: 01110100001101...

Не густо, правда?


ТИПЫ ДАН­НЫХ В PY­THON


Теперь внимание! Как компьютеру самому понять, какая последовательность из единиц и нулей хранит видео, какая - звук? Какая - текст, какая - числа? Да никак! Он не сможет определить ту или иную цепочку из нулей и единиц как что-то другое, кроме как цепочку из нулей и единиц. Кажущаяся тавтология, но и на самом деле компьютер "что вижу, то пою". "Я человек простой - увидел нули и единицы, воспринял как нули и единицы".

По секрету скажу, что процессору вообще мало что понятно. Ему важно получать биты (эти самые нули и единицы), обрабатывать их по своим правилам и больше ничего не делать и не знать.

Так как объяснить, что 1000001 - это число 65, а не символ "А" и не число один миллион один? И кто будет объяснять?

Пасхалка для программистов

Число 1000001, записанное в двоичной системе, в десятичной системе записывается как 65. Число 65 не что иное, как код символа "А". Также мы можем воспринять 1000001 как один миллион один. Как в квантовой физике - ничего не понятно до акта наблюдения. Но как только мы скажем, чем является число - символом, двоичным числом или десятичным, - сразу всё становится на свои места.


Для начала изучим всего три типа данных:

  1. str - символьные или текстовые данные.
  2. int - целые числа.
  3. bool - логическая переменная.

Запомните их, обязательно запомните! Наизусть.


КЛАС­СИФИ­КАЦИЯ ЯЗЫ­КОВ


Есть низкоуровневые языки программирования. Есть высокоуровневые. Они отличаются тем, что в высокоуровневых языках рутинные, часто выполняемые операции заменены готовыми командами. Например, функция print(), любезно выводящая на экран нужную информацию, на низкоуровневом языке программирования Ассемблере будет состоять из 4-6 строк (в зависимости от разных условностей). В Python - одна строка. Чувствуете разницу?

Python - высокоуровневый язык программирования, оптимизирующий рутинные операции.

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

Мы можем купить в магазине кусок мыла и с помощью этого мыла выстирать всю одежду. Будет долго, местами неприятно, а иногда даже и смешно. Зато мы простираем каждое пятнышко, каждую точечку, проконтролируем весь процесс стирки "от" и "до". Мыло - это низкоуровневая стирка.

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

И вновь нельзя искренне ответить на вопрос - какие языки лучше: высокого или низкого уровня? Каждый язык применяется для определённых ситуаций. Например, программировать устройства лучше на Ассемблере: требуется немного памяти, над которой программист получает полный контроль, происходит прямая работа с процессором.

Интерактивные возможности для сайтов, всякие чатики, форумы и социальные сети, лучше писать на PHP. Или Python.

Если есть желание написать свой Counter-Strike с блэк-джеком и ботами - учите C, C++, C# и, для начала, движок Unity.

Да, вы правильно поняли. У каждого языка есть своя специализация. Но вы, изучив один язык, - легко перейдёте на любые другие. По этому поводу не переживайте. Тем более в современном мире Python далеко не последний язык за счёт подключаемых модулей (библиотек). Но это другая история. Сосредоточьтесь на изучении Python, а дальше всё само собой образуется.


ПОЯС­НИ ЗА ТИП!


Python - высокоуровневый язык программирования и он обладает одной интересной особенностью. По мере поступления данных в программу интерпретатор сам определяет, к какому виду данные принадлежат. То есть являются ли строкой, числом или логической переменной. Нам практически не нужно задумываться: как только мы определяем (задаём) данные - Python самостоятельно принимает решение и назначает тип данных.

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

Эта интересная особенность Python называется нестрогой типизацией.

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

Тем не менее мы обязательно должны познакомиться с типами данных поближе. Итак, что у нас есть?


str


Текстовый тип данных отвечает за хранение и обработку только текстовых данных. Текстовые данные - любые данные, выраженные с помощью имеющихся в распоряжении компьютера символов. Это, прежде всего, символы алфавита: А..Я, а..я, A..Z, a..z, цифры 0..9, знаки препинания, спецсимволы и вообще всё, что выражено в таблице кодировки.

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

Полную версию таблицы кодировки можно полюбопытствовать в поисковиках, вашему вниманию представляю лишь часть таблицы кодировки. В ней первые 11 заглавных символов английского и русского алфавита и их коды: Символ A, код 65 Символ А, код 1105 Символ B, код 66 Символ Б, код 1106 Символ C, код 67 Символ В, код 1107 Символ D, код 68 Символ Г, код 1108 Символ E, код 69 Символ Д, код 1109 Символ F, код 70 Символ Е, код 1110 Символ G, код 71 Символ Ж, код 1111 Символ H, код 72 Символ З, код 1112 Символ I, код 73 Символ И, код 1113 Символ J, код 74 Символ Й, код 1114 Символ K, код 75 Символ К, код 1115

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

Символы идентифицируются по кодам. Это означает, что для компьютера одни и те же буквы, записанные в разных регистрах, - абсолютно разные. Например, символ "А" не равен символу "а", а слово "МОЛОКО" не является словом "Молоко", хотя по смыслу они одинаковые.

Даже больше. Символ "А" (латиница) и символ "А" (кириллица) хоть и являются безусловно идентичными по начертанию, но всё равно для компьютера это две разные буквы!

Какое количество папок "Молоко" можно создать на рабочем столе?

Ответ. Версия 1

Молоко - на кириллице
Молоко - первая "М" на латинице:
Молоко - первая "о" латинская
Молоко - вторая "о" - латинская
Молоко - третья "о" - латинская
Молоко - первая и вторая "о" - латинские
...
Итого: 16
Если предпоследнюю "к" на кириллице заменять на не очень похожую "k" на латинице - то 32 папки.


Ответ. Версия 2

Одну. Все другие "Молоко" с изменёнными символами уже не будут тем самым "Молоком", потому что у них символы разные!11!!!


Текстовые данные обязательно должны быть заключены в парные кавычки. Кавычки могут быть двойными:

"Это текстовые данные"

или одинарными:

'Это тоже текстовые данные'

Главное чтобы открывающая и закрывающая кавычки были одинаковыми. Либо "здесь текст", либо 'здесь текст'.

Как вы думаете, является ли текстовыми данными следующее?

"3.14"

Ответ

Да!


Текстовый тип данных поддерживает следующие операции:

Знак Назна­чение При­мер Резуль­тат
+ Конка­тенация - сложение строк. Выпол­няется с помощью опе­ратора +, резуль­татом является присое­динение сумми­руемой строки к исходной "AB" + "CD" "ABCD"
* Тиражи­рование строки, пара­метром может являться лишь целое поло­жительное число, резуль­тат - создание коли­чества указанных копий строки "A" * 5 "AAAAA"

Если мы вздумаем делить (/) или вычитать (-) строки на строки или числа, то получим в конечном итоге ошибку. Попробуйте в Python Shell записать:

"Новый Год" / 2

Нажмите Enter. Изучите результат.


int


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

Целочисленный тип данных поддерживает следующие операции:

Знак Назна­чение При­мер Резуль­тат
*
/
+
-
Мате­матичес­кие опе­рации умно­жения, деле­ния, сложе­ния и вычи­тания 10 * 3
10 / 3
10 + 3
10 - 3
30
3.33
13
7
// Целочис­ленное деление, дробная часть резуль­тата отбра­сывается (не округ­ляется) 10 // 3 3
% Оста­ток от деле­ния 10 % 3 1
** Возве­дение в сте­пень 10 ** 3 1000
(
)
Ука­зание прио­ритета выпол­нения опе­раций. Равноз­начно матема­тическим скобкам 10 * (3 + 3) 60

Не забываем! int работает только с положительными, отрицательными, равными нулю целыми числами.


bool


Наинтереснейший тип данных, который может принимать только одно из двух логических значений: True (истина) или False (ложь). Только True, либо False, причём значения в Python записываются с заглавных символов.

Обычно в логическую переменную помещается результат логического выражения, полученного с помощью операторов сравнения.

Вы входите в комнату и у вас спрашивают: "Включен ли свет?". На этот вопрос вы можете с лёгкостью ответить "Да" (True) или "Нет" (False), и ваш бинарный (двоичный) ответ легко описать с помощью логической переменной.

Диалог может выглядеть так:
- Свет включен?
- True!

Что вот сейчас произошло? Вам задали вопрос, вы проанализировали ситуацию, посмотрели на люстру или лампу, сравнили её с выключенной и осознали, что в данный момент лампочка светится.

Ключевое слово - сравнили. Компьютер также сравнивает, но только не лампочки, а данные. Результатом сравнения как раз является величина логического типа, то есть либо True, либо False.

Логический тип bool всегда содержит лишь одно из двух значений: True или False. Значения могут получиться в результате сравнения неких величин друг с другом или константой, либо могут вводиться программистом безусловно.

С помощью следующих операторов можно сравнивать данные. Потренируйтесь в Python Shell, записав, к примеру, 5 > 5. Нажмите Enter и посмотрите на результат.

Знак Назна­чение При­мер Резуль­тат
> Больше. Истина всегда, когда первый операнд больше второго 5 > 3
"A" > "B"
True
False
< Меньше. Истина всегда, когда первый операнд меньше второго 5 < 3
"A" < "B"
False
True
>= Больше или равно. Истина всегда, когда первый операнд больше или равен второму 7 >= 7
"C" >= "E"
True
False
<= Меньше или равно. Истина всегда, когда первый операнд меньше или равен второму 8 <= 7
"C" <= "C"
False
True
!= Не равно. Истина в том случае, когда операнды не совпадают. 5 != -5
"Z" != "Z"
True
False
== Равенство. Истина всегда, когда первый операнд идентичен второму 8 == 7
"Z" == "Z"
False
True

Значение True также считается числом 1, а False - числом 0.

Попробуйте:

3 / True

Результат: 3.0

3 / False

Результат: ошибка деления на ноль, "ZeroDivisionError: division by zero".

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


ОБОБ­ЩЕНИЕ


В Python слегка побольше типов данных, чем здесь рассмотрено. Но пока не нужно кидаться в бой и стараться изучать все. Сначала нужно понять основные принципы и механизмы обработки представленных здесь типов; изучить успеем, не спешите пожалуйста. Уже много можно сделать имея в распоряжении лишь строковой тип данных, целочисленный и логические истину/ложь.

Для строковых (текстовых, символьных) данных можем применять две операции:

Для целочисленных типов данных можем применять следующие операции:

Для получения логического результата имеем право (законом не запрещено) применять сравнения:

Выдохнули! Учить это не требуется. По ходу дела и по мере практики данные операции и правила будут применяться вами интуитивно. Ведь и правда же вы не задумываетесь о том, как пишется знак сложения в записи примера "3 + 5"?

Но пока запомните где взять информацию: в главе "Типы данных". Быть может вам придётся сюда наведываться чаще, чем ожидается!


© 2019-2021 Виктор Трофимов
[ Оглавление ] [ В начало страницы ]