Добавлен: 05.04.2023
Просмотров: 65
Скачиваний: 1
ВВЕДЕНИЕ
В ходе информационного процесса данные преобразуются из одного вида в другой с помощью различных методов. Обработка данных включает в себя множество операций. По мере развития научно-технического прогресса и общего усложнения связей в человеческом обществе возрастают неуклонно трудозатраты на обработку данных. Прежде всего, это связано с постоянным усложнением условий управления производством и обществом. Второй фактор, также вызывающий общее увеличение объемов обрабатываемых данных, связан с научно-техническим прогрессом, а именно с быстрыми темпами появления и внедрения новых носителей данных, средств их хранения и доставки.
Поэтому в данной курсовой работе будут рассмотрены наиболее возможные операции с данными так и основные с которыми приходится сталкиваться практически в любой сфере человеческой деятельности, связанной с информационными технологиями.
Из возможных операций над данными можно выделить следующие:
- Получение - или сбор информации с целью обеспечения достаточной полноты для принятия решений.
- Формализация - приведение данных к одному виду для повешения уровня доступности к ним.
- Сортировка - упорядочение данных по заданному признаку с целью их удобного использования и дальнейшей обработки.
- Фильтрация – отбрасывание лишних данных которые не несут никакой ценной информации.
- Защита - меры, направленные на то чтобы запретить несанкционированное изменение, удаление и добавление данных в системе.
- Архивация - организация хранения данных, служит для снижения экономические затраты и повышает общую надежность информационного процесса в целом.
- Перемещение - прием и передача данных между удаленными участками информационного процесса.
- Преобразование – перевод данных из одной формы в другую что довольно часто связано с изменением типа носителя, например, видеоряд может хранится как в виде кассеты, так и в электронном виде в памяти компьютера.
Список приведенных здесь операций является далеко не полным и вполне, может быть пополнен ещё какой-либо операций, но в данном случае будут рассмотрены именно они.
Так как операций в таком списке достаточно обширное множество, то для того, чтобы в той или иной мере раскрыть каждую будет использоваться язык программирования высокого уровня C++ (также в некоторых случаях будут приведены блок-схемы) и веб технологии. Можно было использовать Pascal или скажем Python, но в первом случае язык является слишком формальным для реализации, а во втором довольно простым.
Для рассмотрения основных операций над данными будут приведены упрощенные блок-схемы, по которым также будет частично написан код на языке C++.
Список таких операций:
- Добавление
- Удаление
- Изменение
- Просмотр
- Обработка
Все эти операции можно считать фундаментальными которые выполнимы как для реляционных баз данных, так и скажем структур данных.
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++ в основном является объектно-ориентированным языком программирования, который включает в себя такие принципы как инкапсуляция, полиморфизм и наследование. Из этого списка к операции защита более относится инкапсуляция, которая накладывает на класс права доступа в следствии чего не каждый пользователь может получить данные которые относятся к закрытой части или к защищенной.