Глава 6 типы данных


Содержание

Шесть типов данных, typeof

Материал на этой странице устарел, поэтому скрыт из оглавления сайта.

Более новая информация по этой теме находится на странице https://learn.javascript.ru/types.

В JavaScript существует несколько основных типов данных.

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

Число «number»

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

Существуют специальные числовые значения Infinity (бесконечность) и NaN (ошибка вычислений).

Например, бесконечность Infinity получается при делении на ноль:

Ошибка вычислений NaN будет результатом некорректной математической операции, например:

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

Особенности работы с числами в JavaScript разобраны в главе Числа.

Строка «string»

В JavaScript одинарные и двойные кавычки равноправны. Можно использовать или те или другие.

В некоторых языках программирования есть специальный тип данных для одного символа. Например, в языке С это char . В JavaScript есть только тип «строка» string . Что, надо сказать, вполне удобно.

Более подробно со строками мы познакомимся в главе Строки.

Булевый (логический) тип «boolean»

У него всего два значения: true (истина) и false (ложь).

Как правило, такой тип используется для хранения значения типа да/нет, например:

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

Специальное значение «null»

Значение null не относится ни к одному из типов выше, а образует свой отдельный тип, состоящий из единственного значения null :

В JavaScript null не является «ссылкой на несуществующий объект» или «нулевым указателем», как в некоторых других языках. Это просто специальное значение, которое имеет смысл «ничего» или «значение неизвестно».

В частности, код выше говорит о том, что возраст age неизвестен.

Специальное значение «undefined»

Значение undefined , как и null , образует свой собственный тип, состоящий из одного этого значения. Оно имеет смысл «значение не присвоено».

Если переменная объявлена, но в неё ничего не записано, то её значение как раз и есть undefined :

Можно присвоить undefined и в явном виде, хотя это делается редко:

В явном виде undefined обычно не присваивают, так как это противоречит его смыслу. Для записи в переменную «пустого» или «неизвестного» значения используется null .

Объекты «object»

Первые 5 типов называют «примитивными».

Особняком стоит шестой тип: «объекты».

Он используется для коллекций данных и для объявления более сложных сущностей.

Объявляются объекты при помощи фигурных скобок <. >, например:

Мы подробно разберём способы объявления объектов и, вообще, работу с объектами, позже, в главе Объекты.

Оператор typeof

Оператор typeof возвращает тип аргумента.

У него есть два синтаксиса: со скобками и без:

  1. Синтаксис оператора: typeof x .
  2. Синтаксис функции: typeof(x) .

Работают они одинаково, но первый синтаксис короче.

Результатом typeof является строка, содержащая тип:


Последние две строки помечены, потому что typeof ведёт себя в них по-особому.

  1. Результат typeof null == «object» – это официально признанная ошибка в языке, которая сохраняется для совместимости. На самом деле null – это не объект, а отдельный тип данных.
  2. Функции мы пройдём чуть позже. Пока лишь заметим, что функции не являются отдельным базовым типом в JavaScript, а подвидом объектов. Но typeof выделяет функции отдельно, возвращая для них «function» . На практике это весьма удобно, так как позволяет легко определить функцию.

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

Итого

Есть 5 «примитивных» типов: number , string , boolean , null , undefined и 6-й тип – объекты object .

Очень скоро мы изучим их во всех деталях.

Оператор typeof x позволяет выяснить, какой тип находится в x , возвращая его в виде строки.

6.2. Типы данных столбцов
6.2.1. Числовые типы данных

MySQL поддерживает все числовые типы данных языка SQL92 по стандартам ANSI/ISO. Они включают в себя типы точных числовых данных ( NUMERIC , DECIMAL , INTEGER и SMALLINT ) и типы приближенных числовых данных ( FLOAT , REAL и DOUBLE PRECISION ). Ключевое слово INT является синонимом для INTEGER , а ключевое слово DEC — синонимом для DECIMAL .

Типы данных NUMERIC и DECIMAL реализованы в MySQL как один и тот же тип — это разрешается стандартом SQL92. Они используются для величин, для которых важно сохранить повышенную точность, например для денежных данных. Требуемая точность данных и масштаб могут задаваться (и обычно задаются) при объявлении столбца данных одного из этих типов, например:

В этом примере — 5 (точность) представляет собой общее количество значащих десятичных знаков, с которыми будет храниться данная величина, а цифра 2 (масштаб) задает количество десятичных знаков после запятой. Следовательно, в этом случае интервал величин, которые могут храниться в столбце salary , составляет от -99,99 до 99,99 (в действительности для данного столбца MySQL обеспечивает возможность хранения чисел вплоть до 999,99 , поскольку можно не хранить знак для положительных чисел).

В SQL92 по стандарту ANSI/ISO выражение DECIMAL(p) эквивалентно DECIMAL(p,0) . Аналогично, выражение DECIMAL также эквивалентно DECIMAL(p,0) , при этом предполагается, что величина p определяется конкретной реализацией. В настоящее время MySQL не поддерживает ни одну из рассматриваемых двух различных форм типов данных DECIMAL/NUMERIC . В общем случае это не является серьезной проблемой, так как основные преимущества данных типов состоят в возможности явно управлять как точностью, так и масштабом представления данных.

Величины типов DECIMAL и NUMERIC хранятся как строки, а не как двоичные числа с плавающей точкой, чтобы сохранить точность представления этих величин в десятичном виде. При этом используется по одному символу строки для каждого разряда хранимой величины, для десятичного знака (если масштаб > 0 ) и для знака » — » (для отрицательных чисел). Если параметр масштаба равен 0 , то величины DECIMAL и NUMERIC не содержат десятичного знака или дробной части.

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

В качестве расширения стандарта ANSI/ISO SQL92 MySQL также поддерживает числовые типы представления данных TINYINT , MEDIUMINT и BIGINT , кратко описанные в таблице выше. Еще одно расширение указанного стандарта, поддерживаемое MySQL, позволяет при необходимости указывать количество показываемых пользователю символов целого числа в круглых скобках, следующих за базовым ключевым словом данного типа (например INT(4) ). Это необязательное указание количества выводимых символов используется для дополнения слева выводимых значений, которые содержат символов меньше, чем заданная ширина столбца, однако не накладывает ограничений ни на диапазон величин, которые могут храниться в столбце, ни на количество разрядов, которые могут выводиться для величин, у которых количество символов превосходит ширину данного столбца. Если дополнительно указан необязательный атрибут ZEROFILL , свободные позиции по умолчанию заполняются нолями. Например, для столбца, объявленного как INT(5) ZEROFILL , величина 4 извлекается как 00004 . Следует учитывать, что если в столбце для целых чисел хранится величина с количеством символов, превышающим заданную ширину столбца, могут возникнуть проблемы, когда MySQL будет генерировать временные таблицы для некоторых сложных связей, так как в подобных случаях MySQL полагает, что данные действительно поместились в столбец имеющейся ширины.

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

В версии MySQL 4.0.2 числовые типы данных с плавающей точкой также могут иметь параметр UNSIGNED . Как и в целочисленных типах, этот атрибут предотвращает хранение в отмеченном столбце отрицательных величин. Но, в отличие от целочисленных типов, максимальный интервал для величин столбца остается прежним.

Тип FLOAT обычно используется для представления приблизительных числовых типов данных. Стандарт ANSI/ISO SQL92 допускает факультативное указание точности (но не интервала порядка числа) в битах в круглых скобках, следующих за ключевым словом FLOAT . Реализация MySQL также поддерживает это факультативное указание точности. При этом если ключевое слово FLOAT в обозначении типа столбца используется без указания точности, MySQL выделяет 4 байта для хранения величин в этом столбце. Возможно также иное обозначение, с двумя числами в круглых скобках за ключевым словом FLOAT . В этом варианте первое число по-прежнему определяет требования к хранению величины в байтах, а второе число указывает количество разрядов после десятичной запятой, которые будут храниться и показываться (как для типов DECIMAL и NUMERIC ). Если в столбец подобного типа попытаться записать число, содержащее больше десятичных знаков после запятой, чем указано для данного столбца, то значение величины при ее хранении в MySQL округляется для устранения излишних разрядов.

Для типов REAL и DOUBLE PRECISION не предусмотрены установки точности. MySQL воспринимает DOUBLE как синоним типа DOUBLE PRECISION — это еще одно расширение стандарта ANSI/ISO SQL92. Но, вопреки требованию стандарта, указывающему, что точность для REAL меньше, чем для DOUBLE PRECISION , в MySQL оба типа реализуются как 8-байтовые числа с плавающей точкой удвоенной точности (если не установлен «ANSI-режим»). Чтобы обеспечить максимальную совместимость, в коде, требующем хранения приблизительных числовых величин, должны использоваться типы FLOAT или DOUBLE PRECISION без указаний точности или количества десятичных знаков.

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

Например, интервал столбца INT составляет от -2147483648 до 2147483647 . Если попытаться записать в столбец INT число -9999999999 , то оно будет усечено до нижней конечной точки интервала и вместо записываемого значения в столбце будет храниться величина -2147483648 . Аналогично, если попытаться записать число 9999999999 , то взамен запишется число 2147483647 .

Если для столбца INT указан параметр UNSIGNED , то величина допустимого интервала для столбца останется той же, но его граничные точки сдвинутся к 0 и 4294967295 . Если попытаться записать числа -9999999999 и 9999999999 , то в столбце окажутся величины 0 и 4294967296 .

Для команд ALTER TABLE , LOAD DATA INFILE , UPDATE и многострочной INSERT выводится предупреждение, если могут возникнуть преобразования данных вследствие вышеописанных усечений.

Тип Байт От До
TINYINT 1 -128 127
SMALLINT 2 -32768 32767
MEDIUMINT 3 -8388608 8388607
INT 4 -2147483648 2147483647
BIGINT 8 -9223372036854775808 9223372036854775807
Назад Начало Главы Начало Раздела Вперед
Пред. Глава След. Глава
Глава 5. Оптимизация в MySQL Начало Книги Глава 7. Типы таблиц MySQL

Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:

Типы данных (Transact-SQL) Data types (Transact-SQL)

ОБЛАСТЬ ПРИМЕНЕНИЯ: SQL Server База данных SQL Azure Azure Synapse Analytics (хранилище данных SQL) Parallel Data Warehouse APPLIES TO: SQL Server Azure SQL Database Azure Synapse Analytics (SQL DW) Parallel Data Warehouse

В SQL Server SQL Server у каждого столбца, локальной переменной, выражения и параметра есть определенный тип данных. In SQL Server SQL Server , each column, local variable, expression, and parameter has a related data type. Тип данных — атрибут, определяющий, какого рода данные могут храниться в объекте: целые числа, символы, данные денежного типа, метки времени и даты, двоичные строки и так далее. A data type is an attribute that specifies the type of data that the object can hold: integer data, character data, monetary data, date and time data, binary strings, and so on.

SQL Server SQL Server предоставляет набор системных типов данных, определяющих все типы данных, которые могут использоваться в SQL Server SQL Server . supplies a set of system data types that define all the types of data that can be used with SQL Server SQL Server . В Transact-SQL Transact-SQL или Microsoft Microsoft .NET Framework .NET Framework можно также определять собственные типы данных. You can also define your own data types in Transact-SQL Transact-SQL or the Microsoft Microsoft .NET Framework .NET Framework . Псевдонимы типов данных основываются на системных типах. Alias data types are based on the system-supplied data types. Дополнительные сведения о псевдонимах типов данных см. в статье CREATE TYPE (Transact-SQL). For more information about alias data types, see CREATE TYPE (Transact-SQL). Определяемые пользователем типы данных обладают свойствами, зависящими от методов и операторов класса, который создается для них на одном из языков программирования, которые поддерживаются .NET Framework .NET Framework . User-defined types obtain their characteristics from the methods and operators of a >.NET Framework .NET Framework .

При объединении одним оператором двух выражений с разными типами данных, параметрами сортировки, точностями, масштабами или длинами, результат определяется следующим образом. When two expressions that have different data types, collations, precision, scale, or length are combined by an operator, the characteristics of result are determined by the following:

  • Тип данных результата определяется применением правил очередности типов данных к входным выражениям. The data type of the result is determined by applying the rules of data type precedence to the data types of the input expressions. Дополнительные сведения см. в разделе Приоритет типов данных (Transact-SQL). For more information, see Data Type Precedence (Transact-SQL).
  • Параметры сортировки результата определяются правилами очередности параметров сортировки, если тип данных результата — char, varchar, text, nchar, nvarchar или ntext. The collation of the result is determined by the rules of collation precedence when the result data type is char, varchar, text, nchar, nvarchar, or ntext. Дополнительные сведения см. в статье Очередность параметров сортировки (Transact-SQL). For more information, see Collation Precedence (Transact-SQL).
  • Точность, масштаб и длина результата зависят от точности, масштаба и длины входных выражений. The precision, scale, and length of the result depend on the precision, scale, and length of the input expressions. Дополнительные сведения см. в разделе Точность, масштаб и длина (Transact-SQL). For more information, see Precision, Scale, and Length (Transact-SQL).

SQL Server SQL Server предоставляет синонимы типов данных для совместимости со стандартом ISO. provides data type synonyms for ISO compatibility. Дополнительные сведения см. в статье Синонимы типов данных (Transact-SQL). For more information, see Data Type Synonyms (Transact-SQL).

Категории типов данных Data type categories

Типы данных в SQL Server SQL Server объединены в следующие категории: Data types in SQL Server SQL Server are organized into the following categories:

Точные числа Exact numerics Символьные строки в Юникоде Unicode character strings
Приблизительные числа Approximate numerics Двоичные данные Binary strings
Дата и время Date and time Прочие типы данных Other data types
Символьные строки Character strings

В зависимости от параметров хранения, некоторые типы данных в SQL Server SQL Server относятся к следующим группам: In SQL Server SQL Server , based on their storage characteristics, some data types are designated as belonging to the following groups:

Типы данных больших значений: varchar(max) и nvarchar(max) Large value data types: varchar(max), and nvarchar(max)

Типы данных больших объектов: text, ntext, image, varbinary(max) и xml Large object data types: text, ntext, image, varbinary(max), and xml

Хранимая процедура sp_help возвращает -1 в качестве значения длины для типов данных большого объема и xml. sp_help returns -1 as the length for the large-value and xml data types.


Система управления базами данных SQLite. Изучаем язык запросов SQL и реляционные базы данных на примере библиотекой SQLite3. Курс для начинающих.

Часть 6: Типы данных в SQL

Здравствуйте, уважаемые посетители сайта ZametkiNaPolyah.ru. Продолжаем изучать базы данных и наше знакомство с библиотекой SQLite3. В данной публикации мы рассмотрим типы данных в SQL. Хочу обратить ваше внимание на то, что различные СУБД поддерживает различный набор типов данных, поэтому это публикация включает в себя самые часто встречающиеся типы данных в SQL реализации различных СУБД.

Типы данных в SQL

Типы данных в SQL важно знать, чтобы правильно и грамотно проектировать базы данных, правильно выбранный типа данных в SQL может очень сильно облегчить работу другим разработчикам. Поэтому не советую вам пропускать раздел о типах данных и всегда, когда вы знакомитесь с новой СУБД, обращать внимание на типы данных, которые поддерживает программа и на то, как она эти типы данных обрабатывает.

Типы данных в SQL

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

Язык SQL делит данные на пять типов:

  1. Целочисленный тип данных SQL.
  2. Вещественный тип данных SQL.
  3. Типы данных даты и времени SQL.
  4. Строковый тип данных SQL.
  5. Строковый тип данных SQL в кодировки Юникод.

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

Целочисленный тип данных SQL

Целочисленный тип данных в SQL довольно таки широкий и зависит от реализации СУБД, снизу в таблицы лишь некоторые типичные примеры целочисленного типа данных SQL.

Тип данных SQL от до
bigint -9,223,372,036,854,775,808 9,223,372,036,854,775,807
int -2,147,483,648 2,147,483,647
smallint -32,768 32,767
tinyint 255
bit 1
decimal -10^38 +1 10^38 -1
numeric -10^38 +1 10^38 -1
money -922,337,203,685,477.5808 +922,337,203,685,477.5807
smallmoney -214,748.3648 +214,748.3647

Еще раз повторюсь, что набор целочисленных типов данных в SQL зависит целиком и полностью от СУБД.

Вещественный тип данных SQL

Вещественный тип данных SQL, как и целочисленный тип данных, целиком и полностью зависит от реализации СУБД.

Илон Маск рекомендует:  Заголовок в колонках
Тип от до
float -1.79E + 308 1.79E + 308
real -3.40E + 38 3.40E + 38

Тип данных даты и времени

Обычно в различных СУБД дата и время — это отдельно выделенный тип данных

Тип данных SQL от до
datetime Jan 1, 1753 Dec 31, 9999
smalldatetime Jan 1, 1900 Jun 6, 2079
date Сохраняет дату как June 30, 1991
time Сохраняет время как 12:30 P.M.

Строковый тип данных SQL

Строковых типов данных в SQL может быть гораздо больше, смотрите спецификацию своей СУБД, чтобы узнать какой тип данных может быть использован для строковых значений.

Тип данных SQL Описание
char Максимальная длина 8000 символов (все значения в столбце имеют фиксированный размер, указанный при объявлении столбца). Обратите внимание: единица измерения SQL типа данных char — символ.
varchar Максимальная длина 8000 символов (все значения в столбце имеют различный размер в зависимости от количества символов, но не более того размера, что был указан при объявлении столбца). Обратите внимание: единица измерения SQL типа данных varchar — символ.
varchar (max) Максимальная длина 231 символ. Обратите внимание: единица измерения SQL типа данных varchar (max) — символ.
text Максимальная длина 2,147,483,647 символов. Обратите внимание: единица измерения SQL типа данных text — символ.

Строковый тип данных SQL в кодировке юникод

Да, некоторые СУБД выделяют строковый тип данных в кодировке юникод, поскольку в строках с кодировкой юникод на запись одного символа тратится, как минимум, 8 байт, поэтому мы и выделяем строковый тип данных в SQL с кодировкой юникод.

Тип данных SQL Описание
nchar Максимальная длина 4000 символов (все значения в столбце имеют фиксированный размер, указанный при объявлении столбца). Обратите внимание: единица измерения SQL типа данных nchar — символ.
nvarchar Максимальная длина 4000 символов (все значения в столбце имеют различный размер в зависимости от количества символов, но не более того размера, что был указан при объявлении столбца). Обратите внимание: единица измерения SQL типа данных nvarchar — символ.
nvarchar (max) Максимальная длина 231 символ. Обратите внимание: единица измерения SQL типа данных nvarchar (max) — символ.
ntext Максимальная длина 1,073,741,823 символов. Переменная длина. Обратите внимание: единица измерения SQL типа данных ntext — символ.

Бинарный тип данных в SQL

Бинарный тип данных в SQL используется для хранения информации в бинарном виде (в виде последовательности байт).

Тип данных SQL Описание
binary Максимальная длина 8,000 байт (все значения в столбце имеют фиксированный размер, указанный при объявлении столбца). Обратите внимание: единицы измерения типа данных binary — байты.
varbinary Максимальная длина 8,000 байт (все значения в столбце имеют различный размер в зависимости от количества символов, но не более того размера, что был указан при объявлении столбца). Обратите внимание: единицы измерения типа данных varbinary — байты.
varbinary (max) Максимальная длина 231 байт. Обратите внимание: единицы измерения типа данных varbinary (max) — байты.
image Максимальная длина 2,147,483,647 байт (все значения в столбце имеют различный размер в зависимости от количества символов, но не более того размера, что был указан при объявлении столбца). Обратите внимание: единицы измерения типа данных image — байты.

Хочу обратить ваше внимание на то, что каждая СУБД поддерживает свой набор типов данных и размерностей, мы рассмотрели базовые типы данных языка SQL, в следующей теме мы рассмотрим типы данных, которые поддерживает SQLite3.

Знаковые и без знаковые типы данных в SQL

Хочу обратить ваше внимание на то, что в некоторых СУБД числовые типы данных могут делиться на знаковые и без знаковые типы данных. И это совершенно разные типы данных.

Например, если у вас в одной таблице хранится id INTEGER UNSIGNED, а в другой id_table1 INTEGER SIGNED, то связь между таблицами по этим двум столбцам вы реализовать не сможете, так как у них разные типы данных. Будьте внимательны и всегда читайте описания типов данных, когда начинаете использовать новую СУБД.

Приведем пример практического применения типов данных SIGNED и UNSIGNED. Например, у MySQL есть тип данных TINYINT, который занимает один байт и прекрасно подходит для хранения возраста, следовательно, в столбец с типом TINYINT можно записывать целые числа от 0 до 256 (два в восьмой степени, в одном байте 8 бит, а один бит может принимать два значения: ноль или единицу), если столбец без знаковый, если столбец знаковый, то в него можно записать числа от -128 до 127 (один бит уйдет на знак).

Структура языка программирования

Содержание

Дополнительно

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

Классификация типов данных

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


Числовой тип данных разработан для хранения естественно чисел. Символьный — для хранения одного символа. Логический тип имеет два значения: истина и ложь. Перечислимый тип может хранить только те значения, которые прямо указаны в его описании.

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

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

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

Числовые типы данных

Целочисленные типы данных

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

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

Исходя из машинного представления целого числа, в ячейке памяти из n бит может хранится 2 n для беззнаковых, и 2 n-1 для знаковых типов.

Рассмотрим теперь конкретные целочисленные типы в трёх языках.

Тип Разрядность в битах Диапазон чисел
byte 8 0 — 255
sbyte 8 -128 — 127
short 16 -32 768 — 32 767
ushort 16 0 — 65 535
int 32 -2 147 483 648 — 2 147 483 647
uint 32 0 — 4 294 967 295
long 64 -9 223 372 036 854 775 808 — 9 223 372 036 854 775 807
ulong 64 0 — 18 446 744 073 709 551 615
Тип Разрядность в битах Диапазон чисел
unsigned short int / unsigned short 16 0 — 65 535
short int 16 -32 768 — 32 767
unsigned long int / unsigned long 32 0 — 4 294 967 295
long int / long 32 -2 147 483 648 — 2 147 483 647
int (16 разрядов) 16 -32 768 — 32 767
int (32 разряда) 32 -2 147 483 648 — 2 147 483 647
unsigned int (16 разрядов) 16 0 — 65 535
unsigned int (32 разряда) 32 0 — 4 294 967 295

У некоторых типов есть приписка «16 разрядов» или «32 разряда». Это означает, что в зависимости от разрядности операционной системы и компилятора данный тип будет находится в соответствующем диапазоне. По-этому, рекомендуется не использовать int, unsigned int, а использовать их аналоги, но уже жестко определенные, short, long, unsigned short, unsigned long.

Тип Разрядность в битах Диапазон чисел
byte 8 -128 — 127
short 16 -32 768 — 32 767
int 32 -2 147 483 648 — 2 147 483 647
long 64 -9 223 372 036 854 775 808 — 9 223 372 036 854 775 807

В Java нет беззнаковых целочисленных типов данных.

Вещественные типы данных

Числа вещественного типа данных задаются в форме чисел с плавающей запятой.

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

где N — записываемое число;
M — мантисса;
p (целое) — порядок.
Например: 14441544=1,4441544*10 7 ; 0,0004785=4,785*10 -4 . Компьютер же на экран выведет следующие числа:

Следовательно, в отведенной памяти хранится мантисса и порядок записываемого числа. Рассмотрим на примера типа данных, который хранится в 8 байтах или 64 битах. В данном случае, мантисса составляет 53 бита: 1 для знака числа и 52 для её значения; порядок 10 битов: 1 бит для знака и 10 для значения. Мы можем в данном случае говорить о диапазоне точности, то есть насколько малое и насколько большое число может хранить данный тип данных: 4,94×10 −324 до 1.79×10 308 . Но, поскольку, память компьютера не безразмерна, да и далеко не всегда нужно, храниться несколько первых разрядов мантиссы, которые называются значащими.

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

Рассмотрим конкретные типы данных в наших трёх языках.

Тип Разрядность в битах Количество значащих цифр Диапазон точности
float 32 7 от 1,5*10 -45 до 3,4*10 38
double 64 15 от 4,9*10 -324 до 1,7*10 308
decimal 128 28 от 1,0*10 -28 до 7,9*10 28

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

Тип Разрядность в битах Количество значащих цифр Диапазон точности
float 32 7 от 1,5*10 -45 до 3,4*10 38
double 64 15 от 4,9*10 -324 до 1,7*10 308
Тип Разрядность в битах Количество значащих цифр Диапазон точности
float 32 7 от 1,5*10 -45 до 3,4*10 38
double 64 15 от 4,9*10 -324 до 1,7*10 308

Символьный тип данных

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

Тип Разрядность в битах
char 16
Тип Разрядность в битах
char 8
wchar_t 16
Тип Разрядность в битах
char 16

Логический тип данных

Это тип данных, значения которых могут быть: true (правда) или false (ложь). Логическому типу данных соответствуют в С# и C++ тип bool, в Java — boolean.

Перечислимый тип данных

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

Чтобы прочувствовать эту концепцию, приведем пример на языке С++ (в С# и Java аналогично)

Теперь переменные перечислимого типа Forms могут принимать лишь значения, определенные в примере кода. Это очень удобно, ведь мы уже оперируем не с числами, а с некими смысловыми значениями, замечу лишь, что для компьютера эти значения всё-равно являются целыми числами.

Массив

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

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

В языках программирования нельзя оперировать всем массивом, работают с конкретным элементом. Чтобы доступиться до него в трёх рассматриваемых нами языках используют оператор «[]».

Структура


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

Структуры реализованы в языке программирования, чтобы собрать некие близки по смыслу вещи воедино.

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

Класс

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

Типы данных SQL

Типы данных SQL

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

  1. Типы данных SQL строковые
    Типы данных SQL Описание
    CHAR(size) Строки фиксированной длиной (могут содержать буквы, цифры и специальные символы). Фиксированный размер указан в скобках. Можно записать до 255 символов
    VARCHAR(size) Может хранить не более 255 символов.
    TINYTEXT Может хранить не более 255 символов.
    TEXT Может хранить не более 65 535 символов.
    BLOB Может хранить не более 65 535 символов.
    MEDIUMTEXT Может хранить не более 16 777 215 символов.
    MEDIUMBLOB Может хранить не более 16 777 215 символов.
    LONGTEXT Может хранить не более 4 294 967 295 символов.
    LONGBLOB Может хранить не более 4 294 967 295 символов.
    ENUM(x,y,z,etc.) Позволяет вводить список допустимых значений. Можно ввести до 65535 значений в SQL Тип данных ENUM список. Если при вставке значения не будет присутствовать в списке ENUM, то мы получим пустое значение.
    Ввести возможные значения можно в таком формате: ENUM ( ‘X’, ‘Y’, ‘Z’)
    SET SQL Тип данных SET напоминает ENUM за исключением того, что SET может содержать до 64 значений.
  2. Типы данных SQL с плавающей точкой (дробные числа) и целые числа
    Типы данных SQL Описание
    TINYINT(size) Может хранить числа от -128 до 127
    SMALLINT(size) Диапазон от -32 768 до 32 767
    MEDIUMINT(size) Диапазон от -8 388 608 до 8 388 607
    INT(size) Диапазон от -2 147 483 648 до 2 147 483 647
    BIGINT(size) Диапазон от -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807
    FLOAT(size,d) Число с плавающей точкой небольшой точности.
    DOUBLE(size,d) Число с плавающей точкой двойной точности.
    DECIMAL(size,d) Дробное число, хранящееся в виде строки.
  3. Типы данных SQL — Дата и время
    Типы данных SQL Описание
    DATE() Дата в формате ГГГГ-ММ-ДД
    DATETIME() Дата и время в формате ГГГГ-ММ-ДД ЧЧ:ММ:СС
    TIMESTAMP() Дата и время в формате timestamp. Однако при получении значения поля оно отображается не в формате timestamp, а в виде ГГГГ-ММ-ДД ЧЧ:ММ:СС
    TIME() Время в формате ЧЧ:ММ:СС
    YEAR() Год в двух значной или в четырехзначном формате.

Типы данных MySQL

Типы данных MySQL разделяются на следующие типы:

  • Числовыетипы данных
    Типы данных Байт От До
    TINYINT 1 -128 127
    SMALLINT 2 -32768 32767
    MEDIUMINT 3 -8388608 8388607
    INT 4 -2147483648 2147483647
    BIGINT 8 -9223372036854775808 9223372036854775807
  • Типы данныхдаты и времени
    Типы данных Значение «Ноль»
    DATETIME ‘0000-00-00 00:00:00’
    DATE ‘0000-00-00’
    TIMESTAMP 00000000000000 (длина зависит от количества выводимых символов)
    TIME ’00:00:00′
    YEAR 0000
  • СимвольныеТипы данных
    Типы данных Макс. размер Байт
    TINYTEXT или TINYBLOB 2^8-1 255
    TEXT или BLOB 2^16-1 (64K-1) 65535
    MEDIUMTEXT или MEDIUMBLOB 2^24-1 (16M-1) 16777215
    LONGBLOB 2^32-1 (4G-1) 4294967295

Типы данных Oracle

Типы данных Oracle разделяются на следующие группы:

  • СНAR – фиксированные текстовые строки до 2000 байт. Значение типа CHAR дополняется до указанной длины пробелами.
  • VARCHAR 2 — текстовые строки переменной длины до 4000 байт.
  • NUMBER — числовые данные.
  • DECIMAL — числовые данные
  • DATE — используется для хранения дат.
  • RAW — используется для хранения двоичных данных до 2000 байт.
  • LONG — используется для хранения текстовых данных длиной до 2 ГБ
  • LONG RAW — используется для хранения двоичных данных до 2 ГБ
  • ROWID — используется для хранения идентификаторов ROWID базы данных Oracle в специальном формате (адреса строк таблицы).
  • BLOB — сохраняется до 4 ГБ двоичных данных. Данные этого типа хранятся вне таблицы, а в таблице Oracle находятся лишь указатели на объекты
  • CLOB, NCLOB — сохраняется до 4 ГБ текстовых данных. NCLOB – это тип данных NLS большой фиксированной длины (NLS означает National Language Set – набор для национальных языков – и используется для работы в Oracle на языках, отличных от английского. В английском для хранения одного символа нужен 1 байт, а в некоторых языках мира с наборами больших символов (японском, китайском, корейском), языках, где текст читается справа налево (арабский, иврит) для хранения одного символа требуется несколько байт). Данные этого типа хранятся вне таблицы, а в таблице находятся лишь указатели на объекты.
  • BFILE — сохраняется до 4 ГБ неструктурированных данных, причем в файлах операционной системы (внешние файлы).

ANSI SQL стандарт распознает только текст и число, в то время как большинство коммерческих программ используют другие специальные типы, такие как DATЕ и TIME — фактически почти стандартные типы. Некоторые пакеты также поддерживают такие типы, как, например, MONEY и BINARY. Типы данных, распознаваемые с помощью ANSI, состоят из строк символов и различных типов чисел, которые могут классифицироваться как точные числа и приблизительные числа.

CHARACTER(length) определяет спецификацию строк символов, где length задает длину строк заданного типа. Значения этого типа должны быть заключены в одиночные кавычки. Большинство реализаций поддерживают строки переменной длины для типов данных VARCHAR и LONG VARCHAR (или просто LONG).

В то время, как поле типа CHAR всегда может распределить память для максимального числа символов, которое может сохраняться в поле, поле VARCHAR при любом количестве символов может распределить только определенное количество памяти, чтобы сохранить фактическое содержание поля, хотя SQL может установить некоторое дополнительное пространство памяти, чтобы следить за текущей длиной поля. Поле VARCHAR может быть любой длины, включая реализационно-определяемый максимум. Этот максимум может меняться от 254 до 2048 символов для VARCHAR и до 16000 символов для LONG. LONG обычно используется для текста пояснительного характера или для данных, которые не могут легко сжиматься в простые значения полей; VARCHAR может использоваться для любой текстовой строки, чья длина может меняться.

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

Точные числовые типы — это числа, с десятичной точкой или без десятичной точки, которые могут представляться в виде [+|-] [. ] и специфицироваться как:

DECIMAL(precision [, scale]) — аргумент размера имеет две части: точность и масштаб. Масштаб не может превышать точность. Точность указывает сколько значащих цифр имеет число. Масштаб указывает максимальное число цифр справа от десятичной точки. Масштаб = нулю делает поле эквивалентом целого числа.

Илон Маск рекомендует:  Всплывающая подсказка

NUMERIC(precision [, scale]) — такое же как DECIMAL за исключением того, что максимальное десятичное не может превышать аргумента точности

INTEGER — число без десятичной точки. Эквивалентно DECIMAL, но без цифр справа от десятичной точки, т.е. с масштабом равным 0. Аргумент размера не используется (он автоматически устанавливается в реализационно-зависимое значение).

SMALLINT — такое же как INTEGER, за исключением того, что, в зависимости от реализации, размер по умолчанию может ( или не может ) быть меньше чем INTEGER.

Приблизительные числовые типы — это числа в показательной (экспоненциальной по основанию 10) записи, представляемые как Е и специфицирущиеся следующим образом:

FLOAT[(precision)] — число с плавающей запятой. Аргумент размера состоит из одного числа, определяющего минимальную точность.

REAL — такое же как FLOAT, за исключением того, что никакого аргумента размера не используется. Точность устанавливается реализационно-зависимой по умолчанию.

DOUBLE PRECISION — такое же как REAL, за исключением того, что реализационно-определяемая точность для DOUBLE PRECISION должна превышать реализационно-определяемую точность REAL.

Типы данных Access

Типы данных Access разделяются на следующие группы:

  • Текстовый – максимально 255 байтов.
  • Мемо — до 64000 байтов.
  • Числовой — 1,2,4 или 8 байтов.Для числового типа размер поля м.б. следующим:
    • байт — целые числа от -0 до 255, занимает при хранении 1 байт
    • целое — целые числа от -32768 до 32767, занимает 2 байта
    • длинное целое — целые числа от -2147483648 до 2147483647, занимает 4 байта
    • с плавающей точкой — числа с точностью до 6 знаков от –3,4*1038 до 3,4*1038, занимает 4 байта
    • с плавающей точкой — числа с точностью от –1,797*10308 до 1,797*10308, занимает 8 байт
  • Дата-время — 8 байтов
  • Денежный — 8 байтов, данные о денежных суммах, хранящиеся с 4 знаками после запятой.
  • Счетчик — уникальное длинное целое, генерируемое Access при создании каждой новой записи — 4 байта.
  • Логический — логические данные 1бит.
  • Поле объекта OLE — до 1 гигабайта, картинки, диаграммы и другие объекты OLE из приложений Windows. Объекты OLE могут быть связанными или внедренными.
  • Гиперссылки — поле, в котором хранятся гиперссылки. Гиперссылка может быть либо типа UNC (стандартный формат для указания пути с включением сетевого сервера файлов), либо URL(адрес объекта, документа, страницы или объекта другого типа в Интернете или Интранете. Адрес URL определяет протокол для доступа и конечный адрес).

  • Мастер подстановок — поле, позволяющее выбрать значение из другой таблицы Accesss или из списка значений, используя поле со списком. Чаще всего используется для ключевых полей. Имеет тот же размер, что и первичный ключ, являющийся также и полем подстановок, обычно 4 байта. (Первичный ключ – одно или несколько полей, комбинация значений которых однозначно определяет каждую запись в таблице Accesss. Не допускает неопределенных .Null. значений, всегда должен иметь уникальный индекс. Служит для связывания таблицы с вторичными ключами других таблиц).

Типы данных SQL Server

Microsoft SQL Server поддерживает большинство типов данных SQL 2003. Также SQL Server поддерживает дополнительные типы данных, используемые для однозначной идентификации строк данных в таблице и на многих серверах, например UNIQUEIDENTIFIER , что соответствует аппаратной философии «роста в ширину», исповедуемой Microsoft (т. е. внедрение базы на множестве серверов на платформах Intel), вместо «роста в высоту» (т. е. внедрение на одном огромном мощном UNIX-сервере или Windows Data Center Server).

Типы данных, используемые в SQL Server:

  • BIGINT (тип данных SQL2003: B1GINT )
    Хранит целые числа со знаком и без знака в диапазоне от -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807. Занимает 8 байт. См. тип INT , где указаны правила свойства IDENTITY , также применимые к типу BIGINT .
  • BINARY[(n)] (тип данных SQL2003: BLOB )
    Хранит двоичное значение фиксированной длины от 1 до 8000 байт. Значение типа BINARY занимает п + 4 байта.
  • BIT (тип данных SQL2003: BOOLEAN )
    Хранит значения 1, 0 или NULL, которое обозначает «unknown». В одном байте может храниться до 8 значений из столбцов типа BIT таблицы. В еще одном байте можно разместить дополнительные 8 значений типа BIT Столбцы типа BIT нельзя индексировать.
  • CHAR[(n)] , CHARACTER[(n)] (тип данных SQL2003: CHARACTER[(n)] )
    Хранит символьные данные фиксированной длины от 1 до 8000 символов. Все неиспользованное место по умолчанию заполняется пробелами. (Автоматическое заполнение пробелами можно отключить.) Тип занимает n байт.
  • CURSOR (тип данных SQL2003: отсутствует )
    Специальный тип данных, используемый для описания курсора в форме переменной или параметра хранимой процедуры OUTPUT. Тип нельзя использовать в инструкции CREATE TABLE. Тип CURSOR может принимать значение NULL.
  • DATETIME (тип данных SQL2003: TIMESTAMP)
    Хранит значение даты и времени в диапазоне с 01-01-1753 00:00:00 до 31-12-9999 23:59:59. Для хранения требуется 8 байт.
  • DECIMAL (p. s) , DEC (p. s) , NUMERIC (p, s) (тип данных SQL2003 : DECIMAL (p, s) , NUMERIC (p. s) )
    Хранит десятичные дроби длиной до 38 цифр. Значения р и s определяют, соответственно, точность и масштаб. Масштаб по умолчанию равен 0. Занимаемое значением место определяется используемой точностью.
    При точности 1-9 используется 5 байт.
    При точности 10-19 используется 9 байт.
    При точности 20-28 используется 13 байт.
    При точности 29-39 используется 17 байт.
    См. тип INT, где указаны правила свойства IDENTITY, также применимые к типу DECIMAL .
  • DOUBLE PRECISION (тип данных SQL2003: отсутствует )
    Синоним FLOAT(53) .
  • FLOAT[(n)] (тип данных SQL2003 : FLOAT , FLOAT (n) )
    Хранит значения с плавающей точкой в диапазоне от-1.79Е + 308 до 1.79Е + 308. Точность, определяемая параметром и, может изменяться в пределах от 1 до 53. Для хранения 7 цифр (n — от 1 до 24) требуется 4 байта. Значения, превышающие 7 цифр, занимают 8 байт.
  • IMAGE (тип данных SQL2003 : BLOB )
    Хранит двоичное значение переменной длины до 2 147 483 647 байт. Этот тип данных часто используется для хранения графики, звука и файлов, таких, как документы MS Word и электронные таблицы MS Excel. Значениями типа IMAGE нельзя свободно манипулировать. Столбцы типа IMAGE и TEXT имеют множество ограничений на способы использования. См. описание типа TEXT, где приведен список команд и функций, которые применимы и к типу IMAGE.
  • INT [IDENTITY [(seed, increment)] (тип данных SQL2003 : INTEGER )
    Хранит целые числа со знаком или без знака в диапазоне от -2 147 483 648 до 2 147 483 647. Занимает 4 байта. Все целочисленные типы данных, а также типы, хранящие десятичные дроби, поддерживают свойство IDENTITY, identity — это автоматически инкрементируемый идентификатор строки. Обращайтесь к разделу «Инструкция CREATE/ALTER TABLE » главы 3.
  • MONEY (тип данных SQL2003: отсутствует )
    Хранит денежные значения в диапазоне от -922337203685477.5808 до 922337203685477.5807. Значение занимает 8 байт.
  • NCHAR(n) , NATIONAL CHAR(n) , NATIONAL CHARACTER(n) (тип данных SQL2003 : NATIONAL СНАRACTER(n) )
    Хранит данные формата UNICODE фиксированной длины до 4000 символов. Для хранения требуется n*2 байт.
  • NTEXT , NATIONAL TEXT (тип данных SQL2003: NCLOB )
    Хранит фрагменты текста в формате UNICODE длиной до 1 073 741 823 символа. См. описание типа TEXT, где приведен список команд и функций, которые применимы и к типу NTEXT
  • NUMERIC(p, s) (тип данных SQL2003: DECIMAL (p, s))
    Синоним типа DECIMAL. См. описание типа INT, где приведены правила, относящиеся к свойству IDENTITY.
  • NVARCHAR(n) , NATIONAL CHAR VARYING(n) , NATIONAL CHARACTER VARYING(n) (тип данных SQL2003: NATIONAL CHARACTER VARYING(n))
    Хранит UNICODE-данные переменной длины до 4000 символов.
    Занимаемое место вычисляется как удвоенное значение длины всех символов, вставленных в поле (число символов * 2).
    В SQL Server системный параметр SET ANSI_PADDINGX для полей NCHAR и NVARCHAR всегда установлен (ON).
  • REAL , FLOAT(24) (тип данных SQL2003: REAL )
    Хранит значения с плавающей точкой в диапазоне -3.40Е+38 до 3.40Е+38. Зани¬мает 4 байта. Тип REAL функционально эквивалентен типу FLOAT(24).
  • ROWVERSION (тип данных SQL2003: отсутствует )
    Уникальное число, хранимое в базе данных, которое обновляется всякий раз, когда обновляется строка, В более ранних версиях называется TIMESTAMP.
  • SMALLDATETIME (тип данных SQL2003: отсутствует )
    Хранит дату и время в диапазоне от ’01-01-1900 00:00′ до ’06-06-2079 23:59′ с точностью до минуты. (Минуты округляются до меньшего значения, если значе-ние секунд 29.998 и менее, в противном случае они округляются до большего значения.) Значение занимает 4 байта.
  • SMALLINT (тип данных SQL2003: SMALLINT )
    Хранит целые числа со знаком или без знака в диапазоне от -32 768 до 32 767. Занимает 2 байта. См. описание типа INT, где приведены правила, относящиеся к свойству IDENTITY, которые также применимы и к этому типу.
  • SMALLMONEY (тип данных SQL2003: отсутствует)
    Хранит денежные значения в диапазоне от 214748.3648 до -214748.3647. Значе-ния занимают 4 байта.
  • SQLVARIANT (тип данных SQL2003: отсутствует )
    Хранит значения, относящиеся к другим поддерживаемым SQL Server типам данных, за исключением типов TEXT, NTEXT, ROWVERSION и других значений типа SQL VARIANT. Может хранить до 8016 байт данных, поддерживаются значения NULL и DEFAULT. Тип SQL VARIANT используется в столбцах, параметрах, переменных и возвращаемых функциями и хранимыми процедур, ми значениях.
  • TABLE (тип данных SQL2003: отсутствует )
    Специальный тип, хранящий получившийся в результате работы последнего про¬цесса набор данных. Используется исключительно для процедурной обработки и не может применяться в инструкциях CREATE TABLE. Этот тип данных умень¬шает необходимость создания временных таблиц во многих приложениях. Может уменьшить необходимость перекомпиляций процедур, ускоряя, таким образом, выполнение хранимых процедур и пользовательских функций.
  • TEXT (тип данных SQL2003: CLOB )
    Хранит очень большие фрагменты текста длиной до 2 147 483 647 символов. Значениями типа ТЕХТн IMAGE часто гораздо труднее манипулировать, чем, скажем, значениями типа VARCHAR. Например, нельзя создавать индекс по столбцу типа TEXT или IMAGE. Значениями типа TEXT можно манипулировать при помощи функций DATALENGTH, PATINDEX, SUBSTRING, TEXTPTR и ТЕХTVALID, а также команд READTEXT,SET TEXTSIZE, UPDATETEXT и WRITETEXT.
  • TIMESTAMP (тип данных SQL2003: TIMESTAMP )
    Хранит автоматически генерируемое двоичное число, обеспечивающее уникальность в текущей базе данных и, следовательно, отличающееся от типа данных TIMESTAMP стандарта ANSI. Тип TIMESTAMP занимает 8 байт. В настоящее время вместо TIMESTAMP для однозначной идентификации строк лучше применять значения типа ROWVERSION.
  • TINYINT
    Хранит целые числа без знака в диапазоне от 0 до 255 и занимает 1 байт. См. описание типа INT , где приведены правила, относящиеся к свойству IDENTITY , которые также применимы и к этому типу.
  • UNIQUEIDENTIFIER (тип данных SQL2003: отсутствует )
    Представляет собой значение, уникальное для всех баз данных и всех серверов. Представлено в виде хххххххх-хххх-хххх-хххх-хххххххххххх, в котором каждый «х» представляет собой шестнадцатеричное число в диапазоне 0-9 или а — f. Единственными операциями, которые можно производить над значениями этого типа, являются сравнение и проверка на NULL. В столбцах этого типа можно использо¬вать ограничения и свойства, за исключением свойства IDENTITY.
  • VARBINARY[(n)] (тип данных SQL2003: BLOB )
    Представляет собой двоичное значение переменной длины, до 8000 байт. Занимаемое место соответствует размеру вставленных данных плюс 4 байта.
  • VARCHARf(n)] , CHAR VARYING [(n)] , CHARACTER VARYING [(n)] (тип данных SQL2003: CHARACTER VARYING (n) )
    Хранит символьные данные фиксированной длины размером от 1 до 8000 символов. Занимаемое место равно реальному размеру введенного значения в байтах, а не значению n.

Типы данных PostgreSQL

База данных PostgreSQL поддерживает большинство типов данных SQL2003 плюс огромный набор типов для хранения пространственных и геометрических данных. PostgreSQL может похвастаться богатым набором операторов и функций, специально предназначенных для геометрических типов данных. Сюда входят такие средства, как поворот, поиск пересечений и масштабирование. В PostgreSQL также есть поддержка дополнительных версий существующих типов данных, которые характерны тем, что занимают меньше места на диске, чем соответствующие исходные версии. Например, в PostgreSQL предлагается несколько вариантов типа INTEGER для хранения больших и небольших чисел, соответственно занимающих больше или меньше места.

  • BJGSERJAL
  • BIT (тип данных SQL2003: BIT )
    Битовая строка фиксированной длины.
  • BIT VARYING(n) varbit(n) (тип данных SQL2003: BIT VARYING )
    Обозначает битовую строку переменной длины в n бит.
  • BOOL , BOOLEAN (тип данных SQL2003: BOOLEAN )
    Хранит логическое булево значение (true/false/unknown). Рекомендуемыми значе-ниями являются ключевые слова TRUE и FALSE, хотя PostgreSQL допускает применение нескольких литеральных значений для «true»: TRUE, t, true, у, yes и 1. Допус¬тимыми значениями для «false» являются: FALSE, f, false, n, no и 0.
  • BOX ((xl, у I), (x2, y2)) (тип данных SQL2003: отсутствует )
    Хранит значения, определяющие прямоугольную область на плоскости. Значения занимают 32 байта и представлены в виде ((xl, yl), (х2, у2)), что соответствует противоположным углам прямоугольника (правый верхний и левый нижний соот-ветственно). Внешние скобки являются необязательными.
  • BYTEA (тип данных SQL2003: BINARY LARGE OBJECT )
    Сырые, двоичные данные, используемые, например, для хранения графики, звука и документов. Для хранения этого типа требуется 4 байта плюс реальный размер битовой строки.
  • CHAR(n) , СНАRA CTER(n) (тип данных SQL2003: CHARACTER(n) )
    Содержит символьную строку фиксированной длины, дополняемую пробелами до длины n. Попытка вставить значение, превышающее по длине n, приводит к ошибке (если только лишние символы не представляют собой пробелы, которые в таком случае обрезаются так, чтобы длина составила п символов).
  • CIDR(x.x.x.xZy) (тип данных SQL2003: отсутствует)
    Описывает адрес сети или хоста в формате версии 4 протокола IP Адрес занимает 12 байт. Допустимыми значениями являются любые допускаемые протоколом IPv4 сетевые адреса. В типе CIDR данные представлены в форме х.х.х.х/у, где х.х.х.х — IP-адрес, а у — количество бит сетевой маски. В CIDR не допускается использование ненулевых битов справа от нулевого бита сетевой маски.
  • CIRCLE х, у, r (тип данных SQL2003: отсутствует)
    Описывает окружность на плоскости. Значения занимаю!’ 24 байта и представлены в форме х, у, r. Значения* и у представляют собой координаты центра окружности, а r — длину ее радиуса. Значения х, у и r при желании можно ограничить скобками или фигурными скобками.
  • DATE (тип данных SQL2003: DATE)
    Хранит календарную дату (год, день и месяц) без времени суток. Занимает 4 байта. Даты должны быть в диапазоне от 4713 до п. э. до 32767 и. э. Предел разрешения для типа DATE, естественно, один день.
  • DATETIME (тип данных SQL2003: T1MESTAMP)
    Хранит календарную дату с указанием времени суток.
  • DECIMAL [(p, s)], NUMERIC [(p. s)] (тип данных SQL2003: DECIMAL (PRECISION SCALE), NUMERIC (x, p))
    Хранит точные числовые значения с точностью (р), равной 9, и масштабом (s), равным нулю, без верхнего предела.
  • FLOAT4, REAL (тип данных SQL2003: FLOAT(p))
    Хранит значения с плавающей точкой с точностью, равной 8 или менее, и 6 знаками после занятой.
  • FLOAT8, DOUBLE PRECISION (тип данных SQL2003: FLOAT(p), 7 TEXT (тип данных SQL2003: CLOB)
    Хранит большой массив символьных строк переменной длины до 1 гигабайта. PostgreSQL автоматически сжимает строки типа TEXT, поэтому место, занимаемое на диске, может быть меньше, чем размер строк.
  • TIME [(p)] [WITHOUT TIMEZONE \ WITH TIME ZONE] (тип данных SQL2003: TIME) Хранит время суток либо без учета часового пояса (используется 8 байт), либо с учетом часового пояса, в котором находится сервер базы данных (используется 12 байт). Допустимый диапазон значений: 00:00:00.00 — 23:59:59.99. Наименьшее значение — 1 микросекунда. Заметьте, что в большинстве систем UNIX информация о часовом поясе доступна только для дат с 1902 по 2038 год.
  • TIMESPAN (тип данных SQL2003: отсутствует)
    Хранит значение, представляющее собой конкретный промежуток времени. Наи¬более похожим на тип TIMESPAN в стандарте ANSI является тип INTERVAL.
  • TIMESTAMP [(р)] [WITHOUT TIMEZONE \ WITH TIMEZONE] (тип данных SQL2003: TIMESTAMP [WITH TIMEZONE I WITHOUT TIMEZONE])
    Хранил дату и время с учетом и без учета часового пояса сервера базы данных. Допустимый диапазон значений — от 4713 до н. э. до 1 465 001 н. э. Одно значение типа TIMESTAMP занимает 8 байт. Самое наименьшее значение — 1 микросекунда. Заметьте, что в большинстве систем UNIX информация о часовом поясе доступна только для дат с 1902 по 2038 год.
  • TIMETZ (тип данных SQL2003: TIME WITH TIMEZONE)
    Хранит значение времени суток с учетом часового пояса.
  • VARCHAR(n) , CHARACTER VARYLNG(n) (тип данных SQL2003: CHARACTER VARYING(n))
    Хранит символьные строки переменной длины длиной до п. Заключительные пробелы не сохраняются.

Вы должны войти, чтобы оставить комментарий.

Данные. Понятие типа данных

Читайте также:

  1. CHAR и VARCHAR2 — символьные типы данных Огасlе
  2. CRM – технологии и интеллектуальный анализ данных в управлении маркетингом.
  3. FPU предоставляет восемь регистров для хранения данных и пять вспомогательных регистров.
  4. I. Государственная политика. Понятие, элементы, цели.
  5. I. Понятие банковской операции. Виды банковских операций и сделок.
  6. I. Понятие, источники, принципы, наука.
  7. I. Понятие, признаки и виды кредитных организаций.
  8. RI +/- коррекция данных финансовой отчетности
  9. X. Логические основы ЭВМ. Кодирование данных в ЭВМ
  10. А. Функции для оценки разброса данных.
  11. Абстрактные структуры данных.
  12. Аварии на взрывоопасных и пожароопасных объектах, очаги поражения при данных авариях

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

Данные, известные перед выполнением алгоритма, являются на­чальными, исходными данными. Результат решения задачи — это ко­нечные, выходные данные. В задачах нахождения максимума из после­довательности чисел и их произведения исходными данными являются числа, а результатами (выходными данными) — соответственно с и М.

Данные делятся на переменные и константы.

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

Например, для алгоритма вычисления площади круга необходимо объявить две переменные: переменную R, в которую будет заноситься значение радиуса окружности, и переменную S для вычисления площа­ди круга по формуле

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

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

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

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

К основным базовым типам относятся:

целый (INTEGER) — определяет подмножество допустимых значений из множества целых чисел;

вещественный (REAL) — определяет подмножество допустимых значений из множества вещественных чисел;

логический (BOOLEAN) — множество допустимых значений — истина и ложь;

символьный (CHAR) — цифры, буквы, знаки препинания и пр.

Тип INTEGER задает подмножество целых чисел, мощность которого зависит от такой характеристики ЭВМ, как размер машинного сло­ва. Если для представления целых чисел в машине используется п раз­рядов (причем один из них отводится под указание знака числа), то до­пустимые числа должны удовлетворять условию -2 n-1 2 n -1 . Считается, что все операции над данными этого типа выполняются точ­но и соответствуют обычным правилам арифметики. Если результат выходит за пределы допустимых значений, то вычисления будут пре­рваны. Такое событие называется переполнением. Четыре арифметические операции считаются стандартными: сложение (+), вычитание (-), умножение (*) и деление (/). Для целых чисел может быть определен дополнительный стандартный тип — целое без знака, задающий подмножество целых положи­тельных чисел. Если для представления целых без знака используется п разрядов, то переменным такого типа можно присваивать значения, удовлетворяющие условию

Илон Маск рекомендует:  Что такое код dngettext

Тип REAL обозначает подмножество вещественных чисел, границы, изменения которых также определяются характеристиками конкретной ЭВМ. И если считается, что арифметика с данными типа INTEGER дает точный результат, то допускается, что аналогичные действия со значениями типа REAL могут быть неточными, в пределах ошибок округлений, вызванных вычислениями с конечным числом цифр. Это принципиальное различие между типами REAL и INTEGER. Два значения базового типа BOOLEAN обозначаются идентификаторами TRUE FALSE. В базовый тип CHAR входит множество печатаемых символов и символов-разделителей в соответствии с кодом ASCII.

Приведем пример представления числовой информации в различных типах данных применительно к ЭВМ с 16-разрядным машинным словом.

Пусть задано число 12345.

Если этой константе поставлен в соответствие тип INTEGER, то внутренняя стандартная форма представления в памяти (для обработки в двоичной арифметике) — 0011000000111001. Объем — 2 байт, 16 двоичных разрядов. Если для константы определен тип REAL, то число представляется в форме с плавающей точкой и занимает объем 4 байта, 32 двоичных разряда. И, наконец, если число рассматривается как последовательность символов типа CHAR (символьное представление), то каждая его цифра представляется байтом в соответствии с кодом ASCII. Представление 12345 есть —00110001 00110010 00110011 00110100 00110101. Объем — 5 байтов. Переменные и типы данных вводятся для того, чтобы использовать их в различных алгоритмах обработки. Следовательно, нужно иметь еще и множество операций, которые можно применять к данным того или иного типа. Так, к переменным типа REAL и INTEGER применимы арифметические операции, к переменным типа BOOLEAN — логиче­ские (см. п. 1.3), к символьным переменным применима операция конка­тенации — «соединения» символов. Операции отношения или сравне­ния применяются к данным любого типа, но правила их применения различны. Рассмотрим, например, результат применения некоторых операций к значениям 123 и 45 в зависимости от их типа:

Знак Операция Запись Типданных Результат
+ Сложение 123+45 INTEGER
Конкатенация «123»+ «45» CHAR «12345»
> Больше 123 > 45 INTEGER Истина (TRUE)
«123»> «45» CHAR Ложь (FALSE)

Таким образом, тип данных — это такая характеристика данных, которая, с одной стороны, задает множество значений для возможного изменения данных и, с другой стороны, определяет множество операций, которые можно к этим данным применять, и правила выполнения этих операций. До сих пор мы говорили о переменных, хранящих только одно значение, и рассматривали возможности различного представления и использования этого значения при решении конкретных задач. На самом деле, огромное количество алгоритмов требует одновременного хранения в памяти целых наборов однородных объектов, при­чем длина этих наборов может быть заранее неизвестна. Например, пусть необходимо обрабатывать данные о среднесуточной температуре за год для вычисления максимальной и минимальной температур, среднемесячной и среднегодовой температуры и т.п. Для реализации таких алгоритмов необходимо обеспечить хранение каждого отдельного значения среднесуточной температуры. Если иметь при этом в виду переменные базового типа Real, то таких переменных потребова­лось бы 365.

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

Структурированные типы описывают наборы однотипных или разнотипных данных, с которыми алгоритм должен работать как с од­ной именованной переменной.

Массив. Наиболее широко известная структура данных — массив. Массив представляет собой упорядоченную структуру однотипных данных, которые называются элементами массива. Структура данных типа массив подходит, например, для решения задачи обработки среднесуточных температур, описанной выше. Доступ к каждому отдельному элементу массива осуществляется с помощью индекса — в общем случае порядкового номера элемента в массиве. Массивы могут быть как одномерными (адрес каждого элемента определяется значением одного индекса), так и многомерными (адрес каждого элемента определяется значением нескольких индексов). Рассмотрим задачу сортировки (расположения) по возрастанию N целых чисел. Для ее решения, во-первых, необходимо обеспечить ввод всех N чисел, а затем применить один из известных методов сортиров­ки. Любой метод сортировки предполагает неоднократный проход всех или части чисел, поэтому числа целесообразно организовать в массив.

Рис. 4. Сортировка массива из 5 элементов


Метод сортировки посредством простого выбора предполагает циклический просмотр элементов массива, начиная с i-го (i= 1,2. N— 1), поиск минимального элемента и перестановку найденного минимально­го элемента с i-м. За N — 1 проход по массиву (элемент с номером N останется на своем месте) числа будут отсортированы (рис. 1.4).

Подобный алгоритм, очевидно, состоит из трех этапов:

• ввод элементов массива;

• цикл обработки массива;

• вывод отсортированных чисел из массива.

Цикл обработки массива представляет собой совокупность двух «вложенных» циклов: первый цикл (с переменной цикла i) обеспечивает «внешний» проход по элементам массива, начиная с 1-го и кончая элементом с номером N — 1, который должен заканчиваться на каждом шаге перестановкой элементов; второй цикл (с переменной циклау) реа­лизует поиск минимального элемента среди элементов с номерами от i + 1 до N (т.е.у меняется от i + 1 до N). Блок-схема предлагаемого алгоритма сортировки представлена на рис. 5.

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

Рис. 5. Блок-схема алгоритма сортировки элементов массива по возрастанию

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

z типа Complex — объект, описывающий комплексное число, с по­лями re и im типа Real;

d типа Date — объект, описывающий дату, с полями day, month и year со значениями из подмножеств типа Integer (например, day может быть целым числом в интервале от 1 до 31);

ртипа Person — объект «Информация о студенте» с полями family, firstname, secondname, Date, year, num.

Таблица 1.2. Типы и структуры данных в некоторых языках

| следующая лекция ==>
Примеры и решения. 1.Рассмотрим следующую известную задачу: имеются два кувшина емкостью 3 и 8 л | Примеры и решения

Дата добавления: 2014-01-07 ; Просмотров: 6246 ; Нарушение авторских прав? ;

Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет

Глава 7. СТРУКТУРИРОВАННЫЕ ТИПЫ ДАННЫХ

§ Организация типов данных

§ Массивы

§ Записи, оператор присоединения

§ Множества, операции над множествами

§ Строки, стандартные процедуры и функции, работающие со строками

§ Совместимость типов

§ Явное и неявное преобразование типов

Билет 27. Структурированные типы данных . Массивы . Записи . Оператор присоединения.

ТИПЫ ДАННЫХ ЯЗЫКА DELPHI PASCAL

ТИПЫ
Скалярные
Порядковые
Целые
Вещественные
Логически
е
Символьные
Структуриро
ванные
Массивы
Указатели
Строки
Процедурные
Классы,
метаклассы
,
интерфейсы
Записи
Перечисля
емый
Тип
диапазон
Множества
Файлы
variant

Массив– упорядоченная совокупность однотипных данных.

любой порядковый
тип, размер которого не превышает 2 Гбайт
.
array
of
тип
элемента
,
[
тип
индекса
]

Type

Vector = array [1..3] of Real;

Var

R,V : Vector;

Var

R,V : array [1..3] of Real;

T : array [1..5] of Byte = (0,1,2,3,4);

массива – любой допустимый в Delphi Pascal тип кроме файла (в том числе и другой массив).

Type

Matrix = array [0..5] of array [-2..2] of array [Сhar] of Real;

Type

Matrix = array [0..5,-2..2,Сhar] of Real;

Доступ к элементам массива:

Var m : Matrix; N : Byte;


Begin

. m[1,0,’d’] := 5.2; N := 2; m[N-1][0][‘n’] := 6.3; .

End.

Var a,b : array [1..5] of Real;

Begin .

a := b; . End.

При большом числе элементов массива возможно ограничение, связанное с максимальным объемом памяти, который отводится под глобальную переменную – 2 Гбайт.

Var

Mas3D = array [1..1000,1..1000,1..1000] of Integer;

При компиляции в режиме, задаваемом ключом <$R+>, будет проверяться принадлежность значения индекса объявленному диапазону, и в случае нарушения границ будет выдано сообщение об ошибке.

Var a : array of Real;

N,i : Byte;

Begin

N := 5;
SetLength(a,N); for i := 0 to N-1 do
a[i] := i*2;
SetLength(a,N-2);
SetLength(a,N+1);

End.

Переменная типа динамического массива – это указатель (значение – адрес).

Запись– структура данных, состоящая из фиксированного числа разнотипных компонент, называемых полями записи.

Type

Data = record X,Y : Integer; Z : Char end;

Var D1,D2 : Data;

Begin

. D1.X := 10;

. D2.Z := ‘n’;

Полем записи может быть другая запись (вложенные структуры):

Var

D : record X : Integer;

R : record RX : Integer; RZ : Char end

end;

Begin .

D.R.RX := 2;

End.

with
оператор
,
идентификатор
записи/поля
do

With D do begin

R.RX := 2; with R do
RZ := ‘f’;

end;

Билет 28. Структурированные типы данных . Множества . Строки.

Множество– это структурированный тип данных, представляющий собой неупорядоченную совокупность неповторяющихся элементов. Количество элементов, входящих во множество, может меняться в пределах от 0 до 256 (множество может быть пустым).

set
базовый
тип
of

– любой порядковый тип с числом элементов, не превышающим 256 (c кодами в диапазоне 0..255).

Type

TypeSet1 = set of Char;


TypeSet2 = set of 0..9 ;

TypeSet3 = set of VideoType;

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

Var

Set1, Set2 : set of Byte;

Set3 : set of ‘a’..’f’;

X : Integer;

Begin .

Set1 := [3..10,12]; Set3 := [‘a’,’d’]; X := 5;

Set1 := [X+2,4,9];

Set3 := []; Set2 := [9,7,9,4];

End.

ОПЕРАЦИИ НАД МНОЖЕСТВАМИ

Set1 = [0..3,6] Set2 = [3..9]

* – пересечение множеств, результат содержит элементы, общие для обоих множеств (Set1 * Set2 = [3,6]) ;

+ – объединение множеств, результат содержит элементы первого множества, дополненные недостающими элементами второго (Set1 + Set2 = [0..9]);

— – разность множеств, результат содержит элементы первого множества, которые не принадлежат второму (Set1 — Set2 = [0,1,2]);

= – проверка эквивалентности, возвращает True, если оба множества эквивалентны;

<> – проверка неэквивалентности, возвращает True, если множества неэквивалентны;

= – проверка вхождения, возвращает True, если второе множество включено в первое; in – проверка принадлежности(E in S), возвращает True, если значение Е входит в множество S и принадлежит базовому типу этого множества (3 in Set1 = True, 2*2 in Set1 = False).

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

INCLUDE (S,I)– включает новый элемент I в множество S (включаемый элемент должен принадлежать базовому типу множества S). EXCLUDE (S,I)– исключает элемент I из множества S.

Var

Set1 : set of 1..10;

I : Byte;

Begin .

Set1 := [2,3,4];

Include(Set1,2*3); for I := 1 to 10 do if I in Set1 then Writeln( I);

Writeln(SizeOf( Set1)); Set1 := Set1 + [12]; .

End.

Тип
String
используются для обработки текстов и трактуется как цепочка
символов.
Строка
динамический (переменной длины) массив, состоящий из
символов. Максимально возможная длина строки 255 символов. Тип
объявляется как
String
[
N], где N
максимальное число символов в строке.
Var
S32 : String[32];
S255 : String[255];
>
String
<
Begin
S32 := ‘
Это строка
‘;
= 10>
ORD(S32[0])
<
S32[3
:= ‘a’;
]
S32 := S32 + ‘. ‘;
End
.
string
целое без
знака
[
]
СТРОКИ

ПРОЦЕДУРЫ И ФУНКЦИИ ДЛЯ РАБОТЫ СО СТРОКАМИ

LENGTH(S : String) : Integer – возвращает длину строки (функция);

CONCAT(S1, S2,…,Sn : String) : String – возвращает конкатенацию (слияние) строк S1,…,Sn ( функция);

COPY(S : String; Start, Len : Integer) : String – возвращает подстроку длиной Len, начинающуюся с позиции Start строки S (функция);

DELETE(Var S : String; Start, Len : Integer) – удаляет из S подстроку длиной Len, начинающуюся с позиции Start строки S (процедура);

INSERT(SubS : String; Var S : String; Start : Integer) – вставляет в S подстроку SubS, начиная с позиции Start ( процедура);

POS(SubS, S : String) : Integer – ищет вхождение подстроки SubS в строке S и возвращает номер первого символа SubS в S или 0, если SubS нет в S (функция);

STR(X; Var S : String) – преобразует числовое значение Х в строковое S, возможно задание формата для Х ( Str(X:F:n,S), где F – общая ширина поля, n – количество символов в дробной части для вещественных чисел);

VAL(S : String; Var X; Var Code : Integer) – преобразует строковое значение S (строку цифр) в значение числовой переменной (Х – целое или вещественное, параметр Code содержит ноль, если преобразование прошло успешно, в противном случае он содержит номер позиции в строке, где обнаружен ошибочный символ, при этом Х не меняется).

Операции отношения (=, <> , >, =, ‘ab’ (результат False) ; ‘aBcd’ 6 78910Следующая ⇒


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

Глава 6 типы данных

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

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

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

Некоторые структуры:

  • Массив (функция с конечной областью определения) — простая совокупность элементов данных одного типа, средство оперирования группой данных одного типа. Отдельный элемент массива задается индексом. Массив может быть одномерным, двумерным и т.д. Разновидностями одномерных массивов переменной длины являются структуры типа кольцо, стек, очередь и двухсторонняя очередь .
  • Запись (декартово произведение) — совокупность элементов данных разного типа. В простейшем случае запись содержит постоянное количество элементов, которые называют полями . Совокупность записей одинаковой структуры называется файлом . (Файлом называют также набор данных во внешней памяти, например, на магнитном диске). Для того, чтобы иметь возможность извлекать из файла отдельные записи, каждой записи присваивают уникальное имя или номер, которое служит ее идентификатором и располагается в отдельном поле. Этот идентификатор называют ключом .

Такие структуры данных как массив или запись занимают в памяти ЭВМ постоянный объем, поэтому их называют статическими структурами. К статическим структурам относится также множество .

Имеется ряд структур, которые могут изменять свою длину — так называемые динамические структуры . К ним относятся дерево, список, ссылка.

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

Рис. 1.1 Классификация типов данных.

1.1.2. Обобщенные структуры или модели данных.

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

Глава 6 типы данных

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

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

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

Значения целых типов могут изображаться двумя способами: в десятичном виде (например, -57; 1896) и в шестнадцатеричном виде (в этом случае вначале ставится знак $, а цифры старше 9 обозначаются латинскими буквами от A до F , например, $1А5; $ F 3 C ).

Целочисленные типы данных

Требуемая память (байт)

Над данными целого типа определены следующие операции:

1) арифметические операции: + (сложение), — (вычитание), * (умножение), / (деление), div (деление нацело), mod (вычисление остатка от целочисленного деления), — которые вырабатывают результат целого типа, кроме операции деления, вырабатывающей результат вещественного типа;

2) операции отношения: = (равно), (не равно), (больше), = (больше или равно), — которые вырабатывают результат логического типа.

Вещественные значения могут изображаться в форме с фиксированной точкой, например, 8.32, -546.271 или 0.017, а также в форме с плавающей точкой, т.е. парой чисел вида >Е , например, 8.53 Е+00 (8,53), 6.45721 Е+02 (6,45721 × 10 2 ), 1.5 Е-03 (1,5 × 10 -3 ).

Вещественные типы данных

Требуемая память (байт)

2 ,9 × 10 -39 . 1,7 × 10 38

1 ,5 × 10 -45 . 3,4 × 10 38

5 ,0 × 10 -324 . 1,7 × 10 308

1 ,9 × 10 -4951 . 1,1 × 10 4932

-2 ,0 × 10 63 +1 . 2,0 × 10 63 -1

Над данными вещественных типов определены арифметические операции +, -, *, /, а также операции отношения.

Булевский тип « Boolean »

Данные этого типа представлены следующими значениями: true (истина) и false (ложь). Над ними определены логические операции and ( логическое И), or (логическое ИЛИ), xor (исключающее ИЛИ), not (логическое НЕ). Для размещения в памяти переменной булевского типа требуется один байт.

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

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

Массивы могут быть описаны в разделе var с использованием словосочетания array of (массив из ), например:

vectorx : array [1..50] of real;

matrb : array [1..6, 1..6] of byte ;

Если в такой форме описания массива задан один индекс, массив называется одномерным, если два индекса – двумерным, если n индексов – n -мерным . Например, в приведенном выше примере массив vectorx – одномерный, состоящий из 50 элементов типа real , массив matrb – двумерный, состоящий из 6 ´ 6 элементов типа byte . Одномерные массивы обычно используются для представления векторов, а двумерные – для представления матриц.

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

masy : array [1..n1, 1..n2] of integer;

Массив может быть описан с помощью представления типа в разделе описания типа данных, например:

Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL