Тип данни

от Уикипедия, свободната енциклопедия
Направо към: навигация, търсене

Типът на данните е концепция в езиците за програмиране, с помощта на която се описва типа на променливата, принадлежаща към него, и който определя какви стойности може да приеме променливата и множеството от операции, които могат да се прилагат над нея. Типовете данни представляват множества (диапазони) от стойности, които имат еднакви характеристики: – име на типа (byte, int, string, int[], List. – размер (колко памет заемат)- например 32 байта. – стойност по подразбиране (default value).

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

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

Примитивни типове[редактиране | edit source]

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

Съответствие на типовете в различните езици и в .NET Framework[редактиране | edit source]

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


Стойностни и референтни типове (reference types)[редактиране | edit source]

Стойностни типове са примитивните типове, избро­е­ните типове ( 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)[редактиране | edit source]

Примитивни типове данни в език 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 (-2^{7}) 127 (-2^{7} - 1)
byte 8 bits 0 0 255 (2^{8} - 1)
short 16 bits 0 -32768 (-2^{15} - 1) 32767 (2^{15})
ushort 16 bits 0 0 65535 (2^{16} - 1)
int 32 bits 0 -2 147 483 648 (-2^{31}) 2 147 483 647 (2^{31} - 1)
uint 32 bits 0u или 0U 0 4 294 967 295 (2^{32} - 1)
long 64 bits 0l или 0L -9 223 372 036 854 775 808 (-2^{63}) 9 223 372 036 854 775 807 (2^{63} - 1)
ulong 64 bits 0l или 0L 0 18 446 744 073 709 551 615 (2^{64} - 1)
float 32 bits 0.0f или 0.0F ±1.5 × 10^{-45} ±3.4 × 10^{38}
double 64 bits 0.0d или 0.0D ±5.0 × 10^{-324} ±1.7 × 10^{308}
decimal 128 bits 0.0м или 0.0М -7.9 × 10^{-28} +7.9 × 10^{28}
bool 4 bits false само две възможности: bool или false
char 16 bits ‘\u0000′ 0 или ‘\u0000′ 65535 или ‘\uffff’
object - null - -
string - null - -

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

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

Класове и обекти[редактиране | edit source]

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

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

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

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

Стуктури[редактиране | edit source]

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

Типове данни в език Java Script[редактиране | edit source]

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

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

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

Простите типове данни в JavaScript са:[редактиране | edit source]

Име на типа Деклариране Особенности
Числов тип 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 сa масиви, функции и обекти.[редактиране | edit source]

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

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

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

В JavaScript съществуват и три специални вградени типа данни.[редактиране | edit source]

Те са null, undefined и NaN.

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

Типове данни в езика за програмиране C[редактиране | edit source]

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

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

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

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

Непримитивните типове в C включват указатели, масиви, структури, union тип и функции.[редактиране | edit source]

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

type arrayName [ arraySize ];

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

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

Вижте също[редактиране | edit source]

Книги
  • Introduction to Programming with C#, Автори: Светлин Наков, Веселин Колев и колектив. Издателство: Фабер, Велико Търново, 2011 г.