С типы переменных: C# и .NET | Типы данных

Содержание

Урок 002. Типы данных, Переменные и Арифметика

Каждая переменная или выражение имеет свой тип данных, например, объявление


int some_variable;

указывает, что переменная

some_variable

имеет целочисленный тип

int.

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

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

some_variable.

ADS

Фундаментальные типы данных

C++ предоставляет следующие фундаментальные типы данных.

void


void

— является типом данных с пустым набором значений. Является незавершённым и не может быть установлен для объектов и переменных. Однако, позволяется использовать указатели на тип void, а также использовать void в качестве значения, возвращаемого функциями.

nullptr


nullptr

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

введён в стандарте С++11

вместо определяемой реализацией нулевой макроконстанты

NULL.

boolean


bool

— логический тип данных, которые принимает значение

true

или

false

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

sizeof(bool).

Символьные типы


char

— Символьные типы используются для представления текстовых символов. Размер символьного типа char 1 байт, что позволяет содержать 256 различных символов. Представление всех символов можно найти в таблице символов ASCII.

Символьные типы данных делятся на три типа:


  • signed char

    — знаковый тип

  • unsigned char

    — беззнаковый тип

  • char

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

Различие в диапазоне значений, например:


  • char

    -128…127

  • unsigned char

    0…255


char

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

Int.

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

Также имеются особые типы символьных данных:


  • wchar_t

    — тип для представления символов, которым недостаточно одного байта. Это может быть 32 бита для ОС, поддерживающих UNICODE, или 16 бит в нотации Windows для UTF-16.

  • char16_t

    — тип для представления UTF-16,

    введён в стандарте C++11

    .

  • char32_t

    — тип для представления UTF-32,

    введён в стандарте C++11

    .

int


int

— целочисленный тип данных. Могут использоваться модификаторы, определяющие размер памяти, выделяемый под этот тип данных. Если нет модификаторов, то гарантируется, что размер типа данных не менее 16-ти бит. Однако, на большинстве 32/64 разрядных систем гарантируется, что занимаемый размер не менее 32-х бит.

Модификаторы

Знаковые модификаторы


  • signed

    — представление знакового типа данных (если опущено, то подразумевается по умолчанию)

  • unsigned

    — представление беззнакового типа данных.

Модификаторы размера


  • short

    — целевой тип оптимизируется, чтобы размер был не менее 16 бит

  • long

    — целевой тип оптимизируется, чтобы размер был не менее 32 бит

Модификатор

long

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

Данная оптимизация введена в стандарте C++11.


long long int

Модификаторы размера и знаковости можно также комбинировать.


signed long long int

Типы данных с плавающей точкой


  • float

    — 32-х разрядный тип данных с плавающей точкой.

  • double

    — 64-х разрядный тип данных с плавающей точкой.

  • long double

    — расширенный тип данных с плавающей точкой,

    введён в стандарте C++11.

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

float

характерно для разработчиков, которые начинали с C,

double

же характерен для C++ разработчиков.

Переменные

Таким образом, переменные могут иметь типы данных, перечисленные выше, например:


int a = 12;       // Целочисленный тип, переменная равна 12
double b = 12.25; // Вещественный тип с плавающей точкой двойной точности, переменная равна 12.25
char c = 'a';     // Символьный тип, переменная равна символу "a"

Инициализация переменных может производиться несколькими способами.


double a1 = 2.3;
double a2 = {2.3};
double a3 {2.3};

Инициализация с фигурными скобками была введена в стандарте C++11. При инициализации фигурными скобками не позволяется неявное преобразование, поэтому компилятор выдаст ошибку в следующих случаях.


int d1 = {2.3};
int d2 {2.3};

auto

Также для объявления переменных в стандарте C++11 был введён спецификатор

auto

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

auto

невозможно использовать без инициализатора, то есть


// Правильный, рабочий вариант
auto a = 14; 
// Не правильный вариант, не скомпилируется
auto b;
b = 15;

Спецификатор

auto

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

Арифметика

Над переменными базовых типов можно выполнять различные арифметически операции:


x+y   // сложение
+x    // унарный плюс
x-y   // вычитание
-x    // унарный минус
x*y   // умножение
x/y   // деление
x%y   // остаток от деления

Также возможно использование операций сравнение:


x==y  // равно
x!=y  // не равно
x<y   // меньше чем
x>y   // больше чем
x<=y  // меньше чем или равно
x>=y  // больше чем или равно

В дополнение к арифметическим и логическим операциям функционал C++ предлагает более специфические операции:


x+=y  // x = x+y
++x   // increment: x = x+1
x−=y  // x = x-y
−−x   // decrement: x = x-1
x∗=y  // x =x*y
x/=y  // x = x/y
x%=y  // x = x%y

ТИПЫ ДАННЫХ И ПЕРЕМЕННЫЕ

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


ТИПЫ ДАННЫХ


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











Тип данных Описание Диапазон допустимых значений
CHARACTER Текстовый Ограничен размером записи 32 килобайт
LONGCHAR Текстовый Ограничен ресурсами системы
DECIMAL Вещественный 40 знаков до «.» и 10 знаков после.
INTEGER Целочисленный -216… 216
INT64 Целочисленный -232… 232
LOGICAL Логический True/False или Yes/No
DATE Дата 01/01/32768 до н.э. – 31/12/32767н.э.
DATETIME Дата-время Дата: 01/01/32768 до н.э. – 31/12/32767н.э.
Время: 00:00:00.000 — 23.59.59.999
DATETIME-TZ Дата-время-зона Дата: 01/01/32768 до н.э. – 31/12/32767н.э.
Время: 00:00:00.000 — 23.59.59.999
Зона: -14:00 – +14:00


ПЕРЕМЕННЫЕ


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

DEFINE {[[NEW [GLOBAL]] SHARED] |
         [PRIVATE | PROTECTED | PUBLIC] [STATIC]}
   VARIABLE variable-name {AS var-datatype
                          
| LIKE field
                           |
LIKE variable}
   [INITIAL
      {constant | {[ constant [, constant ] … ]}}]
   [LABEL string]
   [FORMAT string]
   [DECIMALS n]
   [EXTENT constant]
   [NO-UNDO]
   [[NOT] CASE-SENSITIVE]

variable-name — идентификатор (имя) переменной;

var-datatype — тип данных переменной;

Идентификаторы представляют собой последовательность, которая может состоять из букв латинского алфавита, цифр и спецсимволов (@,#,$,%,*,-,_). Начинаться идентификатор должен строго с буквы. Максимально допустимая длина идентификатора составляет 32 символа.

INITIAL constant — определяет начальное значение переменной равное constant.

FORMAT string — определяет формат представления значения переменной.

LABEL string — определяет метку переменной.

Переменная может быть описана, подобием поля таблицы с помощью оператора LIKE field, или другой переменной LIKE variable. Объявляемая таким образом переменная принимает все атрибуты того поля или переменной, подобием которой она объявляется.

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











Тип Формат Начальное значение по умолчанию
CHARACTER «x(8)» «»
LONGCHAR   «»
DECIMAL ->>,>>9.99 0
INTEGER ->,>>>,>>9 0
INT64 ->,>>>,>>9 0
LOGICAL YES/NO NO
DATE 99/99/99 ? (неизвестное значение)
DATETIME 99/99/9999 HH:MM:SS.SSS ? (неизвестное значение)
DATETIME-TZ 99/99/9999 HH:MM:SS.SSS+HH:MM ? (неизвестное значение)

EXTENT constant — определяет переменную, как одномерный массив размера constant. Стоит заметить, что в ABL возможно объявление исключительно только одномерных массивов.

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

Обращение к элементам массива осуществляется по имени переменной и порядковому номеру, указываемому в квадратных скобках:

variable-name[i]

DEF VAR vWeek AS CHAR 
EXTENT 7
INITIAL ["Пн","Вт","Ср","Чт","Пт","Сб","Вс"]
    NO-UNDO.

DISPLAY vWeek[3].

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

Аналогичным образом осуществляется присвоение и изменение значений элементов массива:

 

DEF VAR vWeek AS CHAR EXTENT 7.
vWeek[1] = "Пн".
vWeek[2] = "Вт".
...

 

ПЕРЕМЕННЫЕ CHARACTER И LONGCHAR ТИПА


Присваиваемое текстовое значение переменной CHARACTER или LONGCHAR типа должно быть указано либо в одинарных, либо в двойных кавычках.

DEF VAR cMonth    AS CHAR NO-UNDO.
DEF VAR cWeekDay  AS CHAR NO-UNDO.
cMonth   = "Январь".
cWeekDay = 'Понедельник'.

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

Описание текстового формата «X(8)» означает: X – любой печатаемый символ, в скобках указано количество таких символов, определяющее максимальную отображаемую длину значения переменной. Длина значения текстовой переменной может быть больше чем 8 символов, но на экране будут отображаться только ее первые 8 символов. Таким образом «X(8)» равнозначно «XXXXXXXX».

DEF VAR cName AS CHAR FORMAT "X(3)" NO-UNDO.
DEF VAR cName AS CHAR FORMAT "XXX"  NO-UNDO.

Символ вводимый на месте знака ! в текстовом формате будут автоматически переводится в верхний регистр.

DEF VAR cName AS CHAR FORMAT "!XXX!XXXX!XXX" NO-UNDO.
cName = "мир труд май".
DISPLAY cName.

Результат: Мир Труд Май

По умолчанию, значение текстовой переменной не может содержать в себе спец символы двойные и одинарные кавычки («,’). Если же все таки использование таких символов необходимо, то перед ними следует использовать ESCAPE-символ ~.

DEF VAR cName AS CHAR FORMAT NO-UNDO.
cName = "ОАО ~"Заря~"".
DISPLAY cName FORMAT "x(10)".

или использовать различные типы кавычек:

DEF VAR cName AS CHAR FORMAT NO-UNDO.
cName = 'ОАО "Заря" '.
DISPLAY cName FORMAT "x(10)".

ПЕРЕМЕННЫЕ DECIMAL, INTEGER И INT64 ТИПОВ


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

Американский формат представления числа: 1,234,567.89
Европейский формат представления числа: 1.234.567,89

Данное представление может быть изменено в рамках сессии с помощью атрибута сессии NUMERIC-FORMAT.

DEF VAR vNum AS DECIMAL INIT 12345.67.
SESSION:NUMERIC-FORMAT = "AMERICAN".
DISPLAY vNum.

Результат: 12,345.67

DEF VAR vNum AS DECIMAL INIT 12345.67.
SESSION:NUMERIC-FORMAT = "EUROPEAN".
DISPLAY vNum.

Результат: 12.345,67

Аналогично представление для целочисленных значений:

DEF VAR vNum AS INTEGER INIT 12345.
SESSION:NUMERIC-FORMAT = "AMERICAN".
DISPLAY vNum.

Результат: 12,345

DEF VAR vNum AS INTEGER INIT 12345.
SESSION:NUMERIC-FORMAT = "EUROPEAN".
DISPLAY vNum.

Результат: 12.345

Указать количество знаков после запятой переменной DECIMAL типа можно не только с помощью соответствующего формата, но и с помощью атрибута DECIMALS n, где n – количество знаков.

DEF VAR dMoney AS DEC FORMAT   ">>9.999" NO-UNDO.
DEF VAR dMoney AS DEC DECIMALS 3       NO-UNDO.

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

С помощью указания формата возможно отключение разбиение на разряды существующее по умолчанию:

DEF VAR iCount AS INTEGER NO-UNDO.
iCount = 12000001.
DISPL iCount.

Результат: 12,000,001

DEF VAR iCount AS INTEGER FORMAT "99999999" NO-UNDO.
iCount = 12000001.
DISPL iCount.

Результат: 12000001

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

DEF VAR i AS INTEGER NO-UNDO.
i = 34.6.
DISPLAY i.

Результат: 35

ПЕРЕМЕННЫЕ DATE, DATETIME И DATETIME-TZ ТИПОВ


Формат представления дат в OpenEdge определяется форматом указываемом в стартовом параметре -d. Формат даты определенный параметром -d влияет исключительно на отображение дат, запись даты в базу данных, или в память при присвоении переменной, независимо от этого, всегда будет осуществляться в формате mm/dd/yy.

В рамках сессии формат представления последовательности следования день/месяц/год в датах может быть изменен с помощью атрибута сессии DATE-FORMAT.

Для установки последовательности для текущей сессии год,месяц,день:

SESSION:DATE-FORMAT = "YMD".

С помощью атрибута переменной FORMAT можно задавать разделитель и число символов в представлении года.

DEF VAR dBeg-date AS DATE FORMAT "99-99-99".
DEF VAR dEnd-date AS DATE FORMAT "99-99-9999".

Представление года четырехзначным значением определяется параметром -yy. В данном параметре указывается начальное четырехзначное значение года от которого осуществляется отсчет столетнего периода в рамках которого осуществляется определение четырехзначного значения года соответствующего указанному двузначному значению.

В рамках сессии начальное значение года может быть изменено с помощью атрибута сессии YEAR-OFFSET

DEF VAR vDate AS DATE FORMAT "99/99/9999" NO-UNDO.
SESSION:YEAR-OFFSET = 1950.
vDate = 08/21/67.
DISPL vDate.

Результат: 21/08/1967

DEF VAR vDate AS DATE FORMAT "99/99/9999" NO-UNDO.
SESSION:YEAR-OFFSET = 1950.
vDate = 08/21/12.
DISPL vDate.

Результат: 21/08/2012

В ABL существует два типа данных дата-время: DATETIME и DATETIME-TZ. Формат дата-время DATETIME состоит из двух частей — это дата и время. DATETIME-TZ в сравнении с DATETIME содержит еще смещение времени временной зоны.

DEF VAR vDateTime AS DATETIME NO-UNDO.
vDateTime = NOW.
DISPL vDateTime.

Результат: 05/07/2013 16:05:24.315

DEF VAR vDateTime AS DATETIME-TZ NO-UNDO.
vDateTime = NOW.
DISPL vDateTime.

Результат: 05/07/2013 16:05:24.315+04:00

Возможны следующие форматы представления части содержащей время:

«HH»
«HH:MM»
«HH:MM:SS»
«HH:MM:SS.SSS»
«HH:MM:SS.SSS AM»
«HH:MM:SS.SSS+HH:MM»
«HH:MM:SS.SSS AM+HH:MM»

При наличии в формате времени «A» или «a»  время будет выводиться в формате 12 часов, в противном случае в формате 24 часа.

ПЕРЕМЕННЫЕ LOGICAL ТИПА


Переменные LOGICAL типа могут принимать три значения: TRUE (ИСТИНА), FALSE(ЛОЖЬ) и неизвестное значение — ?.

С помощь формата LOGICAL переменной можно трансформировать представление (отображение) значений TRUE/FALSE в иные схожие значения, например определяющие пол M/F (М/Ж).

DEF VAR vLog AS LOGICAL FORMAT "M/F" NO-UNDO.
vLog = TRUE.
DISPL vLog.

Результат: M

Формат переменной LOGICAL представляет собой два значения, разделенных символом «/». Первое значение в формате соответствует значению TRUE, второе — значению FALSE.


Неизвестное значение применяется для указания пустого значения. Если в базе данных у ряда записей поле дата (например, с именем fDate) просто отсутствует (не заполнено) и мы хотим отобрать такие записи, то сравнение fDate = «» вызовет ошибку несовместимости типов, так как таким образом мы как бы сравниваем тип DATE с типом CHARACTER. Поэтому, для указания пустого значения применяется неизвестное значение ?, являющееся аналогом значения null в других языках программирования. Выражение fDate = ? уже не будет вызывать подобной ошибки.

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

DEF VAR cMoney AS DEC FORMAT "$ >>>9.99 USD" NO-UNDO.
cMoney = 123.78.
DISPL cMoney.

Результат $ 123.78 USD


Если при выполнении какого-либо программного блока, в котором некой переменной присваивалось новое значение, произойдет прерывание, вызванное либо сбоем, либо действиями пользователя, то по умолчанию произойдет откат значения данной переменной на предыдущее, т.е. новое присвоение значения не произойдет. За данное действие отвечает параметр UNDO. Согласно ProgressCodingStandardsManual автор Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.» Schreiber Fast 4gl systems, inc., все переменные должны быть объявлены как NO-UNDO (отменяющему откат значения переменной в случае прерывания). Согласно той же статье при выборе идентификатора переменной следует пользоваться префиксами и суффиксами для отличия идентификаторов переменных от идентификаторов полей баз данных. При объявлении переменной как подобие поля базы данных (LIKE), в идентификаторе переменной должно звучать наименование поля подобием которого является данная переменная.

Типы переменных | bookhtml.ru

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

Типы данных РНР

РНР поддерживает следующие базовые типы данных.

■ Integer (целый) — используется для представления целых чисел.

■ Float, также называемый double (двойной точности) — используется для представления действительных чисел.

■ String (строковый) — используется для представления строк символов.

■ Boolean (булевский) — используется для хранения значений true (истина) и false (ложь).

■ Array (массив) — используется для хранения нескольких элементов данных.

■ Object (объект) — используется для хранения экземпляров классов.

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

Степень типизации

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

Например, при создании переменных $totalqty и $totalamount их начальные типы были определены следующим образом:

$totalqty = 0;

$totalamount =0.00;

Поскольку переменной $totalqty было присвоено целочисленное значение 0, эта переменная теперь имеет тип integer. Аналогично, переменная $totalamount имеет тип float.

Также в сценарий вполне можно поместить такую строку:

$totalamount = ‘Добро пожаловать’;

Теперь переменная $totalamount имеет тип string. РНР в любой момент времени изменяет тип переменной в соответствии с хранящимися в ней данными.

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

Приведение типов

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

Например, мы можем объявить две использованные выше переменные, применив при этом механизм приведения типов:

$totalqty = 0;

$totalamount = (float)$totalqty;

Вторая строка означает: «Взять значение, хранящееся в переменой $totalqty, интерпретировать его как значение типа float и сохранить в переменной $totalamount.» Переменная $totalamount получит тип float. Приведение типов не меняет тип исходной переменной, поэтому тип переменной $totalqty остается integer.

Переменные переменных

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

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

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

$varname = «tireqty»;

Затем вместо $tireqty можно использовать $$varname, например:

$$varname = 5;

Это в точности эквивалентно следующему:

$tireqty = 5;

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

Типы данных — Основы языка

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

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

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

  • int — целые числа.
  • double — действительные числа.
  • bool — значения логического типа.
  • string — значения строкового типа.
  • color — значения цветового типа.
  • datetime — значение даты и времени.

Тип int

Значения типа int — это целые числа. К этому типу относятся значения, которые являются целыми по своей сути. Примерами целых чисел могут служить: количество баров в окне финансового инструмента (16000 баров), количество открытых и отложенных ордеров (3 ордера), дистанция в пунктах от текущего курса финансового инструмента до цены открытия ордера (15 пунктов). Количество таких объектов, как события, также бывают только целыми. Например, количество попыток открыть ордер не может быть равным полутора, а только одной, двум, трём и т.д.

Различают 2 вида целых значений:

  • Десятичные значения могут состоять из цифр 0 — 9 и быть положительными или отрицательными: 10, 11, 12, 1, 5, -379, 25, -12345, -1, 2.
  • Шестнадцатеричные значения могут состоять из букв латинского алфавита от A до F или от a до f, цифр от 0 до 9, обязательно должны начинаться с 0x или 0X и принимать положительные и отрицательные значения: 0x1a7b, 0xff340, 0xAC3 0X2DF23, 0X13AAB, 0X1.

Значения типа int должны находиться в диапазоне чисел от -2 147 483 648 до 2 147 483 647. Если значение константы или переменной находится за пределами указанного диапазона, то результат работы программы будет не определён. В памяти компьютера значения констант и переменных типа int занимают 4 байта.

Пример использования в программе переменной типа int:

   int Art  = 10;                         
int B_27 = -1;
int Num = 21;
int Max = 2147483647;
int Min = -2147483648;

Тип double

Значения типа double — это действительные числа, содержащие дробную часть.

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

Иногда при составлении программ могут возникнуть трудности с определением типа переменной, т.е программисту бывает не сразу понятно, к какому типу (int или double) относится переменная. Рассмотрим небольшой пример:

Программа открыла в течение недели 12 ордеров. Какого типа должна быть переменная А, учитывающая среднее количество ордеров, открываемых этой программой в день? Очевидно, что ответ: A = 12 ордеров / 5 дней. То есть, переменная А = 2.4 должна учитываться в программе, как double, т.к. у этого значения есть дробная часть. А какого типа должна быть эта же переменная А в случае, если общее количество открытых за неделю ордеров составляет 10? Казалось бы, что если 2 (10 ордеров / 5 дней = 2) не имеет дробной части, то переменная А может учитываться как int. Однако это рассуждение ошибочно. Текущее значение некоторой переменной может иметь дробную часть, состоящую из одних нулей. Но важно то, что значение этой переменной является действительным по своей сути. В этом случае переменная А также должна иметь тип double, и при записи константы в программе обязательно отображается разделяющая точка: А = 2.0

Значения действительных констант и переменных состоят из целой части, десятичной точки (.) и дробной части. Они могут принимать положительные и отрицательные значения. Целая и дробная части составляются из цифр 0 — 9. Количество значащих цифр после десятичной точки может достигать 15. Например:

27.12 -1.0 2.5001 -765456.0 198732.07 0.123456789012345

Интервал значений типа double находится в пределах от -1.7 * e-308 до 1.7 * e308. В памяти компьютера значения констант и переменных типа double занимают 8 байт.

Пример использования в программе переменной типа double:

   double Art     = 10.123;                 
double B_27 = -1.0;
double Num = 0.5;
double MMM = -12.07;
double Price_1 = 1.2756;

Тип bool

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

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







Список учеников Учебник физики Учебник биологии Учебник химии
1 Иванов V
2 Петров V V
3 Сидоров V V
25 Миронов V V V

Значения в правых столбцах будут принимать только 2 возможных значения: верно или неверно. Эти значения нельзя отнести к ранее рассмотренным типам данных, поскольку они не являются числами. Они также не являются значениями цвета, вкуса, количества и т.д. Тем не менее, они несут важную смысловую нагрузку. В языке MQL4 подобные значения называют логическими. Характеристикой констант и переменных типа bool является то, что они могут принимать лишь 2 возможных значения — истина (true, True, TRUE, 1) или ложь (false, False, FALSE, 0). В памяти компьютера значения констант и переменных типа bool занимают 4 байта.

Пример использования в программе переменной типа bool:

   bool aa    = True;           
bool B17 = TRUE;
bool Hamma = 1;

bool Asd = False;
bool Nol = FALSE;
bool Prim = 0;

Тип string

Значение типа string — это значение строкового типа, представляющее собой набор символов кода ASCII.

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

Если необходимо ввести в строку двойную кавычку «, то перед ней надо поставить символ обратной косой черты: \. В строку могут быть введены любые специальные символьные константы, перед которыми стоит символ обратной косой черты \. Длина строковой константы — от 0 до 255 символов. Если длина строковой константы превосходит максимальную, лишние символы справа отбрасываются, и компилятор выдаёт соответствующее предупреждение. Сочетание из двух символов, первый из которых – обратная косая черта \, обычно является общепринятым и воспринимается большинством программ как указание на выполнение определённого форматирования текста. В тексте это сочетание не отображается. Например, сочетание \n указывает на необходимость переноса строки, \t указывает на табуляцию и т.д.

Значение строкового типа записывается в виде набора символов, заключённого в двойные кавычки: «MetaTrader 4″, » Stop Loss», «Ssssstop_Loss», «stoploss», «10 pips». Собственно строковым значением является набор символов, находящийся внутри кавычек. Кавычки используются лишь для обозначения границ значения. Внутреннее представление — структура размером в 8 байт.

Пример использования в программе переменной типа string:

   string Prefix    = "MetaTrader 4";              
string Postfix = "_of_my_progr. OK";
string Name_Mass = "History";
string text ="Верхняя строка\nНижняя строка";

Тип color

Значение типа color — это значение цветового типа.

Всем хорошо известно, что значит цвет: синий, красный, белый, желтый, зелёный. Нетрудно представить, что означает переменная или константа цветового типа. Это такая константа или переменная, значением которой является цвет. Это может показаться несколько непривычным, но в сущности – очень просто. Подобно тому, как значением целой константы является число, значением цветовой константы является цвет.

Значения цветовых констант и переменных могут быть представлены одним из трёх видов:

  • Литералы

    Значение цветового типа в виде литерала состоит из трёх частей, представляющих собой числовые значения интенсивности трех основных компонент цвета: красного, зеленого и синего. Значение такого вида начинается с символа C и обрамляется одинарными кавычками.


    Числовые значения интенсивности компоненты цвета лежат в диапазоне от 0 до 255 и могут записываться как в десятичном, так и в шестнадцатеричном виде.


    Примеры: C’128,128,128′ (серый), C’0x00,0x00,0xFF’ (синий), C’0xFF,0x33,0x00′ (красный).


  • Целочисленное представление

    Целочисленное представление записывается в виде шестнадцатеричного или десятичного числа. Шестнадцатеричное число имеет вид 0xRRGGBB, где RR — значение интенсивности красной компоненты цвета, GG — зелёной, а BB — синей. Десятичные константы не имеют прямого отражения в RGB. Они представляют собой десятичное значение шестнадцатеричного целочисленного представления.


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


    Примеры: 0xFFFFFF (белый), 0x008000 (зеленый), 16777215 (белый), 32768 (зеленый).


    Рис. 11. В современных редакторах можно взять параметры цвета для литерального и целочисленного представления цветового значения константы.


  • Названия цветов

    Самым простым способом задания цвета является указание его названия в соответствии с таблицей Web-цветов. В этом случае значение цвета представляется словом, поставленным в соответствие цвету, например, Red — красный.




















    Black DarkGreen DarkSlateGray Olive Green Teal Navy Purple
    Maroon Indigo MidnightBlue DarkBlue DarkOliveGreen SaddleBrown ForestGreen OliveDrab
    SeaGreen DarkGoldenrod DarkSlateBlue Sienna MediumBlue Brown DarkTurquoise DimGray
    LightSeaGreen DarkViolet FireBrick MediumVioletRed MediumSeaGreen Chocolate Crimson SteelBlue
    Goldenrod MediumSpringGreen LawnGreen CadetBlue DarkOrchid YellowGreen LimeGreen OrangeRed
    DarkOrange Orange Gold Yellow Chartreuse Lime SpringGreen Aqua
    DeepSkyBlue Blue Magenta Red Gray SlateGray Peru BlueViolet
    LightSlateGray DeepPink MediumTurquoise DodgerBlue Turquoise RoyalBlue SlateBlue DarkKhaki
    IndianRed MediumOrchid GreenYellow MediumAquamarine DarkSeaGreen Tomato RosyBrown Orchid
    MediumPurple PaleVioletRed Coral CornflowerBlue DarkGray SandyBrown MediumSlateBlue Tan
    DarkSalmon BurlyWood HotPink Salmon Violet LightCoral SkyBlue LightSalmon
    Plum Khaki LightGreen Aquamarine Silver LightSkyBlue LightSteelBlue LightBlue
    PaleGreen Thistle PowderBlue PaleGoldenrod PaleTurquoise LightGray Wheat NavajoWhite
    Moccasin LightPink Gainsboro PeachPuff Pink Bisque LightGoldenrod BlanchedAlmond
    LemonChiffon Beige AntiqueWhite PapayaWhip Cornsilk LightYellow LightCyan Linen
    Lavender MistyRose OldLace WhiteSmoke Seashell Ivory Honeydew AliceBlue
    LavenderBlush MintCream Snow White

В памяти компьютера значения констант и переменных типа color занимают 4 байта. Пример использования такой переменной в программе:

color Paint_1 = C'128,128,128';       
color Colo = C'0x00,0x00,0xFF';
color BMP_4 = C'0xFF,0x33,0x00'

color K_12 = 0xFF3300;
color N_3 = 0x008000;
color Color = 16777215;
color Alfa = 32768;

color A = Red;
color B = Yellow;
color Colorit = Black;
color B_21 = White;

Тип datetime

Значение типа datetime — это значение даты и времени.

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

Константа обрамляется одинарными кавычками и начинается с символа D. Допускается использование усечённого значения: либо без даты, либо без времени, либо пустое значение. Диапазон изменения значений: от 1 января 1970 года до 31 декабря 2037 года. В памяти компьютера значения констант и переменных типа datetime занимают 4 байта. Значение представляет собой количество секунд, прошедших с 00:00 1 января 1970 года.

Пример использования в программе переменной типа datetime:

datetime Alfa    = D'2004.01.01 00:00';       
datetime Tim = D'01.01.2004';
datetime Tims = D'2005.05.12 16:30:45';
datetime N_3 = D'12.05.2005 16:30:45';
datetime Compile = D'';

Объявление и инициализация переменных

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

Объявление переменной — это первое упоминание переменной в программе. При объявлении переменной указывается её тип.

Инициализация переменной — это присвоение ей при её объявлении значения, соответствующего её типу. Любая переменная может быть инициализирована. Если явно не задано никакое начальное значение, то численная переменная инициализируется нулем (0), а переменная строкового типа инициализируется пустой строкой.


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

Объявление переменной может осуществляться в отдельной строке:

   int Var_1;                 

Эта запись означает, что будет использоваться переменная Var_1 (собственно объявление переменной) и тип этой переменной — int.

Допускается объявление в одной строке нескольких переменных одного типа:

   int Var_1, Box, Comm; 

Эта запись означает, что будут использоваться переменные Var_1, Box и Comm и тип этих переменных — int, то есть перечисленные переменные будут учтены программой как переменные целого типа.

Допускается инициализация переменных в рамках операторов:

   double Var_5 = 3.7;

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

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

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

Примеры объявления и инициализации переменных

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

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


Рис. 12. Примеры объявления переменных в отдельной строке.

Объявление типа переменных производится один раз при первом упоминании переменной. При втором и последующих упоминаниях переменной её тип не указывается.


Рис. 13. Примеры объявления переменных в отдельной строке.

Допускаются объявление и инициализация переменных в операторах.


Рис. 14. Примеры инициализации переменных.


Рис. 15. Инициализация переменной в заголовке составного оператора.

Pascal. Урок 2. Типы переменных | Учи Урок информатики

Основано на справочной системе pascalABC.net

Перед прочтением рекормедуется ознакомиться со статьей АЛГОРИТМ. Урок 3. Величины, переменные, константы.

а так же предыдущим уроком серии Pascal

Объявление переменных в Pascal

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

Раздел описания переменных начинается со служебного слова var, после которого следуют элементы описания вида

список имен: тип;

или

имя: тип := выражение;

или

имя := выражение;

Имена в списке перечисляются через запятую. Например:


1
2
3
4
5
6

var
  a,b,c: integer;
  d: real := 3.7;
  s := 'Pascal forever';
  al := new ArrayList;
  p1 := 1;

В последних трех случаях тип переменной определяется по типу правой части.

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


1
2
3
4
5

begin
  var a1,a2,a3: integer;
  var s := ''; 
  ...
end.

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

Основные типы данных в Pascal
  • integer — целочисленный тип данных.
  • real — тип данных с плавающей запятой.
  • double — тип данных с плавающей запятой.
  • string — символьный тип данных.
  • char — символьный тип данных.
  • boolean — логический тип данных.



















Тип байт Диапазон принимаемых значений
целочисленный (логический) тип данных
boolean 1 0   /   255
целочисленный (символьный) тип данных
char 2 0   /   255
string последовательность переменных типа char
 целочисленные типы данных
shortint

-128    /    127
smalint 2 -32 768    /    32 767
word 2 0  /  65 535
integer, longint 4 -2 147 483 648   /   2 147 483 647
longword, cardinal 4 0     /     4 294 967 295
int64 4 -9223372036854775808    /    9223372036854775807
uint64 4 0     /     18446744073709551615
типы данных с плавающей точкой
single 4 -2 147 483 648.0  / 2 147 483 647.0
real 8 -9 223 372 036 854 775 808 .0   /   9 223 372 036 854 775 807.0
double 8 -9 223 372 036 854 775 808 .0   /   9 223 372 036 854 775 807.0

Пожалуйста, оцените статью

4.18 из 5. (Всего голосов:266)

Все статьи раздела

Типы данных для параметров инструментов геообработки—Справка

Геообработка построена на концепции типов данных. Каждый параметр инструмента имеет связанный с ним тип данных, который задает содержание переменной. Некоторые простые типы данных: строка (любой набор букв и цифр), булево (значение true/false) и длинное целое число (целочисленное значение от -2,147,483,648 до 2,147,483,647). В дополнение к этим простым типам данных существуют десятки других типов данных, разработанных специально для ArcGIS, такие как поля, система координат и экстент.

Описание каждого типа данных можно найти в Geoprocessing_data_types.pdf. Если эта ссылка не работает, вы можете найти этот документ (Geoprocessing_data_types.pdf) в папке \arcgis\Documentation, в директории инсталляции ArcGIS for Desktop.

Для просмотра этого документа понадобится Adobe Reader, который можно бесплатно скачать с сайта http://www.adobe.com/products/acrobat/readstep.html.

Где необходимы типы данных?

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

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

Определение типа данных параметра

Существует несколько способов определения типа данных параметра:

  • В справке инструмента, в разделе синтаксиса имеется таблица с описанием каждого параметра и его типа данных.
  • В ModelBuilder, при создании переменной из параметра инструмента. Щелкните переменную правой кнопкой мыши, выберите Свойства (Properties), затем перейдите на закладку Тип данных (Data Type). Тип данных указан в верхней части диалогового окна.
  • Создайте отчет модели в ModelBuilder. В отчете будут указаны все типы данных для всех параметров.

Синтаксис строки

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

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

  1. Найдите инструмент, который использует этот тип данных.
  2. Запустите инструмент, используя его диалоговое окно.
  3. В окне Результаты (Results) щелкните полученный результат правой кнопкой мыши и выберите Копировать как Python Snippet (Copy as Python snippet). Теперь можно вставить этот фрагмент в любой текстовой редактор (или в окно Python) и изучить строковые значения всех параметров.

Типы данных и объекты скриптов

Синтаксис строки некоторых типов данных слишком сложен для использования в скрипте. Например, ниже показан текст строки типа данных пространственной привязки, который задает систему координат Eckert IV:

PROJCS['World_Eckert_IV',
GEOGCS['GCS_WGS_1984',
DATUM['D_WGS_1984',
SPHEROID['WGS_1984',6378137.0,298.257223563]],
PRIMEM['Greenwich',0.0],
UNIT['Degree',0.0174532925199433]],
PROJECTION['Eckert_IV'],
PARAMETER['False_Easting',0.0],
PARAMETER['False_Northing',0.0],
PARAMETER['Central_Meridian',0.0],
UNIT['Meter',1.0]]

Для типов данных со сложными строками, arcpy использует классы с методами и свойствами, которые позволяют легко создавать и изменять типы данных. Например, см. класс SpatialReference.

Отзыв по этому разделу?

Типы данных

Все типы данных в языка C# являются производными базового класса Object, и, таким образом, наследуют все его члены. Описание класса Object содержится в пространстве имен System. Класс Object обладает статическими методами:

  • Equals(Object, Object) проверяет равенство двух указанных экземпляров объектов, возвращает логическое значение.
  • ReferenceEquals(Object, Object) проверяет, являются ли переданные объекты одним и тем же объектом, возвращает логическое значение.


К нестатическим методам класса Object относятся

  • Equals(Object) – вызывается для конкретного экземпляра и проверяет равенство этого экземпляра объекту, переданному в качестве аргумента, возвращает логическое значение.
  • Finalize() – пытается освободить ресурсы памяти, занимаемые объектом.
  • GetHashCode() – генерирует хэш-код для объекта.
  • GetType() – возвращает тип текущего объекта.
  • MemberwiseClone() – создает еще один объект того же типа и копирует в него все данные нестатических полей текущего объекта.
  • ToString() – преобразует объект к строковому представлению.

Все типы данных C#, унаследованные от класса Object, можно разделить на:

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

Другое деление типов данных на

  • Базовые, или встроенные – это типы данных, которые содержатся в стандарте языка. К ним относятся простые базовые типы, а также строковый тип string.
  • Библиотечные – это типы, которые содержатся в библиотеках, обычно .NET Framework. Чтобы использовать библиотечные типы данных необходимо знать их поля и методы, а также пространство имен, в котором они описаны.
  • Пользовательские – определенные программистом.

В таблице перечислены встроенные типы языка C#, их размер и диапазон представления.

Тип данных Псевдоним
.NET Framework
Размер, байт Диапазон
byte System.Byte 1 -128…127
sbyte System.SByte 1 0…255
short System.Int16 2 -32768…32767
ushort System.UInt16 2 0…65535
int System.Int32 4 2 147 483 648 … 2 147 483 647
uint System.UInt32 4 0 … 4 294 967 295
long System.Int64 8 -9 223 372 036 854 775 808 …
9 223 372 036 854 775 807
ulong System.UInt64 8 0 … 18 446 744 073 709 551 615
bool System.Boolean 1 True, False
float System.Single 4 ±1,5×10−45 … ±3,4 × 1038
double System.Double 8 ±1,5×10−45 … ±3,4 × 1038
decimal System.Decimal 16 ±1,0×10−28 … ±7,9 × 1028
char System.Char 2 Символ Юникода
string System.String Строка символов Юникода

Все перечисленные типы, за исключением string, являются простыми.

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

Для объявления переменных используется следующий синтаксис.
Без инициализации

С инициализацией

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

Если переменная объявлена без инициализации, ей присваивается значение по умолчанию, равное 0.

Целочисленные данные

Встроенные типы данных языка C# включают 1-байтное, 2-байтное, 4-байтное и 8-байтное представление целочисленных данных в знаковой и беззнаковой форме.

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

Пример объявления целочисленных переменных:

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

Логические данные

Логические данные представлены логическим типом bool. Несмотря на то, что данные логического типа могут принимать только одно из двух значений True или False, объем памяти, отводимый для хранения логических переменных составляет 1 байт.

Вещественные данные


Представление вещественных данных представляет собой диапазон, симметричный относительно нуля.
При выполнении операций с плавающей точкой не создаются исключения, а в исключительных ситуациях возвращается 0 (в случае слишком маленького значения), бесконечность PositiveInfinity (в случае большого положительного значения) или NegativeInfinity (в случае большого по величине отрицательного значения) или нечисловое значение (NaN) если операция с плавающей точкой является недопустимой.
Для инициализации вещественных чисел могут использоваться константы. Вещественное число состоит из знака, целой части, дробной части и порядка числа. В качестве разделителя целой и дробной части в тексте программы используется точка. Порядок числа представляет собой степень 10, на которую следует умножить значащую часть вещественного числа.
Примеры объявления вещественных констант

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

По умолчанию все вещественные константы имеют тип double. Если последним символом константы указан суффикс f или F, константа имеет тип float. Если последним символом константы указан суффикс m или M, константа имеет тип decimal.

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

Тип decimal обладает более точным и узким диапазоном по сравнению с типами float и double, и поэтому больше подходит для использования в финансовых расчетах.

Символьные данные


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

Все символьные представления констант заключаются в апострофы ».

Строковые данные

Несмотря на то, что строковый тип данных не является простым, он является встроенным типом языка C#. Строковый тип данных string позволяет создавать строки любой длины, для инициализации которых используется последовательность символов, заключенная в кавычки «…».
Тип данных string также содержит ряд методов для обработки строковых данных.

Закрепить использование базовых типов данных Вы можете в разделе Типы данных
курса Алгоритмика

Автор: Вставская Елена Владимировна

 
Написать комментарий:

типов переменных | Определения и простые примеры

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

Пример

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

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

Обычно тип переменной можно определить, задав два вопроса:

  1. Какой тип данных содержит переменная?
  2. Какую часть эксперимента представляет переменная?

Типы данных: количественные и категориальные переменные

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

  • Количественные данные представляют собой суммы.
  • Категориальные данные представляют группировки.

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

Количественные переменные

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

Дискретные и непрерывные переменные
Тип переменной Что представляют собой данные? Примеры
Дискретные переменные (также известные как целочисленные переменные) Подсчет отдельных предметов или ценностей.
  • Количество учеников в классе
  • Количество различных пород деревьев в лесу
Непрерывные переменные (также известные как переменные отношения) Измерения непрерывных или нескончаемых значений.

Категориальные переменные

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

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

Двоичные, номинальные и порядковые переменные
Тип переменной Что представляют собой данные? Примеры
Двоичные переменные (также известные как дихотомические переменные) Да / нет исходов.
  • Орла / решка в подбрасывании монеты
  • Победа / поражение в футбольном матче
Номинальные переменные Группы без ранга или порядка между ними.
  • Названия видов
  • Цвета
  • Бренды
Порядковые переменные Группы, ранжированные в определенном порядке.
  • Место финиша в гонке
  • Рейтинговая шкала ответов в опросе *

* Обратите внимание, что иногда переменная может работать с более чем одним типом! Порядковая переменная также может использоваться в качестве количественной переменной, если шкала является числовой, и ее не нужно хранить как дискретные целые числа.Например, рейтинг в отзывах о товарах порядковый (от 1 до 5), а средний рейтинг — количественный.

Типовой лист данных

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

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

Части эксперимента: независимые и зависимые переменные

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

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

У вас, вероятно, также будут переменные, которые вы будете поддерживать постоянными ( контрольных переменных ), чтобы сосредоточиться на вашем экспериментальном лечении.

Независимые vs зависимые vs контрольные переменные
Тип переменной Определение Пример (эксперимент по солеустойчивости)
Независимые переменные (также известные как переменные лечения) Переменные, которыми вы управляете, чтобы повлиять на результат эксперимента. Количество соли, добавленной в воду каждого растения.
Зависимые переменные (также известные как переменные ответа) Переменные, представляющие результат эксперимента. Любое измерение здоровья и роста растений: в данном случае высоты и увядания растений.
Управляющие переменные Переменные, которые остаются постоянными на протяжении всего эксперимента. Температура и свет в помещении, в котором содержатся растения, а также объем воды, подаваемый каждому растению.

Типовой лист данных

В этом эксперименте у нас есть одна независимая и три зависимые переменные.

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

А как насчет корреляционного исследования?

Когда вы проводите корреляционное исследование, термины «зависимый» и «независимый» неприменимы, потому что вы не пытаетесь установить причинно-следственную связь.

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

Получение отзывов о языке, структуре и макете

Профессиональные редакторы корректируют и редактируют вашу статью, уделяя особое внимание:

  • Академический
  • Расплывчатые предложения
  • Грамматика
  • Единообразие стиля

См. Пример

Другие распространенные типы переменных

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

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

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

Часто задаваемые вопросы о переменных

Что такое независимые и зависимые переменные?

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

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

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

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

Что такое мешающая переменная?

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

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

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

В чем разница между количественными и категориальными переменными?

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

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

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

Что такое типы данных и почему они важны?

Введение

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

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

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

Прежде чем перейти к важности типов данных, давайте взглянем на некоторые из распространенных типов данных.

Общие типы данных

Целое число (целое)

Это наиболее распространенный числовой тип данных, используемый для хранения чисел без дробной части (-707, 0, 707).

с плавающей точкой (с плавающей запятой)

Это также числовой тип данных, используемый для хранения чисел, которые могут иметь дробный компонент, например, денежные значения (707.07, 0.7, 707.00).

Обратите внимание, что число часто используется как тип данных, который включает в себя типы int и float .

Знак (симв.)

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

Строка (строка или текст)

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

Телефонный номер обычно сохраняется в виде строки (+ 1-999-666-3333), но может также храниться как целое число (9996663333).

логическое (bool)

Он представляет собой значения истинных, и ложных. При работе с логическим типом данных полезно иметь в виду, что иногда логическое значение также представляется как 0 (для ложного) и 1 (для истинного).

Перечислимый тип (enum)

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

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

Например, если перечислителями являются rock и jazz , переменной перечисляемого типа жанра может быть присвоено одно из двух значений , , но не оба одновременно.

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

При использовании перечислимого типа значения можно сохранять и извлекать как числовые индексы (0, 1, 2) или строки.

Массив

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

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

Каждый элемент массива может быть получен с использованием целочисленного индекса (0, 1, 2,…), а общее количество элементов в массиве представляет длину массива.

Например, переменная массива жанра может хранить один или несколько элементов рок , джаз , и блюз . Индексы трех значений: 0 (рок), 1 (джаз) и 2 (блюз), а длина массива равна 3 (поскольку он содержит три элемента).

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

Дата

Не требует объяснения; обычно хранит дату в формате ГГГГ-ММ-ДД (синтаксис ISO 8601).

Время

Сохраняет время в формате чч: мм: сс . Помимо времени суток, его также можно использовать для хранения прошедшего времени или временного интервала между двумя событиями, который может составлять более 24 часов. Например, время, прошедшее с момента события, может составлять 72+ часа (72:00:59).

Дата и время

Сохраняет значение, содержащее дату и время вместе в формате ГГГГ-ММ-ДД чч: мм: сс .

Отметка времени

Обычно представленная во времени Unix, временная метка представляет собой секунд, прошедших секунд с полуночи (00:00:00 UTC) 1 января 1970 года.

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

Если задуматься, у каждого из нас есть отметка времени — введите дату и время своего рождения здесь, чтобы увидеть свои собственные.

Пример и резюме

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

Хороший способ подумать о типах данных — это когда вы сталкиваетесь с какой-либо формой или опросом.

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

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

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

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

Форма регистрации в Facebook

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

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

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

Теперь давайте посмотрим на важность типов данных.

Важность типов данных

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

Ваши знания о типах данных пригодятся на двух этапах сбора данных, как описано ниже.

Приборы

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

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

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

Обзоры

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

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

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

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

С предопределенными вариантами, анализ прост и не затрагивается, даже если вы измените выбор на более позднем этапе (см. Типы данных enum и array).

Заключение

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

типов переменных — Учебные пособия по SPSS

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

Информация о типе каждой переменной отображается на вкладке Variable View .В столбце «Тип» просто щелкните ячейку, связанную с интересующей переменной. Появится синяя кнопка «…».

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

Два общих типа переменных, которые вы, вероятно, увидите, — это числовая и строка .

Числовой

Числовые переменные, как и следовало ожидать, имеют значения данных, которые распознаются как числа.Это означает, что их можно сортировать численно или вводить в арифметические вычисления. При просмотре в окне просмотра данных системные пропущенные значения для числовых переменных отображаются в виде точки (т. Е. «.»). (Обратите внимание, что не следует вводить символ точки в ячейке, чтобы указать отсутствующее значение. Просто оставьте ячейку пустой, и SPSS распознает ее как системную отсутствующую.)

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

Все следующие примеры переменных, которые могут быть введены как числовые переменные в набор данных SPSS:

Пример: Непрерывные переменные, которые могут принимать любое число в диапазоне (например, рост в сантиметрах и вес в килограммах), следует рассматривать как числовые переменные. Исследователь может выбрать столько десятичных знаков, сколько считает необходимым.В этой ситуации параметр Measure должен быть определен как Scale ; см. руководство «Определение переменных» для получения дополнительной информации о том, как устанавливать уровни измерения. Этот конкретный тип числовой переменной подходит для использования в арифметических операциях (сложение, вычитание, умножение, деление).

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

Пример: Номинальные категориальные переменные, которые были закодированы численно (например, записывая пол субъекта как 1, если мужчина, или 2, если женщина), следует рассматривать как числовые переменные с нулевыми десятичными знаками.В этой ситуации параметр Measure должен быть определен как Nominal . Этот тип числовой переменной никогда не должен использоваться в математических вычислениях или в каких-либо статистических процедурах, требующих непрерывных числовых переменных (например, зависимая переменная линейной регрессии).

Пример: Порядковые категориальные переменные, закодированные численно (например, элемент анкеты с ответами 1 = Маленький, 2 = Средний, 3 = Большой), следует рассматривать как числовые переменные с нулевым десятичным знаком.В этой ситуации числовые коды позволяют нам правильно передать, что Large значимо «больше» Small ; однако небезопасно предполагать, что «расстояние» между Large и Medium такое же, как «расстояние» между Medium и Small . (Это потому, что наш выбор числовых кодов является произвольным и не привязан к какому-либо физическому значению.) В этой ситуации параметр Measure должен быть определен как Порядковый номер .Этот тип числовой переменной никогда не должен использоваться в какой-либо статистической процедуре, требующей непрерывных числовых переменных (например, зависимая переменная линейной регрессии), и в большинстве ситуаций нецелесообразно использовать порядковые переменные в математических вычислениях, хотя есть некоторые заметные исключения. . (Одним из таких примеров является вычисление сводной оценки для утвержденного инструмента исследования путем суммирования или усреднения составляющих его пунктов Лайкерта, хотя это не без противоречий.)

Строка

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

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

Пример: Любой письменный текст считается строковой переменной, включая бесплатные ответы на вопросы опроса.


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

запятая

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

Пример: Тридцать с половиной тысяч: 30 000,50

Пример: Один миллион двести тридцать четыре тысячи пятьсот шестьдесят семь восемьдесят девять сотых: 1 234 567.89

точка

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

Пример: Тридцать с половиной тысяч: 30.000,50

Пример: Один миллион двести тридцать четыре тысячи пятьсот шестьдесят семь и восемьдесят девять сотых: 1.234.567,89

Примечание относительно записи через запятую и точки: Запись через запятую является стандартной в США.В руководстве Oracle International Language Environments Guide приводится список стран и тип записи в каждой из них.

Научная запись

Числовые переменные, значения которых отображаются с E и степенью десяти. Экспонентам может предшествовать буква E или D со знаком или без него, либо только со знаком (без E или D). SPSS распознает эти значения как числовые, с показателем степени или без него.

Пример: 1.23E2, 1.23D2, 1.23E + 2, 1.23 + 2.

Дата

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

Пример: Даты: 31.01.2013, 31.01.2013

Пример: Время: 01: 02: 33.7

Доллар

Числовые переменные, содержащие знак доллара (т. Е., $) перед числами. Для разделения каждых трех знаков можно использовать запятые, а для разделения десятичных знаков можно использовать точку.

Пример: Тридцать три тысячи долларов тридцать три цента: 33000 долларов.33

Пример: Один миллион долларов и двенадцать целых три цента: 1000000 долларов 123

Пользовательская валюта

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

Запрещенный номер

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

Пример: 00000123456 (ширина 11)

10 типов переменных в исследованиях и статистике

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

Что такое переменные?

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

Связанные: Типы исследований (с определениями, примерами, преимуществами и недостатками)

Типы переменных

Исследователи объединяют переменные в различные категории, наиболее распространенными из которых являются:

Независимые переменные

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

Связано: Как стать исследователем

Зависимые переменные

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

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

Промежуточные переменные

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

Модерирующие переменные

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

Управляющие переменные

Управляющие или управляющие переменные — это характеристики, которые постоянны и не изменяются во время исследования. Они не влияют на другие переменные. Исследователи могут намеренно сохранять одну и ту же контрольную переменную на протяжении всего эксперимента, чтобы предотвратить систематическую ошибку. Например, в эксперименте по развитию растений контрольные переменные могут включать количество удобрений и воды, получаемые каждым растением. Эти количества всегда одинаковы, поэтому они не влияют на рост растений.

Посторонние переменные

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

Количественные переменные

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

  • Дискретные: Любые числовые переменные, которые вы можете реально подсчитать, например монеты в кошельке или деньги на сберегательном счете.
  • Непрерывный: Числовые переменные, счет которых невозможно завершить, например, время.

Качественные переменные

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

  • Двоичные: Переменные только с двумя категориями, такими как мужские или женские, красные или синие.
  • Номинал: Переменные, которые можно разделить более чем на две категории, которые не соответствуют определенному порядку.Возьмем, к примеру, типы жилья: односемейный дом, кондоминиум, крошечный дом.
  • Порядковый номер: Переменные, которые можно упорядочить по более чем двум категориям, которые следуют определенному порядку. Возьмем, к примеру, уровень удовлетворенности: неудовлетворен, нейтрален, удовлетворен.

Смешивающие переменные

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

Составные переменные

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

Связанный: Типы исследований: определения и примеры

Часто задаваемые вопросы о переменных

Часто задаваемые вопросы о переменных включают:

Сколько переменных находится в эксперименте?

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

Как вы контролируете смешивающие переменные?

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

  • Корректировка: Отрегулируйте параметры исследования, чтобы учесть смешивающую переменную и минимизировать ее влияние.
  • Соответствие: Сравните исследуемые группы с одинаковой степенью искажения переменных.
  • Многомерный анализ: Используется при одновременном анализе нескольких переменных.
  • Рандомизация: Равномерно распределите смешивающие переменные между исследовательскими группами.
  • Ограничение: Удалите предметы или образцы, у которых есть смешивающие факторы.
  • Стратификация: Создайте подгруппы исследования, в которых смешивающая переменная не меняется или сильно варьируется.

Что такое экспериментальный дизайн?

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

Как спланировать эксперимент?

При разработке эксперимента вы должны:

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

Типы данных | STEMRobotics

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

логическое хранит только идею «истинно» или «ложно»
внутренний хранит целое число со знаком размером 32 бита размером
короткий хранит целое число со знаком размером 16 бит размером
длинный

хранит целое число со знаком размером 64 бита размером

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

Примитивные типы данных содержат простое числовое значение соответствующего типа.Выбор типа данных зависит от типа данных, которые вы хотите сохранить в переменной, а также от их числового диапазона или размера. Примитивные типы по умолчанию имеют нулевое значение (false для логического), если они не инициализированы при создании. Помимо определения типа данных, которые может содержать переменная, тип также определяет объем памяти, выделенный для переменной. Обычно в робототехнике мы используем только int, double, float и boolean. Примитивные типы могут использоваться в математических операциях, так как примитивы являются в основном числами.

Как видите, типы данных, для которых могут использоваться разные примитивы, имеют некоторое повторение.В общем, int будет работать для большинства задач, которые у нас есть, работая с целыми числами, а double — для любых десятичных операций. Можно выполнять почти все программы без использования данных разного размера. Напомним, что при создании переменной Java использует тип, чтобы решить, насколько большим должно быть место для хранения в памяти. Это должно иметь смысл, если вы попытаетесь взять часть данных, хранящихся в длинном типе, и поместить ее в переменную с типом int, возникнет ошибка. То же самое касается любого несоответствия ограничений по размеру различных примитивов.

Компилятор Java и JVM будут следить за несоответствием типов, то есть пытаться поместить несовместимое значение в переменную, например, пытаясь установить для int значение типа double, например: int x = 3.2; Компилятор отметит это как ошибку, и во время выполнения это приведет к исключению (ошибке времени выполнения).

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

Типы справочных данных содержат ссылки или указателей на более сложные данные, такие как объекты. Мы узнаем больше об объектах и ​​ссылочных типах данных чуть позже. По умолчанию ссылочные переменные используют специальное значение Java, называемое null , если они не инициализированы. Для ссылочных переменных, которые должны указывать на более сложный объект данных, null означает, что переменная ни на что не указывает. Обычно вы не можете использовать ссылочную переменную в математическом выражении, поскольку объекты обычно не являются отдельными числами.

Строки символов (текст) хранятся в специальном объекте, действующем как примитивный и ссылочный тип данных. Строка содержит список символов и может рассматриваться как примитивный тип данных в том смысле, что Java поддерживает добавление двух строк вместе, что объединяет их в новую единую строку. Строки также поддерживают методы, которые можно вызывать для выполнения операций со строкой символов, содержащейся в строке. Перейдите сюда и здесь для подробного обсуждения строк.Обратите внимание, что переменная String может ни на что не указывать, то есть она не инициализирована или null . Переменная String также может указывать на фактический строковый объект, который не содержит символов, который называется пустой строкой или строкой нулевой длины. Нулевой и пустой не означают одно и то же.

типов переменных — TI-Basic Developer

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

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

В калькуляторе доступно несколько различных типов переменных, но четыре основные переменные, которые вы будете использовать, — это числовые переменные, списки, матрицы и строки.Числовые переменные используются для хранения одного числа. Списки используются для хранения набора номеров. Матрицы используются для хранения чисел в двумерном формате. И строки используются для хранения текста.

В переменных хранятся значения, которые можно вызвать для дальнейшего использования. При сохранении выражения, содержащего переменную, в другую переменную, используется текущее значение переменной. Команда store (→) используется для сохранения переменных, доступ к ней осуществляется нажатием клавиши [STO►].При сохранении значения в переменной у вас есть значение в левой части команды сохранения и переменная, в которой оно будет сохранено, в правой части.

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

Числовые переменные используются для хранения чисел. Существует 27 числовых переменных (от A до Z и θ), к которым можно легко получить доступ, и многие другие, которые калькулятор использует для своих конкретных целей.

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

Чтобы получить доступ к реальной переменной, нажмите АЛЬФА, а затем клавишу, соответствующую любой букве, которую вы хотите, чтобы ваша переменная была. Вы можете инициализировать реальную переменную, сохранив число, другую переменную или выражение в переменной, используя ключ STO (или, просто используя его почти в любом месте, он инициализируется до 0).

Переменные флага

Flag Variables — это числовая переменная, которая используется для конкретной цели управления ходом выполнения программы. Обычно они содержат только значение 1 или 0 и иногда описываются как двоичные или логические переменные.

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

Списки используются для одновременного хранения нескольких номеров в определенном порядке. Существует шесть списков «по умолчанию» с именами от L 1 до L 6 , но важной особенностью списков является то, что им можно давать имена, так что существуют миллионы возможных списков. Списки важны для программистов для многих целей — сохранение данных после завершения работы программы и сохранение уровня игры — это только два из них.

(для получения дополнительной информации см. Списки и их команды)

Матрицы — это двумерные списки (строка за столбцом).Эквивалентны спискам, они используются, когда данные требуют большей структуры. Матрицы часто используются для хранения уровня или карты экрана. Доступно только десять матриц (от [A] до [J]).

(подробнее см. Матрицы и их команды)

Строки используются для хранения последовательности символов, то есть текста. Обычно строки используются для управления текстом, отображаемым в программе, но у них много разных целей: рекорды, данные уровня и карты и все остальное, что нужно.Хотя для использования доступно только десять встроенных строковых переменных (от Str0 до Str9), строки могут содержать множество различных типов символов, включая буквы (как в верхнем, так и в нижнем регистре), числа, функции и даже другие команды. Объем свободной оперативной памяти — это единственное ограничение на количество символов в строке.

(для получения дополнительной информации см. Строки и их команды)

Переменные изображения и GDB (сокращение от Graph DataBase) используются для сохранения двух различных элементов текущего отображения графика.Переменная изображения используется для сохранения точного внешнего вида экрана графика. GDB используется для хранения системных переменных, относящихся к экрану графика — уравнений, настроек окна и т.п. Существует 10 встроенных переменных каждого типа: от Pic0 до Pic9 для изображений и от GDB0 до GDB9 для GDB.

(подробнее см. Рисунки и GDB)

Системные переменные для целей данного руководства — это переменные, которые определенные команды будут использовать или изменять без запроса (т. Е. Без указания их в аргументах команды).Это несколько плохо определенная категория, и на самом деле системные переменные, которые мы обсудим, имеют несколько разный характер. Они включают переменные уравнения и графика, параметры окна и таблицы, статистические переменные и финансовые переменные.

(для получения дополнительной информации см. Системные переменные)

Между списками и матрицами

Команды List►matr (и Matr►list () используются для преобразования между матрицей и несколькими списками. Используя эти команды, должно быть просто реализовать любое преобразование между этими двумя типами данных.

Между строками и числами

Очень просто преобразовать строковую версию выражения в число, список или матрицу: это может сделать команда expr (- например, expr («5″) даст вам число 5, а expr (» {1,2,3} «) предоставит вам список {1 2 3}.

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

На калькуляторах TI-83 + / 84 + / SE можно архивировать и разархивировать переменные. При этом калькулятор перемещает переменную в архивную память или калькулятор перемещает переменную в оперативную память соответственно. Основное преимущество архивирования переменной заключается в том, что она защищена от сбоев калькулятора, которые очищают оперативную память калькулятора. В то же время вы не можете получить доступ к переменной, которая находится в архиве; он должен быть в ОЗУ, чтобы использовать его.

 : Архив L1
: UnArchive Str1 
 

При использовании Archive и UnArchive необходимо помнить о нескольких вещах. Во-первых, поскольку TI-83 имеет только ОЗУ, архивирование невозможно, и, следовательно, ни одна из этих команд недоступна. Это означает, что вам не следует использовать ни одну из этих команд, если вы планируете переносить программу на TI-83. Во-вторых, архивирование не работает с большинством системных переменных, включая графические, статистические и финансовые переменные.Однако вы можете заархивировать другие типы переменных, хотя на самом деле с переменными списка можно более легко управлять с помощью команды SetUpEditor.

Сводка по типу данных

— Visual Basic

  • 3 минуты на чтение

В этой статье

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

С

С

Тип Visual Basic Структура типов общеязыковой среды выполнения Номинальное выделение памяти Диапазон значений
логическое значение логический Зависит от реализации платформы Верно или Неверно
Байт байт 1 байт от 0 до 255 (без знака)
Символьный (односимвольный) Char 2 байта от 0 до 65 535 (без знака)
Дата Дата и время 8 байт 0:00:00 (полночь) 1 января 0001 г. до 23:59:59 31 декабря 9999 г.
Десятичный Десятичное 16 байт 0 через +/- 79,228,162,514,264,337,593,543,950,335 (+/- 7.9 … E + 28) без десятичной точки; От 0 до +/- 7.9228162514264337593543950335 с 28 знаками справа от десятичной дроби;

наименьшее ненулевое число: +/- 0,0000000000000000000000000001 (+/- 1E-28)

Двойная (с плавающей запятой двойной точности) Двойной 8 байт -1,79769313486231570E + 308 до -4,94065645841246544E-324 для отрицательных значений;

4.94065645841246544E-324 через 1.79769313486231570E + 308 для положительных значений

Целое число Int32 4 байта -2 147 483 648 до 2 147 483 647 (подписанные)
Длинное целое число Int64 8 байт -9 223 372 036 854 775 808 через 9 223 372 036 854 775 807 (9.2 … E + 18 ) (подпись)
Объект Объект (класс) 4 байта на 32-битной платформе

8 байтов на 64-битной платформе

Любой тип может быть сохранен в переменной типа Объект
МБайт МБайт 1 байт -128 через 127 (подписанные)
Короткое (целое короткое) Int16 2 байта -32768-32767 (подписанные)
Одиночный (с плавающей запятой одинарной точности) Одноместный 4 байта -3.От 4028235E + 38 до -1.401298E-45 для отрицательных значений;

1.401298E-45 — 3.4028235E + 38 для положительных значений

Строка (переменной длины) Строка (класс) Зависит от реализации платформы 0 до примерно 2 миллиардов символов Unicode
UInteger UInt32 4 байта 0–4 294 967 295 (без знака)
ULong UInt64 8 байт 0 по 18 446 744 073 709 551 615 (1.8 … E + 19 ) (без знака)
Определяется пользователем (структура) (наследуется от ValueType) Зависит от реализации платформы Каждый член структуры имеет диапазон, определяемый его типом данных и не зависящий от диапазонов других членов
UShort UInt16 2 байта от 0 до 65 535 (без знака)

В научном представлении буква «E» означает степень 10.Таким образом, 3,56E + 2 означает 3,56 x 10 2 или 356, а 3,56E-2 означает 3,56 / 10 2 или 0,0356.

Примечание

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

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

Потребление памяти

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

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

  • Ширина платформы. Назначение хранилища на 64-битной платформе отличается от назначения на 32-битной платформе.

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

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

  • Накладные расходы. Для некоторых составных типов требуется дополнительная память.Например, массив использует дополнительную память для самого массива, а также для каждого измерения. На 32-битной платформе эти накладные расходы в настоящее время составляют 12 байтов плюс 8 байтов для каждого измерения. На 64-битной платформе это требование удваивается.

  • Схема хранения. Вы не можете с уверенностью предполагать, что порядок хранения в памяти такой же, как ваш порядок объявления. Вы даже не можете делать предположения о выравнивании байтов, например о 2-байтовой или 4-байтовой границе. Если вы определяете класс или структуру и вам необходимо управлять компоновкой хранилища его членов, вы можете применить атрибут StructLayoutAttribute к классу или структуре.

Объект Накладные расходы

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

См. Также

.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *