Тип данни
Типът на данните (на английски: 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 са стойностни.
Име | Размер в паметта | Стойност по подразбиране |
Минимална стойност | Максимална стойност |
---|---|---|---|---|
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# са много подобни на класовете. Разликата е в типа на обектите. Структурите са потребителски дефинирани стойностни типове. Когато обекта няма поведение се използва структура. Те, както и класовете, могат да съдържат полета и свойства, но не се препоръчва да съдържат методи.
Типове данни в език Java Script
редактиранеТъй като 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
показва, че не е налична стойност.
Източници
редактиранеВижте също
редактиранеВъншни препратки
редактиране- Светлин Наков, Веселин Колев и колектив. Въведение в програмирането със C#. Велико Търново, Фабер, 2011. ISBN 978-954-400-527-6.