Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Операции, производимые с данными (Информация и данные. Виды операций с данными)

Содержание:

ВВЕДЕНИЕ

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

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

1) дать характеристику понятию "данные" и операциям с ними;

2) изучить разновидности операций, производимых с данными с точки зрения информационного процесса;

3) изучить разновидности операций, производимых с данными с точки зрения программирования.

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

1. Информация и данные. Виды операций с данными

Информация – это любые сведения о событиях, объектах и явлениях окружающей среды, их свойствах и состоянии. Информация содержится в сообщениях и передается людьми устным, письменным или другим способом (с помощью условных сигналов, графических изображений, звуков и т.д.). [1]

Согласно определению, приведенному в ГОСТ 7.0-99 "Межгосударственный стандарт. Система стандартов по информации, библиотечному и издательскому делу. Информационно-библиотечная деятельность, библиография. Термины и определения" (далее- ГОСТ 7.0-99 СИБИД), информация -сведения, воспринимаемые человеком и (или) специальными устройствами как отражение фактов материального или духовного мира в процессе коммуникации. [2]

В то же время данные, согласно всё тому же ГОСТ 7.0-99 СИБИД, это информация, обработанная и представленная в формализованном виде для дальнейшей обработки. [2] ГОСТ 33707-2016 (ISO/IEC 2382:2015) "Межгосударственный стандарт. Информационные технологии. Словарь" содержит схожее определение данных, как предоставления информации в формальном виде, пригодном для передачи, интерпретации или обработки людьми или компьютерами. [3]

В терминологии ГОСТ 20886-85 "Организация данных в системах обработки данных. Термины и определения" содержится также описание видов конструкций данных:

1) элемент данных- порция данных, в контексте использования которой отсутствует способ выделения из нее порции, отличной от нее самой;

2) конструкция данных- порция данных, в контексте использования которой имеется способ разложения ее на систему элементов данных (имеется в виду конкретный способ разложения, один из многих);

3) список данных- конструкция данных, представляющая собой упорядоченное множество элементов или составных конструкций данных;

4) цепной список данных- список данных, в котором порядок компонентов списка задан посредством указателей, включенных в компоненты списка;

5) кольцевой список данных- цепной список данных, в котором каждый компонент имеет единственный предшествующий и единственный последующий компонент того же списка;

6) массив данных- конструкция данных, компоненты которой идентичны по своим характеристикам и перечисляют как значения функции от фиксированного количества целочисленных аргументов (количество аргументов определяет размерность массива).[4]

Таким образом, данные представляют собой информацию в формализованном виде (в цифровой форме), позволяющем автоматизировать её сбор, хранение и дальнейшую обработку в электронно-вычислительных машинах (далее-ЭВМ). С этой точки зрения информация является абстрактным понятием, рассматриваемым безотносительно к её семантическому аспекту, а под количеством информации обычно понимается соответствующий объём данных. [5, с. 188] Преобразование и обработка данных позволяет получить информацию.[6, с. 3]

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

С учетом всего вышеизложенного, исходя из сущности данных, производимые с ними операции можно классифицировать по разному. С одной стороны, к операциям с данными с точки зрения информационного процесса можно отнести сбор данных, их формализацию, сортировку, фильтрацию, архивацию, защиту, преобразование, прием и передачу. [7, с. 13] С другой стороны, в рамках программирования с данными можно производить математические операции, операции присваивания, операции сравнения, логические операции, побитовые операции тернарные условные операции, операцию последовательного вычисления и т.п. В главах 2 и 3 курсовой работы мы постараемся установить и описать суть основных видов операций.

2. Разновидности операций, производимых с данными с точки зрения информационного процесса

2.1. Сбор данных. Формализация данных

Отправной точкой для любых операций с данными является сбор данных.

Сбор данных — накопление информации с целью обеспечения достаточной полноты для принятия решений.[7, с. 13]

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

Собранные данные образуют первичную информацию и подвергаются процессам дальнейшей переработки для получения промежуточной и конечной информации и ее использования. [8, c. 308]

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

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

Исходя из способа получения информации системы сбора данных можно разделить на:

1) сканирующие,

2) мультиплексные (мультиплексорные, иногда говорят «многоточечные»),

3) параллельные,

4) мультиплицированные.

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

Сканирующий принцип построения систем сбора данных используется там, где надо измерить поле распределения параметров (указанный тип систем используется в тепловизоре, аппарате УЗИ, томографе).

Параллельными системами сбора данных следует считать системы на основе интеллектуальных датчиков. Каждый из этих датчиков по сути одноканальная система сбора данных со специализированным интерфейсом.

Мультиплексная (мультиплексорная) система сбора данных имеет на каждый измерительный канал индивидуальные средства аналоговой обработки сигнала и общий для всех каналов блок аналого-цифрового преобразования. Наибольшее распространение в настоящее время имеют именно мультиплексные системы сбора данных. [9, с.93]

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

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

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

Формализация данных  определяется главным образом требованиями машинной обработки. Одним из элементов формализации является определение допустимых представлений данных. Числовые данные представляются в обычной форме. Для текстовых значений устанавливается допустимый набор слов, определяется метод кодирования и составляются соответствующие справочники. [10, с. 50]

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

2.2. Сортировка, фильтрация и поиск данных

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

Хотя в словарях слово сортировка определяется как процесс разделения объектов по виду или сорту, программисты традиционно используют его в гораздо более узком смысле, обозначая им такую перестановку предметов, при которой они располагаются в порядке возрастания или убывания. [13, с. 19]

К наиболее важным областям применения сортировки можно отнести:

1) решение задачи группирования, когда нужно собрать вместе все элементы с одинаковыми значениями некоторого признака;

2) поиск общих элементов в двух или более массивах (например, если два или более массивов рассортировать в одном и том же порядке, то можно отыскать в них все общие элементы за один последовательным просмотр всех массивов без возвратов);

3) поиск информации по значениям ключей (с помощью сортировки можно сделать результаты обработки данных более удобными для восприятия человеком. [13, с. 20]

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

1) время сортировки - основной параметр, характеризующий быстродействие алгоритма.

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

3) устойчивость - устойчивая сортировка не меняет взаимного расположения равных элементов; [13, с. 22]

4) естественность поведения - эффективность метода при обработке уже отсортированных, или частично отсортированных данных. Алгоритм ведет себя естественно, если учитывает эту характеристику входной последовательности и работает лучше.

Еще одним важным свойством алгоритма является его сфера применения:

1) внутренние сортировки работают с данным в оперативной памяти с произвольным доступом;

2) внешние сортировки упорядочивают информацию, расположенную на внешних носителях.

В отличие от сортировки, фильтрация данных — отсеивание лишних данных, в которых нет необходимости для принятия решений; при этом достоверность и адекватность данных должны возрастать. [7, с.13] Данные при фильтрации не переупорядочиваются, а лишь скрываются те записи, которые не отвечают заданным критериям выборки.[14, с.116] С понятием фильтрации данных неразрывно связано также понятие поиска данных. Поиск данных обычно связан с обработкой некоторого хранилища данных, прочесть или осознать которые последовательно не представляется возможным, с целью найти интересующее постановщика задачи подмножество этих данных (или установить их отсутствие). Существует неинформированный поиск данных (когда алгоритмы могут обрабатывать любые данные независимо от их сути, например, побитовый поиск), и информированный поиск (например, системы автоматизированного нахождения отпечатков пальцев, фонетический поиск в текстах и т. д.).

2.3. Сжатие данных

Одним из способов сокращения объема хранимой и передаваемой информации является её сжатие, которое основывается на избыточности, содержащейся в исходных данных. Простейшим примером избыточности является повторение в тексте фрагментов языка. [15, с.333]

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

Сжатие данных можно определить как алгоритмическое преобразование данных, производимое с целью уменьшения их объёма. [16]

В основе всех методов сжатия лежит простая идея: если представлять часто используемые элементы короткими кодами, а редко используемые- длинными кодами, то для хранения блока данных требуется меньший объем памяти, чем если бы все элементы представлялись кодами одинаковой длины.[17; с. 17]

Все методы сжатия данных делятся на два основных класса:

1) сжатие данных без потерь— класс алгоритмов сжатия данных (видео, аудио, графики, документов, представленных в цифровом виде), при использовании которых закодированные данные однозначно могут быть восстановлены с точностью до бита, пикселя, вокселя и т.д. При этом оригинальные данные полностью восстанавливаются из сжатого состояния;

2) сжатие данных с потерями — метод сжатия (компрессии) данных, при использовании которого распакованные данные отличаются от исходных, но степень отличия не существенна с точки зрения их дальнейшего использования.

Сжатие с потерями представляет из себя два разных процесса:

1) выделение сохраняемой части информации с помощью модели, зависящей от цели сжатия и особенностей источника и приемника информации;

2) собственно, сжатие без потерь.

Этот тип компрессии часто применяется для сжатия аудио- и видеоданных, статических изображений, в Интернете (особенно в потоковой передаче данных) и цифровой телефонии. При измерении физических параметров (яркость, частота, амплитуда, сила тока и т.д.) неточности неизбежны, поэтому "округление" вполне допустимо. С другой стороны, приемлемость сжатия изображения и звука со значительными потерями обусловлена особенностями восприятия такой информации органами чувств человека. Если же предполагается компьютерная обработка изображения или звука, то требования к потерями гораздо более жесткие. [17, с. 7]

Среди примеров данных, в которых искажения не допустимы можно выделить:

1) символические данные, изменение которых неминуемо приводит к изменению их семантики (тексты программ, двоичные массивы и т. п.);

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

3) многократно подвергаемые сжатию и восстановлению промежуточные данные при многоэтапной обработке графических, звуковых и видеоданных.

Основной характеристикой алгоритма сжатия является коэффициент сжатия. Указанная характеристика определяется как отношение исходных данных к объему сжатых данных, то есть k=So/Sc, где k - коэффициент сжатия, So — объём исходных данных, а Sc - объём сжатых. Чем выше коэффициент сжатия, тем алгоритм эффективнее. При этом, если k = 1, то алгоритм сжатия не производит, в следствии чего выходное сообщение по объёму оказывается равным входному. Если k < 1, то объем сжатых данных оказывается больше, чем объем несжатых данных, то есть алгоритм в данном случае не совершает полезной работы.

Ситуация с коэффициентом сжатия менее единицы вполне возможна при сжатии. Принципиально невозможно получить алгоритм сжатия без потерь, который при любых данных образовывал бы на выходе данные меньшей или равной длины. Так, если существует 2n различных файлов длины n бит, где n=0, 1, 2, ... Если размер каждого такого файла в результате обработки уменьшается хотя бы на 1 бит, то 2n исходным файлам будет соответствовать самое большее 2n -1 различающихся сжатых файлов. Тогда по крайней мере одному архивному файлу будет соответствовать несколько различающихся исходных, и следовательно его декодирование без потерь информации невозможно в принципе. По этой причине невозможен "вечный" архиватор, который способен бесконечное число раз сжимать свои же архивы. [17, с. 18]

Для сравнения алгоритмов по достигаемой степени сжатия используются фиксированные наборы файлов, первый из которых (Calgary Compression Corpus, сокращенно CalgCC) был предложен в 1989 году. Указанный набор состоял преимущественно из текстовых файлов. С тех пор по мере распространения различных типов файлов были введены иные наборы (CantCC, ACT, ARTest и т.д.) которые позволяют на практике оценить эффективность алгоритмов сжатия данных. [17, с.13-14]

2.4. Защита данных

Защита данных — это комплекс мер, направленных на предотвращение утраты, воспроизведения и изменения данных. [7, с. 14]

ГОСТ Р 50922-2006 "Национальный стандарт Российской Федерации. Защита информации. Основные термины и определения" определяет безопасность информации (данных) как состояние защищенности информации (данных), при котором обеспечены ее (их) конфиденциальность, доступность и целостность.[18]

Как видно из указанного определения, имеется три ключевых принципа информационной безопасности, которые называются триадой CIA - конфиденциальность (Confidentiality),целостность (Integrity), доступность (Availability)[19].

Конфиденциальность информации это обязательное для выполнения лицом, получившим доступ к определенной информации, требование не передавать такую информацию третьим лицам без согласия ее обладателя. [18]. ГОСТ Р ИСО/МЭК 27000-2012 "Информационная технология (ИТ). Методы и средства обеспечения безопасности. Системы менеджмента информационной безопасности. Общий обзор и терминология" определяет конфиденциальность как свойство информации быть недоступной или закрытой для неавторизованных лиц, сущностей или процессов. [20] Конфиденциальность информации достигается предоставлением к ней доступа c наименьшими привилегиями исходя из принципа минимальной необходимой осведомлённости. Иными словами, авторизованное лицо должно иметь доступ только к той информации, которая ему необходима для исполнения своих должностных обязанностей.

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

Доступность информации [ресурсов информационной системы] это состояние информации [ресурсов информационной системы], при котором субъекты, имеющие права доступа, могут реализовать их беспрепятственно [18]. Основными факторами, влияющими на доступность информационных систем, являются DoS-атаки (аббревиатура от Denial of Service с англ. — «отказ в обслуживании»), атаки программ-вымогателей, саботаж. Кроме того, источником угроз доступности являются непреднамеренные человеческие ошибки по оплошности или из-за недостаточной профессиональной подготовки: случайное удаление файлов или записей в базах данных, ошибочные настройки систем; отказ в обслуживании в результате превышения допустимой мощности или недостатка ресурсов оборудования, либо аварий сетей связи; неудачно проведённое обновление аппаратного или программного обеспечения; отключение систем из-за аварий энергоснабжения. Задачи по обеспечению доступности информации на практике решаются различными методами: организация системы бесперебойного питания, резервирование и дублирование мощностей и т.д.

К информационной безопасности также могут быть отнесены свойства подлинности (свойство, гарантирующее, что субъект или ресурс идентичен заявленному), подотчетности (ответственность субъекта за его действия и решения), неотказуемости (способность удостоверять имевшее место событие или действие и их субъекты так, чтобы это событие или действие и субъекты, имеющие к нему отношение, не могли быть поставлены под сомнение) и достоверности (свойство соответствия предусмотренному поведению и результатам).[20]

В целом, количество свойств и принципов безопасности, которые выделяются различными исследователями может отличаться. Так, национальный институт стандартов и технологий США (NIST) 2004 году предложил свою модель информационной безопасности из 33 элементов или, как написано в SP800-27 "Engineering Principles for Information Technology Security (A Baseline for Achieving Security)", принципов. [19] Неизменным остается то, что защита информации- одна из наиболее важнейших практических задач, невыполнение которой может повлечь за собой катастрофические последствия.

2.5. Преобразование данных

Преобразование данных — перевод данных из одной формы в другую.[7, с. 14]

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

1) переименование. В этом случае объекты данных (таблицы, поля и т. п.) источника получают имена в соответствии с организацией данных получателя.

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

3) агрегирование- база данных получателя предусматривает не просто импорт данных, а получение некоторого сводного или итогового отчета. Для этого данные преобразуются агрегирующими запросами.

4) кодирование и декодирование. Если база данных- источник и база данных- получатель используют разные системы кодирования атрибутов данных или в одной из них атрибут кодируется, а в другой — нет, то при экспортировании с помощью декодирования и кодирования данные изменяются так, чтобы они соответствовали системе кодирования атрибутов в базе данных получателя.

5) конвертирование. В случае использования разных формант для хранения соответствующих атрибутов (числовых, текстовых или логических) в процессе экспортирования данные необходимо конвертировать — привести к формату атрибута в базе данных-получателе.

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

7) проверка. В базе данных могут использоваться разные ограничения на допустимость значений полей, поэтому экспортируемые данные должны проверяться и соответственно преобразовываться. При этом записи, не прошедшие проверку, могут помечаться в служебных полях или сохраняться в специальных таблицах, что позволит в дальнейшем подвергнуть их анализу и корректировке. [21, с. 363-365]

2.6. Передача данных

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

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

Передаваемые данные могут быть цифровыми сообщениями, идущими из источника данных, например, из компьютера или от клавиатуры. Это может быть и аналоговый сигнал — телефонный звонок или видеосигнал, оцифрованный в битовый поток, используя импульсно-кодирующую модуляцию (PCM) или более расширенные схемы кодирования источника (аналого-цифровое преобразование и сжатие данных). Кодирование источника и декодирование осуществляется кодеком или кодирующим оборудованием. [22]

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

Для борьбы с потерями данных используется помехоустойчивое кодирование. Задачей помехоустойчивого кодирования является повышение качества передачи данных. Во многих системах достаточно установить факт наличия в принятом сообщении ошибок и принять соответствующее решение: либо забраковать ошибочное сообщение, не отправляя его к получателю, либо забраковать и послать на передающую сторону запрос на повторную передачу ошибочно принятого сообщения. В обоих случаях применяют помехоустойчивые коды для обнаружения ошибок, которые в литературе называют кодами с обнаружением ошибок (EDC — Error Detection Code). Так как такие коды предназначены только для установления факта наличия ошибок в принятом сообщении, то в кодовые комбинации, передающие сообщения, вносится избыточность, которая обеспечивает повышение достоверности за счёт обнаружения ошибок. В системах же реального времени для обеспечения требуемой достоверности без введения существенных задержек применяют помехоустойчивые коды с прямой коррекцией ошибок (ECC — Error Correction Code; FEC — Forward Error Correction). В отечественной литературе их называют кодами с исправлением ошибок, избыточность в которых существенно выше, чем у кодов с обнаружением ошибок.[23, c. 4]

Для коррекции шума в радиотехнике, звукотехнике и т.д. применяются шумопонижающие методы и основанные на этих методах системы шумоподавления- системы обработки сигнала, реализованные в виде электронных схем или программных алгоритмов, предназначенные для увеличения отношения сигнал/шум за счёт избыточности либо понижения разрядности или разрешения сигнала. Среди них можно выделить системы фильтрации, которые обрабатывают сигнал при приёме (воспроизведении) или записи (передаче) пытаясь очистить полезный сигнал от шума, и системы, модифицирующие сигнал для передачи по шумным каналам (или для записи сигнала на носитель), с последующим обратным преобразованием на приёмной стороне (при воспроизведении). Основной целью борьбы с шумами (шумоподавления) является повышение субъективного качества сигналов в данной системе передачи данных.[24, с. 244]

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

3. Разновидности операций, производимых с данными с точки зрения программирования

3.1. Математические операции

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

1) четыре действия арифметики (сложение, вычитание, умножение и деление);

2) операция целочисленного деления (арифметическая операция, результатом которой является целая часть частного, полученного делением одного целого числа на другое целое число[25, с. 24]);

3) операция деления по модулю (ее результатом является остаток от деления целого числа, стоящего слева от знака операции, на число, расположенное справa от него[26, с. 89]);

4) операция возведения в степень;

5) инкремент и декремент (инкремент- операция во многих языках программирования, увеличивающая переменную, обратную операцию называют декремент[27]).

Итак, рассмотрим все эти операции более подробно. Для рассмотрения каждой отдельной операции применительно к различным языкам программирования, были выбраны одни из наиболее популярных и часто используемых языков: C++, C#, Java, PHP, Perl, JavaScript, Delphi, Visual Basic, VBScript. Стоит также отметить, что операции обычно переходят из языков в родственные — например, операции языка С присутствуют в языках C++, Java, JavaScript и многих других.[28]

Символы четырех действий арифметики (сложение, вычитание, умножение, деление) во всех вышеуказанных языках программирования одинаковы: "+","-","*","/".

Операция целочисленного деления как отдельная операция из рассматриваемых языках есть только в Visual Basic, VBScript:" \ " и в языке Delphi: "div", но во всех языках, произошедших от C++ (Visual C++,C++ Builder,C# Java, JavaScript, PHP, Perl), если оба аргумента у операции деления "/" целые числа, то она всегда возвращает целый результат (т.е. действует аналогично операции целочисленного деления). Чтобы результат представлял число с плавающей точкой, один из операндов также должен представлять число с плавающей точкой. [30]

Операция деления по модулю в языках C++, C#, Java, PHP, Perl, JavaScript ( "%"), и в языках Visual Basic, VBScript, Delphi ("mod") как было сказано выше возвращает остаток от деления целого числа, стоящего слева от знака операции, на число, расположенное справa от него. Например, так как 7 / 4 = 1 с остатком 3, то 7 % 4 = 3. [29]

Операция возведения в степень из рассматриваемых языков программирования существует только в языках Visual Basic, VBScript ("^") Perl, JavaScript ("**"). Во многих языках программирования операция возведения в степень отсутствует, и для этой цели используют функции. Например, в языке программирования C++ вместо оператора возведения в степень есть функция "pow()".[29]

Операция инкремента(декремента) как было сказано выше состоит в увеличении (при инкременте) либо уменьшении (при декременте) аргумента на единицу. Инкремент или декремент существуют только в языках, произошедших от языка C++ (Java, JavaScript, PHP, Perl). Во всех языках, где есть инкремент или декремент, они определены одинаково два плюса или минуса подряд (++ или --).

Если в языке существует инкремент или декремент, то существует две его формы: префиксная (++х,--х) и постфиксная (х--,х++). С операторами инкремента/декремента версии префикс всё просто. Значение переменной х сначала увеличивается/уменьшается, а затем уже вычисляется. А вот с операторами инкремента/декремента версии постфикс несколько сложнее. Компилятор создаёт временную копию переменной х, увеличивает или уменьшает оригинальный х (не копию), а затем возвращает копию. Только после возврата копия x удаляется. Например, если x = 5, то при выполнении операции y = x++ компилятор создаёт временную копию х, которая имеет то же значение, что и оригинал (5). Затем увеличивается первоначальный х с 5 до 6. После этого компилятор возвращает временную копию, значение которой — 5, и присваивает её переменной у. Только после этого копия y удаляется. Следовательно, мы получим у = 5 и х = 6. [31]

3.2. Операции сравнения

Сравнение в программировании — общее название ряда операций над парами значений одного типа, реализующих математические отношения равенства и порядка. В языках высокого уровня такие операции, чаще всего, возвращают булево значение («истина» или «ложь»).[35]

Операции сравнения необходимы для проверки условий и выполнение команд в зависимости от того истинно или ложно условие.

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

По-разному рассматривается сравнение скалярных (числовых) объектов, указателей и объектов сложных типов данных.

При сравнении объектов скалярных (числовых) типов данных сравнивается непосредственно сами хранимые числовые значения. Сами числовые значения, при этом, остаются неизменными.

Логические операторы реализуют следующие математические операции сравнения:

1)проверка на равенство ({\displaystyle =}=) или/и неравенство ({\displaystyle \neq }≠);

2) проверка на строгое неравенство ({\displaystyle <} < и > {\displaystyle >});

3) проверка на нестрогое неравенство ({\displaystyle \leqslant } ≤ и {\displaystyle \geqslant }≥).

В языках высокого уровня, соответственно, реализованы следующие логические операторы (на примере С#):

1) проверка на равенство (= =) и неравенства (!=)[36];

2) отношение строгого порядка (< и >)[37];

3) отношение нестрогого порядка (<=,>=)[37].

При работе с нечисловыми данными имеются два варианта сравнения данных:

1) сравнение указателей — сравнение значений указателей. Равенство указателей означает, что две переменных указывают на один и тот же объект данных (участок памяти);

2) сравнение содержимого — сравнение объектов с точки зрения логики на основе знания их содержимого (например, сравнение строк содержащих буквы по регистру, количеству символов и т.д.). [35]

Операции больше, меньше, не меньше (больше или равно), не больше (меньше или равно) аналогичны в любом в любом языке и обозначаются: ">","<",">=","<=".

Операции равенства обозначаются как "= =" в языках C++, C#, Java, PHP, Perl, JavaScript, и как "=" в языках Visual Basic, VBScript , Delphi. Операции неравенства в языках C++, C#, Java, PHP, Perl, JavaScript. Операции неравенства в языках C++, C#, Java, PHP, Perl, JavaScript обозначаются как "!=", и в Visual Basic, VBScript , Delphi как "<>". Соответственно к примеру в языке С# оператор равенства "==" возвращает значение "истина", если его операнды равны. В противном случае возвращается значение "ложь". Оператор же неравенства "!=" возвращает значение "истина", если его операнды не равны, и возвращается значение "ложь" если они равны. [36]

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

Среди операций сравнения в языках PHP и JavaScript также имеются операции эквивалентности ("= = =") и неэквивалентности ("! = ="). Они не только сравнивают два выражения, но также их типы (два аргумента считаются равными при совпадении и значений и типов аргументов).[38]

Так, в языке JavaScript оператор равенства дает вследствие выполнения значение "истина" в случае, если два сравниваемых значения могут быть преобразованы в одно и то же значение. Например результатом выполнения инструкции '3'= = 3 (то есть операции равенства строки содержащей число 3 и числа 3) будет значение "истина". Идентичность же означает равенство как значений так и их типов, поэтому результатом выполнения инструкции '3' = = = 3 будет значение "ложь", а '3' = = = '3' - "истина". [39, с. 65]

В языке Perl в отличие от других языков есть также операция "<=>" которая возвращает -1 если левый аргумент меньше правого, 0 если левый аргумент равен правому и 1 если левый аргумент больше правого. [40]

3.3. Операция присваивания

Операция присваивания уже не относится к математическим понятиям. Она представляет собой механизм придания значения переменной в языке программирования. [32] Смысл операции в замене значения выражения слева от операции присваивания значением, полученным после вычисления выражения расположенного справа. Операции присваивания имеют наименьший приоритет по сравнению с другими типами операций, поэтому выполняются в последнюю очередь, поэтому например при x= 3 + 5 В соответствии с приоритетом операций вначале выполняется выражение 3 + 5, и только потом его значение присваивается переменной x. [33]

Из рассматриваемых языков только в Delphi операция присваивания записывается как ":=",[34] во всех остальных языках как "=".

В языках произошедших от С (C++, C#, Java, PHP, Perl, JavaScript) и Basic'a. (VBScript) используются также сочетания операций присваивания с другими операциями. Например в С++ используются:

1) "+=" присваивание после сложения. Присваивает левому операнду сумму левого и правого операндов: A

2) "+=" B эквивалентно A = A + B;

3) "-=" присваивание после вычитания. Присваивает левому операнду разность левого и правого операндов: A -= B эквивалентно A = A - B;

4) "*=" присваивание после умножения. Присваивает левому операнду произведение левого и правого операндов: A *= B эквивалентно A = A * B;

5) "/=" присваивание после деления. Присваивает левому операнду частное левого и правого операндов: A /= B эквивалентно A = A / B;

6) "%=" присваивание после деления по модулю. Присваивает левому операнду остаток от целочисленного деления левого операнда на правый: A %= B эквивалентно A = A % B

7) "<<=" присваивание после сдвига разрядов влево. Присваивает левому операнду результат сдвига его битового представления влево на определенное количество разрядов, равное значению правого операнда: A <<= B эквивалентно A = A << B;

8) ">>=" присваивание после сдвига разрядов вправо. Присваивает левому операнду результат сдвига его битового представления вправо на определенное количество разрядов, равное значению правого операнда: A >>= B эквивалентно A = A >> B;

9) "&=" присваивание после поразрядной конъюнкции. Присваивает левому операнду результат поразрядной конъюнкции его битового представления с битовым представлением правого операнда: A &= B эквивалентно A = A & B;

10)" |= " присваивание после поразрядной дизъюнкции. Присваивает левому операнду результат поразрядной дизъюнкции его битового представления с битовым представлением правого операнда: A |= B эквивалентно A = A | B;

11) "^=" присваивание после операции исключающего ИЛИ. Присваивает левому операнду результат операции исключающего ИЛИ его битового представления с битовым представлением правого операнда: A ^= B эквивалентно A = A ^ B . [33]

3.4. Логические операции

В тех случаях, когда требуется объединить несколько операций сравнения в рамках одного выражения применяются логические операции. Например, чтобы записать условие приема на работу: возраст до 45 лет и опыт работы от 3 лет нужно использовать оператор И(And): (x<=45) And (y>=3), где х- возраст, y-опыт.

Видами логических операций являются:

1) дизъюнкция, также называемая "логическое ИЛИ" (OR) - возвращает значение "ложь", только в том случае, если оба аргумента ложны. [41, с. 149-150] В языках C++, C#, Java, JavaScript, Perl обозначается как "||", в языках Visual Basic, VBScript, Delphi как "Or", в PHP как "||" или "Or";

2) конъюнкция, также называемая "логическое И" (AND)- возвращает значение "истина", только в том случае, если оба аргумента истинны[41, с. 264]; В языках C++, C#, Java, JavaScript, Perl обозначается как "&&", в языках Visual Basic, VBScript, Delphi как "And", в PHP как "&&" или "And";

3) отрицание, также называемое "логическое НЕТ" (Not)- возвращает истину, если аргумент ложный и ложь, если аргумент истинный.[41, с. 421] В языках C++, C#, Java, JavaScript, Perl обозначается как "!", в языках Visual Basic, VBScript, Delphi как "Not", в PHP как "!";

4) строгая дизъюнкция, также называемая "исключающее ИЛИ" (Xor)- в случае двух переменных результат выполнения операции истинен тогда и только тогда, когда один из аргументов истинен, а другой — ложен. [41, с. 571] В языках программирования указанная операция обозначается как "Xor", вместе с тем, во многих языках (например в C++) такого оператора нет, но его можно сымитировать, используя оператор неравенства (в C++ это "!="). [42]

3.5. Побитовые операции

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

Виды побитовых операций можно разделить на:

1) аналог логических операций: Or, And, Not, Xor;

2) побитовые сдвиги. [43]

Побитовое "ИЛИ" (Or) бинарная операция, действие которой эквивалентно применению логического «ИЛИ» к каждой паре битов, которые стоят на одинаковых позициях в двоичных представлениях операндов. Другими словами, если оба соответствующих бита операндов равны 0, двоичный разряд результата равен 0; если же хотя бы один бит из пары равен 1, двоичный разряд результата равен 1. [43] В языках C++, C#, Java, JavaScript, PHP, Perl обозначается как "|". В языке Delphi указанный оператор обозначается как "or". [34, с. 223]

Побитовое "И" (And) используется для выключения битов. Любой бит, установленный в 0, вызывает установку соответствующего бита результата также в 0. [43] В языках C++, C#, Java, JavaScript, PHP, Perl обозначается как "&". В языке Delphi указанный оператор обозначается как "and". [34; 223]

Побитовое "НЕТ" (Not) инвертирует состояние каждого бита исходной переменной. [43] В языках C++, C#, Java, JavaScript, PHP, Perl обозначается как "~". В языке Delphi указанный оператор обозначается как " not ".[34; 223]

Побитовое исключающее "ИЛИ" Xor устанавливает значение бита результата в  1, если значения в соответствующих битах исходных переменных различны. [43] В языках C++, C#, Java, JavaScript, PHP, Perl обозначается как "^". В языке Delphi указанный оператор обозначается как "xor".[34; 223]

Операторы сдвига сдвигают биты в переменной влево или вправо на указанное число. При этом на освободившиеся позиции устанавливаются нули (кроме сдвига вправо отрицательного числа, в этом случае на свободные позиции устанавливаются единицы, так как числа представляются в двоичном дополнительном коде и необходимо поддерживать знаковый бит). [43] В языках C++, C#, Java, JavaScript, PHP, Perl сдвиги влево или вправо обозначаются соответственно как "<<" и ">>". В языке  Delphi "shl" это побитовый сдвиг влево, а "shr" – побитовый сдвиг вправо. [34; 223] Стоит также отметить, что в языке Java есть оператор ">>>" который производит сдвиг нуля в позицию старшего бита независимо от его первоначального значения. Такое действие называют сдвигом вправо без учета знака, когда всегда вставляется ноль в позицию старшего бита. [44] Существует также понятие циклического сдвига, при котором уходящий бит появляется на месте появившегося свободного на другом конце числа.

3.6. Прочие операции

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

Тернарная условная операция- во многих языках программирования операция, возвращающая свой второй или третий операнд в зависимости от значения логического выражения, заданного первым операндом. Аналогом тернарной условной операции в математической логике и булевой алгебре является условная дизъюнкция, которая записывается в виде [p, q, r] и реализует алгоритм: «Если q, то p, иначе r», что можно переписать как «p или r, в зависимости от q или не q». В языках C++,C#,Java, PHP, Perl, JavaScript указанная операция записывается как "? :", а именно "условие" ? "выражение 1" : "выражение 2", что можно описать как -если условие истинно, то выполняется выражение 1, иначе (условие ложно) выполняется выражение 2.[46]

В некоторых языках, например в языке C есть также операция последовательного вычисления, которая последовательно вычисляет два своих операнда, сначала первый, затем второй. Оба операнда являются выражениями. Синтаксис операции:<выражение1>, <выражение2> . Знак операции - запятая, разделяющая операнды. Результат операции имеет значение и тип второго операнда. Ограничения на типы операндов (т. е. типы результатов выражений) не накладываются, преобразования типов не выполняются. Операция последовательного вычисления обычно используется для вычисления нескольких выражений в ситуациях, где по синтаксису допускается только одно выражение. [47, с. 93]

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

ЗАКЛЮЧЕНИЕ

Как мы выяснили, данные это информация, обработанная и представленная в формализованном виде для дальнейшей обработки. Они могут представлять собой списки и массивы.

С одной стороны их можно собирать, формализировать, сжимать, сортировать, защищать, преобразовывать и передавать.

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

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

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

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

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

1. Прохорский Г.В. Интернет-курс по дисциплине "Информатика". URL:http://e-biblio.ru/book/bib/01_informatika/informatika/new/part1/sg.html #_Toc505877949 (дата обращения: 14.02.2020).

2. ГОСТ 7.0-99. Межгосударственный стандарт. Система стандартов по информации, библиотечному и издательскому делу. Информационно-библиотечная деятельность, библиография. Термины и определения: введен в действие Постановлением Госстандарта России от 07.10.1999 № 334-ст//М.: ИПК Издательство стандартов, 1999.

3. ГОСТ 33707-2016 (ISO/IEC 2382:2015). Межгосударственный стандарт. Информационные технологии. Словарь: введен в действие Приказом Росстандарта от 22.09.2016 № 1189-ст//М.: Стандартинформ, 2016.

4. ГОСТ 20886-85. Организация данных в системах обработки данных. Термины и определения: утвержден постановлением Государственного комитета СССР по стандартам от 31.01.1985 № 240//М.: Стандартинформ, 2005.

5. Захаров В. П. Информационные системы (документальный поиск): учебное пособие./СПб.: СПб.гос университет, 2002.-188 с.

6. Калягина Л.В., Разумов. П.Е. Категория "данные": понятие, сущность, подходы к анализу//Вестник КрасГАУ. 2014, Выпуск 14.- 3 с.

7. Михеева Е.В., Титова О.И. Информатика: учебник для среднего профессионального образования./М.: Издательский центр "Академия", 2007.- С. 13-14.

8. Большой бухгалтерский словарь/ А.Н.Азрилиян [и др.]. М.: Институт новой экономики, 1999.-308 с.

9. Крюков В.В. Информационно-измерительные системы./Владивосток: ВГУЭС, 2000. - 93 с.

10. Андреев В. А.  Пенкин Г. П. Автоматизированные системы управления предприятиями /М. : Финансы и статистика, 1981.-50 с.

11. Гринберг А.С., Колосков В.П., Михалев С.Б. Автоматизированные системы управления предприятиями. (Методы создания)/М.: Энергия, 1978.-12 с.

12. Лопатников Л. И. Экономико-математический словарь: Словарь современной экономической науки. /М.: Дело.. 2003.- 336 с.

13. Кнут Д.Э. Искусство программирования, том 3. Сортировка и поиск, 2-е издание.: Перевод с английского/М.: ООО "И.Д. Вильямс", 2018.- С. 19,20,22.

14. Мамаева Н.А. Информатика. Курс лекций: учебное пособие/Омск: ОФ ВА МТО, 2013.- 116 с.

15. Исаченко В.В. Сжатие данных на основе сборки слов. Инноватика- 2016: собрание материалов XII Международной школы-конференции студентов, аспирантов и молодых ученых (20-22 апреля 2016 г.)/ под ред. А.Н. Солдатова, С.Л. Минькова- Томск: STT, 2016.-333 с.

16. Тазетдинова В. А. Цифровая компрессия аудиоданных // Молодой ученый.- 2014. -№4. -С. 268-273. -URL:https://moluch.ru/archive/63/9753/ (дата обращения: 01.03.2020).

17. Ватолин Д., Ратушняк А., Смирнов М., Юкин В. Методы сжатия данных. Устройство архиваторов, сжатие изображений и видео./ М.:ДИАЛОГ-МИФИ, 2003. С. 7, 13-14.

18. ГОСТ Р 50922-2006. Национальный стандарт Российской Федерации. Защита информации. Основные термины и определения: утв. и введен в действие Приказом Ростехрегулирования от 27.12.2006 № 373-ст// М.: Стандартинформ, 2008.

19. Лукацкий А. Триада \"конфиденциальность, целостность, доступность\":откуда она? [сайт] URL:https://www.securitylab.ru/blog/personal/ Business_without_danger/24456.php (дата обращения: 01.03.2020).

20. ГОСТ Р ИСО/МЭК 27000-2012. Национальный стандарт Российской Федерации. Информационная технология. Методы и средства обеспечения безопасности. Системы менеджмента информационной безопасности. Общий обзор и терминология: утв. и введен в действие Приказом Росстандарта от 15.11.2012 N 813-ст// М.: Стандартинформ, 2014.

21. Гагарина Л.Г. Разработка и эксплуатация авторизированных информационных систем: учебное пособие/М.: ИД "ФОРУМ":ИНФРА-М, 2017.- С. 363-365.

22. Коростелев Д.В., Тихонов В.А. Система передачи данных на основе интерфейса RS-485 по протоколу MODBUS//Материалы IX Международной студенческой научной конференции «Студенческий научный форум» URL: http://scienceforum.ru/2017/article/2017039440">http://scienceforum.ru/2017/article/2017039440</a (дата обращения: 01.03.2020).

23. Когновицкий О. С. Практика помехоустойчивого кодирования : в 2 ч. : учебное пособие /СПбГУТ. — СПб, 2018.-4 с.

24. Шкритек П. Справочное руководство по звуковой схемотехнике: пер. с нем./М.: Мир, 1991.- 244 с.

25. Деникин А.В. Программирование задач целочисленной арифметики//Информатика. Всё для учителя!-2013-№6.- 24 с.

26. Уэит М. Язык Си - руководство для начинающих/М.: "Мир",1988.- 89 с.

27. Инкремент // Википедия. [2018—2018]. Дата обновления: 18.10.2018. URL: https://ru.wikipedia.org/wiki/Инкремент (дата обращения: 01.03.2020).

29. Урок № 39. Арифметические операторы//Ravesli [2019] Дата обновления 29.12.2019. URL: https://ravesli.com/urok-39-arifmeticheskie-operatory (дата обращения: 01.03.2020).

30. Арифметические операции//Metaint.com сайт о программировании [2017]. Дата обновления 12.09.2017 URL: https://metanit.com/cpp/tutorial/2.6.php (дата обращения: 01.03.2020).

31. Урок №40. Инкремент, декремент и побочные эффекты//Ravesli [2019]. Дата обновления 29.12.2019. URL: https://ravesli.com/urok-40-inkrement-dekrement-pobochnye-effekty/ (дата обращения: 01.03.2020).

32. ГОСТ 28397-89 (ИСО 2382-15-85). Межгосударственный стандарт. Языки программирования. Термины и определения: утв. и введен в действие Постановлением Госстандарта СССР от 21.12.1989 № 3961//М.: Стандартинформ, 2005.

33. Операции присваивания//Metaint.com сайт о программировании [2017]. Дата обновления 13.09.2017 URL: https://metanit.com/cpp/tutorial/2.6.php (дата обращения: 01.03.2020).

34. Парижский С.М. Delphi. Учимся на примерах. /Киев:"МК-Пресс", 2005. - 233 с.

35. Сравнение (программирование) // Википедия. [2019—2019]. Дата обновления:17.06.2019.URL:https://ru.wikipedia.org/wiki/Сравнение_(программирование) (дата обращения: 01.03.2020).

36. Операторы равенства (справочник по C#) // Microsoft.NET. Дата обновления: 26.06.2019. URL: https://docs.microsoft.com/ru-ru/dotnet/csharp/language-reference/operators/equality-operators (дата обращения: 01.03.2020).

37. Операторы сравнения (справочник по C#) // Microsoft.NET. Дата обновления: 25.04.2019. URL: https://docs.microsoft.com/ru-ru/dotnet/csharp/language-reference/operators/comparison-operators (дата обращения: 01.03.2020).

38. Операторы эквивалентности PHP [сайт] URL:http://www.php.su/learnphp/operators/?equiv (дата обращения: 01.03.2020).

39. Слепцова Л.Д., Бидасюк Ю.М. JavaScript. Самоучитель: М.: Издательский дом "Вильямс", 2007.- 65 с.

40. Операторы сравнения [сайт] URL: http://perl.find-info.ru/perl/014/comparison-operators.htm (дата обращения: 08.03.2020)

41. Кондаков Н.И. Логический словарь-справочник/М.: Издательство Наука. 1975.

42. Урок №43. Логические операторы: И, ИЛИ, НЕ //Ravesli [2019]. Дата обновления 30.12.2019. URL: https://ravesli.com/urok-43-logicheskie-operatory-i-ili-ne/ (дата обращения: 08.03.2020).

43. Побитовые операции [сайт] https://neerc.ifmo.ru/wiki/index.php?title

=Побитовые_операции (дата обращения: 08.03.2020).

44. Климов А. Побитовые операторы //[сайт] URL: http://developer.alexanderklimov.ru/android/java/bitwise.php (дата обращения: 08.03.2020).

45. Тернарная условная операция // Википедия. [2020—2020]. Дата обновления:08.03.2020. URL: https://ru.wikipedia.org/wiki/Тернарная_условная _операция (дата обращения: 08.03.2020).

46. Условная операция (операция выбора) в С++ [сайт] URL: http://cppstudio.com/post/304/ (дата обращения: 08.03.2020).

47. Бочков С. Язык программирования Си для персонального компьютера./М.: СП "Диалог", 1990. - 93 с.