Duomenų struktūra: Skirtumas tarp puslapio versijų

Ištrintas turinys Pridėtas turinys
S r2.7.1) (robotas Pridedama: uk:Тип даних
Nėra keitimo santraukos
Eilutė 1:
[[Vaizdas:DuomenuTipai.png|right]]
'''Duomenų struktūradarinys''' (''duomenų tipas'') – duomenys, logiškai jungiantys keletą paprastųjų duomenų tipų (reikšmiųverčių) arba keliaskelius paprastesnespaprastesnius duomenų struktūrasdarinius.
 
PirmosiosPirmieji duomenų struktūrosdariniai naudotosnaudoti tik kaip reikšmiųverčių aibės, bet vėliau pradėti naudoti '''abstraktieji duomenų tipai''' (ADT) apibrėžia operacijųgrupuojamiems aibę,duomenimis galimų grupuojamiemsoperacijų duomenimisaibę.
 
== Savybės ==
Bendrosios duomenų tipų savybės 1972 metais suformuotos Horo (''Hoare''):
# Duomenų tipas apibrėžia klasę reikšmiųverčių, kurias gali įgyti kintamasis ar reiškinys
# Kiekviena reikšmėvertė priklauso vienam ir tik vienam duomenų tipui
# Konstantos, kintamojo ar reiškinioverčių tipą galima nustatyti iš teksto arba iš operando pavidalo, nepriklausomai nuo reikšmiųverčių.
# Kiekvienos operacijos operandų ir rezultato tipai yra fiksuoti. Tais pačiais simboliais žymimos skirtingų tipų operacijos laikomos daugiareikšmėmisdaugiarvertėmis ir žymi skirtingas operacijas (pavyzdžiui, sudėtis „+“).
# Duomenų tipo reikšmiųverčių savybės ir su reikšmėmisvertėmis atliekamų operacijų savybės apibrėžiamos aksiomomis
# Duomenų tipai turi atitikmenis matematikoje ([[Dekarto sandauga]], [[aibė]], [[seka]], [[funkcija (programavimas)|funkcija]], [[rekursija]])
 
Barbara Liskov 1975 metais suformulavo tokius reikalavimus, kuriuos turi tenkinti abstraktus duomenų tipas:
# Duomenų tipo apraše turi būti apibrėžtos visos tipo reikšmėmsvertėms taikytinos operacijos
# ADT naudotojas neturi žinoti, kaip reikšmėsvertės vaizduojamos kompiuterio atmintyje
# ADT naudotojas gali operuoti tipo reikšmėmisvertėmis tik to tipo operacijomis, o ne tiesiogiai reikšmiųverčių atvaizdais atmintyje.
 
== Istorija ==
Duomenų struktūrizavimas prasidėjo atsirandant aukšto lygio [[programavimo kalba|programavimo kalboms]]. Kintamųjų tipizavimas pirmą kartą įvestas [[Fortran]] kalboje ([[1953]]), šioje kalboje naudoti skaičių tipai bei masyvai. Algol-60 išplėtė masyvo panaudojimą neribodami indeksų ir matmenų. [[Cobol]] ([[1961]]) įvesti tipai simbolių eilutei, įrašui, bylaifailui saugoti. PL/1 ([[1965]]) leido laisvą reikšmiųverčių struktūrinimą, rodykles. Simula-67 pirmoji eksperimentinė kalba, kurioje įvesta [[klasė (programavimas)|klasė]]. Algol-68 (1973) ir [[Pascal]] (1970) kalbose įvestas tipų vardinimas, Pascal taip pat įvestas tipų sisteminimas. Ada (1983) plačiau pradėti naudoti abstraktieji duomenų tipai.
 
== Skirstymas ==
Duomenys pagal struktūrinimo laipsnį skirstomi į dvi klases – '''paprastuosius''' ir '''struktūrinius duomenų''' tipus. Paprastųjų tipų reikšmėsvertės nedalomos, o struktūriniai sudaryti iš kelių paprastųjų ar struktūrinių reikšmiųverčių. Struktūriniai duomenų tipai, kurių realizacija paslėpta, o reikšmėmisvertėmis manipuliuoti galima tik naudojant apibrėžtą operacijų aibę, vadinami abstrakčiaisiais duomenų tipais.
 
Kai kurie dažniau naudojami duomenų tipai ir struktūrosdariniai:
* Paprastieji tipai
** Loginis tipas – paprasčiausias duomenų tipas, turintis dvi reikšmesvertes (teisinga ar klaidinga). Galimos [[Būlio algebra|Būlio algebros]] apibrėžtos operacijos.
** Vardinis tipas – diskretus tipas, kai tipo apraše išvardinamos visos galimos reikšmėsvertės
** Simbolinis tipas – diskretus tipas, kurio galimos reikšmėsvertės – simboliai
** Atkarpos tipas – kai aprašomos kraštutinės reikšmėsvertės (apatinis ir viršutinis rėžiai) tam tikroje aibėje (sveikųjų skaičių, simbolių)
** Sveikųjų skaičių tipas – galimos reikšmėsvertės iš [[sveikieji skaičiai|sveikųjų skaičių]] aibės.
** Realiųjų skaičių tipas – teoriškai galimos reikšmėsvertės iš realiųjų skaičių aibės, tačiau praktiškai realizuojama reikšmėmisvertėmis iš mažesnės [[racionalieji skaičiai|racionaliųjų skaičių]] aibės.
* Struktūriniai duomenų tipai
** Alternatyva – aprašomi keli tipai, tačiau vienu metu galioja tik vieno tipo reikšmėvertė.
** Rinkinys (įrašas, struktūradarinys) – tiesioginis kelių tipų grupavimas.
** Masyvas – daugelio to paties tipo reikšmiųverčių jungimas į vieną sudėtinę reikšmęvertę. Komponentai vadinami elementais, o pasiemiami naudojant indeksus.
** [[Eilė (duomenų struktūradarinys)|Eilė]] – daugelio to paties tipo reikšmiųverčių jungimas į vieną reikšmęvertę, kai komponentai saugomi ta tvarka, kuria buvo į eilę įdėti, o išimti iš eilės galima tik pirmą įdėtą komponentą.
** [[Tiesinis sąrašas|Sąrašas]]
** [[Medis (duomenų struktūradarinys)|Medis]]
*** [[Krūva]]
*** [[Medis (duomenų struktūradarinys)#Dvejetainis paieškos medis|Dvejetainis paieškos medis]]
*** [[:Kategorija:Besibalansuojantis medžiai|Besibalansuojantys medžiai]]
**** [[Raudonai-Juodas medis]]
Eilutė 46:
**** [[B medis]]
**** [[2-3-4 medis]]
** [[Grafas (duomenų struktūradarinys)|Grafas]]
** [[Dėstymo lentelė]]
** [[Prioritėtų eilė]]
 
[[Kategorija:Duomenų struktūrosdariniai]]
 
[[ast:Tipu de datu]]