Направо към съдържанието

Тип данни

от Уикипедия, свободната енциклопедия
(пренасочване от Типове данни)
Йерархия на стандартните типове данни в Python версия 3

Типът на данните (на английски: data type) е концепция в езиците за програмиране, с която се описва видът на променливата, какви стойности може да приема, както и множеството от операции, които могат да се прилагат върху нея. Типът е вид класификация на данните, която указва на компилатора или интерпретатора как програмистът има намерение да използва данните. Например процесът на събиране на две променливи, както и резултатът от събирането варират в зависимост от типа данни: цели числа, числа с плаваща запетая, низове.[1]

Типовете данни представляват множества (диапазони) от стойности, които имат еднакви характеристики:

  • име на типа (byte, int, string, int[], List.
  • размер (колко памет заемат) – например 32 байта.
  • стойност по подразбиране (default value).

Никлаус Вирт (създателят на Паскал) класифицира типовете данни, като:

  • Прости (скаларни)
 – Дискретни;
 – Аналогови;
 – Указатели.
  • Структурни (структури).

Вградени (примитивни) типове

[редактиране | редактиране на кода]

Примитивните типове данни (built-in types) са основните типове в един език за програмиране. Те са вградени в него на най-ниско ниво и за тях има вградена поддръжка в езика. В повечето езици за програмиране всички базови типове са вградени. Вградените типове данни се обработват от компютъра най-бързо, тъй като за работа с тях има машинни инструкции, които ги обработват директно. Повечето езици не дават възможност за модифициране на простите типове от програмистите. Комплексните типове данни се създават от основните типове.

Съответствие на типовете в различните езици и в .NET Framework

[редактиране | редактиране на кода]

Примитивните типове данни в различните езици имат директно съответствие с типове от общата система от типове (CTS) от .NET Framework. Благодарение на това, може да има и съвместимост между езиците за програмиране.

Стойностни и референтни типове

[редактиране | редактиране на кода]

Типовете се разделят на стойностни типове – такива, които пазят данните директно в себе си, т.е. в своята стойност в стека на програмата, и референтни типове – представляват референции, указващи мястото на данните в паметта, т.е. пазят като стойност адрес, област от динамичната памет, където е записана стойността им.

Размерът при стойностните типове е предварително фиксиран. Обратното е при референтите типове – те могат да се заделят и освобождават динамично.

Стойностни типове са примитивните типове, избро­е­ните типове ( enum ) и структурите ( struct ). Всички стойностни типове са наследници на класа System.ValueType.

Референтни типове са всички наследници на System.Object, който не наследяват ValueType: класовете( class ), интерфей­сите( interface ), масивите и делегатите( delegate void ).

Можем да декларираме референтна променлива без да извършим присвояване на стойност. Тогава тя получава стойност Null. Null е специална константа, с която се обозначават референтни променливи, които не сочат към никакви данни.

object x;

Опаковане и разопаковане на типове

[редактиране | редактиране на кода]

Прехвърлянето на стойностни типове в динамичната памет и обратно се нарича опаковане, а обратното действие разопаковане. При опаковане CLR средата автоматично създава обвиващ клас (wrapper), който е референтен тип, но съдържа стойностен тип в себе си.

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

Опаковане:

int number = 5;
object numberToObject = number;

Разопаковане:

int number = 0;
number = (int) numberToObject;

Примитивни типове данни в език С# (C Sharp)

[редактиране | редактиране на кода]

Примитивни типове данни в език C Sharp са:

Име на типа Деклариране
целочислени типове sbyte, byte, short, ushort, int, uint, long, ulong
реални типове с плаваща запетая float, double
реални типове с десетична стойност decimal
булев тип bool
символен тип char
низов тип string
обектен тип object

С изключение string и object типове данни, които са референтни, всички останали Примитивни типове данни в C Sharp са стойностни.

Схематично описание на основни характеристики на Примитивни типове данни в С# (C Sharp)
Име Размер в паметта Стойност по
подразбиране
Минимална стойност Максимална стойност
sbyte 8 bits 0 -128 (-) 127 (- – 1)
byte 8 bits 0 0 255 ( – 1)
short 16 bits 0 -32 768 (- – 1) 32 767 ()
ushort 16 bits 0 0 65 535 ( – 1)
int 32 bits 0 -2 147 483 648 (-) 2 147 483 647 ( – 1)
uint 32 bits 0u или 0U 0 4 294 967 295 ( – 1)
long 64 bits 0l или 0L -9 223 372 036 854 775 808 (-) 9 223 372 036 854 775 807 ( – 1)
ulong 64 bits 0l или 0L 0 18 446 744 073 709 551 615 ( – 1)
float 32 bits 0.0f или 0.0F ±1.5 × ±3.4 ×
double 64 bits 0.0d или 0.0D ±5.0 × ±1.7 ×
decimal 128 bits 0.0m или 0.0M -7.9 × +7.9 ×
bool 4 bits false само две възможности: true или false
char 16 bits ‘\u0000′ 0 или ‘\u0000′ 65535 или ‘\uffff’
object - null - -
string - null - -

Непримитивни типове данни в език С# (C Sharp)

[редактиране | редактиране на кода]

Тези типове данни се дефинират от потребителя, като се ползват примитивни типове и вече дефинирани непримитивни типове. Има и непримитивни типове данни, които са вградени в езиците за програмиране. Такива са например: string, List<>, DateTime и др. Непримитивни типове данни се създават като класове или структури.

Класът дефинира абстрактните характеристики на даден обект. Той е план или шаблон, чрез който се описва природата на нещо.

Обектите – инстанции на класовете.

Класовете в C# съдържат:

  • Полета (fields) – член-променливи от определен тип;
  • Свойства (properties) – това са специален вид елементи, които разширяват функционалността на полетата като дават възможност за допълнителна обработка на данните при извличането и записването им в полетата от класа.
  • Методи – реализират манипулацията на данните.

Структурите в C# са много подобни на класовете. Разликата е в типа на обектите. Структурите са потребителски дефинирани стойностни типове. Когато обекта няма поведение се използва структура. Те, както и класовете, могат да съдържат полета и свойства, но не се препоръчва да съдържат методи.

Тъй като javascript се интерпретира, той има допълнително предимство да е слабо типизиран. Това означава, че не е необходимо една променлива да се декларира явно като един от вградените JavaScript типове: var c; // декларация на променлива без да се определя нейния тип;

В езика Java Script всички типове данни се декларират с променливата var. Всеки тип в Java Script има няколко на брой стойности, които може да приема и те зависят от фактори, като това на каква машина сме, дали операционната система, която се използва е 32- или 64-битова, както и какъв ни е браузърът. Променливите могат свободно да преминават от един тип в друг, т.е. една променлива може да взима всякакви стойности.

var counter = 5;
counter = "Gosho" //- това е валидно.

Простите типове данни в JavaScript са

[редактиране | редактиране на кода]
Име на типа Деклариране Особености
Числов тип var целочислен тип Integer. Стойности от -9007199254740992 до 9007199254740992; Реален тип със запетая – има неточност при смятането както и реалните типовете с плаваща запетая в С#.
Булев тип var само 2 стойности – true или false
низов тип var За ограждането на низ може да се използват както двойни, така и единични кавички
var str1 = "string";
var str2 = 'string';

Променливата var в Java Script съответства на променливата dynamic в C#.

Нямаме прехвърляне на типове: 1 + Integer Max Value = Integer Max Value.

Сложните типове данни в език JavaScript са масиви, функции и обекти

[редактиране | редактиране на кода]

Масивът спомага за съхранението на сходни данни по логически начин.

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

Всичко в JavaScript е обект. Един обект представлява съвкупност от данни и функции, които работят заедно за изпълнението на свързана задача.

В JavaScript съществуват и три специални вградени типа данни

[редактиране | редактиране на кода]

Те са null, undefined и NaN.

  • Null – Променливата няма стойност.
  • Undefined – Означава, че променливата не е била предварително дефинирана.
  • NaN – Not-a-Number се използва, за да се отбележи, че стойността не е валидно число.

Типове данни в езика за програмиране C

[редактиране | редактиране на кода]

В C съществуват няколко основни типа данни:

  • Char – един байт; може да съдържа един символ от локалната кодова таблица.
  • Int – цяло число; обикновено отразява естествената големина на целите числа на хоста.
  • Float – число с плаваща запетая и единична точност.
  • Double – число с плаваща запетая и двойна точност.

Към типа int могат да бъдат приложени определенията short и long.

Short и int числата трябва да са поне 16 бита. Short не трябва да бъде по-дълго от int. Long числата са поне 32 бита и са по-дълги от int.

Непримитивните типове в C включват указатели, масиви, структури, union тип и функции

[редактиране | редактиране на кода]
  • Указателят е променлива, която съдържа адреса на дадена променлива.
  • Масивите са поредици от наредени последователно в паметта елементи (променливи) от един и същ тип, които могат да бъдат указани поотделно, като се добави индекс към името, с което са декларирани. Деклариране на масив в C:

type arrayName [ arraySize ];

  • Структурата се използва за представяне на запис. Може да съдържа например полета за книги: име на книга, автор, заглавие, id.
  • Union е специален тип данни в C, който позволява да се съхраняват различни типове данни на една и съща позиция в паметта. Може да се дефинира union с много членове, но само един член може да има стойност в даден момент. Осигурява се ефективен начин за използване на място в паметта.

Специален тип void показва, че не е налична стойност.

  1. type // Free On-line Dictionary of Computing. Посетен на 8 декември 2017. (на английски)