clasificare de date în informatică From Wikipedia, the free encyclopedia
În informatică și programare, un tip de date sau pur și simplu tip este o clasificare ce identifică diferitele tipuri de date, cum ar fi: numere reale, numere întregi sau valori logice(adevărate sau false), valori posibile pentru acest tip; operațiunile care pot fi efectuate pentru valorile de acest tip; sensul datelor; și modul în care valorile de acest tip pot fi stocate.[1][2]
Acest articol (sau secțiunea de mai jos) conține greșeli de ortografie sau de punctuație. Puteți consulta manualul de stil și contribui prin corectarea greșelilor. |
Tipurile de date sunt utilizate în "sisteme de tip" , care oferă diferite moduri de definire, implementare și folosire. Diferite sisteme de tip asigură grade diferite de "siguranță de tip".
Aproape toate limbajele de programare includ în mod explicit noțiunea de tip de date, totuși diferite limbaje pot folosi o terminologie diferită. Tipurile de date comune pot include:
De exemplu, în limbajul de programare Java , "int" reprezintă setul de numere întregi reprezentate pe 32 de biți cuprinse ca valoare între -2.147.483.648 și 2,147,483,647, precum și operațiile care pot fi efectuate cu numere întregi, cum ar fi adunarea, scăderea, sau înmulțirea. Culorile, pe de altă parte, sunt reprezentate de trei octeți care indică cantitățile de roșu, verde și albastru, și un șir de caractere reprezentând numele culorii; operațiunile permise includ adunarea și scăderea, dar nu înmulțirea.
Cele mai multe limbaje de programare, permit de asemenea, programatorului să defineasca tipuri de date suplimentare, de obicei, prin combinarea mai multor elemente de alte tipuri și definirea operațiunilor valide pentru noul tip de date. De exemplu, un programator ar putea crea un nou tip de date numit " număr complex ", care ar include componente reale și imaginare. Un tip de date reprezintă, de asemenea, o constrângere pusă pe interpretarea datelor într-un " sistem de tip " , care descrie reprezentarea, interpretare și structura de valori sau obiecte stocate în memoria calculatorului. Sistemul de tip utilizează informațiile tipului de date pentru a verifica corectitudinea programelor de calculator care accesează sau manipulează datele.
Cele mai multe tipuri de date din statistică au tipuri comparabile în limbajele de programare, și vice-versa, așa cum se arată în tabelul de mai jos:
Statistică | Programarea calculatoarelor |
---|---|
numere reale | virgulă mobilă |
contor de date (de obicei, non-negativ) | întreg |
date binare | Tip logic |
date categorice | tip enumerat |
vector aleator | Listă sau matrice |
matrice aleatoare | matrice bidimensională |
arbore aleator | Arbore |
( Parnas, Shore & Weiss 1976 ) a identificat cinci definiții ale unui "tip" care au fost utilizate uneori-implicit-în literatura de specialitate:
Definiția în termeni de reprezentare a fost de multe ori făcută în limbaje imperative, cum ar fi ALGOL și Pascal , în timp ce definiția în termeni de spațiu și de comportament a fost folosită în limbaje de nivel superior, cum ar fi Simula și CLU .
La cel mai scazut nivel, toate datele din computerele bazate pe electronică digitală sunt reprezentate ca biți care pot lua valoarea 0 sau 1. Cea mai mică unitate adresabilă de date este, de obicei, un grup de biți numit octet sau byte (un octet (byte), contine 8 biți). Unitatea ce poate fi prelucrată de instrucțiunile codului mașină este numită cuvânt (din 2011, de obicei conține 32 sau 64 de biți). Majoritatea instrucțiunilor interpretează cuvântul ca un număr binar, astfel încât un cuvânt de 32 biți poate reprezenta valori fără semn întregi de la la sau valori întregi cu semn de la la . Datorită complementului binar, limbajul mașină și ca atare mașina nu trebuie să se facă distincția între aceste tipuri de date cu semn și cele fără semn în cea mai mare parte.
Există un set specific de instrucțiuni aritmetice, virgula mobilă care folosesc o interpretare diferită a biților în cuvânt.
Tipurile de date mașină trebuie să fie expuse sau puse la dispoziție în sisteme sau în limbajele de programare de nivel scăzut , pentru a permite un control cu granulatie fina pe hardware. Limbajul de programare C , de exemplu, oferă tipuri de număr întreg cu lățimi diferite, cum ar fi short
și long
. În cazul în care un tip nativ corespunzător nu exista pe platforma vizată, compilatorul le va descompune în cod folosind tipuri de date existente. De exemplu, dacă un întreg pe 32 de biți este cerută pe o platformă de 16 biți, compilatorul îl va trata tacit ca o serie de două numere întregi de 16 biți.
Mai multe limbaje permit declaratii ale datelor in sistem binar și sistem hexazecimal, pentru o manipulare mai ușoară a datelor mașină.
În limbajele de programare de nivel superior, tipurile de date mașină sunt de multe ori ascunse sau abstractizate ca un detaliu de implementare, care ar face codul mai puțin portabil dacă ar fi expuse. De exemplu, un tip numeric
generic poate fi furnizat în loc de tipuri întregi cu diferite lungimi de biți.
Tipul Boolean reprezintă valorile: adevărat și fals . Deși doar două valori sunt posibile, ele sunt rareori puse în aplicare ca o singură cifră binară din motive de eficiență. Multe limbaje de programare nu au un tip boolean explicit, ci interpretează (de exemplu) 0 ca fiind fals și a alte valori ca adevărat.
Cum ar fi:
unsigned
în C și C + +). Pot avea, de asemenea, un număr mic de subtipuri predefinite (cum ar fi short
și long
în C / C + +); sau permite utilizatorilor să definească în mod liber subintervale, cum ar fi 1 .. 12 (de exemplu,Pascal / Ada ).Tipuri de compozite sunt derivate din mai mult de un tip primitiv. Aceasta se poate face în mai multe moduri. Modalitățile în care sunt combinate sunt numite structuri de date . Compunerea unui tip primitiv într-un tip de compus rezultă în general într-un nou tip, de exemplu, cu matricea de-întreg este un tip diferit la număr întreg.
Multe altele sunt posibile, dar acestea tind să fie variațiuni și compuși de mai sus.
Tipul enumerat . Aceasta are valori care sunt diferite între ele, și care pot fi comparate și atribuie, dar care nu au în mod concret o reprezentare în memoria calculatorului;compilatoare și interpretoarele le pot reprezenta în mod arbitrar. De exemplu, cele patru culori într-un pachet de cărți de joc pot fi reprezntate de patru valori: TREFLĂ, ROMB, INIMĂ ROȘIE, INIMĂ NEAGRĂ aparținând unui tip enumerat numit cărți de joc În cazul în care o variabilă V este declarată având cărți de joc ca tip de date, i se poate atribui oricare dintre aceste patru valori. Unele implementări permit programatorilor să atribuie valori întregi valorilor enumerate, sau chiar să le trateze ca un tip echivalent cu numere întregi.
Tipurile caracter și șir de caractere pot stoca secvențe de caractere dintr-un set de caractere, cum ar fi ASCII sau UTF-8. Deoarece cele mai multe seturi de caractere includ cifre, este posibil să existe un șir numeric, cum ar fi "1234"
. Cu toate acestea, mai multe limbaje ar trata acest șir ca aparținând unui tip diferit, cu valoarea numerică 1234
.
Tipurile caracter și șir de caractere pot avea diferite subtipuri în funcție de mulțimea necesară de caractere. Tipul original pe 7-biti, ASCII, s-a dovedit a fi limitat, și a fost înlocuit cu seturi de 8 și 16 biți, (UTF-8, UTF-16) care poat codifica o mare varietate de alfabete non-latine (ebraică, chineză, japoneză, arabă ) și alte simboluri. Sirurile de caractere pot fi fie alocate dinamic sau de dimensiune fixă, chiar în cadrul aceluiași limbaj de programare. Ele pot fi, de asemenea, categorisite prin dimensiunea lor maximă.
Notă: siruri de caractere nu sunt primitive în toate limbajele, de exemplu în C, ele pot fi compuse din tablouri de caractere.
Tipurile pot fi de baza, sau derivate din, tipurile de bază explicate mai sus. În unele limbaje, cum ar fi C, funcțiile au un tip de date derivat din tipul de date al valorii intoarse de acestea.
Principalul tip derivat non-compozit este pointerul, un tip de date a cărui valoare referențiază (sau "indică la"), o altă valoare stocată în altă parte în memoria calculatorului cu ajutorul adresei de memorie. Este un fel primitiv de referință . (În termeni de zi cu zi, un număr de pagină într-o carte ar putea fi considerat o bucată de date care se referă la alta). Pointerii sunt adesea stocați într-un format similar cu un număr întreg; Cu toate acestea, încercarea de a dereferenția, un pointer a cărui valoare nu a fost niciodată o adresă validă de memorie ar putea duce la o eroare în program. Pentru a ameliora această problemă potențială, pointerii sunt considerați un tip distinct de tipul de date pe care le indică, chiar dacă reprezentarea de bază este aceeași.
Puteți îmbunătăți această secțiune extinzând-o. Mai multe informații ar putea fi găsite pe pagina de discuții sau la cereri de extindere. |
Orice tip care nu specifică o punere în aplicare este un tip abstract de date . De exemplu, o stivă (care este un tip abstract) poate fi implementat ca o matrice (un bloc contiguu de memorie care conține mai multe valori), sau ca o listă de legat (un set de blocuri de memorie non-adiacente legate de indicii ).
Tipuri abstracte pot fi manevrate de cod care nu știu sau "grijă" ce tipuri de bază sunt cuprinse în ele. De programare care este agnostic cu privire la tipurile de date concrete este numit de programare generic . Arrays și înregistrările pot conține, de asemenea, tipuri de bază, dar sunt considerate de beton, deoarece acestea specifica modul în care conținutul sau elementele acestora sunt prevăzute în memorie.
Exemplele includ:
Pentru comoditate, limbaje de nivel înalt poate furniza tipuri de date de-a gata "lumea reală", de exemplu, ori date și valori monetare și de memorie, chiar și în cazul în care limba le permite să fie construit din tipuri primitive.
Un sistem de tip asociază tipuri cu fiecare valoare calculată. Prin examinarea fluxului pe aceste valori, un sistem de tip încearcă să demonstreze că pot apărea erori de tip. Sistemul tip în cauză determină ceea ce constituie o eroare de tip, dar un sistem de tip general, urmărește să garanteze că operațiunile așteaptă un anumit tip de valoare si nu sunt folosite cu valorile pentru care această operațiune nu are sens.
Un compilator poate utiliza tipul static a unei valori pentru a optimiza depozitarea are nevoie și de alegerea unor algoritmi de operații asupra valorii. În multe compilatoare C tipul de date float, de exemplu, este reprezentat în 32 de biți, în acord cu specificațiile IEEE pentru numere de precizie simpla în virgulă mobilă. Ei vor folosi astfel de virgulă flotantă specifice operațiunilor de microprocesor pe aceste valori (virgulă flotantă, plus, înmulțire etc).
Adâncimea de constrângeri de tip și modul de evaluare a acestora afectează tastarea limbii. Un limbaj de programare poate asocia mai mult o operațiune cu diferite algoritmi de beton pe fiecare tip în cazul polimorfismului. Introduceți teorie este studiul de sisteme de tip, cu toate că sistemele de tip concret de limbaje de programare provin de la probleme practice de arhitectura de calculator, punerea în aplicare a compilator, și design limbaj.
Sistemele de tip pot fi variate static sau dinamic, puternic sau slab dactilografiere, și așa mai departe.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.