Данные, типы данных, структуры и обработка

Любая актуализация информации опирается на данные.

Данные– это некоторые сообщения, слова в некотором заданном алфавите.

Пример. Число 123 – данное, представляющее собой слово в алфавите из десяти натуральных цифр; число 12,34 – данное, представляющее собой слово в алфавите из десяти натуральных цифр и десятичной запятой; текст "математика и информатика – полезные дисциплины", – данное в алфавите из символов русского языка и знаков препинания, включая пробел.

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

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

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

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

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

Пример. Зададим простые типы данных "специальность", "студент", "вуз" следующим перечислением:

специальность = (филолог, историк, математик, медик);

студент = (Петров, Николаев, Семенов, Иванова, Петрова);

вуз = (МГУ, РГУ, МГПИ).

Значением типа "студент" может быть Петров.

Пример. Опишем структурированный тип данных "специальность_студента":

специальность_студента=(специальность, студент).

Значением типа "специальность_студента" может быть пара (историк, Семенов).

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

Часто в зависимости от задачи рассматривают данные, которые имеют не только "линейную" (как было рассмотрено выше), но и иерархическую структуру.

Пример. Структуру "вуз" можно задать иерархической структурой, состоящей, например, из следующих уровней: "Ректорат", "Деканаты и подразделения", "Кафедры", "Отделы", "Преподаватели и сотрудники".

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

Пример. В языке С++ для описания типа данных используются служебные слова: int, float, char, string, bool и др.

Каждый тип данных допускает использование определенных операций со значениями типа ("с типом").

Пример. Для целого и вещественного типов данных используют операции "=", "+", "–", "*", "/", "<", ">", "<=", ">=". Для символьного типа данных используют операции: "=", "!=", "<", ">", "<=", ">=". Например, сравнение "а"<"b" означает, что символ "а" предшествует символу "b" то есть код буквы "a" меньше кода буквы "b" (коды символов приводятся, например, в таблице ASCII – Аmerican Standard Code for Information Interchange, американский стандарт кодирования для обмена данными).

Для описания переменных, значениями которых могут быть лишь символы, тексты, используются соответствующие ключевые слова: char, string.

Текстовые (символьные) константы обычно заключают в апострофы.

Пример. Составить программу на языке С++ проверки строки символов на симметрию.

#include "stdafx.h"

#include <iostream>

using namespace std;

#include "conio.h"

 

 

int main(){

int n;

bool sim = true; // симметрия есть

string s;

 

cout<<"Enter the char ";

scanf("%s",&s);// ввод строки

 

n = s.length() ; // стандартная функция вычисления длины строки

 

for (int i=0; i < (n / 2); i++)

{

if (s[i] != s[n -1 - i])

{

sim = false;

break;

}

}

if (sim) cout << "Symmetry - YES!";

else cout << "Symmetry - NO!";

 

_getch();

 

return 0;

}