ОБРА­БОТКА ДАН­НЫХ



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

Так что же такое обработка данных и почему важно понимать этот процесс?

К обработке данных относят:

  1. Получение новых данных на основе существующих.
  2. Преобразование данных в новую форму для последующей обработки или повышения удобства представления.
  3. Пересмотр и уточнение имеющихся данных.

Пример получения новых данных на основе существующих - обычный результат обычного математического выражения. Сколько вам будет лет через два года? Посчитали? Так вот, существующие данные - это ваш возраст, новые, полученные данные, - новое число. Рассчитывается по формуле "ТекущийВозраст + 2".

Представьте строку: "1 августа, 25, 29, 23, 18, 2 августа 26, 31, 26, 21, 3 августа 24, 29, 23, 19". Вы что-нибудь поняли?

А как вам такое представление:
1 авгу­ста 2 авгу­ста 3 авгу­ста
Утро +25 +26 +24
День +29 +31 +29
Вечер +23 +26 +23
Ночь +18 +21 +19

Мы только что преобразовали данные: взяли из строки имеющуюся информацию (дата, ряд температур) и переделали в табличную форму.

Оформление найденных в поисковике сайтов в виде списка по определённой форме также является результатом преобразования данных. А ведь поисковик вам мог показать всё в виде текстовой страницы, отделив каждый новый сайт от предыдущего запятой, как в первом примере про температуру августа (ужас!)

Например, запрос "языки программирования" мог выглядеть так:

Список языков программирования по категориям - Википедия,https://ru.wikipedia.org › wiki › Список_языков_программирования_по_... Приведён список языков программирования, сгруппированных по категориям. Некоторые языки попали в несколько категорий. ‎Язык программирования · ‎Мультипарадигмальный язык ... · ‎Pascal Язык программирования — Википедия, https://ru.wikipedia.org › wiki › Язык_программирования, Язык программи́рования — формальный язык, предназначенный для записи компьютерных программ. Язык программирования определяет набор ... ‎Языки низкого и ... · ‎Безопасные и ... · ‎Компилируемые ... · ‎Языки первого и ... 5 языков программирования, которые надо учить первыми ..., https://geekbrains.ru › posts › 5_top_first_langs, 24 июл. 2018 г. - Сегодня каждый, кто стремится попасть в IT, задается вопросом — какой язык программирования изучить? Все ищут универсальный ... Какой язык программирования изучать в 2019 году | статьи ... https://mkdev.me › kakoy-yazyk-programmirovaniya-izuchat-v-2019-godu, Перспективные языки программирования для изучения и разработки в 2019 году: Python, R, JavaScript, Java, Scala. Языки программирования для ... Энциклопедия языков программирования: Языки ...

Но поисковик хороший. Он обрабатывает данные и преобразовывает их в наиболее удобную для нашего восприятия форму. Будьте как поисковик!

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

Уточнение данных происходит без нашего ведома. Поисковые машины, так называемые "пауки", - обновляют информацию о сайтах, регулярно сканируя их на предмет новой/изменившейся информации, - уточняют информацию.

Обработка данных - процесс получения и/или изменения данных по определённым правилам и в определённой последовательности.

Последовательность не может быть нарушена, иначе обработка данных не привёдет к нужному результату.

Такие вот дела.


ПРОГ­РАММА


Любая компьютерная программа условно содержит в себе три блока:

  1. Блок получения данных.
  2. Блок обработки данных.
  3. Блок вывода данных.

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

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


CS:GO - ПРИ­МЕР


Рассмотрим небезызвестную и милую (пока они там вот это вот не начали улучшать!) игруху Counter-Strike: Global Offensive. Либо любой другой сетевой шутер. Разберёмся, где, как и какой блок работает, выделив их все:

  1. Ввод данных: осуществляется с помощью клавиатуры и мыши.
  2. Обработка данных: расчёт стрельбы, местонахождения игрока и противников, расчёт изменения позиции в ответ на события мыши и клавиатуры.
  3. Вывод данных: формирование изображения на экране в зависимости от игровой ситуации.

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

Ещё одна схема блоков:

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

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

Теперь, для простоты понимания, определим, какими терминами будем пользоваться и как будем выделять эти блоки на практике.


ТЕРМИ­НОЛО­ГИЯ


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

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

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

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

Некоторые команды и выражения языка мы будем называть командами (операторами, функциями и т.п.) ввода, некоторые команды - командами обработки, а некоторые - командами вывода.

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

Как вы думаете, сколько "блоков" присутствует в нашей уже написанной программе?

Ответ

Один. Этот блок - вывод на экран. Команда print() - функция вывода. Никакие данные в программу не поступают и никак компьютером не обрабатываются. Просто. Печатает. На. Экране. Всё. Один!


Теперь, читая следующие материалы, обращайте внимание на основной смысл тех или иных команд. Что они делают? - спрашивайте себя. Вводят данные, отвечаете. Или, - выводят. Или - обрабатывают.


СА­МЫЙ ГЛАВ­НЫЙ БЛОК


Самый главный блок - это... вжух! Нет такого. Все три блока взаимосвязаны и нужны. Докажем методом "от обратного".

Если бы в CS:GO не было блока ввода данных, то игра не стала бы реагировать на:

  1. Клавиатуру. Нажимай - не нажимай, ничего не происходит.
  2. Мышь. Крути - не крути - всё бессмысленно. Даже если у нас суперкрутая мышь в 12000 dpi.
  3. Взаимодействие по сети... Никакие соревок, никаких пабликов, никакой орущей школоты.

Если бы в CS:GO не было блока обработки данных, то игра повела бы себя так:

  1. Вообще бы ничего не произошло. Пустота. Мёртвый космос. Если бы даже программа могла принимать данные с клавиатуры, мыши, сети, - никаких действий бы не происходило. Подумайте - если бы CS:GO в данных условиях выводила что-то на экран - то что?

Если бы в CS:GO не было блока вывода данных, то получилось бы следующее:

Главного блока нет. Ввод, обработка и вывод данных связаны так, как наше тело, воздух и вода. Одно без другого бессмысленно.

Будем использовать все три блока: просто следить за тем, чтобы в нашу программу поступали данные, обрабатывались и выводились на экран. О пользователе не забываем. Монитор у него включен и он хочет что-то увидеть.

Да, дорогие читатели, это важно. Иначе бы я не выделил эту мораль в целую главу!

За мной! Идём дальше!


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