4 tema. Duomenų struktūros • Paprastieji: Paprastųjų duomenų pagrindinis požymis- vienas vardas viena reikšmė Sveikieji skaičiai; Realieji skaičiai; Tekstiniai duomenys (rašmenys); Loginiai duomenys; • Struktūriniai: – tiesinės struktūros; –

Download Report

Transcript 4 tema. Duomenų struktūros • Paprastieji: Paprastųjų duomenų pagrindinis požymis- vienas vardas viena reikšmė Sveikieji skaičiai; Realieji skaičiai; Tekstiniai duomenys (rašmenys); Loginiai duomenys; • Struktūriniai: – tiesinės struktūros; –

Slide 1

4 tema. Duomenų struktūros
• Paprastieji:
Paprastųjų duomenų pagrindinis požymis- vienas vardas viena reikšmė
Sveikieji skaičiai;
Realieji skaičiai;
Tekstiniai duomenys (rašmenys);
Loginiai duomenys;

• Struktūriniai:
– tiesinės struktūros;
– hierarcinės struktūros.

1


Slide 2

Sveikieji skaičiai
• sudėties (+),

• atimties (-);
• daugybos (*) operacijos.
1) sveikosios dalies nustatymas, dalijant vieną iš kito;
2) liekanos nustatymas dalijant vieną skaičių iš kito.
Skaičiaus dydžio intervalas.
1 baitas [0, 255], 2 baitai [-32768, +32767],
4 baitai [-2147483648, + 2147483647] ar 12 baitų[28 ženklai]

Didžiausiam sveikajam skaičiui M+∞ ir mažiausiam neigiamam skaičiui
M-∞ galioja lygybės:
M+∞+1=M-∞ , pvz: 0111111 (+127) + 1 = 1111111 (-127)
M-∞-1=M+∞ ,
2


Slide 3

Realieji skaičiai
• sudėties (+), atimties(-),
• daugybos (*) ir dalybos (/)
operacijos kaip ir su matematiniais realiaisiais skaičiais.
Visos operacijos kompiuteryje atliekamos su tam tikru tikslumu:
1/3 standartiniu 4 baitų realiuoju skaičiumi bus 0,3333333,
o matematikoje tiksli 1/3 išraiška - begalinė dešimtainė trupmena.

Pagal tikslumo poreikį:
4 baitų [ 6-7 ženklai po kablelio],
8 baitų [15-16 ženklų po kablelio],
16 baitų [36 ženklai].

Fiksuotam tikslumui reikia naudoti apvalinimo funkciją
ROUND(išraiška;kiek skaičių po kablelio) arba meniu Tools/Options
kortelėje Calculation pažymėti nuorodą Precision as displayed.
3


Slide 4

Tekstiniai ir loginiai duomenys
Pagrindinė tekstinių duomenų (rašmenų) savybė - jų sutvarkymas,
t.y. savybė būti palyginamiems. Paprastai tai “a” < ”b”, “b” < “c” ir t.t.
Kiekvienas simbolis turi skaitmeninį kodą, pagal kuriuos ir atliekamas
lyginimas.
Naudojamas ir atskiras tekstinių duomenų tipas - eilutė (string), kurią
sudaro rašmenų rinkinys.
Eilutės tipo duomenys turi vieną operaciją - susijungimą

(konkatenciją).

Pvz.: ‘abcd’ & ‘efg’=’abcdefg’.
Loginiams duomenims, įgaunantiems tik reikšmę “teisinga” arba
“klaidinga” taikomi visi logikos algebros veiksmai. Loginės konstantos
paprastai žymimos žodžiais TRUE (teisinga) ir FALSE (klaidinga),
loginės operacijos: disjunkcija – OR, konjunkcija – AND.
4


Slide 5

Struktūriniai duomenų tipai
• tiesinės struktūros;
– Masyvai;
– Sąrašai (įrašai);





Rodyklės;
Nepertraukiamieji sąrašai;
Susietieji sąrašai;
Įrašai;

– Stekai;
– Eilės;

• hierarchinės struktūros;
– Medžio tipo struktūros;
• Binariniai medžiai.

5


Slide 6

Masyvai
Masyvas - tai vieno tipo duomenų rinkinys.

Visi masyvo elementai turi tą patį vardą ir skiriasi tik savo indeksu.
Pagal indeksą galime kreiptis į bet kurį masyvo elementą tiesiogiai ir naudoti
jį kaip pavienį duomenį.
0.5
4.7

A1
A2

A(1) A(2)


7.2

0.8

A3

A4

A(3)

A(4)

B = A(1) + A(3)

Masyvo elementai gali būti ne tik paprastųjų tipų, bet ir struktūriniai
arba kiti masyvai. Tada turime daugiamatį masyvą.

6


Slide 7

Įrašai
Aprašant ūkinės veiklos procesus dažnai tenka naudoti skirtingų tipų
duomenis, tada jų rinkinys sudaro įrašą (record).
Įrašas - tai įvardintų komponentų - laukų rinkinys, turintis
bendrą vardą.
Į kiekvieną įrašo lauką galime kreiptis įrašo bei lauko vardu; pvz.:
turime įrašą:

Įrašas B

Detalė

Nr.

Ilgis

Varžtas

16

35,6

B. Detalė
CHAR

B. Nr. B. Ilgis
INT
REAL

Ir masyve, ir įraše galima tiesiogiai kreiptis į konkretų elementą.
Įrašuose gali būti skirtingi duomenų tipai, o masyvų elementų
indeksacija yra lankstesnė, nes leidžia apskaičiuoti reikalingą indeksą.7


Slide 8

Sąrašai
Įrašų rinkiniai sudaro sąrašus.
Kuriant bet kokią duomenų struktūrą reikia spręsti tokius uždavinius:

• kaip atskirti duomenų elementus tarp savęs,
• kaip ieškoti reikalingų elementų,
• kaip pridėti ar pašalinti atskirus sąrašo elementus, išlaikant jų
surikiavimo tvarką.
Sąrašo įrašai atskiriami vienas nuo kito nustatant jiems pastovų ilgį, to paties tipo
DE užima atmintyje vienodą baitų kiekį.
Sudarydami sąrašo įrašo struktūrą nurodome jį sudarančių DE bazinį tipą ir ilgį.
Pavyzdžiui, sąrašo apie detales struktūra gali būti aprašyta taip:

Detalė

Nr.

Ilgis

CHAR*20

INT*2

REAL*4

Varžtas

16

35,6

Tokio sąrašo įrašas užims 26
baitus atminties ir, pvz., 15-os
detalės ilgį rasime prie sąrašo 15to įrašo adreso pridėję 22.
8


Slide 9

Sąrašai (2)
Priklausomai nuo įrašų išdėstymo kompiuterio atmintyje, yra
skiriami:

• Vientisieji (nepertraukiamieji) sąrašai;
• Nuorodiniai (susietieji ) sąrašai.
Dažniausi veiksmai su sąrašais:
Sąrašo elementų papildymas ir pašalinimas norint išlaikyti
nustatytą jų surikiavimo tvarką.
Kaip tai padaryti, neperrašinėjant sąrašo kiekvienu atveju?
Duomenų išsidėstymas kompiuterio pagrindinėje atmintyje apibrėžiamas
skaitmeniniais adresais.
Jei žinomas kokio tai duomenų elemento (DE) adresas, tai rasti šį
elementą yra paprasta. DE buvimo adresą nurodo rodyklės.
Rodyklėmis (pointer) yra vadinamos atminties ląstelės, saugančios
kitos ląstelės adresą.
9


Slide 10

Rodyklės
Bibliotekos katalogas, surikiuotas pagal pavadinimus ir autorius,
panaudojant rodykles:

……
30

105
….
509


Atsisveikinimas su ginklais
E.Hemingvėjus


105

For whom the bell tolls
E.Hemingway
….
Senis ir jūra
E.Hemingvėjus


509



….
820

R
o
d
y
k
l
ė
s


10


Slide 11

Vientisieji (nepertraukiamieji) sąrašai
Taigi, kaip galima saugoti sąrašus kompiuterio atmintyje?
Vienas iš būdų – saugoti visą sąrašo turinį vieningame atminties ląstelių
bloke su nuosekliais adresais.
Jeigu vienam sąrašo elementui (eilutei) įrašyti skirsime M atminties
ląstelių (baitų), o tokių eilučių maksimaliai gali būti N, tai kompiuterio
atmintyje reikės rasti vientisą bloką iš M*N ląstelių. Tokia struktūra
vadinama vientisuoju sąrašu. Tai tipiška masyvo struktūra:

M ląstelių (baitų)

N įrašų

Ap
Ap+M
Ap+2M

......
11


Slide 12

Nuorodiniai (susietieji ) sąrašai
Nuorodiniame sąraše kiekvieno įrašo vieta atmintyje nereglamentuojama.
Toks įvairiose atminties vietose išmėtytas sąrašas susiejamas rodyklėmis.
Tada kiekvienam nuorodinio sąrašo elementui saugoti reikės M+1 ląstelių, ir
paskutinėje M+1 ląstelėje reikės saugoti rodyklę į kitą pagal rikiavimo
tvarką sąrašo elementą, t.y. to elemento pirmos ląstelės adresą.
Nuorodinis sąrašas visada prasideda sąrašo pradžios rodykle ir baigiamas
elementu su nulinės reikšmės rodykle (NIL):

Pradžios rodyklė

Duomenys Rodyklė

Duomenys Rodyklė

Duomenys Rodyklė

NIL
12


Slide 13

Įrašo šalinimas nuorodiniame sąraše

Tam reikia tik pakeisti vieno atitinkamo įrašo rodyklės turinį:

Šalinamas įrašas
Pradžios rodyklė

Duomenys Rodyklė

Duomenys Rodyklė

Duomenys Rodyklė

NIL

13


Slide 14

Įrašo įterpimas nuorodiniame sąraše
Naujas įrašas išsaugomas bet kurioje laisvos atminties srityje ir
modifikuojama tik atitinkamo įrašo pagal rikiavimo tvarką rodyklė,
suteikiant jos reikšmę naujo įrašo rodyklei:

Pradžios rodyklė

Naujas įrašas
Duomenys

Rodyklė

Duomenys
Duomenys

Rodyklė

Rodyklė

NIL

14


Slide 15

Stekas
Jeigu elementų įterpimo ir šalinimo operacijų naudojimo sritį apribosime
tik sąrašo galais, tai vientisojo sąrašo panaudojimas taps patrauklesnis.
Tokios duomenų struktūros pavyzdžiu gali būti stekas - sąrašas,
kuriame visi įterpimo ir šalinimo veiksmai atliekami viename gale, t.y.
paskutinis į jį patalpintas elementas paimamas pirmas ir atvirkščiai, tai
vadinama LIFO – Last In First Out).

1
0

1
1

Tokių struktūrų pavyzdžiai - šaunamo ginklo
dėklas, padėklai valgykloje, paprogramės
parametrai, grįžimo adresai programose,
atlikus vidines procedūras ir t.t.
Steko galas, kur vyksta įrašų pridėjimas ir
šalinimas, vadinamas viršūne, o kitas –
pagrindu.

15


Slide 16

Eilė
Priešingai stekui, kur elementų pridėjimas ir paėmimas vyksta viename
gale, eilė – tai toks sąrašas, kuriame elementų pridėjimas
vyksta viename gale, o paėmimas kitame.
Eilės ilgis iš anksto neapibrėžiamas ir teoriškai gali būti begalinis. Tokia
seka vadinama “pirmas įėjo - pirmas išėjo”(FIFO – first in first
out).
Eilės kraštas, kuriame elementai paimami, vadinamas pradžia, o kur
pridedami – eilės pabaiga. Saugant eilę kompiuterio atmintyje kaip
susietą sąrašą, reikia naudoti dvi rodykles, nurodančias eilės pradžią ir
pabaigą.

0001101

16


Slide 17

Hierarchinės struktūros
Nereguliarūs duomenys dažnai pateikiami kaip hierarchinės
struktūros. Hierarchinę struktūrą turi įvairios adresų sistemos (pašto,
interneto). Ji naudojama sistematizacijoje bei klasifikacijoje, pavyzdžiui,
duomenys apie turimą programinę įrangą gali turėti tokią hierarchinę
struktūrą:
P ro g ram in ė įra n ga

S is tem inė

T a rn yb inė

T a ik o m o ji

DBVS

V e k torin iai
re d a kto riai

R a s trin ia i re d a kto riai

Ad o b e Illiu s tra tor

C o re l D R AW

M a c rod e d ia F ree h a nd

17


Slide 18

Hierarchinės struktūros (2)
Hierarchinėje struktūroje kiekvieno elemento adresas apibrėžiamas
kreipties keliu (maršrutu), vedančiu nuo struktūros viršūnės iki
ieškomo elemento. Pvz.: programos Corel DRAW kreipties kelias
ankstesnėje struktūroje bus:

Programinė įranga ►Taikomoji ►Vektoriniai redaktoriai
►Corel DRAW
Šio kelio atvaizdavimo (kodavimo) būdai yra įvairūs.
Informatikoje dažnai naudojamas būdas, paremtas taip vadinamu
dichotomijos metodu. Jis leidžia kreipties kelią sutvarkytoje
struktūroje užrašyti labai kompaktiškai, naudojant dvejetainius
simbolius.
Dichotomijos metodu sudarytoje hierarchinėje struktūroje kreipties kelią
į bet kurį elementą galime pateikti kaip kelią per racionalų labirintą su
posūkiais į kairę (0) ir dešinę (1) ir išreikšti kreipties kelią kompaktišku
dvejetainiu įrašu.
18


Slide 19

Pvz. struktūroje:
Informacinis aprūpinimas

Taikomosios programos

Netaikomosios programos

Grafiniai redaktoriai

Negrafiniai redaktoriai

Tekstiniai procesoriai

Netekstiniai procesoriai

Word Pad

Word 2000

Kreipties kelias į tekstų
procesorių Word 2000
bus išreikštas
dvejetainiu skaičiumi

1 0 1 0.

19


Slide 20

Medžio tipo struktūros (grafai)
Medžio tipo struktūras nagrinėja speciali matematikos sritis, vadinama
grafų teorija.

Grafą (G) sudaro dvi aibės: viršūnių aibė (V) ir briaunų aibė (G), G =
(V,E). Viršūnės gali būti nurodomos jų numeriais, o briaunos jungiamų
viršūnių pora.
2
e1
1
e6

e2

3
e3
5
e4
e5 4

Tam tikros grafų rūšys turi savo pavadinimus.
Medžiu vadinamas susietas grafas, kuriame
nėra ciklų. Medžiai turi vieną viršūnę, į kurią
neįeina jokia kita. Ši viršūnė vadinama
šaknimi. Iš šaknies į kiekvieną viršūnę veda
vienintelis kelias

20


Slide 21

Dvejetainiai medžiai
Dvejetainiu arba binariniu vadinamas orientuotas medis, kuriame į
kiekvieną viršūnę, išskyrus šakninę, įeina viena briauna, o išeina dvi.
Medžio dalis, išeinanti iš bet kokios viršūnės, vadinama šaka.
Grafų tipo struktūros naudojamos modeliuojant objektų sistemas, tarp
kurių egzistuoja tam tikri ryšiai, santykiai, priklausomybė, kai reikia
ištirti tokių sistemų struktūrą, jų funkcionavimą.
Pvz.: pavaizduoti binariniu medžiu reiškinį S=(a+b/c)*(d-e*f):
S

*

-

+
/

a
b

d
cc

*
e

f
21