Файл: Операции, производимые с данными.pdf

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

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

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

Добавлен: 05.04.2023

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

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

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

ВВЕДЕНИЕ

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

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

Из возможных операций над данными можно выделить следующие:

  1. Получение - или сбор информации с целью обеспечения достаточной полноты для принятия решений.
  2. Формализация - приведение данных к одному виду для повешения уровня доступности к ним.
  3. Сортировка - упорядочение данных по заданному признаку с целью их удобного использования и дальнейшей обработки.
  4. Фильтрация – отбрасывание лишних данных которые не несут никакой ценной информации.
  5. Защита - меры, направленные на то чтобы запретить несанкционированное изменение, удаление и добавление данных в системе.
  6. Архивация - организация хранения данных, служит для снижения экономические затраты и повышает общую надежность информационного процесса в целом.
  7. Перемещение - прием и передача данных между удаленными участками информационного процесса.
  8. Преобразование – перевод данных из одной формы в другую что довольно часто связано с изменением типа носителя, например, видеоряд может хранится как в виде кассеты, так и в электронном виде в памяти компьютера.

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

Так как операций в таком списке достаточно обширное множество, то для того, чтобы в той или иной мере раскрыть каждую будет использоваться язык программирования высокого уровня C++ (также в некоторых случаях будут приведены блок-схемы) и веб технологии. Можно было использовать Pascal или скажем Python, но в первом случае язык является слишком формальным для реализации, а во втором довольно простым.


Для рассмотрения основных операций над данными будут приведены упрощенные блок-схемы, по которым также будет частично написан код на языке C++.

Список таких операций:

  1. Добавление
  2. Удаление
  3. Изменение
  4. Просмотр
  5. Обработка

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

1. СПИСОК ВОЗМОЖНЫХ ОПЕРАЦИЙ НАД ДАННЫМИ

1.1  Получение

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

Блок-схема 1. Получение информации от пользователя

Листинг 1. Ввод данных пользователем

vector<int> mas;

//ввод данных

for (int i = 0,k = 0; i < 10; i++) {

cin >> k;

mas.push_back(k);

}

//вывод массива

for (auto& i : mas) {

cout << i << ' ';

}

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

Так же данные можно брать из файла.

Блок-схема 2. Получение данных из файла

Листинг 2. Ввод данных из файла

vector<int> mas;

//открываем файл для чтения

ifstream ios("file.txt");

//если открыли то

if (ios.is_open()) {

int k = 0;

//считываем все до конца файла

while (ios >> k) {

mas.push_back(k);

}

}

else {

cout << "Ошибка открытия файла" << endl;

}

ios.close();

//вывод массива

for (auto& i : mas) {

cout << i << ' ';

}


Здесь происходит считывание данных из файла пока не будет достигнуть конец (eof).

Ещё есть возможность получения данные по сети как пример взаимодействия клиент-серверного приложения, где клиент получает от сервера запрашиваемою страничку, которая в свою очередь передается ему с откомпилированными скриптами (если имеется компилятор php на сервере) и прочими стилями. Или ajax взаимодействие которое будет рассматриваться в пункте 1.7. данной курсовой работы.

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

​​​​​​​1.2 Формализация

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

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

Листинг 3. Пример задачи формализации

vector<string> dmas;

vector<int> imas;

//открываем файлы для чтения

ifstream ios("file.txt");

ifstream ios_d("dfile.txt");

//получаем информацию из файлов

get_info(dmas, ios_d);

get_info(imas, ios);

ios.close();

ios_d.close();

merge(imas, dmas);

//вывод массива

for (auto& i : imas) {

cout << i << ' ';

}

Метод get_info выполняет считывание информации с файла в массив аналогичный блок-схеме 2.

Процедура merge принимает два разнотипных массива и переводит все двоичные числа из массива dmas в десятичные после чего добавляет каждое в imas.

Более подробно данный процесс представлен на Блок-схеме 3.

Блок-схема 3. Процедура merge (перевод чисел из двоичной систему в десятичную)

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


Довольно часто операция формализации применяется специалистами по большим данным для которых представление данных в одном каком-то виде существенно упрощает решение задачи.

​​​​​​​1.3 Сортировка

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

Рассмотрим, как пример сортировку пузырьком написанную на языке C++.

Блок-схема 4. Алгоритм сортировки пузырьком

Листинг 4. Программная реализация алгоритма сортировки

vector<int> a;

int n = 10;

//ввод

for (int i = 0,k = 0; i < n; i++) {

cin >> k;

a.push_back(k);

}

//вывод

cout << "Исходный массив : ";

for (auto& i : a) {

cout << i << ' ';

}

//сортировка пузырьком

for (int i = 0; i < n; i++) {

for (int j = n-1; j > i; j--) {

if (a[j - 1] > a[j]) {

int t = a[j];

a[j] = a[j-1];

a[j - 1] = t;

}

}

}

//вывод

cout << endl << "Упорядоченный : ";

for (auto& i : a) {

cout << i << ' ';

}

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

Даже если нужно к примеру, отсортировать какую-то довольно сложную структуру содержащую информацию о пользователе и его возраст, то по полю возраст такая сортировка вполне может пригодится.

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


​​​​​​​1.4 Фильтрация

Очищение данных от “шума” есть довольно важная операция способная не только правильно классифицировать данные (если требуется), но и улучшить их общую информативность.

Здесь можно рассмотреть такую задачу:

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

Листинг 5. Выявление чисел из переданной строки

vector<int> a;

string ss;

string num;

cout << "Введите строку : ";

cin >> ss;

//берем только цифры

for (int i = 0; i < ss.size(); i++) {

//если дошли до конца

if (i == (ss.size() - 1) && num.size()) {

if (isdigit(ss[i])) {

num.push_back(ss[i]);

}

a.push_back(atoi(num.c_str()));

num.clear();

break;

}

//если это цифра

if (isdigit(ss[i])) {

num.push_back(ss[i]);

}

else {

if (num.size()) {

a.push_back(atoi(num.c_str()));

num = "";

}

}

}

Таким образом последовательность: dsdu78v^(Db83b0s8xv&D759IN902

после фильтрации будет такой: 78, 83, 0, 8, 759, 902;

​​​​​​​1.5 Защита

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

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