Programavimo pagrindai

2682 0

PROGRAMAVIMO PAGRINDAI

Kompiuterinės matematikos pradžių pradžia ir pagrindų pagrindas – du skaičiai: nulis ir vienetas

1. Dvejetainė logika

1.1. Skaičiavimo sistemos

Skaičiavimo sistema yra visuma būdų ir priemonių, leidžianti užrašyti ar kitaip pateikti skaičius. Skaitmens reikšmė priklauso nuo užimamos vietos (pozicijos) skaičiuje.

Skaičiavimo sistemos pagrindu laikomas skaičius, kuris parodo kiek kartų padidėja arba sumažėja vieno ir to paties skaitmens reikšmė, kai jis perkeliamas į vieną iš šalia esančių pozicijų. Bet kokį skaičių galima pateikti formule:

čia: Nq – pateikiamasis skaičius;

q – skaičiavimo sistemos pagrindas;

n+1 – skaitmenų kiekis skaičiuje, nes mažiausioji dešinė skaičiaus skiltis žyymima ne vienetu, o nuliu.

Jeigu skaičius trupmeninis, tai jo išraiškoje:

trumpesnė dalis žymima neigiamais n. Kiekvieno skaitmens reikšmė trupmeninėje dalyje q kartų mažesnė už prieš jį einantį tokį pat skaitmenį :

Šiuo metu kompiuterijoje neįmanoma apsieiti be trijų skaičiavimo sistemų: dešimtainės (q = 10), dvejetainės (q = 2) ir šešioliktainės (q = 16).

Dešimtainė skaičiavimo sistema naudojama, kaip visuotinai priimta ir pripažinta sistema, turinti dešimt skirtingų simbolių skaitmenims pažymėti.

Dvejetainė skaičiavimo sistema teturi tik du simbolius. Tai 0 ir 1. Ji yra elektroninių schemų pagrindas, nes tik tokia sistema leidžia skkaitinėmis reikšmėmis nustatyti elektroninių schemų būvį. Elektros krūvio buvimas tam tikruose schemos taškuose gali būti laikomas vienetu, o nebuvimas – nuliu (arba atvirkščiai).

Kad žmogui būtų suprantami kompiuterio apdorojimui pateikiami skaičiai bei apdorojimo rezultatai, ir kad kompiuteris galėtų atlikti tokį apdorojimą, būtina sk

kaičius iš dešimtainės skaičiavimo sistemos galėti pervesti į dvejetainę ir atvirkščiai, iš dvejetainės į dešimtainę skaičiavimo sistemą. Toks skaičių pervedimas nėra paprastas ir patogus, todėl naudojama tarpinė šešioliktainė skaičiavimo sistema, o šešioliktainiai simboliai gali būti tiesiogiai perkeliami į dvejetainę skaičiavimo sistemą.

q16 q2 q10

0 0000 0

1 0001 1

2 0010 2

3 0011 3

4 0100 4

5 0101 5

6 0110 6

7 0111 7

8 1000 8

9 1001 9

A 1010 10

B 1011 11

C 1100 12

D 1101 13

E 1110 14

F 1111 15

Tiesioginis šešioliktainio skaičiaus pervedimas į dvejetainį skaičių reiškia, kad šešioliktainio skaičiaus, pavyzdžiui, 1F3 kiekvienas skaitmuo bus išreiškiamas atitinkama dvejetainio skaičiaus tetrada (keturių dvejetainių skaitmenų grupė):

arba 1F316 = 0001111100112 = 1111100112.

Dešimtainis skaičius 6783 pertvarkomas į šešioliktainį paprastos dalybos ir atimties veiksmais:

6783 : 16 = 423 ir liekana 15 = F

423 : 16 = 26 ir liekana 7

26 : 16 = 1 ir liekana 10 = A.

Tai reiškia, kad

678310 = 1A7F16 = 11010011111112 .

Ir atvirkščiai – šešioliktainis skaičius 1A7F pertvarkomas į dešimtainį taip pat paprasta daugybos ir sudėties seka:

1 x 16 = 16,

16 + A = 26,

26 x 16 = 416,

416 + 7 = 423,

423 x 16 = 6768,

6768 + F = 6783 10.

Aštuntainė skaičiavimo sistema yra analogiška šešioliktainei ir taip pat gali tarnauti tiesioginiam skaičių pertvarkymui iš dešimtainės į dvejetainę bei iš dvejetainės į dešimtainę skaičiavimo siistemas. Aštuntainės sistemos skaitmenys pervedami į dvejetainę sistemą triadomis (grupėmis po tris dvejetainius skaitmenis) :

q8 0 1 2 3 4 5 6 7 10 11

q2 000 001 010 011 100 101 110 111 001000 001001

q10 0 1 2 3 4 5 6 7 8 9

Tegu duotas aštuntainis skaičius 763, tai dvejetainis skaičius bus:

,

tai 7638 = 1111100112.

Nesunku pastebėti, kad 1F316 ir 7638 yra toks pat dvejetainis skaičius 1111100112, tad 1F316 = 7638 .

Pervedus 1F316 ir 7638 į dešimtainę skaičiavimo sistemą gaunama:

1 x 16 = 16 7 x 8 = 56

16 + F = 31 56+ 6 = 62

31 x 16 = 496 62 x 8 = 496

496+ 3 = 49910 496+ 3 =49910

Nežiūrint į tai, kokioje skaičiavimo sistemoje pateiktas skaičius, jo didumas lieka toks pat:

49910 = 1F316 = 7638 = 1111100112 .

Trupmenos iš dešimtainės į dvejetainę sistemą pervedamos kiek kitaip nei sveikieji skaičiai .

Tegu duota trupmena 0.25710:

.257  16 = 4.112 = 4+ .112,

.112  16 = 1.792 = 1 + .792,

.792  16 = 12.672 = C + .672,

.672  16 = 10.752 = A + .752,

.752  16 = 12.032 = C + .032,

——————————————-

.25710 = .41CAC.16 = .100 0001 1100 1010 11002.

Gautą šešioliktainę trupmeną .41CAC16 pervesime vėl į

dešimtainę trupmeną:

12 : 16 = .75,

10 + .75 = 10.75;

10.75 : 16 = .671875,

12+.671875 = 12.671875,

12.671875 : 16 = .791992188

1+.791992188 = 1.791992188,

1.791992188 : 16 = .111999512,

4+.111999512 = 4.111999512,

4.111999512 : 16 = .25699997  .25710 .

Pervedant dešimtaines trupmenas į šešioliktaines, pervedimas gali būti labai ilgas (kol trupmeninė dali bus lygi nuliui) todėl dažniausiai tenka pervedimą užbaigti, kai pasiekiamas norimas tikslumas.

Pervedant šešioliktaines trupmenas į dešimtaines, dažniausiai tenka apvalinti trupmenas, nes pervedimas gali tęstis neribotai.

Pervedant iš vienos skaičiavimo sistemos į kitą skaičius, kuriuos sudaro sveikoji ir trupmeninė dalys, ir sveikoji ir trupmeninė dalis pervedamos atskirai.

Skaičių pervedimas tesudaro tik nedidelę viso manipuliavimo skaitmeniniais duomenimis dalį.

Svarbiausias vaidmuo tenka dvejetainei aritmetikai ir Bulio algebrai.

1.2. Dvejetainė aritmetika

Dvejetainės aritmetikos pagrindas – tai sudėties, atimties ir daugybos veiksmai parodyti lentelėje:

Sudėtis Atimtis Daugyba

0 + 0 = 0 0 – 0 = 0 0  0 = 0

1 + 0 = 1 1 – 0 = 1 1  0 = 0

0 + 1 = 1 1 – 1 = 0 0  1 = 0

1 + 1 = 10 10 – 1 = 1 1  1 = 1

Sudedant skaičius vieneto pernešimas vyksta į didesniąją (į kairę) tada, kai sudedama 1+1=10.

(1011 + 1010= 10101)2 , (B + A = 15)16 , (11 + 10 = 21)10 .

Neturėtų kelti abejonių B + A = 15, nes

q16 . A B C D E F 10 11 12 13 14 15 .

q10 . 10 11 12 13 14 15 16 17 18 19 20 21 .

Skaičius atimant, prireikus vyresniosios skilties vienetą pernešti į dešiniąją skiltį (pasiskolinti), pastarojoje skiltyje atsiranda du vienetai (t.y. 10), o tarpinėse nulinėse skiltyse – po vieną vienetą, nes kitas vienetas “keliauja” iki mažiausiosios skilties į kurią skolinamasi. Todėl pastarojoje skiltyje prieš atimant atsiranda du dvejetainiai vienetai.

(16 – 9 = D)16 , (10110 – 1001 = 1101)2 , (22 – 9 = 13)10 .

Dvejetainių skaičių daugybos ir dalybos veiksmai analogiški dešimtainių skaičių daugybos ir dalybos veiksmams.

1101

+ 101 (D x 5 = 41)16

1101

0000 (13 x 5 = 65)10

1101

1000001 6510 = 4116

1000110 111 (46 : 7 = A)16

111 1010

111 (70 : 7 = 10)10

111

0 1010 = A16 .

Po pirmojo atimties veiksmo iš penktos dalijamojo skilties nukeliamas vienetas, bet 11 nepakanka dalijimui iš 111. Todėl nulį įrašome į dalmens antrąją skiltį ir paimame dar vienetą iš dalijamojo šeštos skilties. Likusį nulį iš septintos dalijamojo skilties tiesiai pernešame į dalmenį, t.y. visi veiksmai yra analogiški dešimtainių skaičių da

alybos veiksmams.

1.3. Loginės operacijos

Iš 1.1. ir 1.2. poskyrių matyti, kad bet kuriam šešioliktainiui skaitmeniui užrašyti pakanka keturių dvejetainių skilčių arba tetrados. Bet tetradoje kitokių ženklų užrašyti neįmanoma, nes jų niekaip negalėtume atskirti nuo šešioliktainių skaitmenų. Todėl raidėms, matematiniams simboliams ir kitokiems ženklams užrašyti skiriama dar viena tetrada. Taigi skaičiams ir kitokiems simboliams užrašyti naudojami aštuonios dvejetainės skiltys, kurie vadinami bitais, o visa aštuonių bitų struktūra vadinama baitu. Baite gali tilpti bet kokios 0 ir 1 kombinacijos nuo 00000000 iki 11111111, t.y. nuo 0016 iki FF16 arba 1+255=25610 , nes FF16 = 25510 .

Akivaizdu, kad neskaitiniams simboliams apdoroti dvejetainė aritmetika netinka. Tam naudojamos loginės operacijos. Pagrindinės loginių operacijų kategorijos yra : tiesa, teisinga, kurios žymimos skaičiumi 1, ir netikra, netiesa, melas – skaičiumi 0.

Loginės operacijos vadinamos ARBA (loginė sudėtis, disjunkcija), IR (loginė daugyba, konjunkcija), IŠSKIRTINĖ ARBA (neekvivalentumas), NE (loginis neiginys, inversija).

Šiame poskyryje apsiribosime keturių loginių operacijų analize, nors tokių operacijų yra ir daugiau (NEIŠSKIRTINĖ ARBA, implikacija ir kt.).

Nors pabrėžėme, kad dvejetainiams simboliams vienareikšmiškai apibrėžti keturių dvejetainių ženklų struktūros (tetrados) per maža, loginių operacijų esmės analizei to pilnai pakanka.

Loginės operacijos žymimos simboliais:

ARBA – v, IR – , IŠSKIRTINĖ ARBA – , Ne –  .

Loginių operacijų esmė atskleidžiama lentelėje:

Loginių operacijų lentelė 1.1.

Operacijų pavadinimai: ARBA IR IŠSKIRTINĖ ARBA NE

Žymėjimai : v   

Operacijos :

0101

v 1001

1101 0101

 1100

0100 1010

 1100

0110

 0101

1010

Visoms loginėms operacijoms bendra yra tai, kad tarp savęs lyginami vienodai nuo skaičiaus pradžios atitolę bitai ir jų pa

alyginimo rezultatas visada arba 1 arba 0 ir niekada, kaip dvejetainėje aritmetikoje, jis nepereina į aukštesnę skiltį. Taigi loginės operacijos rezultatas gali būti tik tiesa (1) arba netiesa (0) ir joks kitoks būti negali.

Pažymėtini loginių operacijų tarpusavio skirtingumai.

Loginėje operacijoje ARBA, kitaip dar vadinamoje sudėtimi arba disjunkcija, bitų palyginimo rezultatas visais atvejais yra vienetas, išskyrus tuos atvejus, kai tarp savęs lyginami nuliai. Pastarojo palyginimo rezultatas – nulis.

Loginė operacija IR, kitaip dar vadinama logine daugyba arba konjunkcija, visais bitų palyginimo atvejais rezultatai yra nuliai, išskyrus tą atvejį, kai tarp savęs lyginami vienetai. Pastaruoju atveju rezultatas yra vienetas.

Loginėje operacijoje IŠSKIRTINĖ ARBA lyginami skirtingi bitai rezultatą turi vienetą, o vienodi – nulį. Kitaip ši operacija dar vadinama, kaip jau buvo minėta, neekvivalentumu.

Loginis neiginys NE operuoja su vienu dvejetainiu simboliu, jį paversdamas taip vadinamu atvirkščiu simboliu. Tai reiškia, kad rezultato analogiškose vietose vienetai yra pakeičiami nuliais, o nuliai vienetais.

Lentelėje 1.1 pateiktos operacijos naudoja keturženklius dvejetainius skaičius vizualinio aiškumo sumetimais. Praktikoje tokios operacijos gali būti atliekamos su bet kokio didumo dvejetainiais skaičiais ar simboliais, turinčiais vienodą arba skirtingą bitų kiekį.

Loginių operacijų esmę sudaro tai, kad jos įgalina sužinoti apie dvejetaines struktūras ir prireikus jas tinkamai pakeisti. Tai ypač svarbu, nes kompiuterio atmintyje esančių dvejetainių struktūrų tiesiogiai vizualiai matyti neįmanoma. Tai atliekama operacijai pateikiant taip vadinamą šabloną, t.y. iš anksto žinomą dvejetainę struktūrą.

Toliau pateiksime loginių operacijų panaudojimo pavyzdžių. Tegu viename baite užrašoma tam tikrų procesų valdymo informacija. Tai reiškia, kad įjungus, t.y. įrašius į tam tikras baito skiltis vienetus procese tas bitas dalyvauja, o jeigu bitas nulinis, tai ta skiltis konkrečiame procese nedalyvauja. Taigi, kaip buvo anksčiau minėta, baitas gali turėti iš viso 256 įvairias procesų valdymo perjungėjų padėtis nuo padėties HEX ’00’ iki padėties HEX ’FF’. Raidės HEX reiškia šešioliktainį skaičių (angliškai – hexadecimal). Apostrofuose nurodytas pats šešioliktainis skaičius. Visoms operacijoms naudojama ta pati duomenų pateikimo forma :

Baitas prieš operaciją HEX ‘00’ 0000 0000

?

Baitas – šablonas HEX ‘00’ 0000 0000

Baitas po operacijos HEX ‘00’ 0000 0000

Čia pateikiami šešioliktainiai skaičiai : baito turinys prieš operaciją, baitas – šablonas ir baito turinys po operacijos. Be to kiekvienas skaičius pateikiamas dvejetaine forma, kuri padeda vizualiai suvokti sprendžiamo uždavinio procesą. Baitas – šablonas tai duomenys parinkti taip, kad būtų galima išspręsti konkretų uždavinį, esant tam tikram pradiniam baito būviui ir naudojant loginę operaciją, kurios žymėjimo simbolis įrašomas vietoj simbolio “?”.

Operacijos ARBA.

1) Pakeiskite pirmojo bito turinį į vienetą (padėtį “Įjungta”) taip, kad kiti bitai nepasikeistų.

Baitas prieš operaciją HEX ‘0F ’ 0000 1111

v

Baitas – šablonas HEX ‘80’ 1000 0000

Baitas po operacijos HEX ‘8F ’ 1000 1111

2) Įjunkite du perjungėjus HEX ‘28’, nors prieš operaciją tebuvo įjungtas tik vienas iš jų HEX ‘20’.

Baitas prieš operaciją HEX ‘20’ 0010 0000

v

Baitas – šablonas HEX ‘08’ 0000 1000

Baitas po operacijos HEX ‘28 ’ 0010 1000

3) Nustatykite tik žemesniosios (dešinės) baito tetrados turinį.

Baitas prieš operaciją HEX ‘49 ’ 0100 1001

v

Baitas – šablonas HEX ‘F0’ 1111 0000

Baitas po operacijos HEX ‘F9 ’ 1111 1001

Operacijos IR.

1) Išjunkite perjungėjus HEX ‘26’.

Baitas prieš operaciją HEX ‘FF ’ 1111 1111



Baitas – šablonas HEX ‘D9 ’ 1101 1001

Baitas po operacijos HEX ‘D9 ’ 1101 1001

2) Išjunkite visus perjungėjus, kurie buvo įjunkti.

Baitas prieš operaciją HEX ‘92 ’ 1001 0010



Baitas – šablonas HEX ‘00 ‘ 0000 0000

Baitas po operacijos HEX ‘00 ’ 1111 1001

Operacijos IŠSKIRTNĖ ARBA

1) Tegu turime atliktą IŠSKIRTINĘ ARBA operaciją :

Baitas prieš operaciją HEX ‘7D ’ 0111 1101



Baitas – šablonas HEX ‘FF ‘ 1111 1111

Baitas po operacijos HEX ‘82 ’ 1000 0010

Šią operaciją su pateikiamu šablonu HEX ‘FF ’ galime naudoti, kai norime sužinoti, ar prieš operaciją baitas nebuvo nulinis : HEX ‘FF’. Taip pat šia operacija galima pakeisti pradinio baito turinį atvirkščiu t.y nuliniai bitai keičiami vienetais, o vienetiniai nuliniais.

2) Perjunkite aukštesniąją baito tetradą į atvirkštinį būvį, žemesniąją tetradą palikus nepakitusia.

Baitas prieš operaciją HEX ‘96 ’ 1001 0110



Baitas – šablonas HEX ‘F0 ‘ 1111 0000

Baitas po operacijos HEX ‘66 ’ 0110 0110

Loginių operacijų naudojimas duomenų paieškoje.

Tegu turime tam tikrą sąrašą asmenų, kurie charakterizuojami baito turiniu:

1 bitas Vyras / ne 1 / 0,

2 bitas Vedęs / ne 1 / 0,

3 bitas 25 metų / daugiau 1 / 0,

4 bitas Aukštasis mokslas / n e 1 / 0,

5 bitas Gimęs Lietuvoje / ne 1 / 0,

6 bitas Neturi savo namo / turi 0 / 1,

7 bitas Neturi vairuotojo teisių / turi 0 / 1,

8 bitas Lietuvis / ne 1 / 0.

Žinodami kiekvieno bito kiekviename sąrašo baite reikšmę, galime tinkamai parinkti baitą – šabloną, kad sužinotume kiek yra sąraše asmenų, turinčių reikalingas savybes. Jeigu baitą šabloną parinksime HEX ‘80’, tai logiškai daugindami (operacija IR – ) jį iš vieno sąrašo baito, rezultato baite gausime HEX ‘80’, tai reiškia, kad tame sąrašo baite buvo charakterizuojamas vyras. Jeigu sąrašo baite aprašoma moteris, tai rezultato baitas bus HEX ‘00’. Logiškai dauginant kiekvieną sąrašo baitą iš šablono ir po kiekvienos daugybos veiksmo rezultato baitą sudedant su dvejetainiu žodžiu a= HEX ’0000’, pabaigę veiksmus su sąrašu, žodyje a gausime skaičių, kuris parodo, kiek sąraše yra vyrų.

Panašiai elgdamiesi, visus sąrašo asmenis, pagal jų savybes, galime sugrupuoti į 256 sąrašus ir apskaičiuoti kiek asmenų yra kiekviename iš tų sąrašų.

Jeigu asmenų sąrašo baitas HEX ‘00’, tai reiškia, kad šiame baite charakterizuojama: moteris, nevedusi, daugiau, kaip 25 metų, neturinti aukštojo mokslo, gimusi ne Lietuvoje, neturinti savo namo, neturinti vairuotojo teisių, nelietuvė. Jeigu sąrašo baitas HEX ‘FF’, tai reiškia, kad šiame baite charakterizuojamas asmuo turi tokias savybes: vyras, vedęs, 25 metų, turintis aukštąjį išsilavinimą, gimęs Lietuvoje, turintis savo namą, turintis vairuotojo teises, lietuvis. Norint sužinoti visas minėtas asmens savybes tenka pateikti baitą – šabloną HEX ‘FF’ ir atlikti loginę operaciją IR. Akivaizdu, kad pateikus baite – šablone bet kokią kitą bitų kombinaciją, nustatysime ar turi analizuojamas asmuo tokias savybes, ar tik dalį tų savybių.

Loginės daugybos rezultatų sumavimui parinkta dviejų baitų vieta a todėl, kad galėtume joje sukaupti didesnį analizuojamų asmenų skaičių negu 255, kurie telpa viename baite. Dviejuose baituose tilps skaičius FFFF16, t.y. 6553510.

Naudodamiesi loginėmis aritmetinėmis operacijomis, reikiamai parinkdami operacijų vykdymo eiles, parinkdami įvairiausius šablonus, t.y. operacijų vykdymo parametrus ir kintamuosius, turime praktiškai neribotas manipuliavimo dvejetainiais duomenimis galimybes. Todėl šiuolaikiniai kompiuteriai, naudojantys dvejetainę logiką turi irgi tokias pat galimybes.

1.4. Dvejetainės operacijos diskrečiuose kompiuterio elementuose

Šiame poskyryje parodoma principinė aritmetinių ir loginių operacijų atlikimo galimybė kompiuteryje. Operacijų demonstravimui į kompiuterio fizinę realizaciją neatsižvelgiama. Kompiuterio elementai nuolat kinta, tobulėja, o dvejetainių operacijų matematika lieka ta pati. Kad dvejetainių operacijų demonstravimas diskrečiame kompiuterio elemente būtų akivaizdesnis ir lengviau suvokiamas, tas elementas vaizduojamas schema, kurią sudaro elektros grandinė, susidedanti iš magnetinių (a ir b) ir elektromagnetinių įtaisų (A ir B), kontaktų ir elektros srovės šaltinio ir išėjimo arba operacijos rezultato taško C (pav. 1.1).

Pav. 1.1. Diskretus kompiuterio elementas

Dvejetainė informacija schemai pateikiama elektros srovės buvimu arba nebuvimu A ir B taškuose. Jeigu taškuose A ir B srovės nėra, tai kontaktus veikia magnetai a ir b, o jei yra, tai kontaktus veikia stipresni elektromagnetai taškuose A ir B. Jeigu abu kontaktai susijungia, tai rezultato (išėjimo) taške C įtampa yra, o jei bent vienas kontaktas nesujungtas, tai taške C įtampos nėra. Įtampos buvimas taškuose A, B ir C reiškia vienetą (1), o nebuvimas – nulį (0).

Tegul į taškus A ir B pateikiami duomenys dvejetainėmis kombinacijomis:

A  0101, B  0011,

o taške C parodoma rezultatinė informacija priklausys nuo schemos, realizuojančios operacijas v, ,  ir .

Pradiniai duomenys ir jų dvejetainės sąveikos rezultatas schemose visada vaizduojami vienodai nutolę nuo visų trijų dvejetainių skaičių pradžios.

Žemiau pateikiamos pagrindinių loginių operacijų techninės realizacijos principinės schemos, vaizduojamos kaip diskretūs kompiuterio elementai.

Pav. 1.2. Operacijos ARBA (disjunkcijos) schema.

Pav. 1.3. Operacijos IR (konjukcijos) schema.

Pav. 1.4. Operacijos NE (inversijos) schema

Operacija IŠSKIRTINĖ ARBA yra žymiai sudėtingesnė ir paprastose schemose, kurios čia buvo pateiktos, negali būti realizuota todėl, kad vienu metu ir abiejų nulių ir abiejų vienetų operacijų rezultatas turi būti toks pat, t.y. lygus nuliui.

Operacija IŠSKIRTINĖ ARBA gali būti atlikta sujungus į vieną sistemą ar tam tikrą diskrečių elementų rinkinį keletą diskrečių elementų, kuriuos galima išreikšti formule:

(m  n)  [ (m  n)] (1.1)

Čia m ir n yra bet kurie keturženkliai dvejetainiai skaičiai. Operacija ARBA (m v n) parodo, kuriose m ir n skiltyse sutampa nuliai. Ten rezultatas bus nulis. Operacija IR (m  n) parodo, kuriose m ir n skiltyse sutampa vienetai. Jei tokių sutapimų nebūtų, visos operacijos esmė vis vien nesikeistų. Operacija NE, taikoma operacijos IR rezultatui (loginei sandaugai) ir pakeičia jį atvirkštiniu. Tai reiškia, kad abu gautieji dvejetainiai skaičiai turi nulius tose skiltyse, kur du pradiniai duomenys buvo vienodi, t.y. arba vienetai, arba nuliai. Taigi šiuos gautuosius dvejetainius skaičius dar kartą logiškai sudauginus gaunami vienetai tose skiltyse, kur pradiniai duomenys buvo skirtingi. Tai ir yra operacijos IŠSKITINĖ ARBA rezultatas (žiūr. lentelę 1.1).

Tegu m = 0101, o n = 0011, tai

(m  n)  [ (m  n)] =

(0101  0011)  [ (0101  0011)]=

= 0111 ( (0001)) = 0111 1110 = 0110.

Skaičius 0110 yra toks pat, kuris gaunamas, jeigu būtų atlikta operacija IŠSKIRTINĖ ARBA iš pat pradžių:

m  n = 0101  0011 = 0110.

Diskrečius kompiuterio elementus, pateiktus pav. 1.2, 1.3 ir 1.4 sujungus į tam tikrą rinkinį pagal formulę (1.1) gaunama operacijos IŠSKITRINĖ ARBA schema (pav. 1.5).

Nesunku įsitikinti, kad panašiai konstruojant schemas, kaip tai buvo padaryta operacijų ARBA, IR, NE, ir ypač IŠSKIRTINĖS ARBA atlikimui, galima sudaryti schemas bet kokios aritmetinės ar loginės operacijos realizavimui. Tai ypač akivaizdu, kai diskretūs elementai sudaromi elementarioms (daugiau nedalomoms) dvejetainėms procedūroms. Tokioje operacijoje dalyvauja tik du dvejetainiai vienženkliai skaičiai. Tokių dvejetainių operacijų bei jų schemų su dviem dvejetainiais vienženkliais skaičiais pakanka turėti penkiolika, kad būtų galima sudaryti bet kokios aritmetinės ar loginės operacijos atlikimo schemas (pav. 15).

Elementarių operacijų 1, 2, 3 ir 4 (žiūr. lent. 1.2)pradiniai duomenys sudaro visas įmanomas dvejetaines kombinacijas, o jų rezultatai yra lygūs nuliams. Tokių pat kombinacijų rezultatai lygūs vienetams (operacijos 5, 6, 7 ir 8). Operacijos 9 ir A yra inversijos. Operacijos B, C, D ir E nėra kai kurių 1 – 8 operacijų pakartojimas, nes čia operacijos rezultatai siejami su vieneto ar nulio padėtimi, tai reiškia, kad rezultatas priklauso nuo to, kuris iš operandų (pirmas ar antras) yra vienetas arba nulis.

Operacija F prie elementarių operacijų priskiriama tik sąlyginai, nes ją galima realizuoti tik sudėtingesne diskrečia kompiuterio elemento schema. Šią operaciją jungiant su kitomis nuo 1 iki E elementariomis operacijomis, galima atlikti bet kuriuos anksčiau pateiktus aritmetinius veiksmus.

Kadangi elementarių operacijų kiekiai bei jų integravimo kombinacijų įvairovė šiuolaikiniuose kompiuteriuose praktiškai mažai ribojami, tai įmanoma įvairiausias schemas integruoti taip, kad jos galėtų atlikti bet kokį reikiamą kiekį ir reikiamo sudėtingumo logines – matematines procedūras.

Anksčiau pateiktos aritmetinės ir loginės operacijos leidžia suvokti dvejetainio manipuliavimo duomenimis esmę ir parodo šio proceso neribotas manipuliavimo duomenimis galimybes. Kita vertus, pateiktasis aritmetikos ir logikos realizavimo būdas gali būti visiškai kitoks. Tai reiškia, kad duomenų baite vienetas gali būti visiškai kitaip pateiktas, negu buvo pateikta poskyryje 1.1. Svarbu, jog fizinė schema “suvoktų”, kad ji turi reikalą su vienokiu ar kitokiu skaičiumi ar simboliu ir galėtų jį reikiamai apdoroti, pagal savo pačios paskirties funkciją.

Pav. 1.5. Operacijos IŠSIKRTINĖ ARBA schema.

Elementarių operacijų lentelė 1.2.

Operacijos kodai 1 2 3 4 5 6 7 8 9 A B C D E F

Pradiniai duomenys 0 0 1 1

0 1 0 1 0 0 1 1

0 1 0 1

1 0 1 0

0 1 1 0

0 1 1

1

Operacijos rezultatai 0 0 0 0 1 1 1 1 0 1 0 0 1 1 1 0

Praktikoje naudojamos įvairios skaičių, raidžių ar kitokių simbolių dvejetainio kodavimo sistemos. Net kai kurie skirtingų gamintojų kompiuteriai turi skirtingus vidinius kodus. Tokie skirtingumai netrukdo keistis duomenimis, nes perkodavimo principai labai paprasti ir lengvai fiziškai realizuojami.

Perkodavimui imama 256 baitų lentelė, kurios baituose įrašomi dvejetainiai simboliai tos kodavimo sistemos, į kurią norima perkoduoti. Perkoduojamieji simboliai traktuojami kaip skaičiai, kurie nurodo reikiamo baito vietą lentelėje. Tame baite ir yra įrašytas šio perkoduojamojo simbolio atitikmuo. Pavyzdžiui, jeigu tam tikroje kodavimo sistemoje simbolis A yra šešioliktainis skaičius F1, tai jo atitikmuo, simbolis A, sistemoje, į kurią tas A perkoduojamas, turi būti įrašytas lentelės 241 baite, skaičiuojant nuo tos lentelės pradžios, nes

F116=24110 .

Pabrėžtina, kad nuo schemų realizavimo lygmens priklauso kompiuterių paskirtis. Jeigu schemos realizuotos taip, kad kompiuteris sprendžia galutinio vartotojo uždavinius, tai toks kompiuteris dažniausiai būna specialios paskirties kompiuteriu, t.y. sukurtas ribotam kiekiui konkrečių uždavinių spręsti. Tai gali būti labai įvairi kompiuterinė technika, nuo kompiuterio paprastų elementų panaudojimo įvairiuose įrenginiuose iki specialių kompiuterių, valdančių ištisus technologinius procesus. Jeigu kompiuterių schemos realizuotos taip, kad galutinio vartotojo uždavinio tiesiogiai nesprendžia, tai tokie kompiuteriai laikytini universaliais. Šių kompiuterių schemos sprendžia tam tikrus tarpinius uždavinius, o šių kombinacijos jau tenkina galutinio vartotojo reikmes. Šiuo atveju sprendžiamų uždavinių įvairovė gali būti labai didelė, todėl tokie kompiuteriai ir laikomi universaliais.

1.5. Universalaus kompiuterio įrenginiai

Universalaus kompiuterio įrenginių pavadinimai ir jų jungimo schema pateikiama 1.6 pav. Visas šios knygos turinys orientuotas į universalios paskirties kompiuterius. Bendriausiuoju atveju universalų kompiuterį sudaro:

– centrinis procesorius;

– operatyvioji atmintis;

– įvesties ir išvesties įrenginiai bei jų jungtys.

Pav. 1.6. Universalaus kompiuterio įrenginių jungimo schema.

Centrinis procesorius yra pagrindinis kompiuterinės sistemos valdymo ir duomenų apdorojimo įtaisas.

Kompiuterio atmintis yra pagrindinis duomenų atsiminimo įtaisas. Šis įtaisas turi dvi atmainas: operatyviąją ir išorinę atmintis. Operatyvioje atmintyje centrinis procesorius atlieka duomenų apdorojimo operacijas, o išorinė atmintis skirta dideliems duomenų kiekiams įsiminti bei saugoti.

Įvesties / išvesties įrenginiai skirstytini į įvesties įrenginius, išvesties įrenginius bei įvesties-išvesties įrenginius.

Universalus kompiuteris gali būti įjungtas arba neįjungtas į įvairaus tipo lokalius ar globalius kompiuterių tinklus, todėl schemoje tinklų įjungimo galimybė nurodyta kaip fizinė jungtis, o ne konkretūs įrenginiai.

Kompiuterio monitorius yra aparatinis įtaisas, kuris įgalina vizualiai teikti duomenis vartotojui bei padeda vizualiai stebėti klaviatūra ar kitaip į kompiuterį įvedamus duomenis.

Pele vadinamas manipuliatorius, kuris įgalina operatyviau valdyti duomenų apdorojimo procesą, negu klaviatūra. Klaviatūros ir spausdintuvo paskirtį nusako pats šių įrenginių pavadinimas.

Diskrečių kompiuterių elementų aprašymai bei pastaroji universalaus kompiuterio įrenginių ir jų tarpusavio jungimo schema užbaigė šioje knygoje pateikiamus fizinius kompiuterio elementų aprašymus. Visa kita knygos medžiaga skirta taikomosios matematikos dalykams.

Toliau nagrinėjama viena iš esminių kompiuterijos pradmenų sampratų. Tai sudėtingos informacijos, kurią suvokia ir gali įvairiai reikšti žmogus, pateikimas dvejetaine simbolika ir atvirkščiai, d

. . .

Lentelės schema – jos atributų ir jų kodų sąrašas:

Institucijos pavadinimas Bendras darbuotojų skaičius Darbo stažas

__ metų Darbo stažas

__ metų Darbo stažas

__ metų

C1 C2 C3 C4 C5

Šioje schemoje ir toliau lentelėse atributai bus žymimi didžiosiomis raidėmis, o atributų reikšmės tomis pačiomis mažosiomis raidėmis. Taigi, a yra ne atributas, o atributo reikšmė, t.y. pačios konkrečios lentelės pavadinimo kodas, apie institucijų personalą. Lentelės schemoje C3, C4 ir C5 atributuose nenurodyti konkretūs stažo metai. Tai daroma sąmoningai ir todėl, kad čia nagrinėjama duomenų, kaip tokių, struktūra ir pateikimo forma. Nurodžius darbuotojų grupių susidarymą pagal konkretų dirbtų institucijoje metų skaičių – būtų jau sąlyga darbo stažo uždavinio sprendimui. Pastarasis objektas nėra šio duomenų nagrinėjimo tikslas. Be to jis rodo skaitytojui apie takoskyros esmę tarp informatikos dalyko ir tam tikros srities, kuri yra pasitelkusi informatiką, uždavinių. Kompiuterijai pagelbėja, bet nepakeičia ir negali pakeisti kitų veiklos sričių nei teorijos nei praktikos.

Lentelės, užpildytos duomenimis pavyzdys:

a, B – b1, D – d1

C1 C2 C3 C4 C5

c11 c 12 c 13 c 14 c 15

c21 c 22 c 23 c 24 c 25

c 31 c 32 c 33 c 34 c 35

— — — — —

— — — — —

— — — — —

Lentelės a tipo duomenų cij (i = 1, 2, 3, ., j = 1, 2, 3, 4, 5) skaičius priklauso nuo to, kelių institucijų ir kurių metų pradžios duomenys apie darbuotojų stažą reikalingi. Nepriklausomai nuo duomenų cij gausumo, kompiuterio atmintyje lentelės schemą pakanka turėti tik vieną, o duomenis atmintyje laikyti atskirai nuo schemos tik su jų identifikatoriais. Tada duomenų struktūrai nustatyti turime vieną įrašą:

a, B, D; C1, C2, C3, C4, C5.

Atributų reikšmės turės parodytąjį pavidalą, o jų kiekį lemia skirtingų b ir d skaičius:

. (2.1)

Taip glaustai ir formaliai galima pateikti formule (2.1) lentelės sandarą, kuri “patogi” laikyti kompiuterio atmintyje. Be to, anksčiau pateikta lentelė ab1d1 gali būti ir pastarųjų formulių aibių dalimi.

Taigi b, d ir cij yra bendru pavidalu pateiktas atributų B, D, C1, C2, C3, C4, C5 reikšmės, skirtingos kiekvienam reikšmių aibės elementui – savarankiškai identifikuotai duomenų lentelei, neturinčiai tiesiogiai priskirtos schemos. Ta schema priskiriama visoms atributų reikšmėms, sulyginus ir nustačius, kad abi struktūras identifikuojantys kodai a sutampa.

Duomenų lentelėje eilutės gali būti išdėstytos įvairia tvarka: pagal kurio nors atributo skaitinių reikšmių didėjimą arba mažėjimą, pagal tekstinių atributų reikšmių pirmųjų raidžių abėcėlę ir t.t.

Žemiau (2.1 pav.) pateikiama eilučių išdėstymo tvarka pagal atributo C3 reikšmių didėjimą (I), mažėjimą (II) ir pagal atributo C1 – institucijų pavadinimų pirmųjų raidžių abėcėlę (III)

C3

_____ C3

______ C1

______

16 31 AB”1”

18 30 AB”6”

30 18 UAB”1”

31 16 UAB”14”

. . .

I atvejis II atvejis III atvejis

Pav. 2.1. Duomenų lentelės eilučių išdėstymo būdai

Akivaizdu, kad nuo eilučių išdėstymo skirtingumo duomenys nesikeičia. Bet būtina turėti galimybę vieną eilutę atskirti nuo kitos. Tam tikslui paprastai vienas iš atributų nurodomas kaip rakto atributas, o jo reikšmės tampa eilučių raktais, t.y. identifikatoriais. Jei vienos atributo reikšmės nepakanka, nes yra pasikartojančių rakto atributo reikšmių, tai rakto atributais nurodomo du ar daugiau atributų. Pateiktoje a lentelėje rakto atributas bus C1, t.y. institucijos pavadinimas.

Jeigu dėl kokių nors priežasčių (pavyzdžiui, klaidos) atsitinka taip, kad lentelėje yra dvi ar daugiau to pačio rakto ir vienodų (sutampančių) kitų atributų reikšmių eilutės, tai visos eilutės išbraukiamos iš lentelės, paliekant tik vieną iš jų. Akivaizdu, kad buvo be reikalo dubliuojami vieni ir tie patys duomenys. Jeigu esant tam pačiam dviejų eilučių raktui, kitos atributų reikšmės skiriasi, tai aišku, kad pateikiami klaidingi duomenys.

Pavyzdžiui, negali būti taip, kad vienu ir tuo pačiu metų pradžioje, vienoje ir toje pačioje institucijoje vienodą darbo stažą turėtų skirtingas skaičius darbuotojų. Tik kai eilutės dubliuojamos, tai tokia klaida įmanoma. Pavyzdžiui:

C1 C2 C3 .

AB “1”

100 26 ? .

. . . .

. . . .

. . . .

AB”1”

100 25 ? .

Pav. 2.2. Eilučių dubliavimas lentelėje, įgalinęs pateikti klaidingus duomenis.

Šiuo atveju klaidą gali rasti ir ištaisyti tik duomenų savininkas, t.y. būtina kreiptis į pirminį duomenų šaltinį.

Lentelės schemos atributų skaičius vadinamas lentelės rangu. Lentelės eilučių skaičius vadinamas tos lentelės eile arba galia. Jeigu lentelės rangas yra pastovus skaičius, tai lentelių eilė gali skirtis. Pavyzdžiui, lentelės a rangas yra 5, tai eilė kiekvienam lentelės užpildymui (skirtingiems d ) gali būti kitokia ir priklauso nuo to, kiek institucijų yra skirtingų metų pradžioje objekte b.

Lentelių turinio bei jų identifikatorių įvairovė nagrinėtina teoriniu ir praktiniu aspektais dėl kiekybinių bei sandaros skirtingumų. Teoriniu požiūriu atributų CI ir jų reikšmių cij aibės, sudarančios lentelės turinį, yra begalinės, nes atspindi realaus pasaulio įvairovę.

Lentelių identifikatorių a, b ir d bei jų atributų aibės yra skirtingos savo prigimtimi ir skaitlingumu.

Lentelių schemų identifikatorių aibė {a} gali būti neriboto didumo, nes teoriškai įmanoma kontroliuoti vis naujas ir kitokias atributų schemas įvairiausiems realaus pasaulio objektams, procesams, reiškiniams ir pan. Be to, gali būti imamos vienos ir tos pačios schemos skirtingas elementų skaičius.

Pavyzdžiui:

a; C1 , C2 .

a; C1 , C2 , C3 .

a; C1 , C2 , C3 , C4 .

a; C2 , C3 .

a; C2 , C3 , C4 ,, C5 .

– – – – –

– – – – –

– – – – –

gaunamos naujos schemos. Visose gautose atributų schemose atributus galima išdėstyti perstatinių principu, gaunant iš kiekvienos naujos schemos dar n! schemų. Visa tai rodo, kad teoriniu požiūriu schemų aibė {a} nėra baigtinė savo elementų skaičiumi. Kiekvienas iš šių a identifikuoja vis kitokią atributų schemą, kuri gali būti užpildoma neribotą kiekį kartų, atributų reikšmėmis cij. Tokie užpildymai priklauso vėl nuo neriboto realų pasaulį atspindinčio objektų bei subjektų kiekio b.

Visų aukščiau minėtų lentelių įvairovę ir gausą radikaliai papildo identifikatoriaus dalis – laiko faktorius. Laiko faktorius tai konkretaus laiko momento fiksavimas arba laiko tarpo nurodymas, kuriuose turi prasmę cij. Teoriniu požiūriu kiekvienam realiai galinčiam egzistuoti laiko tarpui arba momentui galima konstruoti vis naujas lenteles iš visų anksčiau paminėtų begalinių duomenų lentelių aibių.

Praktikoje vienos institucijos, nesusietos su duomenų apdorojimo industrija, duomenų lentelių schemų skaičius dažniausiai būna tarp vienos ir kelių dešimčių. Be to, šios schemų užpildytų turiniu t.y. cij didelė dalis apdorojama bendrąja arba tipine programine įranga, gaunama iš kitų institucijų, įvairių kompiuterinių tinklų ir pan. Paprastai tik nedidelė dalis duomenų tenka apdoroti specialiomis tik šiai institucijai sukurtomis programinėmis priemonėmis. Tad specialiems, charakteringiems tik konkrečiai institucijai duomenims pateikti pakanka dažniausiai iki dešimties – dvidešimties schemų. Šių schemų užpildymų duomenimis skaičius labai skirtingas ir priklauso nuo specialiųjų uždavinių pobūdžio. Bet šiame duomenų kaip tokių nagrinėjimo etape svarbiausia suvokti duomenų identifikavimo priklausomybę nuo duomenų savybių ir atvirkščiai.

Taigi, duomenys, kurių schema ir jos atributai turi realias atributų reikšmes, gali būti identifikuojami:

– a – tik schemos kodo;

– a, b – a ir subjekto kodų;

– a, d – a ir laiko faktoriaus kodų;

– a, b, d – a, subjekto ir laiko faktoriaus kodais;

– a, b, d, ? – trijų identifikavimo faktorių nepakanka.

Jeigu duomenų lentelės identifikavimui pakanka tik kodo a, tai reškia, kad tos lentelės duomenys cij nepriklauso konkrečiam subjektui ir nepriklauso nuo laiko faktoriaus. Tai a yra sudaryta iš įvairių konstantų ir/arba normatyvinių duomenų, nes normatyviniai duomenys yra sąlyginai pastovūs.

Duomenų identifikuojamų a ir subjekto b pavadinimu arba kodu galėtų būti tam tikras techninis įrenginys, kurio atributų reikšmės pateikiamos kaip įrenginio agregatai, detalės, jų skaičiai įrenginyje, jų nomenklatūriniai numeriai ir kt., nes agregatų kiekiai dažnai (bet ne visada) nepriklauso nuo laiko faktoriaus.

Jeigu prie duomenų, identifikuojamų a, b, pateiktame pavyzdyje pridėti ir atributą “KAINA”, bei jos reikšmes išreikštas piniginiais vienetais, tai identifikatorius turėtų būti papildytas ir laiko faktoriumi d. Taip yra todėl, kad kaina gali keistis praėjus tam tikram laikui, arba imant kitą laiko momentą, nei nurodoma lentelėje jos užpildymo metu. Tokiu būdu turėtume naują lentelę su pakitusiomis kainomis ir senąją – su senomis kainomis. Naujoji lentelė būtų identifikuojama jau a, b, d.

Dažnai pasitaiko, kad duomenų lentelėms identifikuoti a, b, d nepakanka. Tai atsitinka todėl, kad daugiau kaip vienos lentelės identifikatoriai sutampa. Vieniems uždaviniams spręsti tai gali netrukdyti, bet bus ir tokių uždavinių, kuriems būtina “žinoti”, kiek ir kokių lentelių yra su vienodais a, b, d. Tai gali atsitikti dėl paprastų priežasčių kaupiant duomenis nesudėtingiems uždaviniams spręsti. Pavyzdžiui, tegu apie tam tikrą operaciją technologiniame procese duomenys pateikiami duomenų lentelėmis. Visiškai nesvarbu, ar tie duomenys vienodi, ar ne, svarbu juos turėti ir žinoti, kiek kartų įvyko operacija. Jeigu operacijos vyksmo pradžia matuojama sveikais laiko vienetų skaičiais (juos apvalinant), tai dvi operacijos per mažesnę sumarinę trukmę nei laiko matavimo vienetas rodys, kad dvi operacijos įvyko vienu ir tuo pačiu laiko momentu d. Praktikoje tokios operacijos pavyzdžiu gali būti du telefono pokalbiai, įvykę tarp tų pačių abonementų per minutę, jeigu laiko momento skaičius apvalinamas vienos minutės tikslumu, skaičiaus trupmeninę dalį atmetant.

Taigi apibendrinant tai, kas pasakyta apie vienodus identifikatorius, galima tvirtinti, kad kai kuriais atvejais identifikatoriaus sudaryto iš a, b ir d elementų lentelėms vienareikšmiškam identifikavimui nepakanka. Tada galima identifikatoriuje nurodyti vieną ar kelis duomenų adresus lentelėje ir į identifikatorių (vietoje adreso) įrašyti to adreso turinį. Papildomi duomenys identifikatoriuje įgalins vienareikšmiškai identifikuoti bet kokią duomenų lentelę. Adresai lentelėje nurodomi grafos numeriu j arba eilutės ir grafos numeriu ij lentelėje. Šie klausimai bus detaliai nagrinėjami pateikiant duomenų matematinius modelius.

2.3. Algoritmai ir programos – duomenys.

Dar prieš apibrėžiant, kas yra algoritmas ir kas yra programa, galima pasakyti, kad tai duomenys. Tai yra duomenys apie tuos duomenis, kurie buvo aprašomi praeitame 2.2. poskyryje. Taigi, duomenys apie duomenis dažniausiai vadinami metaduomenimis.

Sugretinus pirmojo knygos skyriaus sąvokas apie dvejetainių duomenų išraiškas kompiuterio atmintyje ir šio skyriaus duomenų apie realius objektus aprašymus, aiškiai matyti, kad kompiuterio elementai galės pastaruosius duomenis apdoroti tada ir tik tada, jei jie atsidurs kompiuterio atmintyje ir bus pateikti dvejetaine forma. Tokiais “tarpininkais”, kurie galėtų logiškai ir fiziškai sujungti realių objektų duomenis su kompiuterio schemomis, yra algoritmai ir programos. Tad tokia nuorodų ir taisyklių visuma, kuri apibrėžia duomenų apdorojimo procesą taip, kad iš pradinių duomenų būtų gaunami duomenys – apdorojimo rezultatai, vadinama algoritmu.

Nesudėtingą algoritmą žmogus gali įsiminti, sudėtingesnius būtina užrašyti elektroninėje aparatūroje, popieriuje ar kitaip. Bet jokiu atveju šis algoritmas neturės jokios įtakos duomenų apdorojimui, kol jis nebus išreikštas programa, o pastaroji nebus pateikta dvejetaine forma ir įrašyta į kompiuterio atmintį. Taigi kompiuterio atmintyje gali būti tik dvi iš esmės besiskiriančių duomenų rūšys:

– duomenys apie realius objektus;

– duomenys apie duomenis arba programos, įgalinančios duomenis perdaryti, apdoroti, įvesti, išvesti iš kompiuterio atminties ir t.t.

Tad programa vadinami duomenys, kurie skirti duomenų apdorojimo komponentams valdyti ir algoritmui įvykdyti.

Duomenų apdorojimo komponentų valdymas reiškia, kai duomenų apdorojimo programoje turi būti nuorodos į kitas, bendras daugeliui duomenų apdorojimo uždavinių programas, kad jos atliktų tam tikrus pagalbinius darbus ir tam tikrus algoritmo realizavimo momentus. Tokiais komponentais gali būti duomenų įvestis ir išvestis, duomenų ir programinių veiksmų korektiškumo kontrolė, programų ir duomenų apsauga nuo ištrynimo ir t.t.

Jeigu programa kompiuterio atmintyje veiktų viena, tai jai tektų atlikti daug visokiausių pagalbinių darbų, kuriuos reikėtų programuoti kartu su taikomąja programa kiekvieną kartą pagal tos programos specifiką. Kad tokie bendro pobūdžio darbai ruošiant programas atkristų, yra sudarytos programinės bendrojo pobūdžio sistemos, kurios aptarnauja taikomojo pobūdžio programas. Tos sistemos, vadinamos operacinėmis, diskinėmis operacinėmis, transliatoriaus ir kitaip. Jos kinta kartu su kompiuterių fizinių savybių kaita, pačios tobulėja, pasensta, sukuriamos naujos ir t.t. Šios sistemos sudaro dalį kompiuterio dirbtinio intelekto, t.y. žmogaus intelektualių savybių imitavimą kompiuteriu.

Baigiant šį trumpą poskyrį, skirtą programų ir algoritmų esmės apibrėžimui, matome, kad duomenys ir programos dvejetainėje kompiuterio atmintyje turi skirtis ne tik savo turiniu, bet ir paskirtimi. Duomenys, koduoti įvairiais metodais ir būdais, atspindi duomenų struktūrą, turinį ir semantiką. Programų kodai reiškia, ką ir kaip reikia daryti su duomenimis, kad gauti algoritmo apibrėžtą to darymo t.y. apdorojimo rezultatą. Kompiuterio schemos (žiūr. 1 skyrių) analizuoja dvejetainį programų tekstą ir atlieka tam tikrus veiksmus su duomenimis.

Duomenų, t.y. ir duomenų apie realųjį pasaulį ir duomenų apie duomenis t.y. programų pateikimui kompiuterio atmintyje skiriamas trečiasis knygos skyrius, kuris, autoriaus nuomone yra vienas iš svarbesnių šios knygos skaitytojui, norinčiam turėti tam tikrus profesionalius įgūdžius suvokiant ir formuojant savo uždavinius, kad juos galėtų racionaliai spręsti kompiuteriai.

3. Kompiuteriniai duomenys

Kompiuteriniais duomenimis laikomi duomenys apie realius objektus bei metaduomenys, turintys tokią striktūrą ir išraiškas, kad juos gali įsiminti kompiuterio atminties įtaisas. Šis įtaisas dažniausiai dar vadinamas tiesiog kompiuterio atmintimi, o tokie duomenys vadinami mašininiais ar aparatiniais duomenimis.

Šio skyriaus tikslas – pateikti sampratą apie tai, kaip duomenys, kurie kompiuterio atmintyje išreiškiami elementaria dvejetaine forma, nepraranda duomenų apie realius objektus turinio ir prasmės? Be to, dvejetainio apdorojimo metu gaunami nauji duomenys, turintys ir naują struktūrą, ir naują turinį, ir kitokią prasmę, negu buvo prieš dvejetainių duomenų apdorojimą. Atsakant į pateiktą klausimą, šiame skyriuje nagrinėjami kompiuterio atminties adresavimo principai, duomenų ir programų struktūros ir jų ryšiai kompiuterio atmintyje, adresų laukų samprata ir pavyzdžiai bei duomenų turinio kodavimo būdai.

3.1. Atminties adresacija ir duomenų struktūros

Kompiuterio atmintis techniškai sudėtingas įtaisas, kuris tobulėja mažinamas savo fiziniais parametrais ir didinamas talpumu.

Žvelgiant matematiniu aspektu, kompiuterio atmintį pakanka suvokti, kaip dvejetainių skilčių ar jų grupių vektorių. Aštuonių skilčių grupė sudaro mažiausią adresuojamą atminties ląstelę – baitą.

Atminties baitų vektoriuje pirmojo baito adresu dažniausiai yra nulis, o paskutiniojo baito adresas yra sveikasis skaičius n, kuris rodo atminties talpą arba didumą.

Pav. 3.1. Atminties baitų vektorius

Duomenų baito, įrašo, lauko, failo, masyvo ar kitokios jų struktūros turinį galime nustatyti tik tokiu atveju, jeigu žinomas struktūros pradžios adresas atmintyje. Tik po to galima nagrinėti baitų turinį ir pagal 0 bei 1 išsidėstymą atpažinti reikiamus duomenis. Kas tie duomenys ir ką su jais reikia daryti nusako metaduomenys. Kas tie metaduomenys – algoritmas, kas tas algoritmas – uždavinys.

Duomenų įrašu laikomas duomenų sankaupos (failo, lauko, masyvo) elementas, kurio vidinių dalių duomenų tipai gali būti skirtingi.

Duomenų failu (byla, rinkmena) laikoma identifikuota logiškai ar/ir fiziškai susietų įrašų aibė.

Duomenų masyvu laikoma įvardinta vienodo tipo įrašų aibė, kur įrašai identifikuojami indeksais.

Duomenų lauku laikoma logiškai ir/arba fiziškai susietų failo arba masyvų įrašų įvardinta dalis, arba įrašams skirta bet dar neužpildyta atminties dalis.

Jeigu duomenų lauką sudaro tam tikra iš duomenų sankaupos išrinkta įrašų aibė, bet pateikiama ne tokia eile, kokia buvo minėtose duomenų struktūrose, tai tokia aibė bus vadinama duomenų rinkiniu.

Kai nėra svarbu, ar nagrinėjami duomenys yra failas, masyvas, laukas ar rinkinys, tai toks įvardintas duomenų darinys vadinamas duomenų sankaupa.

Ateityje dažnai bus vartojama duomenų apdorojimo uždavinio samprata arba jos sinonimas – taikomasis uždavinys. Toks uždavinys reiškia galutinio vartotojo duomenų apdorojimo uždavinį ir tiesiogiai nesietinas su sisteminių, servisinių ar kitokių uždavinių sprendimu, kurie tiesiogiai neturėtų dominti galutinio vartotojo.

Jeigu duomenų įrašai yra

A1 , A2 , ., Ak ,

kur 1, 2, ., k yra įrašų eilės numeriai, tai duomenų failą galima užrašyti taip:

Ai  F,

kai i kinta nuo 0 iki k.

Šiuo atveju duomenų laukas L bus F poaibis

L  F, kur Ad  L,

kai skaičius d< k.

Jeigu duomenų įrašai yra

,

kur k i (1> i >l) yra įrašų identifikatoriai, tai duomenų masyvą M sudarys įrašai

,

o šios sankaupos laukas galėtų būti

L  M, kur ,

bet t< i, arba duomenų identifikatorių, o taip pat ir įrašų duomenų lauke turi būti mažiau nei masyve. Jeigu t = i tai

L  M.

Akivaizdu, kad bet kokios duomenų sankaupos gali būti surastos ir pateiktos apdorojimui, jeigu žinomi tų duomenų struktūrų adresai. Paprastai tai būna tų struktūrų pirmųjų baitų kompiuterio atminties adresai. Atkreiptinas dėmesys į tik ką pateiktas sąvokas:

– “. gali būti surastos.”;

– “. pateiktos apdorojimui.”;

– “.jeigu žinomi . adresai.”.

Kyla klausimai: kas gali surasti, pateikti apdorojimui, aišku, ir apdoroti? Pagaliau, kam turi būti žinomi adresai? Atsakymas trumpas – programoms. Duomenų apdorojimo programoms.

Tokiu būdu, dar nesuformulavus pagrindinių programų ir programavimo sampratų, jau galima suvokti kai kurių iš tų sampratų esmę.

Anksčiau minėtieji failų adresai yra dvejetainiai kompiuterio atminties adresai, kurie vadinami absoliučiais adresais. Suprantama, kad tiesiogiai programoms pateikti absoliučius adresus labai sudėtinga. Todėl jie nustatomi pasitelkus tam tikrus metodus, kurie realizuojami tam tikromis kompiuterio programomis. Šios programos tiesiogiai nedalyvauja vartotojo uždavinio sprendime, bet aptarnauja kompiuterinį to sprendimo procesą.

Toliau bus pateiktos pagrindinės sąvokos apie:

– įrašų formatus;

– operatyviąją ir išorinę atmintis;

– duomenų sankaupų sudarymo būdus;

– duomenų paieškos būdus;

– duomenų adresus bei adresavimo būdus;

– duomenų bazes.

3.1.1. Įrašų formatai

Viename duomenų faile ar masyve esančių įrašų pagrindinis skirtumas (be turinio skirtingumo) tai pastovus arba kintamas jų ilgis. Tai reiškia, kad vieną ir tą patį duomenų failą arba masyvą gali sudaryti arba pastovaus, arba kintamo ilgio, skaičiuojant simboliais arba baitais, įrašai.

Įrašai pastovų ilgį gali turėti natūraliai. Tai reiškia, kad tam tikri duomenys, sudaryti iš įrašų apie realius objektus, turi vienodą simbolių skaičių. Tokio įrašo pavyzdžiu gali būti reliacinės aibės kortežai (t.y. duomenų lentelės eilutės), kur vieno ir to paties atributo reikšmės turi tą patį simbolių skaičių.

B1 B 2 B 3 B 4

1 įrašas – abc 22 366 481

2 įrašas – bcd 93 661 121

3 įrašas – cde 41 332 101

———————————–

Pav. 3.2. Natūraliai pastovaus ilgio įrašai

Praktikoje, dažniausiai, norint, kad įrašai turėtų pastovų ilgį, toks ilgis padaromas dirbtinai. Pirmiausiai nustatomas kiekvieno įrašo komponento (duomens) maksimalus ilgis. Po to, kad būtų gautas maksimalus duomens ilgis, jo pradžioje (dažniausiai skaičiams) arba pabaigoje (dažniausiai tekstiniams duomenims) papildomai įrašomi specialūs duomens pailginimo simboliai. Dažniausiai tokie simboliai būna simboliai – protarpiai (└┘).

B1 B2 B3 B4

1 įrašas – a b└┘ └┘2 └┘64 481

2 įrašas – c└┘ └┘ 34 686 └┘33

3 įrašas – d e f 43 └┘└┘1 961

———————————————

Pav.3.3. Dirbtinai sudaryti pastovaus ilgio duomenys įrašuose

Žinant, kad maksimalus pav. 3.3 pateiktų įrašų ilgis yra 11 simbolių, neskaitant simbolių, kurie skiria vieną atributo reikšmę nuo kitos, (3 + 2 + 3 + 3 = 11), dirbtinai pastovų ilgį galima sudaryti ir kitaip: iki 11 trūkstamų simbolių skaičius protarpiais (└┘) užpildomas įrašas jo pabaigoje.

B1 B2 B3 B4

1 įrašas – ab 2 64 481└┘└┘└┘

2 įrašas – c 34 686 33└┘└┘└┘

3 įrašas – def 43 1 961└┘└┘

———————————————

Pav.3.4. Dirbtinai sudaryti pastovaus ilgio įrašai

Visais pav. 3.2., 3.3 ir 3.4 pateiktais pastovaus ilgio įrašo sudarymo atvejais, tarp atskirų įrašo duomenų įrašomas tarpas, kuris leidžia rasti kiekvieno duomens pabaigą, o viso įrašo pabaiga nustatoma, žinant jų visų ilgį. Suprantama, kad atributų A1 , A2,, A3, A4 ir B1 , B2, B3, B4 nėra reikalo kartoti prie kiekvieno įrašo ar jų grupės, atributai pateikiami tik tada, kai duomenis gauna vartotojas. Tad pastovaus ilgio įrašai kompiuterio atmintyje turės žemiau pateiktas išraiškas: pav. 3.2. – 1 išraiška, pav.3.3. – 2, pav.3.4. – 3.

1. abc└┘22└┘366└┘481bcd└┘93└┘661└┘121cde└┘41└┘332└┘101.

2. ab└┘└┘└┘2└┘└┘64└┘453c└┘└┘└┘34└┘686└┘└┘33def└┘43└┘└┘└┘1└┘961.

3. ab└┘2└┘64└┘481└┘└┘└┘c└┘34└┘686└┘33└┘└┘└┘def└┘43└┘1└┘961└┘└┘.

Pav 3.5. Pastovaus ilgio įrašai kompiuterio atmintyje.

Pažymėtina, kad antruoju pastovaus ilgio įrašo atveju įrašo duomenis visada skiria protarpis └┘, o kiti protarpiai pateikiami tik tada, kai duomuo neturi maksimalaus ilgio.

Vieną duomenų failą gali sudaryti 1 bei 2 tipų įrašų grupės. 3 grupė neimtina į bendrą failą todėl, kad jos įrašai identiški 2 įrašų grupei, nes skiriasi tik dirbtinio duomenų pailginimo būdu.

Trečioji įrašų grupė pateikta kintamojo ilgio įrašais bus parodoma pav.3.6.

ab└┘2└┘64└┘481/c└┘34└┘686└┘33/def└┘43└┘1└┘961/.

Pav.3.6. Kintamo ilgio įrašai.

Pastovaus ir kintamo ilgio įrašai turi ir tam tikrų privalumų ir tam tikrų trūkumų.

Pastovaus ilgio įrašus, ieškant jų ir peržiūrint visus iš eilės, lengva rasti, nes kiekvieno jų pradžia (pradedant antruoju įrašu duomenų sankaupoje) yra už vienodo baitų skaičiaus. Suradus klaidingą įrašą, jį lengva pakeisti teisingu įrašu.

Pastovaus ilgio įrašų panaudojimo negatyvioji pusė pasireiškia tuo, kad neracionaliai naudojama kompiuterio atmintis. Kadangi visų įrašų ilgis yra formuojamas pagal maksimaliai įmanomo įrašo ilgį, tai praktiškai toks maksimalus įrašo ilgis pasitaiko retai. Didžioji dauguma įrašų yra žymiai trumpesni. Tad 40-70% atminties laukų lieka neužpildyti, arba užpildomi bereikšmiais simboliais.

Kita pastovaus ilgio įrašų naudojimo neigiama aplinkybė yra ta, kad ilgesnį laiką naudojant įrašus, jų maksimalus ilgis gali keistis. Jeigu ilgis sumažėja, tai kompiuterio atminties neracionalus panaudojimas dar labiau padidėja. Jeigu maksimalus ilgis padidėja, tai gali sutrikti normalus uždavinių sprendimo ritmas, kuriems tektų naudoti dviejų skirtingų ilgių įrašus. Tokiu atveju gali tekti įnešti į uždavinių sprendimo programas tam tikrų korektyvų, kad jos galėtų spręsti uždavinius su dviejų ilgių įrašais, arba sudaryti specialią programą, kuri suvienodintų duomenų sankaupų įrašų ilgius. Ir programų korektyvos ir specialios programos tam tikrais atvejais gali būti sudėtingos ir gali komplikuoti duomenų apdorojimo sistemos naudojimą.

Kintamo ilgio įrašų naudojimas, sprendžiant duomenų apdorojimo uždavinius, pastovaus ilgio įrašams būdingų trūkumų neturi. Todėl tokie įrašai leidžia stabiliau spręsti duomenų apdorojimo uždavinius. Tačiau yra ir neigiamų tokių įrašų naudojimo aspektų. Pirmiausiai būtinas skiriamasis ženklas tarp įrašų ( / ). Jeigu duomenis formuojant neįmanoma išvengti klaidų, tai tenka tas klaidas taisyti. Ištaisant klaidas, klaidingi įrašai keičiami į teisingus. Jeigu naujojo (teisingo) įrašo ilgis mažesnis už klaidingojo įrašo ilgį, tai duomenų sankaupoje susidaro tam tikros “skylės”, užpildytos bereikšmiais simboliais. J

Join the Conversation

×
×