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

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 31.03.2023

Просмотров: 475

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

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;