Rendszer, adat, információ; számrendszerek, számábrázolás


Rendszer

A rendszer egymással kapcsolatban álló elemek összessége, amelyek adott cél érdekében együttműködnek egymással, és működésük során erőforrásokat használnak fel. (Példák rendszerekre: az ember, egy szervezet, egy autó vagy egy repülőgép, egy számítógép, egy elektronikus könyvtár stb.)

A rendszer működése során felhasznált erőforrások legfontosabb típusai a következők:

A számunkra legfontosabb példa rendszerre egy digitális számítógép, amelynek egyik legfontosabb képessége az, hogy (legalábbis elvileg) bármilyen adatfeldolgozási feladat elvégzésére képes.

Egy számítógépes rendszer legfontosabb komponensei a következők:

Egy számítógépcsalád a digitális számítógépek egy olyan csoportja, amelyek architektúrája egymáshoz hasonló abban az értelemben, hogy az újabb számítógépek a régiekkel "felülről kompatibilisek". Egy számítógépcsaládhoz a számítógépek egymást követő generációi (ill. egy generáción belül a számítógépek egymást követő verziói) tartoznak. (vö. Oxford 1989: 90)
A mérnöki munka és a hardvertervezés szempontjából az architektúra kifejezés egy számítógép konfigurációjának és az azt alkotó fő elemek (központi vezérlő egység, aritmetikai és logikai egység, központi tár, a bemeneti és kimeneti csatornák vezérlői stb.) egymással való kapcsolatának a leírását jelenti. A pontos specifikáció a számítógépek (hardver- és szoftverszintű) kompatibilitása szempontjából rendkívül lényeges. (vö. Oxford 1989: 21-22)

A felhasználó szempontjából a közös architektúra a kompatibilitás alapja. (Oxford 1989: 21)

A számítógépes rendszer működésének absztrakt leírása: fekete doboz

A számítógép mint fekete doboz

A számítógép fekete doboz modellje

A számítógép univerzális, automatikus működésű, kívülről vezérelhető, műszakilag megvalósított rendszer.


Számrendszerek

A digitális számítógépekben az adatokat kettes számrendszerben, bináris számokként ábrázoljuk. Mivel a bináris számok nehezen kezelhetőek, legtöbbször 16-os számrendszerben, hexadecimális számokként jelenítjük meg őket.

Egy számrendszer (vagy számábrázolási rendszer) egységes szabályok alapján határozza meg, hogy a számjegyek sorozata milyen számokat jelenít meg. (Nyakóné Juhász 2011: 4)

Például ha egy megadott egész számot ('N') tízes számrendszerben akarunk kifejezni, akkor a következőképpen járhatunk el (vö. Nyakóné Juhász 2011: 4):
(0) vegyünk (pl. képzeletben) pontosan 'N' darab korongot;
(1) csoportosítsuk a korongokat 10-es csoportokba; a kimaradt korongok száma (a0) lesz a szám tízes számrendszerbeli alakjában az egyes helyi értékű számjegy
[vegyük észre, hogy ha N=10*k+d teljesül (ahol 'k' és 'd' egész számok, 0≤d<10), akkor a 10-es csoportok száma éppen k0=k, és a0=d teljesül; ezekkel a jelölésekkel N=10*k0+a0 teljesül];
(2) csoportosítsuk a korongokból az előző lépésben képzett, 10 korongot tartalmazó csoportokat 10-es csoportokba (ekkor egy csoportban 100 korong lesz); a kimaradt csoportok száma (a1) lesz a szám tízes számrendszerbeli alakjában a tízes helyi értékű számjegy;
[az előző jelöléseket használva k0=10*k1+a1 teljesül, ahol k1 a 100-as csoportok száma és 0≤a1<10 a kimaradt 10-es csoportok száma];
(3) csoportosítsuk a korongokból az előző lépésben képzett, 100 korongot tartalmazó csoportokat ismét 10-es csoportokba (ekkor egy csoportban 1000 korong lesz); a kimaradt csoportok száma (a2) lesz a szám tízes számrendszerbeli alakjában a százas helyi értékű számjegy;
[az előző jelöléseket használva k1=10*k2+a2 teljesül, ahol k2 az 1000-es csoportok száma és 0≤a2<10 a kimaradt 100-as csoportok száma];
(4) folytassuk a korongokból képzett csoportok 10-es csoportokba való csoportosítását addig, amíg már nem tudunk újabb 10-es csoportot képezni belőlük.
(5) ha pontosan 'n+1' lépést hajtottunk végre, akkor a szám tízes számrendszerbeli alakját
    N = anan−1...a2a1a0
adja, mivel az utolsó lépésben már nem tudtunk újabb 10-es csoportokat képezni.

Általánosan egy 'b' alapszámú számrendszerben a számok a következő formában írhatók le ("ábrázolhatóak"):
egy szám általános alakja a 'b' alapú számrendszerben

Példák:

(1) egy valós szám decimális számrendszerben (b=10):
    314.610 = 3*102+1*101+4*100 + 6*10−1

(2) egy egész szám bináris számrendszerben (b=2):
    1010112 = 1*25+1*23+1*21+1*20 = 4310

(3) egy valós szám bináris számrendszerben (b=2):
    101011.1012 = 1*25+1*23+1*21+1*20 + 1*2−1+1*2−3 = 43.62510

(4) egy egész szám hexadecimális számrendszerben (b=16):
    1C416 = 1*162+12*161+4*160 = 45210

(5) egy valós szám hexadecimális számrendszerben (b=16):
    1C4.416 = 1*162+12*161+4*160 + 4*16−1 = 452.2510



Az algoritmus fogalma. Példák algoritmusokra:

Az informatikában alapvető az algoritmus fogalma.

Az algoritmus több azonos jellegű, egymástól csak a kiinduló adatokban különböző feladat megoldására szolgáló eljárás, amelynek során előre meghatározott, véges számú lépést adott sorrendben végrehajtva jutunk el a feladat megoldásához.

A számunkra fontos algoritmusok azok, amelyek egy számítógépes program segítségével leírhatók ("kódolhatók"). Ekkor az algoritmus egyes lépéseinek meghatározott műveleteket végrehajtó utasításokat feleltetünk meg.

A programok segítségével leírható algoritmusok a főbb jellemzői a következők:

Egy algoritmus rendszerint nem egy egyedi probléma megoldására szolgál, hanem több, egymáshoz valamilyen szempontból hasonló probléma megoldására (amelyek csak a bemeneti adatokban különböznek egymástól). Az algoritmusok létrehozásakor mindig törekedjünk arra, hogy az algoritmus minél általánosabb legyen, azaz a megoldandó probléma által megengedett bemeneti (input) adatok minél szélesebb körére szolgáltasson megoldást.


Az ebben a fejezetben ismertetett algoritmusok formális leírására számos programot is meg fogunk adni. Az alábbiakban ezeknek a legfontosabb összetevőit tekintjük át. A példákat JavaScript programozási nyelven adjuk meg.

Kiinduló példa: egy bináris szám átalakítása decimális számmá.

A legegyszerűbb programok a következő utasításokból épülnek fel:

Az utasítások sorrendjét meghatározó három legfontosabb strukturált programszerkezet vagy vezérlési szerkezet a következő:

Az algoritmusok szemléltetésére folyamatábrákat használhatunk. A fenti strukturált programszerkezetek folyamatábrák segítségével a következőképpen szemléltethetők (vö. Vég József: Folyamatábra, 2022-09-24):

Strukturált programszerkezetek szemléltetése

A szekvencia egymás utáni utasítások sorozata (amelyeket például pontosvesszővel választhatunk el egymástól).

Az ábrán szereplő kétirányú elágazást (vagy elágaztatást) például JavaScript nyelven a következő utasítással tudjuk kódolni:

if(feltétel) {
 utasítás(ok)
 }
else {
 utasítás(ok)
 }

Ez a következőképpen fordítható le:

"Ha a feltétel teljesül (vagyis igaz), akkor hajtsd végre az 'if' után kapcsos zárójelben megadott utasítás(oka)t; egyébként pedig (vagyis ha a feltétel nem teljesül) hajtsd végre az 'else' után kapcsos zárójelben megadott utasítás(oka)t."

Az ábrán szemléltetett előltesztelő ciklust pedig JavaScript nyelven a következő utasítással tudjuk kódolni:

while(feltétel) {
 utasítás(ok)
 }

Ez a következőképpen fordítható le:

"Mindaddig, amíg a feltétel teljesül (vagyis igaz), (újra és újra) hajtsd végre a 'while' után kapcsos zárójelben megadott utasítás(oka)t."

Például az első 'n' szám kiíratását a következő algoritmussal tudjuk megvalósítani:

Az első 'N' egész szám kiíratása

Az algoritmust JavaScript nyelven például a következőképpen kódolhatjuk:

// az első 'n' szám kiíratása

var n=10;
var i=1;

while(i<=n) {
 writeln(i);
 i=i+1;
 }

writeln("_____________");

Vegyük észre, hogy az 'n' változó és az 'i' változó aktuális értéke határozza meg a 'while' ciklus ismétlődéseinek számát. Az 'n' változó kezdeti értéke 10, és az 'i' kezdeti értéke 1. Mivel a ciklus minden végrehajtásakor 'i' értéke eggyel nő, a tizedik végrehajtás után a ciklus befejeződik (ugyanis ekkor az 'i' értéke 11 lesz, ami már nagyobb 'n' értékénél).

Mivel a kódban szereplő ciklusszerkezet a gyakorlatban sokszor előfordul, a JavaScript nyelvben rendelkezésre áll ennek egy tömörebb formája, az ún. rögzített lépésszámú ciklus. Ezzel az algoritmus a következőképpen írható le:

// az első 'n' szám kiíratása (második változat)

var n=10;

for(var i=1;i<=n;i=i+1) {
 writeln(i);
 }

writeln("_____________");

A 'for' ciklus fejrésze "magába olvasztotta" az előző program var i=1; és i=i+1; utasításait, amelyeket a ciklusfeltétel előtt és után adunk meg. Bár két sor megtakarítása nem tűnik soknak, "sok kicsi sokra megy", és a tömörebb írásmód összetettebb programok esetén áttekinthetőbb programkódot eredményezhet. (Az i=i+1; utasítást rövidíthetjük i++; módon.)



Algoritmusok a számrendszerek köréből

Az alábbiakban konkrét algoritmusokat mutatunk be a számrendszerek köréből. A következő algoritmusokkal fogunk foglalkozni:

  1. bináris szám átalakítása decimális számmá
    • egész szám átváltása
    • kettedestört formájában adott törtszám átváltása
  2. hexadecimális szám átalakítása decimális számmá
  3. decimális szám átalakítása bináris számmá
    • egész szám átváltása
    • törtszám átváltása
      • véges tizedestört → véges kettedestört
      • véges tizedestört → végtelen szakaszos kettedestört
      • racionális törtszám → kettedestört
  4. bináris szám átalakítása hexadecimális számmá
    • hexadecimális szám átalakítása bináris számmá
  5. decimális szám átalakítása hexadecimális számmá
  6. végtelen szakaszos tizedes tört átalakítása racionális törtszámmá
  7. két egész szám legnagyobb közös osztójának meghatározása (euklideszi algoritmus)
  8. alapműveletek kettes számrendszerben
  9. számábrázolás

Az algoritmusok végrehajtását interaktív feladatok megoldásával is gyakorolhatjuk.

Egyes algoritmusok leírását a legtöbb esetben rövid JavaScript programokkal is bemutatjuk. A példák kipróbálásához felhasználható online JavaScript interpreter:

Online JavaScript Interpreter by Peter Jipsen, Chapman University (January 2013).
http://math.chapman.edu/~jipsen/js/ (2020-11-19)

Megjegyzés: Ha a fenti link valamilyen oknál fogva nem működik, használjuk az alábbi linket.

A JavaScript programok folyamatábráját megjeleníthetjük az alábbi webes alkalmazás segítségével:

Live code editor. Created by Bogdan Lyashenko.
https://bogdan-lyashenko.github.io/js-code-to-svg-flowchart/docs/live-editor/index.html (2022-10-02)

A folyamatábra a 'for' ciklust nem megfelelően ábrázolja, ezért érdemes ezeket mindig átírni 'while' ciklusra, mielőtt megjelenítenénk a program folyamatábráját.



Rendszer, adat, információ; számrendszerek, számábrázolás

Alapfogalmak

rendszer
A rendszer egymással kapcsolatban álló elemek összessége, amelyek adott cél érdekében együttműködnek egymással, és működésük során erőforrásokat használnak fel. A kapacitív erőforrások olyan erőforrások, amelyek mennyisége felhasználásuk során nem csökken (pl. adatok, eszközök, emberek). Az additív erőforrások olyan erőforrások, amelyek mennyisége felhasználásuk során csökken, rendszerint a felhasználás arányában (pl. alapanyagok, energia, idő, pénz).
– Egyes rendszerek (pl. az emberi test) homeosztátként működnek. A homeosztát olyan rendszer, amely bizonyos paraméterek között próbálja tartani a rendszer állapotát. (Pléh 1998: 38-39)
adat
Az adat alapvető kapacitív erőforrás. Az adat rendszerint valamilyen formában tárolt ismeretet jelent (pl. egy telefonkönyvben tárolt adatok).
információ
Az információ olyan adat, amelyet egy rendszer a működése során értelmez és felhasznál (pl. egy visszakeresett telefonszám, amelyet felhívunk).
tudás
A tudás összegyűjtött, rendszerezett ismeretek, adatok összessége, amelyek segítségével meghatározott feladatokat, problémákat oldhatunk meg. A tudás segítségével rendszerint megkísérelünk előre látni, kikövetkeztetni bizonyos dolgokat.
– A tudás a tárolt adatok gyűjtési, feldolgozási (frissítési), rendszerezési és visszakeresési algoritmusát is magában foglalja.
– A tudásra érvényes a szinergia elve: az egész több, mint a részek összessége.
– Az emberi objektív (és szubjektív) tudás növekedését írja le Karl Popper tetradikus sémája (Popper 1998: 21 et passim).

Számolási gyakorlatok

Általánosan egy 'b' alapszámú számrendszerben a számok a következő formában írhatók le ("ábrázolhatóak"):
egy szám általános alakja a 'b' alapú számrendszerben
A képletben

Például legyen az ábrázolt szám 314 a tízes számrendszerben (ezt 31410 módon jelölhetjük, ha egyszerre több számrendszerrel is dolgozunk). A fenti képlet alapján a számot
31410 = 3*102+2*101+4*100 = 300+20+4
formában írhatjuk fel.

Egy másik példaként legyen az ábrázolt szám 2.718 a tízes számrendszerben. A fenti képlet alapján a számot
2.71810 = 2*100+7*10−1+1*10−2+8*10−3 = 2+7/10+1/100+8/1000
formában írhatjuk fel.

Az alábbiakban a számrendszerek közötti átváltást öt típusfeladat segítségével gyakorolhatjuk:

  1. hexadecimális szám átalakítása decimális számmá
  2. bináris szám átalakítása decimális számmá
  3. decimális szám átalakítása bináris számmá
  4. bináris szám átalakítása hexadecimális számmá
  5. decimális szám átalakítása hexadecimális számmá

(1) hhh16 → ddd10

nagy , közepes , vagy kis hexadecimális szám átváltása decimális számmá

Például 1ab16 = 1*162 + a*161 + b*160 = 1*256 + 10*16 + 11*1 = 42710 (megjegyzés: a = 10, b = 11)

Segítség: táblázatok

hexadecimális szám: decimális szám: eredmény:

16  =   0   =   0   =  10

(2) bbb2 → ddd10

nagy , közepes , vagy kis bináris szám átváltása decimális számmá

Például 1011012 = 1*25 + 1*23 + 1*22 + 1*20= 1*32 + 1*8 + 1*4 + 1*1 = 4510 (megjegyzés: 25 = 32, 23 = 8)

Segítség: táblázatok, számológép

bináris szám: decimális szám: eredmény:

16  =   0   =   0   =  10
2  =   0 
 0 
 0 
 0 
 0 
10

Egy adott számrendszerbeli számot átválthatunk decimális számmá az ún. Horner-elrendezést használva is. Legyen például 111001102 az átváltandó szám.

1 1 1 0 0 1 1 0
2 1 2*1+1=3 2*3+1=7 2*7+0=14 2*14+0=28 2*28+1=57 2*57+1=115 2*115+0=230

A Horner-táblázat felépítése:
– a táblázat két sorból áll;
– a táblázat első sora a második cellától kezdve az átváltandó szám számjegyeit tartalmazza;
– a táblázat második sorának első cellájába az átváltandó szám számrendszerének alapja kerül;
– a táblázat második sorának második cellájába a felette levő számjegyet másoljuk be.

Az algoritmus lényege, hogy
– a táblázatban balról jobbra haladva és
– a második sor harmadik cellájától kezdve egymás után kitöltjük a táblázat második sorának celláit.
Az egyes cellák értékét úgy számítjuk ki, hogy
– az előző cella értékét (pl. 1) szorozzuk a számrendszer alapjával (pl. 2-vel) és
– a szorzathoz hozzáadjuk a cella felett (az első sorban) levő cellában levő számjegyet (pl. 1-et).

Az első sorban ábrázolt, megadott számrendszerbeli szám tízes számrendszerbeli értékét a második sor utolsó (jobb szélső) cellájának értéke adja.

Próbáljuk ki egy tetszőleges (2-16 alapú) számrendszerbeli, max. 8 számjegyből álló szám megadásával a Horner-elrendezést:

A számrendszerbeli szám:

1 1 1 0 0 1 1 0
2 1 3 7 14 28 57 115 230

(3) ddd10 → bbb2

nagy , közepes , vagy kis decimális szám átváltása bináris számmá

Például 7310 = 1*64 + 9 = 1*64 + 1*8 + 1 = 1*26 + 1*23 + 1*20 = 10010012 (megjegyzés: 26 = 64, 23 = 8)

Segítség: táblázatok, számológép

decimális szám: bináris szám: eredmény:

Egy decimális szám kettes számrendszerbeli alakját megkaphatjuk úgy, hogy
   (1) a számot elosztjuk 2-vel, és leírjuk az osztás eredményeként kapott hányadost és maradékot;
   (2) a leírt hányadost elosztjuk 2-vel, és ismét leírjuk az osztás eredményeként kapott hányadost és maradékot;
   (3) és ezt addig folytatjuk, míg a hányados értéke 0 nem lesz.
A kettes számrendszerbeli alakot a kapott maradékok szolgáltatják, fordított sorrendben felírva (azaz az utoljára kapott maradék lesz a kettes számrendszerbeli szám legmagasabb helyi értékű számjegye).

hányados osztás maradék
 

(4) bbb2 → hhh16

nagy , közepes , vagy kis bináris szám átváltása hexadecimális számmá

Például 10011012 = 010011012 → 01002 | 11012 → 410 | 1310 → 416 | d16 = 4d16 (megjegyzés: 11012 = 1310 = d16)

Segítség: táblázatok, számológép

bináris szám: hexadecimális szám: eredmény:


(5) ddd10 → hhh16

nagy , közepes , vagy kis decimális szám átváltása hexadecimális számmá:

Például 10410 = 6*16 + 8 = 6*161 + 8*160 = 6816

Segítség: táblázatok, számológép

decimális szám: hexadecimális szám: eredmény:


számológép

átváltandó decimális szám:  

bináris helyi érték és számjegy
hexadecimális érték
összeg
2048 1024 512 256 128 64 32 16 8 4 2 1
256 16 1

Segédtáblázatok

(1) a hexadecimális számrendszer számjegyei

hexadecimális számjegy
decimális érték
bináris érték

(2) 2 hatványai

hatvány érték

(3) 16 hatványai

hatvány érték

további információk:
Számrendszer - Wikipédia. (2021-02-21)
Számrendszerek az informatikában - Wikipédia. (2021-02-21)




Tartalom
Boda István, 2022.