Top Banner
Bevezetés Kedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási formát választotta a tantárgy elsajátításához. A kurzus elvégzése után Ön képes lesz játszva kijönni bármely labirintusból, meg tudja mondani, hogy mikor lesz vége a világnak a tibeti lámák szerint, zárójelek használata nélkül is képes lesz leírni bármilyen matematikai kifejezést, megérti a rekurzió lényegét, tudni fogja az információ tartalmát számolni, algoritmust optimalizálni, számokat, szövegeket ábrázolni, ismerni fogja a számítógép legbelsőbb működését. Bizonyára ismeri a keresés, sorba állítás néhány módszerét, itt újabbakkal és hatékonyabbakkal találkozik. Biztonsággal fog eligazodni a különböző adatszerkezetekben, képes lesz kezelni, és hatékonyan használni őket. A kurzus anyagát három egységben kapja kézhez, s mindegyik elvégzése után lehetősége van személyes konzultációra tanuló társaival, a kurzus vezetőivel, tanáraival. A három egység anyaga a következő: I. A számítógép és az algoritmus A kurzus
193

Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

Mar 27, 2019

Download

Documents

DuongAnh
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

Bevezetés

Kedves résztvevő!

Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az

oktatási formát választotta a tantárgy elsajátításához. A kurzus

elvégzése után Ön képes lesz játszva kijönni bármely labirintusból,

meg tudja mondani, hogy mikor lesz vége a világnak a tibeti lámák

szerint, zárójelek használata nélkül is képes lesz leírni bármilyen

matematikai kifejezést, megérti a rekurzió lényegét, tudni fogja az

információ tartalmát számolni, algoritmust optimalizálni, számokat,

szövegeket ábrázolni, ismerni fogja a számítógép legbelsőbb

működését.

Bizonyára ismeri a keresés, sorba állítás néhány módszerét,

itt újabbakkal és hatékonyabbakkal találkozik. Biztonsággal fog

eligazodni a különböző adatszerkezetekben, képes lesz kezelni,

és hatékonyan használni őket.

A kurzus anyagát három egységben kapja kézhez, s

mindegyik elvégzése után lehetősége van személyes

konzultációra tanuló társaival, a kurzus vezetőivel, tanáraival.

A három egység anyaga a következő:

I. A számítógép és az algoritmus

II. Információ és adatábrázolás

III. Adatszerkezetek és ábrázolásaik

Ön a távoktatás technikájával sikeresen fogja elvégezni a

kurzust, mert nem csak tankönyvet kap a kezébe, hanem egy

olyan hátteret is, mely biztosítja azt, hogy a tanulás sikeres és

eredményes legyen. Ön mindig pontosan tudni fogja, hogy mik

azok az anyagrészek, melyek további tanulmányozása felesleges,

így nem fog időt pazarolni rájuk. A tanulás idejét és helyét Ön

A kurzus tartalma

Page 2: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

határozza meg, nem kell kötött időpontokhoz alkalmazkodnia, így

a lehető legjobban tudja beilleszteni más elfoglaltságai közé.

Ha esetleg sokat utazik, vagy kénytelen várakozással tölteni

az időt, akkor legjobb módszer, ha magával viszi a nyomtatott

médiát, s az elméleti részeket tanulmányozza. Nem kell attól

tartani, hogy nem tud részt venni egy-egy foglalkozáson, s így

lemarad az anyagban, vagy lakhelyváltoztatás miatt nem tudja

folytatni a kurzust. Ha valahol hiányosnak érzi a magyarázatot,

vagy csak elbizonytalanodik, nem kell szakirodalomban kutatni,

mert az Ön személyes konzulense segít elhárítani a felmerülő

problémát, ötletekkel, útmutatásokkal segíti a tanulási folyamatát.

Kérjük, ne habozzon érintkezésbe lépni vele, ne feledje, talán nem

magában van a hiba, ha nem ért valamit, kár az időt vesztegetni

egy nyomdahiba miatt.

A legfontosabb feladata Önnek az, hogy szabadon és saját

tempója, stílusa alapján tanuljon, s csak annyit foglalkozzon egy

anyagrésszel, míg a hozzákapcsolódó gyakorló feladatot meg

tudja oldani. Ezek a feladatok biztosítják azt, hogy elvégzésükkel

Ön megszerezte a szükséges tudást. A gyakorló feladatok

megoldásait elhelyeztük a tanegységek végén, így ellenőrizheti

megoldását. Amennyiben eltérést tapasztal, nézze át, s korrigálja

a hibáját. Ne feledje, saját hibáiból okul legjobban az ember, így

legközelebb nem fog véteni, tekintse ezt is a tanulás részének,

mely rávilágít a részletekre. Amennyiben nem érti a megoldást,

kérje konzulense segítségét e-mail-ben vagy telefonon, aki

legkésőbb 24 órán belül felveszi Önnel a kapcsolatot, így nem kell

egy helyben állnia. Amennyiben bővebb, vagy naprakészebb

információt kíván az anyaggal kapcsolatban, bátran

tanulmányozza az ajánlott szakirodalmat és Internetforrásokat.

Az ellenőrző feladat szolgálja azt, hogy a konzulens tudja

kontrollálni az Ön tanulási tempóját, ezért kérjük, mihelyt

megoldotta, küldje be. Részletes értékelést fog kapni, esetleg

ajánlásokat, hogy melyik anyagrészen siklott át a figyelme, vagy

hol volt számítási hiba. A kritika nem az Ön személyének szól,

2

Hogyan tanuljon?

A tudás ellenőrzése, a gyakorló feladat

A konzulens

Az ellenőrző feladat

Page 3: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

mindig a megoldásra irányul, így a feladatmegoldásban keresse a

hibát, s ne Önmagában.

Minden anyagrész elvégzése után megkapja a következőt.

Tanegységenként kb. 15 órát szükséges tanulásra fordítani, így

előre beillesztheti a programjába. Természetesen ez eltérhet,

hiszen lehet, hogy Ön esetleg már tisztában van az anyag egyes

fogalmaival, algoritmusaival. Ilyenkor is olvassa el, hogy felfrissítse

emlékezetét. A tanegységek elvégzése után felkínáljuk mindig a

személyes konzultáció lehetőségét, ahol szabadon és kötetlen

formában megoszthatja véleményét társaival, konzulensével,

kívánságára megoldnak nehezebb feladat típusokat, tisztázhatja

az esetleges homályos fogalmakat.

Előre is köszönjük hasznos észrevételeit, melyek segítik a

munkánkat, s azt, hogy egyre jobbá és hatékonyabbá váljon ez az

anyag. Amennyiben gond nélkül megy ezek megoldása, ne töltse

az időt velük. Reméljük Ön is legalább annyira fogja élvezni a

tanulást és ismeretszerzést, mint amilyen szívesen várjuk

észrevételeit. A kurzus vizsgával zárul, mely keretében a gyakorló

és ellenőrző feladatok típusaival azonos típusú példasort kell

megoldania, így külön készülést a vizsga nem igényel.

Üdvözlettel: A szerzők

3

A vizsga

A tanulás időszükséglete

A konzultáció

Page 4: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

I. tanulási egység

A számítógép és az algoritmus

BevezetésAhhoz, hogy számítástechnikával tudjon valaki foglalkozni, meg

kell ismernie először azt, hogy milyen eszközzel rendelkezik,

ugyan úgy, ahogy a gépjárművezetésnél első lépésként tisztában

kell lennünk a személygépkocsi alapvető működésével,

felhasználásának határaival. Ha leáll az autó, vagy működési

rendellenességet észlelünk, nem rohanunk egyből a szerelőhöz,

hanem ellenőrizzük, hogy van-e benzin, fel van e töltve az

akkumulátor, és így tovább.

Ahhoz, hogy megfelelően tudjuk használni és kihasználni a

számítógépet, néhány fogalommal meg kell ismerkednünk,

tudnunk kell működésének főbb vonásait. Ebben a részben Ön

megismeri a számítógép működésének elveit, belső szerkezetét, a

számítógéppel kapcsolatos alapfogalmakat, néhány periféria

működését, a perifériák csoportosítását. A számítógép egy olyan

különleges eszköz, ahol maga a fizikai összetevők csak egy részét

jelentik a használhatóságnak, ugyanolyan fontos az is, hogy

miként működtetjük, azaz milyen programok futnak, hogyan

vezéreljük a fizikai egységeket. A programok nagyon sokfélék

lehetnek, s a cél az, hogy Ön rendelkezzen azokkal az

alapismeretekkel, amik szükségesek ahhoz, hogy neki kezdjen

programok fejlesztéséhez. Ön a fejezet áttanulmányozása után

megismeri az algoritmus fogalmát, ábrázolását, a jóságának

mérését, az algoritmikusan megoldhatatlan probléma osztály

létezését, tehát látni fogja, hogy néha bizony még a számítógépek

is korlátokba ütköznek.

4

Page 5: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

Tartalom

Bevezetés

1. A számítógép

1.1 A számítógép fogalma

1.2 A Neumann-elvek

1.3 A számítógép belső felépítése

1.4 A memória mértékegységei

1.5 A perifériák

1.6 A sínrendszer

1.7 Alkatrész árak

2. Az algoritmus

2.1 Az algoritmus fogalma

2.2 Eljárások, melyek nem algoritmusok

2.3 Algoritmus leíró eszközök

2.3.1 Szöveges körülírás

2.3.2 Blokkdiagram

2.3.3 Program forráslista

2.4 Algoritmus bonyolultság

2.4.1 A bonyolultság függvény

2.4.2 Algoritmus optimalizálás

2.3 Néhány nevezetesebb algoritmikusan nem megoldható

feladat

Összefoglalás

Ellenőrző feladat

Ajánlott szakirodalom

A gyakorló feladatok megoldásai

5

Page 6: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

1. A számítógép

1.1 A számítógép fogalma

A mindennapi életben számítógépnek sok mindent neveznek,

néha hozzáértik a monitort, néha nem, de szinte mindig előttünk

van a billentyűzet képe, amikor számítógépre gondolunk.

Valójában a számítógépen csupán magát a gépházat szoktuk

érteni, tehát azt, amibe becsatlakoznak a különböző kiegészítő

eszközök, azaz perifériák. Mint mindig, most is tudunk kivételt

mondani, hiszen a merevlemez ilyen megfogalmazásban a

számítógép részének számít, pedig nyilván az is periféria, hiszen

kívül is elhelyezkedhet a gépházon. Vannak ilyen merevlemezek,

CD írók, olvasók is. Ma már nem találkozhatunk ugyan ilyen

esettel, de régebben nagyon gyakoriak voltak a merevlemez

nélküli gépek is. Számítógépen tehát a főbb elemeket értjük.

Azt, hogy a számítógép így néz ki és így működik, nagyban

köszönhető Neumann Jánosnak, aki megfogalmazta a

számítógéppel szemben támasztott követelményeket, amiket

Neumann-elvnek nevezünk, s ezen elveket betartó struktúrákat

Neumann-elvű számítógépeknek.

1.2 A Neumann-elvek

Neumannék híres cikkének lényege - az elektronikus

számítógépekkel szembeni követelmények - lényegében 3 pontba

foglalhatók össze. Az 1. pont a számítógép fõ részeit, az azokkal

szembeni kívánalmakat fogalmazza meg, a 2. pont a tárolt

program elvet rögzíti, a 3. pedig az automatikus, emberi

beavatkozás nélküli mûködési követelményt rögzíti. Nézzük ezeket

a pontokat:

6

Page 7: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

a. A fõ funkcionális részek a következõk kell legyenek:

– a vezérlõ egység (Control Unit)

– az aritmetikai és logikai egység (ALU)

– a tár (Memory), ami címezhetõ és újraírható tárolóelemekkel

rendelkezik

– a ki/bemeneti egységek.

Mindezek teljesen elektronikusak legyenek és bináris

számrendszert használjanak. Az ALU képes legyen elvégezni

az alapvetõ logikai és aritmetikai mûveleteket (néhány elemi

matematikai és logikai mûvelet segítségével elvileg bármely

számítási feladat elvégezhetõ).

b. Tárolt program elvû legyen a számítógép, azaz a program és

az adatok ugyanabban a tárban tárolódjanak, ebbõl

következõen a programokat tartalmazó rekeszek is újraírhatók.

c. A vezérlõ egység határozza meg a mûködést a tárból

kiolvasott utasítások alapján, emberi beavatkozás nélkül, azaz

közvetlen vezérlésûek a számítógépek.

A c. pont azt jelenti, hogy van egy utasítás készlet (instruction set),

melynek utasításait a vezérlõ képes felismerni és az ALU-val

elvégeztetni. Az utasításhalmaz egy alhalmaza a tár (rendszerint

egymásután elhelyezkedő) címezhetõ celláiban van, ez úgyis

elképzelhetõ, hogy adott egy utasításfolyam (instruction stream), a

gépi kódú program (kód: code, program text stb.). A vezérlõegység

egy mutatója jelöli ki a soron következõ végrehajtható utasítást

(instruction). Ezt a vezérlõ egység értelmezi. Az utasításokban

kódolva vannak/lehetnek az adatok, vagy az adatok tárbeli címei.

Ezeket a vezérlõ egység a tárból elõveszi, az ALU pedig elvégzi

rajtuk a műveleteket. A tárolási helyek címezhetõk, a tárolási

helyeken a tárolt értékek változtathatók. Egy instrukció

végrehajtása után a vezérlõegység mutatója

automatikusan ,emberi beavatkozás nélkül - a soron következõ

utasításra mutat, a vezérlõ egység veszi ezt az utasítást és így

tovább. Neumannék ugyan nem használták a CPU (Central

7

Page 8: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

Processing Unit) kifejezést, de mi mondhatjuk, hogy a CPU az

utasítás-számláló regisztere (PC: Program Counter, IP Instruction

Pointer) mutatja a soron következõ instrukció címét.

A b. pontból következik, hogy maga a program is feldolgozható,

módosítható.

A három pont együtt azt mondja: a számítógép architektúra

hardver és szoftver architektúrák együttese, hiszen mûködését

nemcsak a hardver szabja majd meg.

Tehát röviden a Neumann–elv:

1. Elektromos

2. Bináris, azaz kettes számrendszert használ

3. Szekvenciális végrehajtás

4. Az adatokat és a programokat azonos helyen tárolja (belső

programtárolás)

5. Univerzális

6. Automatikus, azaz emberi beavatkozás nélkül képes

működni (A vezérlő egység vezérli)

1.3 A számítógép belső felépítése

Sematikus ábra a számítógépről

8

A Neumann–elv

Vajon milyen egyéblehetőségek közül választotta ezeket Neumann?

Page 9: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

A gép főbb részei:

CPU: (Central Processing Unit) központi vezérlő egység, vagy

más néven mikroprocesszor, vagy processzor, amely magába

foglalja az ALU-t és a CU-t.

ALU: (Arithmetical and Logical Unit) aritmetikai és logikai egység.

Feladata a különböző aritmetikai és logikai műveletek elvégzése,

pl. összeadás, szorzás, bitenkénti és (AND), kizáró vagy (XOR).

Ezekkel a logikai műveletekkel később részletesen foglalkozni

fogunk.

CU: (Control Unit) vezérlő egység. Feladata az ALU vezérlése,

azaz hogy milyen műveletet végezzen, s mivel. Ezt úgy éri el,

hogy befogadja a következő utasítás kódját és az utasításhoz

tartozó adatokat. Lényeges feladata még, hogy kiszámítja a

következő utasítás címét. Az adatokhoz és az utasításokhoz az

operatív tárban fér hozzá.

P/D: (Program and Data) programok és adatok helyét jelöli, amit

operatív tárnak nevezünk, vagy egyszerűbben memóriának.

Feladata a programok és adatok tárolása, ide kerülnek a

számításokhoz szükséges adatok, a műveletek kódjai valamint a

rész– és végeredmények is. A memóriák fajtái:

– RAM (Random Acces Memory) közvetlen hozzáférésű

memória, mely írható olvasható. A neve azt jelzi, hogy minden

elemét azonos idő alatt érjük el. Tudjuk írni és olvasni. Fajtái a

statikus SRAM és a dinamikus DRAM.

– ROM (Read Only Memory) csak olvasható memória, azaz csak

olvasni tudunk belőle, tartalmát gyártáskor meghatározták.

Ehhez a memória típushoz sorolják még a PROM

(Programmable ROM) egyszer programozható és az EPROM

(Erasable Programmable ROM) törölhető és

újraprogramozható memóriát, ahol a törlést speciálisan

(elektromosan vagy ultrabolya fénnyel) érhetjük el.

Nagyban befolyásolja egy gép gyorsaságát az, hogy mekkora

memóriája, ugyanis a programok a háttértárolón, általában a

9

CPU

ALU

CU

Memória, vagyoperatívtár

RAM

ROM

A memória mértékegységei

Page 10: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

merevlemezen helyezkednek el, s mint látjuk, ahhoz, hogy

fussanak, be kell kerülniük a memóriába. Ha a memória kicsi,

akkor nem fér be az egész program.

1.4 A memória mértékegységei

A memória és a háttértárak nagyságát byte-okban (bájtokban)

mérhetjük. Egy byte 8 bit, ez a legkisebb adategység a

számítógépben, értéke vagy egy, vagy nulla, azaz megfelel egy

kettes számrendszerbeli számjegynek. Ebből adódik, hogy egy

byte-on maximum 256 különféle variációt alkothat a 8 bit. A

további mértékegységek:

1byte=8 bit

1szó=2 byte

1 tetrád=4 byte

1 paragraffus=16 byte

1 blokk=512 byte

1Kbyte (Kilobájt)=1024byte

1Mbyte (Megabájt)=1024Kbyte

1Gbyte (Gigabájt)=1024Mbyte

1Tbyte (Terrabájt)=1024Gbyte

1.5 A perifériák

Perifériák: A számítógéphez csatlakoztatható legkülönbözőbb

egységek. Feladatuk nagyon szerteágazó, de alapvetően a

számítógép kommunikációját látják el a külvilággal, azaz adatok

be– és kivitelére használjuk őket, eszerint szoktunk beszélni input,

azaz adatbeviteli perifériákról és output, azaz adatkiviteli

perifériákról. Vannak perifériák, melyek mindkét csoportba

besorolhatóak, ezeket input-output (I/O) perifériáknak nevezzük.

A főbb input perifériák a következők:

–Billentyűzet, általában a rajtuk lévő gombok száma alapján

nevezik el őket

10

Perifériák

Perifériák fajtái

Page 11: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

–Egér: mechanikus, optikai, infra

–CD, DVD ROM

–Scanner: kézi, síkágyas

–Mikrofon

–Fényceruza

–Vonalkód leolvasó

–Kamera, digitális fényképezőgép, szintetizátor

–Videó kártya, az esetleges TV kimenethez, vagy videó

kamerához

Az output perifériák:–Monitor: katód sugárcsöves, LCD (folyadék kristályos).

–Grafikus kártya, melyen keresztül vezéreljük a monitort

–Nyomtató (printer): mátrix, lézer, tintasugaras

–Rajzgép (plotter)

–Hangszóró

–Projektor

Az I/O perifériák jobbára a háttértárolók:

–Merevlemez (HDD, azaz Hard Disc Drive)

–Hajlékony lemez (FDD, azaz Floppy Disc Drive)

–CD író

–DAT

1.6 A sínrendszer

Ezeknek az egységeknek kommunikálni kell egymással, melyet

ún. sínrendszerek (bus systems) segítségével oldanak meg.

Fontos ezeknek szabványos volta, hogy tetszőlegesen tudjuk az

iménti funkcionális egységeket összekapcsolni, akármilyen

gyártótól származnak is. A sínekben ezért a vezetékek száma és

feladata meghatározott. A vezetékek számát nevezzük a busz

szélességének, ami egyben azt is megadja, hogy mennyi adat tud

egyszerre áramlani rajta. A sínek fajtái:

11

Sínrendszer

Page 12: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

– Adatsín, mely adatok továbbítására szolgál általában a

processzor és a gép más egységei között, szélessége adja

meg az egyszerre mozgatható adatok nagyságát

– Címsín, melyen a memória vagy más eszközök címeit

továbbítja a processzor, szélessége meghatározza, hogy

mekkora tartományt tudunk a memóriából megcímezni, azaz

mekkora memória területet érhetünk el.

– Vezérlősín, mely processzor és a többi egység közötti vezérlő

jelek szállítására szolgál

Az adatáramlást, a különböző szerkezeti egységek

együttműködését szinkronizálni kell, ezt biztosítja az órajel. Ennek

mértéke megadja a gép sebességének felső korlátját is, MHz-ben,

vagy GHz-ben mérik (mega illetve gigahertz).

1.7 Alkatrész árak

Az alábbiakban megadjuk néhány periféria árát, az adatok a

2002.03.27-i helyzetet tükrözik. A táblázatból kitűnik, hogy nehéz

eligazodni az árak dzsungelében, vásárlás vagy tanácsadás előtt

érdemes mindig elolvasni a szakmai újságokat, hogy pontosan

képben legyünk. Az árak gyorsan változhatnak, hetente új

termékek jelennek meg, s ezek lenyomhatják a régebbiek árát

akár 30-50%-kal is. Érdemes olyan ember tanácsát kikérni, aki

ezzel foglalkozik, s naprakész tudással rendelkezik. Az árak két fő

12

Gyakorló feladat, I/1: Keresse meg az Internet

segítségével a leggyorsabb mikroprocesszort, adja

meg a jellemzőit! Számolja ki, hogy ha egy ember 2 db

milliós nagyságrendű számot 5 másodperc alatt tud

összeadni, akkor hány ember számolási képessége

ekvivalens ezzel a processzorral!

www.bluecomp.hu

Page 13: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

összetevője a márka –általában a megbízhatóságot, garancia

tartamát tükrözi–, és a fizikai jellemző (nagyság, gyorsaság,

minőség).

Megnevezés Bruttó ár

Alaplap:

TOMATO BXv98-CU PPGA AT 16,965

ASUS P4T-E 850, 478, RD* 59,595

Processzor:

CELERON 500 PPGA 11,890

INTEL P4 1700/400 478* 58,363

Hűtő ventilátor

CPU EXTRA VENT (AMD) 7,250

CPU hűtőventillátor 783

Winchester:

10 GB Maxtor; Seagate HDD 21170

20 GB Maxtor; Seagate HDD 23780

40 GB Maxtor,Seagate HDD 7200 30,740

61.2 GB Maxtor HDD 5400 34,075

Rendszerhűtő 1,595

HDD hűtő 2,033

RAM:

512MB SD 133 Mhz 43,355

256MB DDR 25,723

256MB RD 800 P4 27,550

13

Ha nem ért valamilyen rövidítést, keressen rá interneten!

Page 14: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

Premier dc-526 digit fényképező 29,870

CD ROM:

52 x AOPEN CD-ROM 9,280

52 x Sony CD-ROM 10,803

LG 16/40 DVD 23,490

LG 24x10x40 újraíró OEM 29,870

TEAC 24x10x40 36,540

Hangszórók;hangkártyák

Z691, KK699,SPK-202 1,740

Genius SP-G06 3,045

Genius SP-G10 4,350

Genius H-062 8,265

AZONA RS-350 2,900

SB COMP ALS4000 PCI 2,900

SB 128 PCI 5,945

STUDIO PCTV 20,300

SB LIVE OEM 5.1 11,455

VGA kártyák

4 MB PCI/AGP VGA SIS,S3 5,945

Savage4 16MB AGP 8,120

RIVA TNTII M64 32MB AGP 11,020

Geforce 2MX 400 64MB AGP 21,170

Geforce 2MX 400 64MB AGP TV ki 22,910

Geforce 3. Ti. 200 64 TV 65,250

Geforce 2 Ti. 200 64Mb DDR 32,190

Asus V8200 Ti. 200 64Mb 64,960

Matrox G550 32Mb 34,728

14

Page 15: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

Monitorok :

14'' Proview 3 év gar. 36,221

15" Gaba 3év gar.* 40,600

17" Licom 3év gar. 55,100

17" Samtron DynaFlat 76DF 72,065

15" Samsung LCD 197,200

Programok :

Windows 98' SE OEM 37,120

Windows XP Home HU OEM ÚJ!!! 39,440

Magyar Office 1.0 22,185

WINDOWS 2000 Professional OEM* 60,755

Office 2000 SB OEM 113,100

Vírusírtó Panda Titanium 8,700

SCANNER : brt.

Genius VIVID3 23,635

Ház :

ATX miditorony széles 6,670

ATX P4 300W 4db 5.25 hely 11,020

ATX P4 300W 4db 5.25 hely 8870 12,325

ATX midi 300W P4 20,300

Nyomtatók :

CANON S100 22,620

CANON S500 56,550

CANON LBP-810 laser HP92A 90,625

HP 1000 Laser 89,755

HP 1200 Laser 134,705

Hálózati kártyák :

pci combo 4,640

15

Page 16: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

Genius UTP PCI 10/100 4,350

SMC UTP 10/100 4,930

USB PCI kártya 4,350

Fax modem :

fax modul 56.6K AMR 3,944

56.6 belső conex.; rockw.; 4,930

Külső 56.6 AROWANA 12,905

USB külső modem 56.6 10,673

ISDN belső PCI AROWANA 10,005

DIVA ISDN belső ISA modem 14,500

Floppy:

1.44 fdd.. 3,335

Billentyűzet 1,711

Azona multimédiás bill. 4,060

Genius bill. 2,320

Maxtro multim. Infra bill. 11,978

Orosz bill. Mitsumi 3,770

Joy FX-22 Genius 3,335

Ergonomikus billPS/2 3,625

Genius game pad G8 2,320

EGÉR :

WIN 98' egér SOR/PS2 696

Microsoft Mouse PS2 opt 8,990

625W szünetmentes táp 29,000

16

Page 17: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

Figyeljük meg a következő táblázat segítségével, hogy miként

változik az idő előrehaladtával a számítógép minősége és az ára.

Az árat egy teljes számítógép konfigurációra értjük:

Év Számítógép Ár (Ft)1985 XT 80.000

1986 AT 100.000

1989 386 100.000

1991 486 120.000

1995 586 110.000

2001 Pentium IV 200.000

Nyugodtan levonhatjuk azt a következtetést, hogy nem érdemes

vásárolni, mert, egy-két hónapon belül ugyanannyi pénzért sokkal

jobbat kaphatunk (Az árak kalkulációinál vegyük figyelembe az

inflációt is). Viszont számítástechnikával foglalkozni gép nélkül ma

már lehetetlen feladat.

Vegyük figyelembe a vásárlás előtt, hogy mire akarjuk használni a

gépet, azaz milyen programokat akarunk futtatni, és az milyen

hardvert kíván. Programozáshoz, szövegszerkesztéshez

felesleges DVD-ROM, hangkártya, gyors videokártya, CD-író.

Megfelelő önmérséklettel sokat spórolhatunk. Ha játszani is

szeretnénk a gépen és modern játékokat, akkor spóroljunk,

spóroljunk és spóroljunk. A játékok, mint minden multimédiás

alkalmazás, valósidejű és bonyolult számításokat igényelnek, így

nagyon jó hardver alap kell hozzájuk, ami drága mulatság.

17

Gyakorló feladat: Adjon meg egy napjainkban korszerű

számítógép konfigurációt (pénz nem számít)!

Melyik egységek, jellemzők döntik el egy számítógép

gyorsaságát? Rangsorolja őket!

Állítson össze egy gépet 300.000 Ft-ból!

Gépek árai

Gondolkozzon el, hogy Ön mire használja a számítógépet, s milyenkonfiguráció kellene hozzá!

Page 18: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

2. Az algoritmus

2.1 Az algoritmus fogalma

Valószínűleg Ön már hallotta ezt a szót, hogy algoritmus, illetve a

belőle képzett fogalmakat, például algoritmizálható, algoritmizáló

képesség, így nyilván tisztában van magával a szó jelentésével.

Az alábbiakban megismeri az algoritmus számítástechnikai

értelmezését, amely –mint látni fogja– abban tér csak el, hogy

pontosabb és körültekintőbb. Az algoritmus nem más, mint

útmutatás egy probléma megoldáshoz, egyfajta recept, melynek

ismeretében az adott feladatot el tudjuk végezni. Nagyon érdekes

az, hogy mennyire részletes ez az útmutatás, tudjuk-e a megadott

részfeladatok véghezvitelének módját.

Ha egy receptben azt olvassuk, hogy készíts 4 tojásból

piskótatésztát, akkor nyilván ismernünk kell a piskóta készítés

receptjét 4 tojás esetén, tehát az algoritmust hozzá. Fontos az is,

hogy a recept egyértelmű legyen, hiszen a kevés só lehet 1 dkg,

de akár 20 dkg is, ismerni kell a lépések sorrendjét, nem mindegy,

hogy rántotta esetén a tojást tesszük először a serpenyőbe, vagy

az olajat.

Az algoritmus egy meghatározása a következő:

Egy feladat megoldására irányuló, véges számú jól definiált elemi lépések egyértelműen megadott sorozata, melyek véges időn belül véget érnek, s elérik a kitűzött célt.

Nézzünk az algoritmusra egy mindennapi példát, figyeljük meg a

fenti meghatározás elemeit benne. Hogyan tudnánk egy olyan

embernek pontos receptet adni pénzfelvételre egy automatából,

aki még sohasem tett ilyet? Mindenképpen pontosan kell

fogalmaznunk, s biztosítani kell azt, hogy a megadott algoritmus

alapján sikerüljön a művelet.

18

Algoritmus

Page 19: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

Lássuk az algoritmust:

1. Helyezd a bankkártyát a befogadó nyílásba

2. Miután az automata behúzta a kártyát, kövesd az automata

kiírásait

Ez így nagyon egyszerű, hiszen segítségünkre volt az a tény, hogy

az automata segíti a pénzfelvételt, algoritmust ad a teendőkre,

tehát egy elemi lépésnek vehettük a kiírásainak követését. Az

általa megfogalmazott algoritmus a következő lépéseket

tartalmazhatja például (a választásainkat vastag betűvel szedtük):

Kérem, gépelje be a PIN kódot!

1. Válasszon! (telefon kártya feltöltés; egyenleg lekérdezés; pénz

felvétele bizonylat nélkül; pénz felvétele bizonylattal)2. Válassza ki a felvenni kívánt összeget! (1000, 5000, 10 000,

50 000, 100 000, Más összeg)

3. Vegye ki a kártyát!

4. Vegye el a pénzt!

5. Vegye el a bizonylatot!

Ha a kettes pontban nem a pénz felvétele bizonylattal-t választjuk, más lépéseket kínált volna fel az automata. Figyeljük

meg tehát, hogy az egyértelműen megadott sorozat nem azt

jelenti, hogy kötöttek a lehetséges lépések, hanem azt, hogy

világosan meg van adva a lépések sorrendje, azaz nem kell

bizonytalanságban szenvedni az algoritmus alkalmazójának, hogy

melyik lépés legyen a következő. A jól definiált elemi lépés esetünkben azt jelenti, hogy olyan apró lépésekre bontjuk a feladat

elvégzését, melyek értelmezése, elvégzése nem okoz gondot.

Elképzelhető olyan eset is, hogy valaki nem tudja azt, hogy a PIN

kód begépelése után meg kell nyomni a bevitel billentyűt. Ebben

az esetben az algoritmus végrehajtója joggal mondhatja, hogy ez

nem algoritmus, mert nem elemi lépéseket kíván. A példában a

lépések száma véges, viszont nem biztos, hogy véges időn belül véget érnek, hiszen nem biztosítja semmi azt, hogy az ügyfél

hajlandó kötött időn belül elvégezni a beviteleket, a választásokat.

19

Page 20: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

Ez ellen természetesen védettek a gyakorlatban ezek a

rendszerek, ha túl sokáig várakozunk, megszakítja a folyamatot az

automata, s ilyenkor nem értük el a kitűzött célt. Egy bankjegy

kiadó automata segítségével fel lehetne felderíteni az automata

által követett algoritmust, de a sokszori próbálkozást elébb-utóbb a

bankkártyánk bánná.

Az algoritmuselméletben nem így határozzák meg az

algoritmust, mint mi a fenti esetben, hanem egy matematikai

objektummal, amit Turing-gépnek neveznek. Segítségével

elkerülhető az olyan problémák felvetése, hogy például mit

tekintsünk elemi lépésnek. Programírás során elemi lépésnek

tekintjük majd azt a tevékenységet, melyre tartalmaz megoldást a

programozási nyelv valamely eszköze, így számunkra megfelelő

az algoritmus fenti alakja.

2.2 Eljárások, melyek nem algoritmusok

Nézzünk néhány érdekes példát, melyek nem lesznek algoritmusok:

A. Harmadoljunk meg egy tetszőleges szöget!

A feladat megoldhatatlansága ismert az Euklédeszi geometriában,

így tudjuk, hogy algoritmust nem tudunk rá adni, viszont figyeljük

meg az elemi lépés fontosságát!

Hatodoljuk meg a szöget, majd ezt kétszerezzük! Nyilván az a

gond, hogy a szög hatodolása nem elemi lépés.

B. Két városból egymással szemben halad egy-egy vonat,

mindkettő 10km/h sebességgel, s közöttük repül oda-vissza

egy fecske 20 km/h sebességgel. Amint eléri az egyik vonatot,

visszafordul, s így tovább. Ha a városok távolsága 30km,

mennyi utat tesz meg a fecske, míg a vonatok találkoznak?

A fecske együtt indul az egyik vonattal, és egy óra múlva

találkozik a másikkal, majd visszafordul 20km megtétele után,

20

Az algoritmus főbb jellemzői

Ön hogyan szokott elmagyarázni valakinek egy algoritmust?Milyen kommunikációs eszközöket használ?

Nem algoritmikus leírások

Szögharmadolás

Végtelen sor

Milyen más geometriailag megoldhatatlan feladatot ismer?

Page 21: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

innen 20 perc múlva eléri ismét az egyik vonatot, azaz már 26.66

km tett meg, majd visszafordul. Látható, hogy ezzel a számolási

móddal sohasem érnénk a végére a feladatnak, mert végtelenszer

képes a fecske érinteni a vonatokat. Tehát nem algoritmus, mert

nem véges lépésből áll. A probléma érdekes olyan szempontból,

hogy véges időn belül véget ér, hiszen a két vonat 1.5 óra múlva

találkozik egymással az elindulás után, tehát a fecske által megtett

út kiszámítható, s pontosan 30 km.

Ehhez teljesen hasonló Achilles és a teknősbéka esete:

C. Achilles-t futóversenyre hívja ki a teknősbéka, csak kér 10m

előnyt. Achilles nem fogja utolérni „sohasem” a teknősbékát,

mert mire eléri a teknősbéka indulási pozícióját, addigra onnan

már továbblépett, s mire odaér, ahol volt, ismét távolabb lesz a

béka. Legyen Achilles sebessége 10m/s, a teknősé pedig

1m/s.

Achilles Teknősbéka

10.00m 11.000m

11.00m 11.100m

11.10m 11.110m

11.11m 11.111m

Valóban látható, hogy mindig előtte lesz a teknősbéka, tehát az

eljárás, amely kiírja a fenti táblázatot végtelen lépésben futhat

csak le. Itt is azzal jártunk pórul, hogy az időszeleteket

csökkentjük, hiszen könnyen adódik, hogy 10/9 másodperc múlva

Achilles is 100/9 métert és a teknős is 10+10/9 azaz 100/9 métert

tesz meg.

D. Oldjuk meg az x-a=0 egyenletet úgy, hogy felsoroljuk a

természetes számokat egymásután, s ellenőrizzük

behelyettesítéssel, hogy megfelel-e az adott szám.

Amennyiben a is természetes szám, 0-tól kezdve a felsorolást,

előbb-utóbb elérünk hozzá, s így megvan a megoldás.

Kétségkívül lassabb ez a módszer, mintha megoldanánk az

egyenletet, de mindenképpen algoritmizálható. Ha viszont csak

21

Achilles

Egyenlet

Page 22: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

azt kötjük ki a-ról, hogy egész szám, akkor, ha értéke kisebb,

mint nulla, soha sem fogjuk megtalálni a gyököt. Így az első

esetben algoritmusról van szó, a másikban nem.

Nem csak akkor állunk szemben azzal a problémával, hogy nem

tudunk algoritmust adni, ha megoldhatatlan a feladat, hanem

vannak úgynevezett algoritmikusan megoldhatatlan feladatok.

Ezek olyan feladatok, melyeket konkrét esetben meg lehet oldani,

de általánosan nem. Például az úgynevezett dominó feladat:E. Esetünkben a dominók eltérnek a szokásostól, és a következő

alakot veszik fel:

Látható, hogy mindegyik dominón 4 szám van, s az egymás

melletti oldalakon ugyanazon számnak kell lenni a szomszédos

dominókban. Forgatni nem szabad őket, azaz állásuk rögzített, s

ha van egy készletnyi dominónk, az azt jelenti, hogy valahány fajta

dominónk van, de minden fajtából végtelen sok áll

rendelkezésünkre.

A feladat a következő: Le tudjuk-e fedni az egész síkot betartva

játékszabályokat, ha adott egy készlet?

Nyilván meg lehet úgy adni készletet, hogy ez sikerüljön. Elég, ha

a készlet egy darab dominóból áll, melynek ugyanaz a szám van

mind a négy oldalán, de jó lenne a következő két dominó fajtát

tartalmazó készlet is:

22

Dominó feladat

Page 23: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

Felvetődik a kérdés, hogy van-e olyan algoritmus, mely bármely

készlet esetén eldönti, hogy befedhető-e a sík a készlet elemeivel.

Sajnos a válasz negatív. Több ilyen nevezetes probléma is van, a

legismertebb az algoritmus elméletben a Turing-gép megállási

problémája, mellyel itt most nem foglalkozunk. Tehát vannak

sajnos olyan problémák, melyeknek megoldása nem

algoritmizálható, s emiatt program sem írható rá. Igazi munkánk

során nem valószínű, hogy sok ilyen problémába ütközünk, így

csak a létezésük ismerete a fontos.

Láthattuk, hogy a következő követelményeink vannak az

algoritmusokkal szemben:

a. Elemi lépésekből álljon

b. Egyértelmű legyen ezek sorrendje

c. Véges számban és

d. Véges időben

e. Megoldják a feladatot

Láttunk néhány olyan „ál” algoritmust, amelyekben a fenti

követelmények közül valamely nem teljesült, így nem tekinthetőek

algoritmusnak.

23

Gyakorló feladat:

Adjon példát olyan „ál” algoritmusra, amely nem felel meg a

„b” követelménynek!

Adjon példát olyan „ál” algoritmusra, amely nem felel meg

az „e” követelménynek!

Az algoritmus jellemzői

Page 24: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

2.3 Algoritmus leíró eszközök

Az eddigiek során megfigyelhettük, hogy az algoritmusokat úgy

adjuk meg, hogy felsoroljuk az elemi lépéseket egymásután.

Léteznek más módszerek is az algoritmus megadásra, ezeket

mutatjuk most be. A feladat az, hogy adjuk meg két egynél

nagyobb pozitív egész szám legkisebb nem triviális közös osztóját.

2.3.1 Szöveges körülírás

Az első a már ismert módszer, azaz a körülírás.

1. Jelöljük az első számot A-val, a másodikat B-vel

2. Legyen C értéke kettő

3. Ha C-vel osztható A és B is, akkor vége a számításnak, a

kérdéses szám C

4. Ha C kisebb mind A-nál, mind B-nél növeljük meg C értékét

eggyel, s végezzük el a 3. lépést.

5. Vége a számításnak, nincs a triviálistól különböző osztójuk

2.3.2 Blokkdiagram

A második módszer a blokkdiagrammal való megadás. Egy

blokkdiagram nagyon jól szemlélteti az algoritmus működését,

nyomon követhetőek az elemi lépések egymásutániságai. A

következő elemi lépéseket engedi meg a blokkdiagram:

Az elemi lépés neve Az elemi lépés jele

A blokkdiagram kezdete

A blokkdiagram vége

Adatbekérés

24

START

END

BE:

Algoritmusok megadási–módszerei

Blokkdiagram részei

Page 25: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

Adatkiírás

Elágazás

Értékadás

Lépések sorrendje

Megadjuk az iménti feladat blokkdiagramját:

25

KI:

Page 26: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

26

Page 27: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

2.3.3 Program forráslista

Ugyanez a feladat egy programozási nyelven (Pascal):

program lkko;

var a,b,c:word;

begin

readln(a); Azaz bekérjük A értékét

readln(b); Azaz bekérjük B értékét

c:=2; C-be kettőt rakunk

repeat ismételd a következőeket

if (a mod c =0) ha C osztja A-t

and és

(b mod c=0) C osztja B-t

then akkor

begin

writeln(c); írjuk ki C-t

exit vége

end

else különben

c:=c+1; c legyen eggyel nagyobb

until not ((c<a) and (c<b)); Térj vissza

az ismétlés elejére, ha C kisebb A-nál és B-nél is

writeln('Nincs'); írd ki, hogy nincs

readln

end.

end.

27

Gyakorló feladat: Adja meg egy négyzet oldalaiból a területének,

kerületének kiszámítási algoritmusát szöveges és

blokkdiagramos ábrázolással! Ha ismer valamilyen

programozási nyelvet, akkor írjon programot a problémára!

mindhárom fajta leírással.

Page 28: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

Egy-egy feladat megoldására általában több algoritmus is adható.

A cél ilyenkor megállapítani azt, hogy melyik a jobb, vagy pedig

igyekszünk jobb és jobb algoritmusokat keresni.

2.4 Algoritmus bonyolultság

Kérdés az, hogy miként tudjuk mérni az algoritmusok jóságát,

milyen szempontok alapján tudjuk vizsgálni őket. Egy algoritmus

jóságát a bonyolultságával mérjük, azaz minél jobb egy algoritmus,

annál kisebb a bonyolultsága. A következőekben meghatározzuk

ezeket az alapfogalmakat, megismerkedünk néhány

összefüggéssel.

Az algoritmus bonyolultságát az a függvény írja le, amely az algoritmus futásának idő és/vagy helyigényét adja meg a bevitt adatok számában/méretében kifejezve.Láthatjuk, hogy kétfajta bonyolultság van, az egyik az az idő,

amely az algoritmus végrehajtása alatt eltelik, a másik pedig az a

hely, amire szüksége van az algoritmusnak a futása alatt. Az

időbonyolultságot nem a szokásos másodpercben mérjük, hanem

a lépések számával, hiszen így kapunk igazán használható

értéket, ugyanis ezáltal nem függ majd attól egy algoritmus

időigénye, hogy mennyire gyors gépen futtatjuk. A hely

bonyolultságát bájtban is lehet mérni, de említettük, hogy a

bonyolultságot azért mérjük, hogy el tudjuk dönteni, hogy két

algoritmus közül melyik a jobb, így csupán összehasonlítás

céljából mérjük ezeket az adatokat, tehát azt lehet mondani, hogy

az egyiknek több hely kell a másiknál, vagy az egyiknél egyenesen

arányos a hely szükséglet, a másiknál pedig négyzetesen arányos.

Fontos észrevenni azt, hogy a hely és idő szükséglet általában

fordítottan arányos egy-egy feladat esetében, tehát tudjuk úgy

gyorsítani az algoritmusunkat, hogy több helyet adunk neki, vagy

tudjuk csökkenteni a helyfoglalást, de akkor lassabb lesz az

algoritmus. Ezt nevezik a hely és idő kölcsönhatásának, azaz egy

algoritmus esetében a szükséges hely és idő között fordított

arányosság van. Nem azt mondjuk, hogy szorzatuk állandó,

28

Algoritmus bonyolultsága

Idő és helybonyolultsága

Page 29: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

csupán azt, hogy ha nő az egyik, csökken a másik. Említettük az

imént, hogy valamilyen függvénnyel szokásos mérni a

bonyolultságot, és arra is rámutattunk, hogy nem kell pontos érték,

csak összehasonlításra szokás meghatározni ezeket a

függvényeket. Ha külön nem mondjuk, akkor mindig az

időbonyolultságról van szó. Szokás beszélni különböző esetekről,

f(n)-nel jelölve a bonyolultsági függvényt:

-A legjobb eset: a számunkra legkedvezőbb esetben adja meg a

feladat lépéseinek számát, azaz f(n) minimuma.

-A legrosszabb eset: a számunkra legkedvezőtlenebb esetben

adja meg a feladat lépéseinek számát, azaz f(n) maximuma.

-Az átlagos eset: a számunkra szokványos esetekben adja meg a

feladat lépéseinek számát, azaz f(n) várható értéke.

Tekintsünk például egy vásárlást. Cipőt szeretnénk venni.

Összesen 100 darab van az üzletben, ebből lehet választani, de

sajnos mindegyik különböző méret, így kénytelenek vagyunk a

cipőket sorra felpróbálni. Az algoritmus bonyolultságát azzal

mérjük, hogy hányat kell felpróbálni, mielőtt kiválasztjuk a leendő

árut. Ekkor a legjobb eset 1, azaz rögtön sikerül az első cipőt

megvásárolni, a legrosszabb az, ha egyik sem fog megfelelni,

tehát száz próbát hajtunk végre, de hiába. Átlagosan vajon

hányszor kell próbálni egy-egy vásárlónak?

Könnyen látható, hogy ha egyforma annak az esélye, hogy egy

cipő megfelel, lesz aki az első, lesz, aki, a második, és így tovább,

lesz, aki a 100. cipővel lesz megelégedve. Ha összeadjuk a

próbálgatások számát minden esetet figyelembe véve, majd

elosztjuk a vevők számával, láthatjuk, hogy átlagosan 50 próbára

lesz szükség.

Nézzük meg ezen a példán a hely és idő kölcsönhatását! Ha

mindegyik cipő mellé odaírjuk a méretet, akkor nyilván nem kell

próbálgatással tölteni az időt, hamarabb megtalálhatjuk a helyes

méretet. Így viszont több helyre van szükségünk, hiszen nem elég

a cipőket tárolni, hanem mellettük még fel kell tüntetni a méretet is.

29

Page 30: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

Tudjuk, hogy a gyakorlatban ezt alkalmazzák, így lehetséges

gyorsan vásárolni.

2.4.1 A bonyolultság függvény

A bonyolultságoknál említettük, hogy össze szokták hasonlítani a

függvényeket, sőt általában csak azt vizsgálják, hogy mennyire

növekszik a függvény a bemeneti adatok számától függően, tehát

az úgynevezett növekedési rátát vizsgálják. Ezt általában úgy

végzik el, hogy az adott függvényt összehasonlítják néhány

közismert függvénnyel, például a következőekkel:

Log(n), n, n*log(n), n2, n3, 2n.

A log kettesalapú logaritmust jelöl. Érdemes megfigyelni, hogy

növekedési rátájuk emelkedő sorrendjében soroltuk fel ezeket a

függvényeket, hiszen:

A szám Log(n) N n*log(n) n2 n3 2n

4 2 4 8 16 64 16

8 3 8 24 64 512 256

16 4 16 64 256 4096 65536

Látható, hogy minél nagyobb a szám és minél jobbra helyezkedik

el a táblázatban, annál nagyobb. Van kivétel is, a 4 esetében

láthatjuk, hogy 43>24. Ezért szoktunk beszélni úgynevezett

küszöbszámról, mely túllépése esetén már folyamatosan teljesedik

a növekedési ráta. Algoritmus elméletben egy külön jelölést

használnak az összehasonlításra:

Az „O” (nagy o, ordó) függvény: Ha f(n) és g(n) két pozitív

egész számokra definiált olyan függvény, amelyeknek az a

tulajdonsága, hogy f(n) szinte valamennyi n-re nézve g(n)

valamilyen többszörösével közelíthető, akkor a következőt írhatjuk:

f(n) =O(g(n))

30

A nagy ordó (O)jelölés

Page 31: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

Ezzel a jelöléssel tudjuk jelezni, hogy két függvény milyen

viszonyban áll egymással. Ha a fenti egyenlőség igaz, akkor nem

jobb jelentősen egyik a másiknál. Ha viszont azt tudjuk, hogy

1. f(n) =O(n)2. g(n) =O(n2)akkor biztos, hogy érdemesebb azt az algoritmust használni,

melynek bonyolultságát az f függvény méri.

Ha a cipők számát n-nel jelöljük az iménti példában, akkor a

kiválasztás függvénye, azaz az algoritmus bonyolultsága az

átlagos esetben egyenlő n/2-vel.

Az alábbiakban megadjuk néhány algoritmus bonyolultságát:

Szekvenciális keresés: O(n)

Bináris keresés: O(log n)

Buborékrendezés: O(n2)

Összeválogató rendezés: O(n*log n)

Magukkal az algoritmusokkal később fogunk megismerkedni.

2.4.2 Algoritmus optimalizálás

Fontos nagyon felismerni azt, hogy az adott algoritmus hogyan

viselkedik akkor, ha növeljük az adatok számát. A gyakorlatban

általában kétféle algoritmus szokott előfordulni, az egyik futási

ideje a bevitt adatok számának valamilyen polinom függvénye, pl.:

4n3+2n2+5n+6=O(n3),Vagy valamilyen exponenciális függvény, pl.

3n+23n+4n3-6=O(3 n)

Az elsőt polinomiális, a másodikat exponenciális függvénynek

nevezzük. Nyilván jobb a polinomiális, mert gyorsabb algoritmust

ad, az egyik cél a tudományban az, hogy a jelenleg exponenciális

bonyolultságú algoritmusok helyett igyekeznek polinomiális

algoritmusokat keresni.

Tekintsük például a prímszámkereséseket, azaz adjunk meg

algoritmust, mellyel eldönthető egy számról, hogy prímszám-e,

azaz létezik-e egész osztója önmagán és az egyen kívül.

31

Bonyolultsági függvények fajtái

Page 32: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

A legegyszerűbb, ha minden tőle kisebb pozitív egész számmal –

kivéve az egyet– elosztjuk, s megnézzük, mennyi a maradék. Ha

csak egyszer is azt találjuk, hogy a maradék nulla, akkor már nem

lesz prímszám. Láthatjuk, hogy ha nem szakítjuk meg az

algoritmust, amikor találunk egy osztót, akkor ez n-2 lépést jelent,

ha n-nel jelöltük a kérdéses számot. Természetesen ha

prímszámról volt szó, nem is tudunk kilépni hamarabb.

Egyszerűsíthetjük a megoldást, ha csak a szám négyzetgyökéig

keressük ezeket a lehetséges osztókat, mivel ha addig nem

találtunk, már biztos nem fogunk, hiszen az osztók párokban

fordulnak elő, ahol a pár két tagjának szorzata egyenlő a számmal.

Amikor sikerül a bonyolultságfüggvényt így csökkenteni,

optimalizálásról beszélünk. Tekintve az idő és hely

bonyolultságot, kétfajta optimalizálást vehetünk figyelembe, az

egyiknél gyorsítani szeretnénk az algoritmust, a másiknál pedig

kevesebb helyen akarjuk megoldani a problémát. Igazi

optimalizálás akkor történik, ha anélkül sikerül jobb algoritmust

találni, hogy változna a másik bonyolultság, vagy szerencsés

esetben az is csökken.

Az alábbiakban mutatunk két algoritmust két szám legnagyobb közös osztójának meghatározására:

Az első leírása:

1. Jelöljük a két számot A-val és B-vel

2. Legyen C=A

3. Ha C osztja A-t és B-t is, akkor a legnagyobb közös osztó C, s

véget ér az algoritmus

4. Ha nem osztja, csökkentsük C értékét eggyel

5. Végezzük el a 3. lépéstől az algoritmust

A második leírása, az úgynevezett euklideszi algoritmus:

1. Jelöljük a két számot A-val és B-vel

2. Ha egyenlők, akkor A (vagy B) a legnagyobb közös osztó, s

véget ér az algoritmus

32

Optimalizálás

LNKO

Page 33: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

3. Ha nem egyenlők, akkor a nagyobbikból vonjuk ki a kisebbiket

4. Végezzük el a 2. lépéstől az algoritmust

Egy érdekes algoritmus a következő, mely bemenő adata egy

pozitív egész szám, s kiír egy számot:

1. Jelöljük a bemenő számot N-nel

2. Legyen X=0 és Z=1

3. Növeljük X értékét eggyel

4. Adjuk hozzá Z értékéhez X kétszeresét

5. Növeljük Z értékét eggyel

6. Ha Z nem nagyobb mint N, akkor ismételjük meg az

algoritmust a 3. lépéstől

7. Írjuk ki X értékét

2.3 Néhány nevezetesebb algoritmikusan nem megoldható feladat

A leghíresebb ilyen probléma, hogy írjunk programot, mely eldönti,

hogy egy tetszőleges program beolvasva egy tetszőleges adatsort

megáll-e, vagy végtelen ciklusba kerül. A problémát szokás a

Turing-gépek megállási problémájának is nevezni, s

bebizonyítható, hogy nem oldható meg algoritmikusan.

A következő példánk Hilbert 10. problémája. Hilbert 1900-ban

azon a véleményen volt, hogy minden matematikai probléma

33

Gyakorló feladat: Számolja ki a prímkereső és lnko kereső

algoritmusok bonyolultságát!

Gyakorló feladat: Határozza meg a kimenetet a bemenő adat

függvényeként! Bizonyítsa eredményét! Érdemes néhány számra

kipróbálni az algoritmust, így könnyebben látható, hogy mit csinál.

Kísérletezzen bátran!

A megállási probléma

A Hilbert probléma

Page 34: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

megoldható, csak idő kérdése, hogy mikor. Felállított 23 olyan

problémát, melyeket akkor nem tudtak megoldani, és meg volt

győződve arról, hogy a XX. században sem tudják majd. Ebből a

10. probléma a következő volt:

Diofantoszi egyenletnek nevezzük a többváltozós egész

együtthatós algebrai egyenleteket, tehát pl.:

3x3-x2y+6z+5=0

alakú egyenletet, ha bennünket csak az egész megoldások

érdekelnek. Például a fenti egyenlet egy megoldása: x=1; y=2;

z= -1. Hilbert azt a feladatot tűzte ki, hogy találjanak olyan

általános módszert (algoritmust), amely minden egész együtthatós

algebrai egyenlet esetén eldönti, hogy van-e annak egész

megoldása. 1970-ben egy 23 éves matematikus –Matyijaszevics-

bebizonyította, hogy nincs algoritmus ennek eldöntésére.

Természetesen több más matematikus sokéves munkáját is

felhasználta, többek között Davis, Robinson, Myhill, Gödel. Gödel

munkája nyomán vált az ismertté, hogy nem minden matematikai

probléma dönthető el algoritmikusan.

Összefoglalás

Ön ezt a fejezetet elsajátítva tisztában van az alapvető számítógép

konfigurációkkal, tanácsot tud adni számítógép vásárlás vagy

fejlesztés esetén, bár igazán akkor lehet szakember ilyen téren az

ember, ha naponta olvassa a szakmai újságokat.

Tudja az algoritmus fogalmát, tud bonyolultságot számolni, s így

összehasonlítani algoritmusokat. Ismeri az algoritmikusan

megoldhatatlanság fogalmát, s ezekre tud példát is mondani.

34

Page 35: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

Ajánlott szakirodalom

http://hardver.lap.hu

Dr. Cserny László: Mikroszámítógépek, Vác, Váci ÁFÉSZ nyomda,

1994

Gács-Lovász: Algoritmusok, Bp, Tankönyvkiadó, 1991

Aho–Hopcroft–Ullman: Számítógép algoritmusok tervezése és

analízise, Bp, Műszaki Könyvkiadó, 1982

A gyakorló feladatok megoldásai

Gyakorló feladat, I/1:A keresés indulhat például valamely kereső szerverrel:

www.google.com. A beírandó szó: fastest processor. Szintén

sikerrel járhat a www.intel.com, vagy a www.chipmagazin.hu

oldalról. A megadott paraméterek alapján lehet kiszámolni az

emberi számolási képességgel való arányt.

35

Ellenőrző feladat: Egymillió forintból szereljen fel egy 300 fős

iskolát oktatási célú számítástechnikai eszközökkel

lehetőleg optimálisan. Írja le a saját vagy egy iskolai

számítógép pontos hardver elemeit, határozza meg a

konfiguráció gyenge pontjait, tegyen javaslatot

fejlesztésére 30 ezer forintból! Írja le a köbgyökvonás

algoritmusát blokkdiagrammal, számolja ki a

bonyolultságát, hasonlítsa össze a függvénytábla

segítségével végzett gyökvonás bonyolultságával! Ötletet

kap, ha megoldja a gyakorló feladatokat. Melyiket

választaná és miért?

Page 36: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

Gyakorló feladat I/2: Adjon meg egy napjainkban korszerű számítógép konfigurációt

(pénz nem számít)!

21 colos monitor, 1.2 GHz processzor, 100GB HDD, 48xCD-ROM,

24x CD író, DVD meghajtó, infra egér, 24 bites scanner, Web

camera, Digitális fényképezőgép, VR sisak és kesztyű, házimozi

rendszer, MIDI billentyűzet

Melyik egységek, jellemzők döntik el egy számítógép

gyorsaságát? Rangsorolja őket!

1. Processzor

2. Memória nagysága

3. Memória sebessége

4. Alaplap típusa

5. Perifériák gyorsaságai

Állítson össze egy gépet 300.000 Ft-ból!

Ez a pillanatnyi áraktól függ. Pl. a tananyagban megadott oldalról

tud választani, legyen benne, processzor, alaplap, ház, HDD, CD

ROM, monitor, egér, billentyű, memória, hűtő, videokártya,

hangkártya és hangszóró, mikrofon

Gyakorló feladat I/3: Adjon példát olyan „ál” algoritmusra, amely nem felel meg a „b”

követelménynek!

Végy egy számot, oszd el kettővel, vagy szorozd meg hárommal, s

adj hozzá egy számot!

Adjon példát olyan „ál” algoritmusra, amely nem felel meg az „e”

követelménynek!

Két szám szorzatának kiszámítása: Adja össze a két számot!

Gyakorló feladat I/4:Adja meg egy négyzet oldalaiból a területének, kerületének

kiszámítási algoritmusát szöveges és blokkdiagramos

ábrázolással! Ha ismer valamilyen programozási nyelvet, akkor

írjon programot a problémára!

36

Page 37: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

Blokkdiagram:

Szöveges:

1.Kérjük be a négyzet oldalát

2. A kerület egyenlő az oldal négyszerese

3. A terület egyenlő az oldal négyzete

Program:

Var a: real;

Begin

Readln(a);

Writelen(’K=’,4*a,’ T=’,a*a)

End.

Gyakorló feladat I/5:Számolja ki a prímkereső és lnko kereső algoritmusok

bonyolultságát!

Prímszám: O(n2), Lnko: O(n)

Gyakorló feladat I/6:Határozza meg a kimenetet a bemenő adat függvényeként!

Bizonyítsa eredményét! Érdemes néhány számra kipróbálni az

algoritmust, így könnyebben látható, hogy mit csinál, kísérletezzen

bátran!

F(x)=int(sqrt(x)), azaz a bemenet négyzetgyökének az

egészrésze.

Bizonyítás:(X+1)2=X2+2*x+1

37

Start

BE: A

KI: A*4; A*A

END

Page 38: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

II. tanulási egység

Az adat és az információ ábrázolása

BevezetésBizonyára nap, mint nap Ön is használja a következő fogalmakat:

adat, információ. Adatokkal találkozunk az utcán, a médiumokban,

a boltban. Információt szerzünk és adunk, építjük az információs

társadalmat. Szeretnénk mindenről a lehető legpontosabb

információt beszerezni, különböző hírek információ tartalmát

hasonlítgatjuk, vizsgáljuk. Az írás az egyik legősibb információ

közvetítő, de a piktogramok, képek, kézmozdulatok,

arckifejezések, a testbeszéd is ugyanolyan kommunikációs

eszköz, mint a telefon, TV, és a napjainkban előtérbe került

számítógép. Ebben a tanulási egységben Ön megismeri az adat

és információ fogalmát, lehetséges optimális ábrázolását. Tudni

fog információt mérni, összehasonlítani információ tartalmakat,

hogy a pontosabb információ forrást részesítse előnyben. Képes

lesz dönteni arról, hogy a különböző szám és szövegábrázolási

módok közül melyiket használja egy adott szituációban, hogy

jobban kihasználja a rendelkezésre álló tárterületet. Megismeri a

számítógép működésének alapjait, azt, hogy milyen lépésekre

vezeti vissza a különböző számításokat.

Az anyagban lesz néhány számítási feladat, de ne szegje kedvét,

egy-két példa tanulmányozása után képes lesz alkalmazni az

algoritmusokat, és ellenőrizheti az elsajátítás szintjét a feladatokon

keresztül. Az elméleti meghatározásokat, algoritmusokat követik a

példák, amit esetleg egyből nem ért meg, a feladatokon keresztül

megvilágosodik. Az idegen szakkifejezések használata

szükségszerű, azért, hogy megismerje a pontos szaknyelvet, de

minden esetben szerepel ezeknek a fogalmaknak a körülírása. Ha

ismeretlen kifejezéssel találkozik, lapozzon vissza, s nézze meg,

talán csak elsiklott a figyelme felette. Jó munkát kívánunk!

38

Page 39: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

TartalomBevezetés1.Adat és információ

1.1 Az információ mérése1.2 Az entrópia

2. Számábrázolás2.1 A számok és a számítógép2.2 Helyiértékes számábrázolás, számrendszerek

2.2.1 Konvertálás tízes számrendszerbe2.2.2 Konvertálás tízes számrendszerből

Az egész rész konvertálásaA tört rész konvertálása

2.2.3 Egyszerűsített konvertálások2.2.4 A pontosság korlátjai

2.3 Pozitív számok ábrázolása fixpontosan2.4 Negatív számok ábrázolása fixpontosan2.5 A lebegő pontos számábrázolás2.6 Decimális ábrázolások

2.6.1 Decimális ábrázolás előjel bájttal2.6.2 Decimális ábrázolás beépített előjel bájttal2.6.3 Tömörített ASCII kódú ábrázolás

3.Logikai adat, karakter, sztring ábrázolás3.1 Logikai adat

3.1.1 Logikai műveletek és igazság tábláik3.1.2 Logika és halmaz3.1.3 Fixpontos számok logikai műveletei

3.2 A karakter adat3.2.1 Karakterek osztályozása3.2.2 Karakterek ábrázolása

3.3 A sztring adat3.3.1 A sztring ábrázolása3.3.2 A sztring műveletei

ÖsszefoglalásEllenőrző feladatAjánlott szakirodalomA gyakorló feladatok megoldásai

39

Page 40: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

1. Adat és információ

Talán ismerős a következő anekdota:

Kutat ásnak ketten, egyik már lent van a félig kész üregben, a

másik pedig fent a gödör szélén. Mivel lent sötét van, s nem lehet

lelátni, a felső munkás lekiált:

–Mennyi?

–Öt! –hangzik a válasz, melytől nem lett okosabb a kérdező, ezért

pontosítást várón kérdezi:

–Mi öt?

A lent dolgozó munkás is szeretne pontosabb információhoz jutni,

ezért visszakérdez:

–Mi mennyi?

Ebben a dialógusban rögtön fontos dolgok kerülnek napvilágra,

például az adat és az információ fogalma közötti különbségek.

Az Idegen szavak és kifejezések kéziszótára szerint:

Információ:lat

1. Felvilágosítás, tájékoztatás

2. hírközlés

3. értesülés, adat

4. híranyag, a közlés tárgya

5. inf elektronikus úton továbbított jel; hír

Láthatjuk, hogy az információ definiálásában szerepet játszik az

adat fogalma, s valóban általában együtt emlegetik ezt a két

fogalmat. Legegyszerűbben úgy jellemezhetjük kettőjük viszonyát,

hogy az információ nem más, mint értelemmel bíró adat. De akkor

mi az adat? Erre is adhatunk egyszerű körülírást: Az adat az

információ rögzített formája. Mint láthatjuk, az adat nincs meg az

információ nélkül, s az információ is kívánja az adat jelenlétét.

40

Page 41: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

Próbáljuk meg feloldani ezt az ellentmondást a következőekben,

megismerve néhány használatos definícióját az adatnak és az

információnak, s végül az általunk a továbbiakban használt

fogalmát.

Az adat egyik értelmezése a következő:

Fogalmak, tények, jelenségek, események olyan formalizált

ábrázolása, amely emberi vagy gépi értelmezésre, feldolgozásra,

közlésre alkalmas.

Egy másik frappáns, de csak számítástechnikai megközelítés:

Az adat az a legkisebb egység, amivel műveletet tudunk végezni.

Tehát pl az a szó, hogy „alma” adat abban az esetben, ha nem

tudom tovább bontani, de abban az esetben nem, ha

meghatározhatom az első betűjét, ugyanis akkor már az „a” mint

egy betű lesz az adat.

A mi értelmezésünk a következő lesz:

Az adat jelentésétől megfosztott jelsorozat.Ebben a fejezetben s végig a hátralévő tananyagban azzal fogunk

foglalkozni, hogyan ábrázoljuk ezeket a jelsorozatokat, illetve most

már használhatjuk azt a kifejezést is, hogy adatokat. Látni fogjuk,

hogy egy-egy jelsorozat értelmezése más és más lesz, aszerint,

hogy mit jelent, tehát milyen információ tartalma volt eredetileg.

Lássunk néhány információ definíciót is, mielőtt a miáltalunk

használtat megadjuk:

Az információ a valóság reprezentációján végzett transzformáció,

mely végső soron a nyelő (ember esetében az agy) terméke.

Kicsit nyakatekert a definíció, de mindenképpen hasznos megállni

itt egy pillanatra. Azt látjuk, hogy az információ a valóságból

táplálkozik, de a megjelenéséhez még hozzáadódik egy

transzformáció, ami nem más, mint az értelmezés, ez pedig

személyenként más és más lehet.

Más tartalommal bír egy időjárás jelentés annak, aki kirándulni

megy, s annak is, aki esernyőt árul.

Általában az információ kinyerésére nem elegendő maga a

reprezentáció, szükség van még úgynevezett háttér információkra,

41

Az adat

Az információhoz szükséges információk

Page 42: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

amik lehetnek az egyén személyes tapasztalatai, vagy az adott

társadalmi-szociológiai rendszer velejárói.

Ha valaki Magyarországról Londonba érkezik, bizony kell egy kis

idő, míg megszokja, hogy a busz nem balról, hanem jobbról jön,

így az az információ, hogy közeledik a busz, mást jelent itthon, s

mást Angliában.

Az információ egy másik kellemes definíciója:

Értelemmel bíró adat.

Rövid és frappáns, de kihagyja az információt felfogót, mint olyat,

aki maga is alakíthatja az információt. Mi ezentúl a következő

definíciót használjuk:

Információnak tekintünk mindent, ami bizonytalanságot szüntet meg.Egy fontos észrevételt is tehetünk, az adat és az információ

egységét szemlélve:

Az információ a tartalmi, az adat a formai oldalát jelenti ugyanannak a közleménynek, vagy jelsorozatnak.Mint láthatjuk, mi mindenesetben az adaton írott adatot értünk, ami

számítástechnikában nagyon is helyénvaló.

1.1 Az információ mérése

Az információ tehát attól nagyobb, ha nagyobb bizonytalanságot

szüntet meg. Jó lenne valahogy mérni, azaz egy konkrét számot

hozzárendelni a különböző információtartalmakhoz. Milyen

elvárásaink legyenek?

a) Ha nem történik bizonytalanság csökkentése, akkor legyen

I(X)=0, ahol I(X) az X esemény információ tartalma.

b) Ha felére csökken a bizonytalanság, akkor legyen I(x)=1, így

ha igen-nem válaszokra képes valaki, akkor pontosan

megkaphatjuk a szükséges kérdések számát, ha ügyesen

kérdezünk, tehát minden kérdésünkkel felezzük a bizonytalan

elemek számát a halmazban. Az ügyes kérdezés azt is

42

Információ

Információ és adat összefüggése

Az információ–tartalmat mérő függvény tulajdonságai

Page 43: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

biztosítja, hogy a válasz igen/nem volta nem fogja befolyásolni

a kapott információt.

Például ha kártyalapra kérdezünk, akkor első lépésben a

következőt érdemes kérdezni: Szám van rajta (vagy figura)?

c) Kötődjön a függvény az esemény valószínűségéhez, hiszen

minél kisebb a valószínűség, annál nagyobb bizonytalanságot

szüntet meg, azaz valamilyen egyenes arány „féleség” legyen

a valószínűség reciproka és az információ tartalom között

olyan értelemben, hogy nagyobb reciprokhoz nagyobb

információ tartalom kötődjön.

Ezeket figyelembe véve alkották meg a következő képletet, azaz

függvényt:

I(X)=log(1/p(X))vagy másképpen I(x)= - log(p(x)). A két képlet ugyanaz, csak a

másodikban kihasználtuk, hogy egy szám reciproka egyenlő a –1.

hatványával, s a logaritmus azonosságai miatt ez az előjel kivihető

a logaritmus elé.

Vizsgáljuk meg ezt a képletet. Ha egy x esemény valószínűsége

100%, akkor p(x)=1. Egy reciproka egy, így I(x)=log 1. Mivel 20=1,

így I(x)=log 20=0. Tehát látjuk, hogy a biztos esemény nem ad

információt, vagy más szóval információ tartalma nulla.

Valóban, ha annyit tudunk egy balesetet okozó

személygépkocsiról, hogy fekete volt a gumi a kerekén, nem

jutottunk információhoz (tekintsünk el az extrém esetektől).

Ha egy esemény valószínűsége pici, reciproka nagy lesz, és így a

logaritmusa is. Nézzünk egy érdekes példát!

Mivel egy céltáblán végtelen sok pont van, annak a valószínűsége,

hogy épp a közepébe lövünk pontszerű lövést feltételezve, nulla.

Ismétlem, nulla a valószínűsége, de nem lehetetlen esemény! Mi

lesz akkor az információ tartalma ennek a közlésnek, hogy a

közepébe lőttünk?

Megnézve a képletet, az első alakot nem tudjuk használni, mert

nullával kellene osztanunk, viszont a második alakban nullának

kellene meghatározni a logaritmusát, ami ismét kudarchoz vezet.

43

Az információ képlete

A képlet tulajdonságai

Page 44: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

Nem tudnánk kiszámolni az információ tartalmat? De, csak éppen

egy érdekes dologgal állunk szemben (már megint, ugye milyen

izgalmas ez a terület?). Határértékekkel számolva azt mondhatjuk,

hogy egy osztva nullával egyenlő végtelen, aminek a logaritmusa

szintén végtelen, s így azt kapjuk, hogy végtelen nagy az

információ tartalom, ami igaz is, hiszen végtelen sok pontból

találtunk meg az információ alapján egyet. Talán elegendő volt ez

a két példa ahhoz, hogy lássuk, milyen hasznos képletre tettünk

szert. Nézzük még meg, hogy ha egy esemény valószínűsége

50%, az mekkora információt fog jelenteni számunkra. 0.5

reciproka 2, aminek logaritmusa 1. Tehát teljesült a b. pontban

megadott feltételünk, amit követelményként támasztottunk a

képlettel szemben. Még egy példát nézzünk, s meglátjuk, milyen

kényelmes ez az összefüggés.

Mennyi az információ tartalma annak, ha egy magyarkártya

pakliból megnevezek egy lapot? A valószínűség, mivel 32 lapból

áll a csomag, 1/32. Ennek reciproka 32, aminek logaritmusa 5. Mit

mutat ez a szám? Azt, hogy ügyes kérdezéssel (az ügyes fogalmát

tisztáztuk fentebb) 5 kérdéssel tudnám kideríteni ennek a lapnak

az értékét.

1.2 Az entrópia

Fontos jellemzője még egy rendszernek az átlagos információ

tartalma. Ezt úgy lehet kiszámolni, hogy vesszük az egyes

események információ tartalmát, megszorozzuk a hozzátartozó

valószínűséggel, s összeadjuk őket. Feltehetjük, hogy nincs nulla

valószínűség, s az összes valószínűség összege egyenlő eggyel,

azaz minden esemény különálló és együtt lefednek minden

lehetséges eseményt. Ebben az esetben az információ átlaga,

vagy más szóval várható értéke:

H(X)=p1*log(1/p1)+…+ pn*log(1/pn),

amit szokás entrópiának is nevezni. A legenda szerint amikor

Weaver megalkotta ezt a képletet, nem tudta, hogy miként

44

Az entrópia fogalma és képlete

Annak a valószínűsége, hogy az Ön családneve kihal, 100%, azaz biztos esemény. Vajon miért?

Page 45: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

nevezze el, ekkor ajánlotta Neumann János, hogy hívja

entrópiának, mert azt igazán senki sem tudja, hogy az mi, valamint

divatos belőle előadást tartani, s kérdezni úgysem mer majd senki

sem róla. Hogy ez igaz-e vagy sem, nem tudni, de entrópia néven

vonult be a tudományba ez a fogalom.

Az entrópia akkor lesz maximális, ha minden esemény

valószínűsége azonos, ekkor

Hmax(X)=p1*log(1/p1)+…+ pn*log(1/pn)=

=p*log(1/p)+…+ p*log(1/p)==n*p log(1/p)=log (1/p)=log(n)

Az utolsó átalakításban használtuk azt ki, hogy ha n darab

valószínűségünk van és mindegyik egyenlő, akkor értékük 1/n, és

ezt megszorozva n-nel egyet kapunk.

A relatív entrópia alatt az entrópia és a maximális entrópia

viszonyszámát értjük, azaz

Hr(X)=H(X)/Hmax(X)A relatív entrópia helyett inkább az

R(X)=1-Hr(X)értéket használják, amit redundanciának (terjengősségnek)

neveznek. A redundancia máshonnan is ismerős lehet, azt

mondjuk, hogy redundáns egy információs rendszer, ha egy-egy

információ többszörösen is szerepel benne.

Például ha ismerjük valakinek a nevét, akkor tudjuk azt is, hogy

férfi, avagy nő. Mégis ki kell tölteni az erre szolgáló rovatot sok

kérdőíven, hiszen nagyon bonyolult lenne meghatározni a név

alapján a nemet.

Itt ismét példát láthatunk arra, hogy egy algoritmust gyorsíthatunk,

ha növeljük a hely bonyolultságát. Számoljuk ki a következő

esemény rendszer entrópiáját!

45

A maximális entrópia képlete

A relatív entrópia

Redundancia

Page 46: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

Három eseményünk van, az egyiknek a valószínűsége 0.5, a

másik kettőnek 0.25.

Ekkor az entrópia:

H(X)=p1*log(1/p1)+p2*log(1/p2)+p3*log(1/p3)== 0.5*log(1/0.5)+0.25*log(1/0.25)+ 0.25*log(1/0.25)=

= 0.5*log(2)+0.25*log(4)+ 0.25*log(4)== 0.5*1+0.25*2+ 0.25*2=0.5+0.5+0.5=1.5

A maximális entrópia, azaz

Hmax(X)=log(n)=log(3), ezért a relatív entrópia

Hr(X)=H(X)/Hmax(X)=1.5/log(3)A redundancia, azaz

R(X)=1-Hr(X)=1-1.5/log(3)Valószínűség számításban van még egy fogalom, ami köthető az

entrópiához, ez az úgynevezett szórásnégyzet, ami a várható

értéktől való eltérés várható értékének a négyzete. Azaz ha H(x) jelöli az entrópiát, akkor a szórásnégyzet

2= p1*(H(x)-log(1/p1))2+…+pn*(H(X)-log(1/pn))2

Esetünkben ez, mivel H(x)=1.5,

2=p1*(H(x)-log(1/p1))2+p2*(H(X)-log(1/p2))2+p3*(H(X)-log(1/p3))2==0.5*(1.5-log(1/0.5))2+0.25*(1.5-log(1/0.25))2+0.25*(1.5-log(1/0.25))2=

=0.5*(1.5-log(2))2+0.25*(1.5-log(4))2+0.25*(1.5-log(4))2==0.5*(1.5-1)2+0.25*(1.5-2)2+0.25*(1.5-2)2=

=0.5*(0.5)2+0.25*(-0.5)2+0.25*(-0.5)2==0.5*0.25+0.25*0.25+0.25*0.25=

=0.125+0.0625+0.0625==0.25

A szórás azt mutatja meg, hogy mennyire eltérőek a különböző

események információ tartalmai.

46

Szórásnégyzet

A szórás értelmezése

Page 47: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

47

Gyakorló feladat: Egy rendszám első betűje, vagy első száma

nyújt pontosabb információt? Állítását számítással bizonyítsa!

Adott négy eseményt tartalmazó eseményrendszer

valószínűségeivel X={0.25; 0.125; 0.5; 0.125}. Számolja ki az

entrópiát, redundanciát, szórásnégyzetet!

Page 48: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

2. Számábrázolás

2.1 A számok és a számítógép

A számítógép, ahogy a neve is mutatja, számításokra való, illetve

ez volt az elsődleges cél, amikor létrehozták. Minden feladatot úgy

végez el, hogy számolnia kell, és gyorsaságát is úgy tudjuk az

egyik legegzaktabb módszerrel lemérni, hogy megnézzük, milyen

gyorsan old meg egy bonyolult számítási feladatot. Általában

mátrixszorzásra, vagy prímszámkeresésre alapulnak a legtöbb

teszt programok. Mindenképpen számokkal dolgozik, s valahogy

ezeket a számokat tárolnia kell. Ebben a részben

megismerkedünk a legsűrűbben előforduló számábrázolási

technikákkal. A programozás során nem találkozunk közvetlenül

ezekkel az ábrázolási módokkal, a gép elrejti előlünk, de ha

alaposabban körbe akarunk járni egy problémát, vagy le akarunk

nyúlni a gépi szintre, feltétlenül ismernünk kell, mert meglepetések

érhetnek bennünket. Csak néhány olyan terület, ahol kénytelenek

vagyunk használni:

–egérkezelés

–a lemez közvetlen kiolvasása

–a rendszeridő alacsony szintű kezelése

Vagy a legérdekesebbet említve, szükségünk van rá akkor is, ha

valamilyen ok miatt tönkre megy a számítógép, s nem tudnak rajta

futni a magas szintű diagnosztizáló programok, csak a

legegyszerűbbek.

A számok fajtái számítástechnikai szempontból:

Természetes 0; 1; 2; 3; 4;…

Egész 0; -1; 1; -2; 2; -3; 3;….

Valós 0; 0.5; 2; -3.18; 0.33333, -45,3

Kicsit eltér a matematikai fogalomkörtől, mert nem különbözteti

meg a racionális, irracionális számokat. Valójában nincs is igazi

48

Számok felosztása

Page 49: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

valós szám, mivel a számokat csak kötött számú számjegy

pontossággal és kötött intervallumban tudja ábrázolni. Ez adja a

különböző ábrázolási módok jogszerűségét. Elmondható, hogy a

számítógép a következőképpen ábrázol:

–A természetes számokat kettes számrendszerbeli alakjukkal–A negatív egészszámokat kettes komplemenssel–A valós számokat pedig lebegő pontos számábrázolással.Az első két ábrázolási módot fixpontos ábrázolásnak is nevezik,

ami arra utal, hogy a kettedes pont helye fix, míg a

lebegőpontosnál változik a kettedes pont helyzete. Valós

számokat is tudunk fixpontosan ábrázolni, de nem annyira

elterjedt.

2.2 Helyiértékes számábrázolás, számrendszerek

Mielőtt konkrétan megnézzük az ábrázolási módokat, figyeljük

meg a számok írását:

124.16Egy számnak két részét különböztetjük meg, a tizedespont előtti

részt egész résznek nevezzük, a tizedespont mögöttit

törtrésznek. A példában jól látszik az is, hogy fontos szerepet tölt

be a tizedesponttól való távolság és irány valamint a számjegy

nagysága. Általánosan felírva egy számot, a következőképpen

számolhatjuk ki az értékét:

ABC.DEFJelentse p a számrendszer alapszámát, mely az előző példában

10 volt. Ha a számjegy balra foglal helyet az egész és törtrészt

elválasztó ponttól, akkor az általa képviselt érték a számjegy

szorozva ptávolság-1-gyel. Tehát esetünkben a B által képviselt érték

B*101. C esetében C*100=C*1.

Ha a számjegy jobbra foglal helyet az egész és törtrészt elválasztó

ponttól, akkor az általa képviselt érték a számjegy szorozva

p–távolság-gal. Tehát esetünkben az E által képviselt érték E*10–2. D

esetében D*10–1. A szám által képviselt teljes értéket megkapjuk,

ha összeadjuk a számjegyek által képviselt értékeket:

49

Számítástechnikai és matematikai számfogalom különbségek

Fixpontos ábrázolás

Page 50: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

Az ABC.DEF értéke: A*102+B*101+C*1+D*10–1+E*10–2 +F*10–3

=A*100+B*10+C*1+D*0.1+E*0.01+F*0.001

Az első példa esetén:

124.16= 1*102+2*101+4*1+1*10–1+6*10–2=

=1*100+2*10+4*1+1*0.1+6*0.01

2.2.1 Konvertálás tízes számrendszerbe

Ezekben a példákban 10 hatványaival számoltunk, de szinte

tetszőleges szám hatványaival számolhatnánk, s ezt a számot

nevezzük a számrendszer alapjának. A számrendszer alapja

mindig pozitív egész szám, de természetesen ki lehet terjeszteni

más számkörökre is a számrendszer fogalmát. Ha p a

számrendszer alapja, akkor p féle számjegyünk van, s ezek rendre

0; 1; 2;…; p-1.Tehát például a hatos számrendszer számjegyei: 0; 1; 2; 3; 4; 5.

A tizenhatosé:1; 2; 3; 4; 5; 6; 7; 8; 9; A; B; C; D; E; F, ahol

Betűjel Érték

A 10

B 11

C 12

D 13

E 14

F 15

Amíg nem szokjuk meg, addig érdemes felírni ezt a kis segéd

táblázatot.

Számoljuk ki A4F.5B16 értékét! Az alsó indexben szereplő 16-os

szám mutatja a számrendszer alapját, ezt mindig kiírjuk a

továbbiakban. Ha nem szerepel, az azt jelenti, hogy tízes

számrendszerben van a számunk, tehát

50

A tízes számrendszer

Számrendszer alapja

Konvertálás tízesbe

Page 51: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

A4F.5B16=A*162+4*161+F*160+5*16–1+B*16–2==10*162+4*161+15*160+5*16–1+11*16–2==10*256+4*16+15*1+5*1/16+11*1/256=

=2560+64+15+5/16+11/256==2639.355469…

Számoljuk át a 123.235 számot is tízes számrendszerbe!

123.235= 1*52+2*51+3*50+2*5–1+3*5–2== 1*25+2*5+3*1+2*1/5+3*1/25=

= 25+10+3+0.4+0.12==38.52

Ebben az esetben pontos eredményt kaptunk, mivel az ötös

számrendszer kifejezhető tízesben pontosan.

Néhány számrendszer megkülönböztetett jelentőséggel bír a

számítástechnikában, ezek a következők:

– A bináris, azaz a kettes számrendszer– A hexadecimális, azaz a tizenhatos számrendszerNéha alkalmazzák még a négyes és a nyolcas számrendszert is,

de ezek jelentősége kisebb.

2.2.2 Konvertálás tízes számrendszerből

Az egész rész konvertálásaLáthattuk, hogy hogyan tudunk átírni tetszőleges számrendszerből

tízes számrendszerbe számokat, most azt nézzük meg, hogy

tízesből hogyan tudunk átírni tetszőlegesbe. Az algoritmus két

részre bontható, először az egész részt írjuk át úgy hogy

mindaddig osztjuk a számrendszer alapjával a számot, míg 0 nem

marad, és a keletkező maradékok adják a számjegyeket. Mivel a

számrendszer alapszámával osztunk, ezért a keletkező

maradékok mindegyike kisebb lesz az alapszámnál, ami megfelelő

számunkra.

51

Kiemelt számrendszerek

Mondjon példát 60-as, tizenkettes számrendszerre!

Konvertálás tízesből tetszőlegesbe

Page 52: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

Írjuk át 7-es számrendszerbe a 123-as számot!

123:7=17, a maradék 4

17:7=2, a maradék 3

2:7=0 a maradék 2

Tehát a számunk: 2347

Vegyük észre, hogy a maradékokat fordított sorrendben írjuk

össze számmá, azaz alulról kezdjük. Ellenőrizzük a megoldást!

2347=2*72+3*71+4*70=2*49+3*7+4*1=98+21+4=123Könnyebbség kedvéért a következő alakban szokás a számolást

felírni:

123 4

17 3

2 2

Eleinte talán kicsit zavaró, de sokkal gyorsabb. A szám mellé

mindig a maradékot írjuk, alá pedig a hányadost. Írjuk át 3-as

számrendszerbe a 38-at!

38 2

12 0

4 1

1 1

Ellenőrzés:

11023=1*27+1*9+0*3+2*1=27+9+0+2=38A törtrész konvertálásaA törtrész átírása is hasonló formában történik, figyeljük meg!

A törtrészt megszorozzuk a számrendszer alapszámával, s a

tizedesponttól balra lévő számjegy lesz az új számrendszerbeli

szám egyik jegye, ezt elhagyjuk, s újból szorzunk mindaddig, míg

nullát kapunk, vagy pedig megunjuk. Igen, itt előfordulhat, hogy

nem ér véget az eljárásunk, ezért meg szoktuk mondani, hogy

hány értékes jegyig végezzük a számolást. Nézzünk egy példát,

írjuk át ötös számrendszerbe a következő számot: 0.124

0.124*5=0.62, értékes jegyünk a nulla, mivel ez szerepel a 0.62-

ben a tizedesponttól balra.

52

Egyszerű konvertálási segédforma

A törtrész átírása

Page 53: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

0.62*5=3.1, a következő jegy a hármas, ezt elhagyjuk, s 0.1-el

számolunk tovább:

0.1*5=0.5, az új jegyünk a nulla,

0.5*5=2.5, új jegyünk a 2, elhagyjuk tehát, s 0.5-tel számolunk

tovább:

0.5*5=2.5, ismét 2 a jegy, s látható, hogy nem érne véget

sohasem a számolás. Írjuk fel a számot, azaz írjuk egymás mellé a

számjegyeket, itt eredeti irányban olvassuk össze őket:

0.124=0.030225

Ellenőrizzük!

0.03022=0*5-1+3*5-2+0*5-3+2*5-4+2*5-5=

=0*0.2+3*0.04+0*0.008+2*0.0016+2*0.00032=0.12384, ami elég

jó közelítő eredmény. Ha tovább folytattuk volna a számolást, még

pontosabb eredményt kaptunk volna.

Számoljuk át a 0.5625-öt kettes számrendszerbe! Az új

írásmóddal végezzük el, azaz a szám alá kerül a szorzat, de

mindig csak a függőleges vonaltól jobbra lévő számot, azaz a

törtrészt szorozzuk a számrendszer alapszámával, jelen esetben a

kettessel:

0. 5625

1. 125

0. 25

0. 5

1. 0

Figyeljük meg, hogy a számjegyek a baloldali oszlopban

termelődtek, fentről lefele kell összeolvasni őket, azaz

0.5625=0.10012

Az algoritmus most szerencsésen véget ért, mert nulla maradt az

utolsó szorzás után a vonaltól balra.

Ellenőrizzük az eredményt!

0.10012=1*2-1+0*2-2+0*2-3+1*2-4=

=1*0.5+0*0.25+0*0.125+1*0.0625=0.5+0.0625=

53

Page 54: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

=0.5625

Végezetül határozzuk meg 412.564 hatos számrendszerbeli

alakját 4 „hatodos” jegy pontossággal! Figyeljük meg, hogy először

az egész részt számoljuk ki, majd a tört részt.

412 4

68 2

11 5

1 1

Tehát az egész rész alakja 15246

A törtrész számolása:

0. 564

3. 384

2. 304

1. 824

4. 944

Tehát a törtrész alakja:0.32146

Egyben írva a számot, kapjuk, hogy 412.564 = 1524.32146

54

Gyakorló feladat: Számok megadása, konvertálása

különböző számrendszerek között:

Írja át tízesbe:

3A16,1223,4112,326,1.45, 23.24, 51.17, 121.13, 213,7.18

Írja át hatosba, kettesbe, hetesbe, tizenhatosba, nyolcasba:

12.34, 24.7

Page 55: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

Tetszőleges számrendszerből tetszőleges számrendszerbe

általában úgy konvertálunk, hogy először tízesbe átalakítjuk a

számot, majd onnan alakítjuk át a cél számrendszerbe.

2.2.3 Egyszerűsített konvertálások

Néha mégis van lehetőségünk arra, hogy elkerüljük ezt a dupla

utat. Az alkalmazhatóság feltétele az, hogy a kiinduló

számrendszer alapja egészhatványa legyen a cél

számrendszernek. Ilyen például a kettes és a nyolcas, vagy a

hetes és a negyvenkilences számrendszerek. Ekkor összefogunk

annyi számjegyet az alacsonyabb számrendszerbeli számnál,

ahanyadik hatványa a magasabb alapja a kisebbnek, majd ezeket

a csoportokat írjuk át. Tehát ha például kettesből akarunk

nyolcasba írni, akkor 3 számjegyet fogunk össze az egész és a

tört részt elválasztó ponttól kezdve. Ha kevesebb a számjegyek

száma az utolsó csoportban, akkor kiegészítjük nullákkal. Lássunk

2 példát!

Adott az 11011.112 szám, írjuk át nyolcasba! Először kiegészítjük

úgy, hogy a számjegyek száma mind a tört, mind az egész

részben osztható legyen hárommal, mert 3 kettes

számrendszerbeli számjegy ad ki egy nyolcas számrendszerbelit

(kettő a harmadikon egyenlő nyolc):

011 011. 110, ezek után átírjuk a csoportokat:

Az első csoport:0112, azaz 3, ami egyenlő 38

A második csoport:0112, azaz 3, ami egyenlő 38

Az harmadik csoport:1102, azaz 6, ami egyenlő 68

Ezeket egymás mellé írva alakul ki 33.68 alak. Visszafelé ugyanígy

járunk el, csak majd a vezető és utolsó nullákat kell kitörölni a

számból:

55

Tetszőleges konvertálások

Page 56: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

Nézzünk egy példát, ahol 16-os számrendszerből írunk át

kettesbe:

3A2F.3B416

Határozzuk meg először a csoportokban résztvevő jegyek számát:

kettő a negyediken egyenlő 16, így négy jegybe kell átírni

egyenként a 16-os számrendszerbeli jegyeket:

3 --- 0011

A --- 1010

2 --- 0010

F --- 1111

3 --- 0011

B --- 1011

4 --- 0100

Egymás mellé írva a csoportokat:

0011 1010 0010 1111. 0011 1011 0100

Töröljük ki a felesleges nullákat, s készen is vagyunk:

3A2F.3B416=11 1010 0010 1111. 0011 1011 012

2.2.4 A pontosság korlátjai

Sokszor felvetődik, hogy el kell dönteni, mekkora a legnagyobb és

a legkisebb (nem nulla) szám egy adott számrendszerben, ha

ismerjük a törtrész és az egészrész számjegyeinek a számát.

Legyenek ezeknek számai B és A. A legkisebb szám nyilván az

lesz, melynek minden jegye nulla, csak a törtrész utolsó

számjegye egyes. Ha a törtrész B darab számjegyet tartalmaz, és

56

Gyakorló feladat: Számok megadása, konvertálása „rokon”

számrendszerek között:

Írja hármasból 9-esbe, 16-osból kettesbe: 221

Írja kilencesből hármasba: 221

Írja tizenhatosba kettesből: 100100101101

A legnagyobb és a legkisebb szám

Page 57: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

p a számrendszer alapszáma, akkor ennek az értéke p-B. A

legnagyobb szám pedig nem más, mint egy olyan szám, ahol

minden jegyen a lehető legnagyobb számjegy áll, ami p alapú

számrendszerben épp a p-1. Ekkor, ha hozzáadnánk az imént

ismertetett legkisebb számot, folyamatos túlcsordulásokkal egy

olyan számot kapunk, amelynek első jegye egyes, a többi nulla, s

ez az első jegy most jött létre az A+1. helyen.

Ezek szerint az eredeti szám pA-p-B. Nézzünk erre is példát!

Legyen A=5, B=3, tehát az egészrész számjegyeinek száma 5, a

törtrész számjegyeinek száma 3. A számunk legyen négyes

számrendszerben. Ekkor a legkisebb (nem nulla) számunk alakja:

00000.0014

Kiírtuk a vezető nullákat, hogy jobban látszódjon az eredeti szám.

Valóban ennek értéke 4-3. A legnagyobb számunk:

33333.3334, melyhez hozzáadva az iménti 0.0014 számot kapjuk,

hogy 100000.000. Emiatt a legnagyobb számunk értéke 45-4-3

Speciálisan, ha nincs törtrész, akkor B=0, tehát pA-p0=pA-1 a

legnagyobb szám értéke.

2.3 Pozitív számok ábrázolása fixpontosan

Térjünk rá a fejezet egyik fő céljára, a számábrázolásra.

Említettük, hogy a természetes számokat kettes számrendszerbeli

57

Gyakorló feladat: Határozza meg a következő esetekben a

szám pontosságát, a legkisebb és legnagyobb számot:

Hatos számrendszerben 4+2 jegyen

Kettesben 3+1 jegyen

Tizenhatosban 2+2 jegyen

Négyesben 5 jegyen

Hármasban 3 jegyen

Számábrázolás

Page 58: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

alakjukkal ábrázoljuk. A feladat egy kicsit tér csak el az eddig

ismertetett számrendszer átírásoktól, mégpedig annyiban, hogy itt

pontosan megmondjuk, hogy mennyi helyünk van egy-egy adat

számára, azaz minden esetben ki kell töltenünk az esetleg vezető

nullákat is. Amikor számábrázolásról beszélünk, mindig

megmondjuk, hogy hány biten történik. Általában ez a

számítógépek byte alapú memória szervezése miatt 8-nak valamely egész számú többszöröse lesz. Ettől persze a

feladatokban el lehet térni, de a gyakorlatban mindig valahány

byte-on ábrázoljuk a számokat.

Nézzünk azért egy példát:

Adjuk meg a 8 biten a hetvenhármas szám alakját!

73=010010012

Amennyiben elképzelünk egy kettedes pontot is a számban,

lehetőségünk van valós számok ábrázolására. Ilyenkor az első

bitet az előjelnek tartjuk fent, amennyiben értéke nulla, pozitív lesz

a számunk, egyes esetén negatív. Nem terjedt el a gyakorlatban,

de néhány programozási nyelv alkalmazza. Erre is nézzünk két

példát:

Legyen az ábrázolni kívánt számunk a 9.75, a kettedes pontot

jobbról számolva a 3. bit elé képzeljük el. Ekkor számunk a

következő alakot nyeri kettes számrendszerben:1001.112

Ábrázoljuk 16 biten: az első bit 0, mivel pozitív a szám. Ki kell

egészíteni még a végét egy nullával, hogy megfelelő helyre

kerüljön a kettedes pont:

0000 0000 0100 1110

A második példa legyen a –121.32. Ekkor a szám bináris alakja:

1111001.010100011…2

Legyen a kettedes pont jobbról a 6.bit előtt, így mivel a szám

negatív, első bitje egyes, és lecsonkoljuk a végét úgy, hogy csak 6

értékes jegy maradjon a törtrészben. Az ábrázolt 16 bites érték:

1001 1110 0101 0100

58

Page 59: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

2.4 Negatív számok ábrázolása fixpontosan

Egész számok esetében az a gond, hogy lehet negatív is egy

szám. Célszerűnek látszik fenntartani egy bitet –mondjuk az elsőt–

ennek jelölésére, de a gyakorlatban más módszer vált be,

mégpedig a kettes komplemenssel való ábrázolás. Ismerkedjünk

meg ennek a fogalmával. A komplemens, mint idegen szó azt

jelenti, hogy kiegészítő. Valóban, a kettes komplemens is ezt

jelenti, nem a számot ábrázoljuk, hanem azt az értéket, mely

kiegészíti az ábrázolható legnagyobb számra. Figyeljük meg a

következő egyszerű trükköt, ami miatt bevezették a kettes

komplemens használatát:

Tegyük fel, hogy ki akarjuk vonni 563-ból a 452-t. Ezt így is el lehet

végezni:

563+(1000-452)-1000

Látszólag feleslegesen bonyolítottuk meg a dolgot, de a

számítógépen nagyon könnyű egy egész hatvány kivonása, hiszen

csak el kell hagyni az első számjegyet:

13-8=11012-10002=01012 Látható, hogy ugyanerre jutottunk volna,

ha elhagyjuk az 11012 számból az első egyest. A komplemens

képzéssel azt érjük el, hogy nem a –452-t ábrázoljuk, hanem az

1000-452-t. Így, ha összeadjuk valamely számmal, s elhagyjuk az

első számjegyet, helyes eredményt kapunk:

1000-452=548Ezt a kivonást is könnyebbé tehetjük, ha észrevesszük, hogy

1000-452=1+999-452

59

Kettes komplemens

Gyakorló feladat:

Adja meg 13 és 25 értékét 8 biten

Adja meg 11.75 és 19.125 értékét 8 biten, ha a kettedes pont

jobbról a 3. jegy előtt van

Page 60: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

Ennek az összegnek a 999-452 része nagyon könnyen

számolható, hiszen megkapjuk az eredményt, ha a szám minden

jegyét kiegészítjük kilencesre, ezt hívjuk kilences komplemensnek:

452 kilences komplemense 547, mert ez az a szám, melynek

jegyei épp kilencre egészítik ki a 452-es számot. Az 547-hez

hozzáadva 1-t, megkapjuk az eredeti 548-ast, ami a cél volt. Ezt

szokták nevezni tízes komplemensnek is néha.

Ezek szerint:

563-452==563+548-1000==1111-1000=111.

Valóban, 563-452=111.

Nézzük meg egy másik példán, de már kettes számrendszerben.

Végezzük el 5 biten a 8-3 műveletet:

8 alakja 5 biten kettes számrendszerben: 01000

3-at az iménti módszerrel ábrázoljuk, először meghatározzuk az

egyes komplemensét, azaz minden bitjét kiegészítünk egyesre.

Ez kettes számrendszer esetén nagyon egyszerű, ahol egyes van oda nullát, ahol nulla van, oda egyest kell írni:A 3 alakja kettes számrendszerben 5 biten: 00011, ennek egyes

komplemense: 11100. Adjunk még hozzá egyet, így kapjuk meg a

kettes komplemenst: 11101

Most már ezt a számot hozzáadva a 8-hoz és elhagyva az első –

túlcsordulással létrejött számjegyet, megkapjuk az eredményt:

8+(-3)=01000+11101=1|00101, elhagyva a vonal előtti jegyet

00101-et kapunk, melyet visszaszámolva 5 az eredmény.

Negatív számokat kettes komplemenssel ábrázoljuk, mintegy

előkészítve arra a számot, hogy megtörténjen a kivonása az

abszolút értékének, tehát a szám hozzáadása valamely számhoz.

Vegyük észre, hogy így nincs szükség a kivonás műveletére, elég,

ha a processzor csak összeadni tud. Az egyes komplemens

képzése nagyon egyszerű a gépnek, minden bit helyére az

ellentettjét írja, majd az első jegy elhagyása is könnyű, mert az

60

Egyes komplemens

Page 61: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

általában egyszerűen elveszik, ha nincs hely a tárolására

(valójában a FLAG regiszter ún. átvitelt jelző bitjébe csúszik át).

Kettes komplemens ábrázolásnál a pozitív számokat

hagyományosan, kettes számrendszerbeli alakjukkal ábrázoljuk.

Figyeljünk arra, hogy nem tudunk tetszőleges tartományban

ábrázolni, hiszen a szám első bitje mutatja azt, hogy negatív, vagy

pozitív az ábrázolt szám. Jegyezzük meg, hogy ez NEM előjel bit,

mert attól, hogy megváltoztatjuk, nem kapjuk a szám ellentettjét!

Nevezzük csak jelző bitnek! Ezekből következik, hogy ha n darab

bit áll a rendelkezésünkre, akkor a számokat ebben a formában

–2n-1-től 2n-1-1-ig ábrázolhatjuk, tehát 8 biten például –128-tól 127-

ig. A pozitív számok a 00000000 és a 01111111 közé eső számok,

míg a negatívak komplementerei 10000000 és 11111111 közé

esnek.

Végezzük el a következő kivonást 8 biten: 62-28

Először meghatározzuk a 62 alakját: 00111110

A –28-hoz meghatározzuk 28 alakját: 00011100

Innen az egyes komplemenst: 11100011

A kettes komplemens, azaz egyel növelve: 11100100

Immár elvégezhetjük a műveletet:

62 00111110

-28 11100100

34 1|00100010 összeadva.

Kissé nehéznek tűnik az összeadás, de ha mondjuk magunkban a

maradékokat, idővel nem fog annyira vészjóslóan hangzani az,

hogy egy meg egy az nulla, maradt az egy. Kis gyakorlás után

megszokjuk, hogy átcsordulnak összeadáskor a számjegyek, s pár

példa után nem fogjuk érteni, hogy miért tűnt nehéznek.

Ez tehát az egész számok ábrázolása. Felvetődik, hogy abban az

esetben, amikor csupán a byte bitjeinek az értékeit ismerjük,

honnan tudjuk eldönteni, hogy ez most kettes komplemens

ábrázolás, vagy sima fixpontos, azaz kettes számrendszerbeli

alak. A válasz kézenfekvő, bár szomorú: Sehonnan nem dönthető el. Épp ettől adat az adat, és információ az információ.

61

Ábrázolási tartomány

A kivonás

Az adat magában nem adja meg az ábrázolási módot

Page 62: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

Ha pl. a következő byte tartalom adott: 11111111, akkor ez

fixpontos ábrázolásnál 255-nek az ábrázolása, de ha tudom, hogy

a kettedes pont fixen az utolsó jegy előtt van, akkor 127.5-ről van

szó. Ha pedig kettes komplemens ábrázolásról van szó, akkor ez

–1-nek az ábrázolása.

Hogyan lehet vajon visszaszámolni egy kettes komplemenssel

ábrázolt szám esetén az eredeti értéket?

Ha a szám pozitív, akkor nincs más dolgunk, mint egyszerűen

visszaszámoljuk a már ismert módon a kettes számrendszerből,

pozitív volta pedig egyértelműen kiderül abból, hogy az első

bitjének értéke nulla. Ha az első bit egyes, akkor ugyanazon

lépéseket végezzük el, mint amiket az előbb, csak fordított

sorrendben:

a. Levonunk a számból egyet

b. Az egyesek helyébe nullákat, a nullák helyébe egyeseket írunk

c. Visszaszámoljuk az így kapott kettes számrendszerbeli szám

értékét tízes számrendszerbe, megkapjuk az eredeti szám

értékének abszolút értékét

d. Negáljuk a számot, azaz elérakunk egy mínuszjelet

Tehát ha például a számunk 11110101, akkor az egyes

komplemens 11110100 volt, így az eredeti szám 000010112. Ezt

visszaszámolva kapjuk, hogy 11, tehát a keresett szám a –11 volt.

Sajnos gyakori hiba, hogy csak az abszolút értékig oldják meg a

feladatot, ne felejtsük el kitenni a mínuszjelet, hiszen a számnak

negatívnak kell lennie.

62

Komplemens visszafejtése

Egy gyakori hiba

Gyakorló feladat: Adja meg kettes komplemenssel a következő

számokat: -12; 25; -5; -1

Fejtse vissza a kettes komplemenseket: 1111 0101; 0001

1010;

Page 63: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

2.5 A lebegő pontos számábrázolás

Az utolsó ábrázolási mód a lebegőpontos számábrázolás, mellyel

a valós számokat ábrázoljuk. Ahogy a neve is mutatja, itt nem fix

helyre képzeljük el a kettedes pontot, hanem állandóan változtatja

a helyét. Először is ismerkedjünk meg a számok normál alakjaival.

A normál alak azt jelenti, hogy szorzat formájában írjuk a

számokat:

126=1.26*102=12.6*101=0.126*103

Látjuk, hogy itt is többféle alak lehetséges. A számítástechnikában

kikötjük, hogy a szorzat első tényezőjének 0 és egy közé kell

esnie. Így már egyértelmű minden számnak a normál alakja. Az

első tényezőt mantisszának nevezzük, a 10 kitevőjét pedig

karakterisztikának. Ha a szorzat második tényezőjének az értéke

ismert –esetünkben 10–, akkor nem kell ábrázolnunk, elég csupán

a mantisszát és a karakterisztikát ábrázolni. Figyeljük meg, hogy a

mantissza adja meg a szám értékes számjegyeinek számát, a

karakterisztika pedig azt az intervallumot, amelyben a szám

helyet foglalhat. Természetesen most is a kettes számrendszerhez

kell folyamodnunk, így az alap esetünkben 2 lesz. Tehát például a

12.5-nek a normál alakja kettes számrendszerben:

12.5=1100.1=0.11001*24=0.11001*2100

Itt a karakterisztikát is kettes számrendszerben adtuk meg.

Ilyenkor az a feladatunk, hogy ábrázoljuk a mantisszát: 0.11001 és

a karakterisztikát: 100. A hagyományos eljárás szerint mindegyikre

szánnak valahány bitet, ezeket a számokat ismernünk kell ahhoz,

hogy értelmezni tudjuk a számot. Az első bitet fenntartjuk a szám

előjelének, így negatív számokat is tudunk ábrázolni. A

karakterisztika ábrázolásánál úgynevezett feszített előjeles

számábrázolást alkalmaznak, ami azt jelenti, hogy a

karakterisztikához hozzáadnak egy számot, ami megfelel a

karakterisztika ábrázoláshoz szükséges biteken ábrázolható azon

számnak, amelyiknek csupán az első számjegye egyes, a többi

nulla. Tehát ha a karakterisztika 8 biten van elhelyezve, akkor ez a

63

Lebegőpontos számábrázolás

Normál alak

MantisszaKarakterisztika

A mantissza, karakterisztika értelmezése

Page 64: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

szám az 10000000, azaz a 128 bináris alakja. Ezáltal a

karakterisztika értékét megkapjuk, ha az ott ábrázolt számból

kivonunk 128-at. Egy általános modell a 4 byte-os számábrázolás:

A biteket jobbról balra számozva 0-tól 31-ig a következő felosztás

lehetséges:

31. bit: a szám előjele30-23 bitek: a feszített előjellel ábrázolt

karakterisztika22-0 bitek: a mantissza

Figyelembe véve, hogy a mantissza értéke nagyobb egyenlő 0.12-

nél és kisebb 1.02-nál a kettedes pont utáni első jegy mindig

egyes, ezért ezt felesleges ábrázolni. Ezek után nézzük meg egy

szám konkrét alakját, legyen ez a jól ismert 12.5. A normál alakja

kettes számrendszerben:

0.11001*2100

A mantissza: 0.11001

A karakterisztika: 100

A szám előjele pozitív, ennek a nulla felel meg, a negatívnak pedig

az egyes. Akkor a 31. bit 0 lesz.

A karakterisztikához hozzáadva a feszített előjel miatt a 128-at,

alakja 10000100, ez lesz a 30-23 bitek tartalma

A mantisszából elhagyva az első egyes számjegyet: 1001, majd

kiegészítve nullákkal a megfelelő 23 bitnyi hosszra:

10010000000000000000000

A szám alakja tehát:

0|10000100|10010000000000000000000

A függőleges vonal jelzi a különböző szakaszok határait, tehát

sorrendben az előjel bit, a karakterisztika és a mantissza határait.

Az ismertetett eljárástól vannak különböző módok is, de nagyjából

azonos az ábrázolás alapgondolata. Van, ahol 16-os

számrendszerben normálják a számot, így természetesen

ábrázolni kell a mantissza minden jegyét, s van, ahol nem

alkalmazzák a feszített előjeles karakterisztika ábrázolás, hogy

64

A bitek szerepe lebegőpontos ábrázolásnál

Page 65: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

arról ne is ejtsünk szót, mennyi vállfaja van a mantissza és a

karakterisztika ábrázolására használt bitek számának.

2.6 Decimális ábrázolások

A számok ábrázolásában láthattuk, hogy nagy szerepet játszik az,

hogy miként lehet a gyakorlatban is használni az adott ábrázolási

módot. Egy másik fajta megközelítésben a hangsúlyt arra helyezik,

hogy könnyen lehessen kiíratni a számokat. A számjegyek, mint

karakterek is értelmezhetők, tehát ezeket a most közvetkező

ábrázolási módokat akkor használjuk, ha nem az a cél, hogy

matematikai műveleteket végezzünk majd a számokkal, hanem az,

hogy gyorsan és kényelmesen tudjuk kiíratni képernyőre vagy

nyomtatóra. Mivel a számokat általában tízes számrendszerben

használjuk, decimális számábrázolásnak is nevezik ezt a tárolását

a számoknak. Többféle változat van, nézzünk belőlük párat.

a., ASCII kódú decimális ábrázolás, külön előjelbájttal

Az ASCII (American Standard Code for Information Interchange)

kód egy olyan kódrendszer, ahol minden 0 és 255 közötti számnak

megfelel egy karakter, azaz minden bájt értelmezhető úgyis,

mintha egy karakter kódja lenne rajta. (Ne feledjük, hogy egy bájt 8

bit, azaz egy nyolcjegyű kettes számrendszerbeli szám. Innen

származik a bit elnevezés is, azaz binary digit, bináris számjegy).

A számjegyeket lehet jeleknek is értelmezni, ebben a

kódrendszerben a következő számok lesznek a számjegyek

kódjai. Figyeljük meg, hogy a hexadecimális alakban a második

jegy éppen a számot adja!

65

Decimális ábrázolás

Gyakorló feladat: Adja meg –17.625 és 123.567 lebegőpontos

alakját!

Page 66: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

A szám jegy ASCII kódjaDecimálisan

ASCII kódjaHexadecimálisan

0 48 30

1 49 31

2 50 32

3 51 33

4 52 34

5 53 35

6 54 36

7 55 37

8 56 38

9 57 39

2.6.1 Decimális ábrázolás előjel bájttal

Az ötlet nagyon egyszerű, egész számokra alkalmazzák csupán:

Minden számjegynek az adott számban feleljen meg a

hozzátartozó ASCII kód, az előjel kerüljön a szám elé egy bájtra.

Ha pozitív a szám, akkor az előjel bájt értéke legyen 2B16, ami 4310

és éppen a „+” jel kódja, ha negatív a szám, akkor legyen 2D16,

ami 4510 és éppen a „–” jel kódja. Ezáltal ha egy olyan programmal

nézzük meg a számot, ami a bájtokhoz rendelt ASCII

karakterekként mutatja meg a tartalmat, épp a számot fogjuk látni

az általunk megismert és kedvelt formában. A legtöbb megjelenítő

program ilyen, pl a NotePad, a Norton Commander, és még

lehetne folytatni.

Nézzünk egy példát, ábrázoljuk a –123-at! A szám hexadecimális

alakja ebben az esetben:

2D 31 32 33Azért választottuk a kettesével való tagolást, mert 2 hexadecimális

számjegy ad egy bájtot. A 2D jelzi, hogy negatív a szám, a 3116

66

A számjegyek ASCII kódjai

Az előjel bájt értéke

Page 67: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

adja decimálisan a 49-et, ami épp az egyes kódja, 3216 a kettesé

és a 3316 a hármasé.

Lássunk egy másik példát, legyen a számunk az 54-es.

A szám hexadecimális alakja ebben az esetben pedig: 2B 35 34

A 2B jelzi pozitív voltát, a 3516 jelenti az ötös és a 3416 a négyes

számjegyet.

Ez az ábrázolás nagyon egyszerű, bár rendkívül gazdaságtalan,

láthatjuk, hogy minden számjegy esetén az egyik fél bájton a

hármas számjegy van, ezt felesleges ábrázolni, mert nem ad

információt, viszont mint láthattuk nagyon kényelmes. Gondoljunk

arra, hogy hányszor választjuk a kényelmességet az ésszerűség

és főleg a takarékosság helyett. Ugye megértjük kicsit a

programozókat?

Ennél az ábrázolási módnál láthatjuk, hogy egy n darab

számjegyet tartalmazó szám n+1 bájtot foglal el, hiszen minden

számjegyhez tartozik egy bájt, valamint az előjel is külön bájtra

kerül. A következő ábrázolási formánál egy kicsit javítunk ezen az

arányon.

2.6.2 Decimális ábrázolás beépített előjel bájttal

Ennél az ábrázolási módnál az a csel, hogy a szám előjelét

elrejtjük az utolsó számjegy kódjában, a többi számjegy kódja

marad ugyanaz, mint eddig, tehát a számjegyhez tartozó ASCII

kód. Láthattuk, hogy erre lehetőség van, hiszen elég lenne a fél

bájt is a számjegy ábrázolására. Kétfajta ábrázolás terjedt el, az

egyiket nem túl találóan első a másikat második zónás

ábrázolásnak nevezik. Az alábbi táblázatban megadjuk mindkét

esetben (azaz amikor a szám pozitív illetve negatív) az utolsó

számjegyhez tartozó bájt kódját. Figyeljük meg, hogy az első

67

Az előjel bájtos decimális számábrázolás

Gyakorló feladat: Adjuk meg 143 és –56 alakját!

Beépített előjeles decimális ábrázolás

Page 68: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

zónás esetben pozitív számok esetén nincs különösebb furfang,

negatív számok esetén is csak a fél bájt értéke változik. A második

zónás ábrázolásban kissé bonyolultabb a helyzet, de nem

reménytelen, ha észrevesszük, hogy a számjegyek értékei

növekvő sorrendben vannak, kivéve a 0-hoz tartozó kódokat.

Tehát a táblázat:

Az előjel Az utolsóSzámjegy

Első zónásKód

Második zónásKód

+ 0 30 7B

+ 1 31 41

+ 2 32 42

+ 3 33 43

+ 4 34 44

+ 5 35 45

+ 6 36 46

+ 7 37 47

+ 8 38 48

+ 9 39 49

– 0 70 7D

– 1 71 4A

– 2 72 4B

– 3 73 4C

– 4 74 4D

– 5 75 4E

– 6 76 4F

– 7 77 50

– 8 78 51

– 9 79 52

68

Az előjel tárolása fél bájton

Page 69: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

Nézzünk két példát, s mindegyiknek mindkét kódolási megfelelőjét.

Legyen a számunk a –267. Ennek alakja az első zónás

formátumban 32 36 77. A 3216 és 3616 jelzi az első két számjegyet,

a kettest és a hatost. A 7716 jelentése a fenti táblázat 3. oszlopából

kiolvasható, tehát az utolsó számjegy hetes, és a szám negatív.

Második zónásan ugyanez a szám: 32 36 50. Az első két rész

értelmezése ugyanaz, mint az első zónás ábrázolásnál, az 5016

értelmezése szintén kiolvasható a táblázatunk 4. oszlopából, tehát

az utolsó számjegy hetes, és a szám negatív.

A következő számunk legyen a 3267.

Ennek alakja az első zónás formátumban 33 32 36 37. A számok

értelmezése:

3316––3, 3216––2, 3616––6, 3716––7, és mivel ez az utolsó

számjegy, tudjuk, hogy a szám pozitív a táblázat 3. oszlopa miatt.

A második zónás alakja a számnak 33 32 36 47, a számok

értelmezése:

3316––3, 3216––2, 3616––6, 4716––7, és mivel ez az utolsó

számjegy, tudjuk, hogy a szám pozitív a táblázat 4. oszlopa miatt.

Megfigyelhetjük, hogy mind az első, mind a második zónás

számábrázolásnál ugyanannyi bájtot használunk a számjegyek

ábrázolására, mint ahány számjegy van, mert az előjel beépül az

utolsó számjegyet ábrázoló bájtba. Ez csekély javulás a külön

előjel bájttal való ábrázoláshoz képest, az igazi áttörést a

következő ábrázolási forma adja:

2.6.3 Tömörített ASCII kódú ábrázolás

Ennek az ábrázolási formának az elterjedt elnevezése a BCD

(Binárisan kódolt decimális szám) Említettük már, hogy pazarlás

egy teljes bájtot alkalmazni egyetlen számjegy ábrázolására, ez a

69

Gyakorló feladat: Adja meg 143 és –56 alakját beépített

előjel bájttal mindkét zónás ábrázolásban!

Az ábrázolás gazdaságossága

Page 70: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

kódolás oldja meg a problémát, ugyanis két számjegyet sűrít egy

bájtba, egyiket az első, másikat a második felére helyezve el. Az

előjel az utolsó fél bájtra kerül oly módon, hogy a C16 a „+” jelet a

D16 a „–” jelet fogja jelenteni. A számjegyeknek a saját értéküknek

megfelelő hexadecimális szám kerül, ami pontosan megegyezik a

számmal, ez biztosítja azt, hogy könnyű kiíratni őket. Van egy kis

gond, mégpedig az, hogy a számítógépek bájt szervezésűek, ami

azt jelenti, hogy nem illik fél bájtra helyezni egy adatot. Mivel a

számunknak egy bájt egész számú többszörösének kell lennie a

tárolóban, ezért úgy oldották meg, hogy egyszerűen elé írnak egy

nullát, ha nem így lenne. Mikor fordul elő ez a gond? Mivel minden

számjegy fél bájtot foglal el, és még az előjelnek is kell egy fél bájt,

ezért ha a számunk páros számú számjegyet tartalmaz, akkor

szükséges ez a kiegészítés. Ismét lássunk 2 példát:

Legyen a számunk a –123. A szám páratlan számjegyből áll,

emiatt nem kell kiegészíteni az elején egy nullával, hanem már

kódolhatjuk is: 12 3D.

A 1216 jelenti az egyes és a kettes számjegyet, a 3D16 a hármast

és a negatív előjelet, azaz 316 miatt a hármas és a D16 jelzi, hogy

negatív a számunk.

Nézzük meg a +127 kódolását, mivel a szám páratlan számjegyből

áll, emiatt nem kell kiegészíteni az elején egy nullával, így az

eredmény: 12 7C.

1216 jelenti az egyes és a kettes számjegyet, a 7C16 a hetest és a

pozitív előjelet, azaz 716 miatt a hetes és a C16 jelzi, hogy pozitív a

számunk.

Nézzünk egy példát arra is, amikor ki kell egészíteni a számot

nullával, azaz páros számú számjegyet tartalmaz:-5462.

Ekkor a kódolás előtt eléírunk egy nullát: –05462. Így már átírható,

a megoldás: 05 46 2D. A D16 jelzi a negatív tulajdonságot, s

látható, hogy ha nem lenne kiegészítve nullával az elején, akkor

bizony ott maradt volna egy bájt befejezetlenül.

70

Gyakorló feladat: Adjuk meg 143 és –56 alakját tömörített

ábrázolásban!

Page 71: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

A fentieken kívül léteznek még más kódrendszerek is, de a

logikájuk nagyban megegyezik az ismertetettekkel. Ilyen kódolás

például az amikor a karaktereket az EBCDIC kódjukkal írjuk le, de

napjainkban már nem használják széles körben ezt a

kódrendszert, ezért választottuk a tárgyalás alapjául az ASCII

kódú decimális ábrázolásokat.

3. Logikai adat, karakter, sztring ábrázolás

3.1 Logikai adat

A logikai adat fogalma egyszerű, ahogy az ábrázolása is. A

világunk logikailag két részre osztható, úgynevezett kétértékű

világban élünk, egy állítás vagy hamis, vagy igaz. Ha azt állítjuk,

hogy esik az eső, akkor az vagy igaz, vagy hamis, nem

mondhatjuk, hogy esik is meg nem is, az adott pillanatban vagy

esik, vagy nem. Számítástechnikában ezt a két értéket igaznak és

hamisnak nevezzük, használatos még a true és a false kifejezés

is, ami az angol megfelelője. Ábrázolni elég egy bit, hiszen 2

állapota van, a nulla és az egyes. A nullával szokás a hamisat, egyessel az igazat jelölni. A gyakorlatban a fentebb említett bájt

szervezés miatt mégis egy bájtot használnak, de ez erősen

programozási nyelv függő, a legalacsonyabb, leggépközelibb

nyelven egy biten ábrázolják ezt a két állapotot.

3.1.1 Logikai műveletek és igazság tábláik

A logikai adatoknál sokkal érdekesebbek a velük végezhető

műveletek. A legsűrűbben használt műveletek a következők:

NOT ––- tagadás műveleteAND ––- logikai és műveletOR ––-– logikai vagy műveletXOR––– logikai kizáró vagy műveleteA későbbiekben megadjuk az összes lehetséges műveletet. A

műveletek megadása úgynevezett igazság táblákkal történik,

71

Egyéb kód rendszerek

A logikai adat

Logikai művelet

Page 72: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

ezekből tudjuk leolvasni a műveletek eredményét, hasonlóan

használhatjuk, mint kisiskolás korunkban a szorzótáblát. Nézzük

meg például a logikai és igazság tábláját:

AND 1 0

1 1 0

0 0 0

A tábla használata egyszerű, a művelet egyik tagját kikeressük az

első oszlopból, a másik tagját az első sorból, s a kettő metszete

adja a művelet eredményét. Hosszabban írva a logikai és „szorzó

táblája”:

1 AND 1 = 1

1 AND 0 = 0

0 AND 1 = 0

0 AND 0 = 0

Látható, hogy rövidebb és gyorsabb az igazság tábla használata.

Megegyezünk, hogy a művelet első tagját az első oszlopból, a

másodikat pedig az első sorból vesszük. A fenti példánál ez nem

okoz gondot, mert a logikai és úgynevezett kommutatív művelet,

ami azt jelenti, hogy az operandusok felcserélhetőek, s az

eredmény ugyanaz marad.

Figyeljük meg, hogy nem véletlen a logikai és elnevezése, ugyanis

ha egy lány okos és szép, akkor a következő állításokat tehetjük, s

az állítások igazságtartalma a következőképpen alakul:

A lány okos és szép ––––––> igaz állítás

A lány okos és csúnya ––––> hamis állítás

A lány buta és szép ––––––> hamis állítás

A lány buta és csúnya ––––> hamis állítás

Összehasonlítva ezt az igazság tábla hosszabb leírásával, a

szépnek és az okosnak egyest, a csúnyának és a butának nullát

feleltetve meg, szembeötlő a hasonlóság.

72

Az igazság tábla

Page 73: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

A következőben megadjuk a műveletek igazság tábláit:

AND 1 0

1 1 0

0 0 0

OR 1 0

1 1 1

0 1 0

XOR 1 0

1 0 1

0 1 0

A logikai vagy azt hiszem, nem szorul magyarázatra, a kizáró vagy

pedig a magyar nyelvben ismert, például a következő mondatban:

Pénzt, vagy életet!

Tehát akkor igaz, ha vagy pénzt, vagy életet adunk, de a kettőt

együtt nem követelik, ahogy azzal sincsenek megelégedve, ha

egyikkel sem szolgálunk.

Az igazság az, hogy a magyar nyelvben a kizáró vagyot

használjuk inkább, de például ha egy házassághirdetésben azt

olvassuk, hogy fiatal legyen a partner vagy gazdag, nyilván nem

záródik ki az a szerencsés eset sem, amikor mindkettő teljesül, és

csak azoknak nem érdemes jelentkezni, akik öregek és

szegények.

Kimaradt a tagadás igazság táblája, mivel az egy kicsit eltér a

többitől amiatt, hogy egy operandusú művelet, tehát csak egyetlen

tagja van. Az igaz ellentettje a hamis, és a hamis ellentettje az

igaz. Az igazság tábla ezért a következő alakot ölti:

NOT

1 0

0 1

73

Page 74: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

Nem csak ez a négy művelet van, de ezek a leginkább használtak

a számítástechnika berkein belül. Hogy teljes legyen a

felsorolásuk, megadjuk a többit is, de ezekkel nem foglalkozunk

bővebben:

Az első két logikai függvény igazság táblája igazából nem is

érdekes, egyik a konstans igaz, a másik a konstans hamist adja,

azaz nem függ attól a művelet eredménye, hogy mi a két változó

értéke:

Az igaz tábla:

True 1 0

1 1 1

0 1 1

Az hamis tábla:

False 1 0

1 0 0

0 0 0

A következő tábla értéke csak az első elemtől függ, azonos vele:

Az A tábla:

A 1 0

1 1 1

0 0 0

A következő tábla értéke csak az első elemtől függ, ellentétes

vele:

A NOT(A) tábla:

NOT(A) 1 0

1 0 0

0 1 1

74

Page 75: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

A következő táblák B-re valósítják meg ugyanezt:

A B tábla:

B 1 0

1 1 0

0 1 0

A NOT(B) tábla:

NOT(B) 1 0

1 0 1

0 0 1

A fenti 4 tábla egyváltozós függvénynek is tekinthető, mivel csak

az egyik változó játszik szerepet benne.

Az AND, OR, XOR táblákat már megadtuk, adjuk meg ezek

negáltjait is!

A NOT(A AND B) tábla (NAND):

NAND 1 0

1 0 1

0 1 1

A NOT(A OR B) tábla (NOR):

NOR 1 0

1 0 0

0 0 1

A NOT(A XOR B) tábla (XNOR):

XNOR 1 0

1 1 0

0 0 1

Tudjuk, hogy az igazság tábla 4 mezőjén helyezkednek el az

értékek, s mivel mindegyik 2 állapotot vehet fel, ezért 24 változat

75

Page 76: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

lehetséges, tehát 16. Hogy teljes legyen a felsorolás, megadjuk a

még hiányzó négy igazság táblát is:

Az A B tábla (A implikáció B):

A B 1 0

1 1 0

0 1 1

Az B A tábla (B implikáció A):

BA 1 0

1 1 1

0 0 1

Az A inh B tábla (A inhibíció B):

A inh B 1 0

1 0 1

0 0 0

Az B inh A tábla (B inhibíció A):

B inh A 1 0

1 0 0

0 1 0

Végezetül soroljuk fel mind a 16 lehetőséget:

Igaz, hamis, A, Not A, B, Not B, And, Nand, Or, Nor, Xor, Xnor, és

a 4 művelet, ahol számít a tagok sorrendje, tehát nem

kommutatívak: B A, A B, A inh B, B inh A

Az implikáció következményt jelent, az inhibíció pedig tiltást.

3.1.2 Logika és halmaz

A logikai műveletek szoros kapcsolatban állnak a halmazokkal,

ezért szokás azonosítani őket halmaz műveletekkel is. A logikai és

a halmazoknál a metszetnek felel meg, hiszen ha egy elem benne

van egy A halmazban és egy B halmazban, az benne van a két

76

Lehetséges műveletek

Halmazokkal való kapcsolatuk

Page 77: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

halmaz metszetében is. Mivel a metszetet két halmaz esetén a

szorzás jellel jelöljük, ezért szokás használni a logikai és jelölésére

a szorzás jel is.

A logikai vagy-nak az unió felel meg, hiszen ha egy elem benne

van egy A halmazban vagy egy B halmazban, akkor benne van a

két halmaz uniójában. Az unió jele az összeadás, így a logikai

vagy-ot szokás összeadás jellel is jelölni. Mivel számítástechnikai

oldalról közelítjük most meg a problémát, mi maradunk a

hagyományos angol elnevezéseknél.

3.1.3 Fixpontos számok logikai műveletei

Sokkal izgalmasabb esettel állunk szemben, amikor a logikai

adatokat egy bitnek tekintve kettes számrendszerbeli számokra

alkalmazzuk a fenti műveleteket. Ezt nyugodtan megtehetjük, s

használják is elég sűrűn a programozási gyakorlatban, a

műveletek neve ilyenkor bitenkénti NOT, bitenkénti OR és így

tovább. Nézzünk erre egy példát!

Számoljuk ki a 4 OR 6 eredményét! Megegyezhetünk, hogy a

számokat 8 biten ábrázoljuk, ebben az esetben

4=0000 01002,

6=0000 01102

Végezzük el a logikai műveletet úgy, hogy az egymás alatt lévő

bitekre alkalmazzuk, tehát például az eredmény 5. bitje egyenlő a

4 kettes számrendszerbeli alakjában az 5. bit és a 6 bináris

alakjában az 5. bit logikai vagy műveletének az eredménye.

Ekkor a következőhöz jutunk:

0000 01002=4

0000 01102=6

0000 01102=6

Ily módon nagyon jól lehet gyakorolni a logikai műveletek

elvégzését, de nézzünk egy-két érdekes dolgot.

Ha egy N számnak kíváncsiak vagyunk az 5. bitjére, akkor ezt

kinyerhetjük a következő módon: (N AND 16) / 16, ugyanis ha a

számot bitenként AND kapcsolatba hozzuk a 16=0001 00002

77

Próbálja megadni az összes műveletet csak negáció, AND és OR műveletekkel!

Logikai műveletek számokkal

Page 78: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

számmal, akkor láthatjuk, hogy csak az 5. bitje marad meg, így a

művelet értéke 16 lesz, ha a szám kérdéses bitje egyes volt és

nulla, ha nulla volt. Ezt elosztva nyilván vagy egyet, vagy nullát

kapunk, ami szolgáltatja a kívánt eredményt. Egy másik

alkalmazási terület, amikor gyorsan akarunk kinullázni egy bájtot,

azaz nullává tenni. Ilyenkor a megoldást az N XOR N szolgáltatja,

mivel önmagával vett XOR művelet nullát ad, ha megfigyeljük az

igazság táblában azt, hogy 1 XOR 1= 0 és 0 XOR 0= 0.

3.2 A karakter adat

3.2.1 Karakterek osztályozása

A karakterekről már volt szó az ASCII kódtábla esetén, nézzük

meg, milyen osztályokba sorolhatjuk a karaktereket.

a. Alfanumerikus jelek

Idetartoznak a betűk és a számok. Hagyományosan minden

karakterkészletben benne vannak az angol ábécé kis és nagy

betűi, ez 26-26 jelet eredményez, a szóköz (space) valamint

nullától kilencig a számjegyek. Jellemző az is, hogy szoftveres

úton megoldják a nemzeti karakterek ábrázolását is, tehát pl.

Magyarországon a karakterkészletben megtalálhatóak azon

magyar karakterek, melyek nincsenek benne az angol

ábécében. Ha meg akarjuk nézni, hogy valóban megvan

minden karakter ezen betűk közül, nagyon jó szolgálatot tesz,

ha megjegyezzük a következő szót:

árvíztűrőtükörfúrógépEz azért szerencsés szó, mert mindenkaraktert tartalmaz,

amelyik nincs benne az angol ábécében.

78

Gyakorló feladat: Értékelje ki a (true and not true)or

(false or true) kifejezést

Mennyi (3 and 2 ) or 1 négy biten?

Karakterek osztályozása

Page 79: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

b. Írásjelek

Idesoroljuk a vesszőt, pontot, pontos vesszőt, kérdőjelet, és

így tovább, tehát minden olyan írásjelet, melyet használunk

írás közben, valamint a különböző zárójeleket, az aposztrófot,

az idéző jelet.

c. Matematikai műveleti jelek

Ezek a hagyományos műveleti jelek, mint az összeadás jele

„+”, kivonás, szorzás esetén a csillag, osztásra a „/” jel

használatos. Idetartoznak még a relációs jelek, mint pl. az =; >;

<.

d. Grafikai jelek

Olyan jeleket tartalmaz, melyet egyszerű rajzolásokhoz lehet

felhasználni, például keretek rajzolásához. Van függőleges

vonal, vízszintes, sarok készítésére alkalmas, és még

rengeteg.

e. Egyéb jelek

Ez a kategória tartalmaz minden olyan jelet, mely az

előbbiekben nem volt felsorolva. Néhányat megadunk, mivel

különleges nevük van, és kellemetlen szokás, hogy

szakemberek sem tudják a nevüket. Érdekességképpen néhol

megemlítjük, hogy milyen egyéb fantázia neveket találtak ki.

– # Hash–mark (Kettős kereszt, trágyajel)

– @ At–mark (printkukac, farkincás a)

– ~ Tilde (Kishullám, tilda)

– $ Dollár jel

– \ Back slash (Visszafele per jel)

– & Ampersand (És jel)

3.2.2 Karakterek ábrázolása

Az egy bájtos hely miatt 256 különböző karaktert lehet ábrázolni,

ez kevésnek bizonyult ahhoz, hogy minden nemzet megtalálja a

saját karaktereit közöttük. Létezik az ASCII kódtábla, mint régi és

szabványos karakter tábla, de mellette más kódtáblák, kódolások

79

Kódtáblák

Page 80: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

is megjelentek. Jellemzője mindegyiknek, hogy 256 karaktert

tartalmaz, de ezek részben különböznek, elhagynak az eredeti

ASCII kódtáblában meglévő jeleket, hogy a saját új jelekkel

helyettesítsék. Általában a számok, betűk ugyanazzal a kóddal

szerepelnek. Ilyen kódtáblák a KOI-8, EBCDIC, DKOI.

Igazi megoldást az összevisszaságra az UNICODE tábla jelenti,

mely még kidolgozás alatt áll, azaz vannak kódok, melyekhez még

nem szabványosítottak karaktert. Azért tudja ez a kódtábla

megoldani a problémát, mert egy karaktert 2 bájton ábrázol, tehát

216=65536 féle jelet tud azonosítani. Ebbe a szakemberek szerint

minden nemzet minden karaktere belefér a magyartól kezdve a

szanszkritig.

A kód kiosztás nem összevissza történt az ASCII kódtáblánál sem,

a kódtábla elején a vezérlőjelek helyezkednek el, amikhez igazi

megjeleníthető karakterek nem tartoznak. Ilyen a sorvége jel, vagy

a printert vezérlő egyéb kódok. A számok ASCII kódjait már láttuk,

hogy szerencsésen lettek megalkotva, de ugyanez elmondható a

betűk elhelyezésére is, ha megnézzük a hexadecimális kódjait:

A––––4116––0100 00012

B––––4216––0100 00102

a––––6116––0110 00012

b––––6216––0110 00102

Láthatjuk, hogy az utolsó négy biten kiolvasható, hogy hányadik a

betű az ábécében, és csupán egy bit különbség van a betű kis és

nagybetűs változata között. Nem kell azt hiszem hangsúlyozni,

hogy milyen nagy segítség pl. akkor, ha egy csupa kisbetűs szót

nagy betűssé kell alakítani.

80

Page 81: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

3.3 A sztring adat

3.3.1 A sztring ábrázolása

A sztring szakkifejezést magyarra lefordítani füzér, vagy láncként

szokás, pontosabban karakterfüzér, vagy karakterlánc. Láthatjuk

ezekből, hogy arról van szó, hogy karaktereket rakunk

egymásután, azaz szöveget ábrázolunk. A szöveg tehát

karakterek egymásutánisága. Fontos dolog az, hogy miként tudjuk

ábrázolni. Ábrázolás esetén egyetlen dolog szokott gondot

jelenteni, annak eldöntése, hogy a tároló egységen mekkora helyet

foglal el, meddig kell a kódoknak megfelelő karaktereket

értelmezni. Az eddigi adatoknál mindig tudtuk, hogy egy vagy

esetleg 4 bájton, a logikai adatnál pl. egy biten ábrázolunk, itt

viszont nem tudunk határt szabni, mert a szövegek különböző

hosszúak lesznek. Valami más ötlet kellett ahhoz, hogy megoldják

ezt a problémát.

Az első nem túl ötletes, amikor korlátozzuk a sztringek hosszát, és

azt mondjuk, hogy minden sztring pontosan adott számú karaktert

tartalmaz, és az ötlettelenségen kívül nyilvánvalóak a módszer

hátrányai is. Egyrészt nem tudunk tetszőleges hosszú sztringeket

kezelni, másrészt pedig feleslegesen foglalunk helyet, ha rövidebb

sztringek is elegendőek lennének. Szerencsére nem alkalmazzák

sűrűn.

A második ötlet kissé jobb, itt csak a maximális hosszat írják elő,

de rövidebbek lehetnek a sztringek, a legtöbb programozási nyelv

ezt alkalmazza. A sztring hosszát a sztring elején helyezik el,

felhasználva egy vagy több bájtot. Ha egy bájtot tartanak fent, ez

azt jelenti, hogy a sztring hossza maximálisan 255 hosszú lehet,

ha például kettőt, akkor 65535. Ilyenkor természetesen egy sztring

karakterein kívül még tárolnunk kell a sztring hosszát megadó

bájtokat is.

A harmadik igazán frappáns, ebben az esetben úgynevezett

sztring végjelet alkalmaznak, mely valamilyen speciális karakter,

81

A sztring jelentése

A sztring ábrázolásai

Page 82: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

pl. a nulla ASCII kódú karakter. Így nincs sem minimális, sem

maximális hossz, az egyetlen gondot az jelenti, ha az adott

karaktert is szerepeltetni akarjuk a sztringben, így olvasva őt, nem

tudhatjuk, hogy vége van-e a sztringnek, vagy pedig ez a karakter

csupán egy eleme neki. Van megoldás ennek a tévedési

lehetőségnek a kivédésére is, pl. értelmezhetik úgy, hogy ha

kétszer egymás után jön a nulla kódú karakter, az rendes karaktert

jelent, ha pedig csupán egyszer, akkor sztring vége jelet. Vannak

program nyelvek, melyek ezt a megoldást alkalmazzák.

3.3.2 A sztring műveletei

Mindegy, hogy a sztring ábrázolása melyik módszerrel történik,

mindenképpen vannak ehhez az adattípushoz kötődő függvények,

eljárások, egyszóval műveletek, néhányat felsorolunk ízelítőül:

– hossz: A sztringben lévő karakterek számát adja meg

– alsztring: Lehetőség van a sztring egy részének kimásolására

– átalakítás: Ha szám van adva sztringként, át lehet konvertálni

valamilyen szám típusba

– összefűzés (konkatenáció): Több sztringet egyetlen sztringgé

olvaszthatunk össze

– csonkolás: törölhetjük a sztring egy részét

82

Gyakorló feladat: Mely részei azonosak a kódtábláknak és miért?

Miért használnak vajon csak 7 bitet az ismeretlen rendszerek

közötti kommunikációban? SMS-ben miért fordulhat elő, hogy

minden karaktert megelőz egy „@” karakter?

Page 83: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

Összefoglalás

Talán hosszú volt ez a tanegység, de remélhetőleg sok új és

érdekes dolgot ismert meg, és közelebb érzi magához a

számítógép belső lelkivilágát. A tapasztalat azt mutatja, hogy pl. a

lebegő pontos számábrázolás, vagy akár a fixpontos nem igazán

tartozik a mindennapi számítástechnikai feladataink közé, de

sokszor előfordul, hogy csak akkor érthetünk meg valamilyen első

ránézésre érthetetlen dolgot, ha tudjuk azt, hogy mi történik belül a

gépben a szemünk elől elrejtve. Hadd osszak meg egy ilyen apró

ismeretet. Tegyük fel, hogy egy bájton ábrázolunk számokat, a

kettes számrendszerbeli alakjukkal. Mi történik vajon, ha 256-ot

akarunk erre a bájtra elhelyezni? A gép érzékeli, hogy a

módszerünk a kettes számrendszer, meghatározza ezért 256

kettes számrendszerbeli alakját: 1 0000 00002, majd elhelyezi ezt

egy bájton, de csak úgy fér el, ha az első bit törlésre kerül.

Kiolvasva az eredményt, a gép azt látja, hogy a kérdéses bájton

elhelyezkedő érték 0000 00002, amit nyilván nullának fog

értelmezni. Emiatt az apró, mégis nagy veszélyeket jelentő hibák

miatt kell tudnunk, hogy miként is működik a számítógép.

Végezetül csak egy kérdést szeretnék feltenni: Miért ünnepli az

igazi programozó a világtakarékossági napon a karácsonyt? Ha ön

ismeri a számrendszereket, és tud konvertálni, valamint tudja,

hogy mikorra esik ez a két nap, kis fejtöréssel valószínűleg meg

tudja adni a választ, ha mégsem, akkor remélem nem fog

haragudni a kissé szofisztikus válasz miatt. Sok mindent

megismert ebben a tanegységben, megtanulta a

számrendszereket, tud számokat átírni tetszőleges

számrendszerből tetszőleges számrendszerbe, ismeri a számok jó

néhány ábrázolási formáját, tud információ tartalmakat számolni,

összehasonlítani, ismeri a főbb logikai műveleteket, s alkalmazni is

tudja azokat. Tudja azt, hogy mi alapján ábrázolja a számítógép a

sztringeket, a karaktereket. Ha adott egy feladat, el tudja dönteni,

hogy a felhasznált adatoknak melyik ábrázolási formáját válassza

83

Programozókkarácsonya

Page 84: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

a megismertek közül, hogy optimálisan tudja kihasználni a

számítógép adta lehetőségeket.

És a jutalom a hosszú tanegység végén:

Világtakarékossági nap, azaz október 31, azaz oct 31, azaz oktális

31, azaz nyolcas számrendszerben a 31, azaz 318, azaz 3*8+1, az

25, ami tízes számrendszerben van, azaz decimálisban, azaz dec

25, azaz december 25, ami karácsony első napja.

Ajánlott szakirodalomLipschutz: Adatszerkezetek, Bp, Panem Kft, 1993

Dr. Cserny László: Mikroszámítógépek, Vác, Váci ÁFÉSZ nyomda,

1994

Gács-Lovász: Algoritmusok, Bp, Tankönyvkiadó, 1991

Aho–Hopcroft–Ullman: Számítógép algoritmusok tervezése és

analízise, Bp, Műszaki Könyvkiadó, 1982

Racskó Péter: Bevezetés a számítástechnikába, Bp, ErFO-

Számalk, 1993

Janovics-Tóth: A logikai tervezés módszertana, Bp, Műszaki

könyvkiadó, 1973

84

Ellenőrző feladat: P={0.3; 0.1; 0.2; 0.4} Számítsa ki az információ,

entrópia, relatív entrópia, redundancia értékét.. Adja meg az

egyenletes eloszlású diszkrét információ forrás entrópiáját!

Ábrázolja az összes tanult módon a –23.45 és 9.66 értéket,

valamint a 234 és –45 értéket. Mennyi 34 AND 73 Or 123 16

biten?

Programozók karácsonya

Page 85: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

Gyakorló feladatok megoldásai

Gyakorló feladat II/1: Egy rendszám első betűje, vagy első száma nyújt pontosabb

információt? Állítását számítással bizonyítsa!

A betű, mert egy adott betű esetén 26*26*10*10*10 ilyen kocsi

van, azaz a valószínűség=kedvező/összes=1/26

Szám esetén a valószínűség 1/10

Így I(betűs)=log (26) és I(számos)=log (10)

log (26) >log (10), így a betűs információ tartalma a nagyobb

Adott négy eseményt tartalmazó esemény rendszer

valószínűségeivel X={0.25; 0.125; 0.5; 0.125}. Számolja ki az

entrópiát, redundanciát, szórásnégyzetet!

Entrópia, azaz H(F)=0.25*log4+2*0.125*log

8+0.5*log2=0.5+0.75+0.5=1.75Hmax=log 4=2, így Hr=1.75/2=0.875, ezért

R=1-0.875=0.125A szórás négyzet=0.25*(0.875-2)2+2*0.125*(0.875-3)2+0.5*(0.875-

1)2=

=0.31640625+1.12890625+0.0078125=1.453125

Gyakorló feladat II/2: Írja át tízesbe:

3A16=58; 1223=17; 4112=49; 326=20; 1.45=1.8; 23.24=11.5;

51.17,=36.142857; 121.13=16.3; 213=2; 7.18=7.125

Írja át hatosba, kettesbe, hetesbe, tizenhatosba, nyolcasba: 12.34,

24.7

2 6 8 7 16

12.34 1100.01010.. 20.20123… 14.25.. 15.224.. C.570A

24.7 11000.1011.. 40.411111… 30.54… 33.46204.. 18.B33

85

Page 86: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

Gyakorló feladat II/3: Írja hármasból 9-esbe: 27

16-osból kettesbe: 0010 0010 0001

Írja kilencesből hármasba: 20201

írja tizenhatosba kettesből:92D

Gyakorló feladat II/3

Hatos számrendszerben 4+2 jegyen: 64-6-2; 16-2

Kettesben 3+1 jegyen: 23-2-1; 16-2

Tizenhatosban 2+2 jegyen: 162-16-2; 16-2

Négyesben 5 jegyen:54-1;0

Hármasban 3 jegyen: 33-1;0

Gyakorló feladat II/4:

Adja meg 13, 25 értékét 8 biten

13: 0000 1101

25: 0001 1001

Adja meg 11.75 és 19.125 értékét 8 biten, ha a kettedes pont jobbról a 3 jegy előtt van

11.75: 0101 1110

19.125: 1001 1001

Gyakorló feladat II/5:

Adja meg ketteskomplemenssel a következő számokat:

-12: 1111 0100

25: 0001 1001

-5: 1111 1011

-1: 1111 1111

Fejtse vissza a ketteskomplemenseket:

1111 0101: -11

0001 1010: 26

86

Page 87: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

1110 1101: -19

0000 1111: 15

Gyakorló feladat II/6: Adja meg –17.625 és 123.567 lebegőpontos alakját!

-17.625: 1|10000101|00011010000000000000000

123.567: 0|10000111|11101110010001001001101

Gyakorló feladat II/7:

Adja meg 143 és –56 alakját!

143: 2B 31 34 33

-56: 2D 35 36

Gyakorló feladat II/8:

Adja meg 143 és –56 alakját beépített előjel bájttal mindkét zónás

ábrázolásban

Első zónás:

143: 31 34 33

-56: 35 76

Második zónás:

143: 31 34 43

-56: 35 4F

Gyakorló feladat II/9

Adja meg 143 és –56 alakját tömörített ábrázolásban!

143: 14 3C

-56: 05 6D

Gyakorló feladat II/10

Értékelje ki a (true and not true)or (false or true) kifejezést

True

87

Page 88: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

Mennyi (3 and 2 ) or 1 négy biten?

3

Gyakorló feladat II/11Mely részei azonosak a kódtábláknak és miért?

A betűk, számok, írásjelek, mert mindegyikben benne vannak

Miért használnak vajon csak 7 bitet az ismeretlen rendszerek

közötti kommunikációban?

Mert az utolsó bit paritás ellenőrző, véd a hibák ellen

SMS-ben miért fordulhat elő, hogy minden karaktert megelőz egy

„@” karakter?

Ha a küldő UNICODE rendszert használ, akkor 2 bájt egy karakter,

de ha a fogadó egy bájtos rendszert használ, csak minden

második karakter értelmes

88

Page 89: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

III. tanulási egység

AdatszerkezetekBevezetés

Az eddigi két egységben megismerkedett az algoritmussal, és az

algoritmusban használható adatok ábrázolásaival. A következő

egység elsajátítása után tisztában lesz azzal, hogy micsoda óriási

különbség van a különálló és az egymással kapcsolatban lévő

adatok között, s mennyivel hatékonyabban tudunk problémákat

megoldani az adatszerkezetek segítségével.

Először ehhez tudnunk kell, hogy miről beszélünk, tehát

ismertetjük az adatszerkezet fogalmát, majd a különböző fajtáit, a

hozzájuk kötődő főbb algoritmusokat, majd azt, hogy milyen

szerepet játszanak a számítástechnikában és a programozásban.

Az egyik legizgalmasabb dolog a keresés és a rendezés

algoritmusainak használata, használhatóságuk feltételei, egyre

gyorsabb és optimálisabb algoritmusokat nézünk meg rájuk. Az

adatszerkezeteknek is, akárcsak a számoknak, léteznek eltérő

ábrázolási módjai, ezekből is megismer néhányat.

A tanegység feladatainak elvégzése után meg tudja határozni,

hogy milyen adatszerkezettel képes megoldani valamely

problémát, a keresések, rendezések esetén több algoritmust is

ismer, s képes ezek közül kiválasztani a legmegfelelőbbet a

feladat sajátosságait figyelembe véve.

Az adatszerkezet több, mint adatok összessége, az adatok között

lévő kapcsolatok adják a pluszt. Adatszerkezeten mi a

továbbiakban a következőt értjük:

Az adatszerkezet az adatok, az őket összekötő kapcsolatokkal együtt.A legfőbb kapcsolat egy adatszerkezetben lévő adatok között

általában az adatszerkezetben elfoglalt sorrendjük.

Értelmezhetünk ez alapján főbb műveleteket, melyek szorosan

kötődnek az adott adatszerkezethez. Ismertetjük a

lényegesebbeket:

89

Adatszerkezet

Page 90: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

– létrehozás: az adatszerkezet struktúrájának meghatározása,

például megadjuk, hogy egy táblázatban melyik oszlopban mi

fog helyet foglalni

– beszúrás: egy adatelem elhelyezése az adatszerkezetben, a

táblázatban ez egy sor kitöltését jelenti

– törlés: egy adatelem törlése, a táblázatban ez egy sor törlését

jelenti

– megszüntetés: az adatszerkezet struktúrájának a törlése, ez

együtt jár az adatelemek megszüntetésével is

– bejárás: olyan algoritmus alkalmazása, mely során minden

elemet pontosan egyszer érintünk

Ismertek még más műveletek is, de ezek összeállíthatóak a fentiek

segítségével:

– csere: két adatelem cseréje, megoldható egy törléssel és

beszúrással

– rendezés: az adatelemek valamilyen szempont szerinti

sorrendbe állítása, ez is előállítható törlésekkel és

beszúrásokkal

– keresés: egy elem helyének pontos megállapítása, ez a

bejárással mindig elvégezhető

Kétféle osztályozást szoktak említeni az adatszerkezetekkel

kapcsolatban, az egyik az elemek sorrendiségére utal, a másik

pedig az elemek típusaira.

Az első szempont szerint vannak lineáris és nem lineáris

adatszerkezetek. A lineáris adatszerkezet elemei sorozatok, míg a

nem lineáris adatszerkezetre ez nem teljesül.

A másik szempont szerinti osztályozás alapján vannak homogén

és heterogén (inhomogén, nem homogén) adatszerkezetek. A

homogén adatszerkezet elemei azonos típusúak, míg a nem

homogén adatszerkezet elemei különböző típusúak. Ezeknek

kombinációit is tekinthetjük, az alábbi táblázat segítséget nyújt az

eligazodásban.

Homogén Heterogén

Lineáris Egy osztály tanulóinak Egy osztály

90

Adatszerkezetek műveletei

Osztályozásuk

Page 91: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

nevei

tanulóinak adatai

Nem lineáris Családfa, mely csak a

neveket tartalmazza

Családfa elemeinek

adatai

91

Page 92: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

TartalomBevezetés

1. Lineáris adatszerkezetek

1.1 Tömbök

1.2 Keresések

1.3 A tömb ábrázolása

1.3.1 Hiányos mátrix ábrázolása

Sorfolytonos, oszlopláncolt ábrázolás

Oszlopfolytonos, sorláncolt ábrázolás

Sor és oszlopláncolt ábrázolás.

1.4 Láncolt listák

1.5 Rendezések

1.5.1 Minimum/maximum kiválasztásos rendezés

1.5.2 Buborékos rendezés

1.5.3 Összefuttató rendezés

1.6 Speciális lineáris adatszerkezetek

1.6.1 A verem

1.6.2 Rekurzió

Postfix kifejezés kiértékelése

Infix kifejezés postfixre alakítása

1.6.3 A sor

Dupla végű sorok

Prioritás sorok

2. Nemlineáris adatszerkezetek

2.1 A rekord adatszerkezet

2.1.1 A rekord ábrázolása

2.2 A gráf adatszerkezet

2.2.1 A fa adatszerkezet

2.2.2 A bináris fa

2.2.3 További bináris fák

Összefoglalás

Ellenőrző feladat

Ajánlott irodalom

Gyakorló feladatok megoldásai

92

Page 93: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

1. Lineáris adatszerkezetek

1.1 Tömbök

A programozásban a legtöbbször tömböket használunk, minden

programozási nyelv, mely általános célú, támogatja ezek

kezelését. Jellemzője, hogy elemei sorrendje kötött, és az elemek

azonos típusúak. A legegyszerűbb tömb a vektor, mely elemek

sorozata:

34 45 -23 41 867 94 33

Legyen ennek a vektornak a neve SZÁMOK. A vektor elemeit

indexükkel azonosítjuk, mely azt adja meg, hogy a kérdéses elem

hányadik helyet foglalja el a tömb elejéhez képest. A legkisebb

ilyen sorszám az egy, de sok programozási nyelv kezdi nullával is.

Most tekintsük az első elem sorszámát egynek. Ekkor a

következőképpen lehet hivatkozni a tömb első elemére, melynek

értéke 34: SZÁMOK[1], azaz leírjuk a vektor nevét, s mögé

zárójelben az indexet, tehát az elem sorszámát. Ha egy elem

mérete x bájt, s a legnagyobb index, tehát az elemek száma n,

akkor a tömb mérete: x*n.

A másik gyakran használt tömb fajta a mátrix:

Alma Körte Birsalma Cseresznye

Ribizli Szilva Barack Meggy

Szeder Köszméte Málna Eper

Ha a mátrixnak a GYÜMÖLCS nevet adjuk, akkor a Barack elemre

hivatkozhatunk úgyis, hogy leírjuk a tömb nevét, s utána azt, hogy

melyik sorban és oszlopban van: GYÜMÖLCS[2,3]

A tömb egyik fontos jellemzője indexeinek száma, melyet

dimenziónak is szokás nevezni. Ez alapján azt mondhatjuk, hogy a

vektor egy dimenziós, a mátrix pedig két dimenziós tömb. Mivel

93

Tömb jelölése

Page 94: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

az indexek számára nincs megkötés, így készíthetünk három

dimenziós tömböt is, ami egy téglatesthez hasonló az iménti

ábrázolási formával, de könnyen lehet kezelni 4, 5, stb. dimenziós

tömböket is. Ha a fantáziánk nagyon élénk, akkor el is tudjuk

képzelni őket, de ne keseredjünk el, ha megragadunk a három

dimenziónál, a számítógép majd elképzeli helyettünk a többit.

A programozásban ezek az adatszerkezetek fontos szerepeket

töltenek be, s fontos ismerni néhány műveletüket. Ha két vektor

azonos elemszámú, akkor lehet venni az összegüket, mely egy

újabb vektor lesz:

A:

23 12 7

B:

4 10 5

C= A+B:

27 22 12

Tehát vektorokat úgy adunk össze, hogy az azonos indexű elemek

összegét vesszük, formálisan:

A[1]=B[1]+C[1]

A[2]=B[2]+C[2]

A[3]=B[3]+C[3]

Vagy általánosan: C[I]=A[I]+B[I]

Egy másik művelet a skaláris szorzat, vagy belső szorzat, jelölése

(A,B), melynek képlete:

A[1]*B[1]+…+A[N]*B[N], ahol N az utolsó elem sorszáma

A fenti két vektorra a példában:

(A,B)=4*23+12*10+7*5=247Mátrixokat is lehet szorozni egymással, de csak abban az esetben,

ha az első n x m típusú, és a második m x k típusú, ez azt jelenti,

hogy az első mátrixban annyi oszlopnak kell lenni, mint amennyi

sor van a másodikban, ugyanis a szorzat eredménye szintén egy

94

Tömb műveletei

A tömb dimenziója

Page 95: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

mátrix, mely n x k típusú, tehát n sora és k oszlopa van. A szorzat

mátrix egy általános eleme:

C[i,j]=A[i,1]*B[1,j]+…+A[i,m]*B[m,j]A könnyebb számolás miatt szokás úgy felírni a mátrixokat, hogy a

szemléletesen a megfelelő sor és oszlop metszésében számolható

legyen az eredmény. Szorozzuk össze a következő két mátrixot:

Az „A” mátrix:

2 1

4 2

5 3

A „B” mátrix:

1 3 2

0 2 1

Ekkor a következő alakban írjuk fel őket:

B: 1 3 2

A 0 2 1

2 1 2*1+1*0 2*3+1*2 2*2+1*1

4 2 4*1+2*0 4*3+2*2 4*2+2*1

5 3 5*1+3*0 5*3+3*2 5*2+3*1

Így az eredmény, azaz a C mátrix elemei vannak a vastagon

szedett részben, melyben a számolásokat elvégezve nyerjük a

pontos és egyszerű alakot:

2 8 5

4 16 10

5 21 13

95

Page 96: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

Nem csak a vektorokat, hanem a mátrixokat is össze lehet adni,

ha azonos típusúak, és hasonlóan, az összegmátrix elemei a

megfelelő elemek összegei lesznek: C[i,j]=A[i,j]+B[i,j]

1 2 4

+

2 6 7

=

3 8 11

6 5 3 -2 18 4 4 23 7

1.2 Keresések

Tömbökkel szokás megoldani a keresések legtöbbjét, tehát ahol

az elemek azonos típusúak, valamint az átlag és az összegzés

problémáját is.

Maximum keresés algoritmusa:

a. Jelöljük MAXIMUM-mal annak az elemnek az értékét, melynek

minden indexe egyes.

b. Vegyük a tömb bejárása szerinti következő elemet, hasonlítsuk

össze a MAXIMUM-mal, ha a tömb eleme nagyobb, akkor legyen

MAXIMUM értéke vele egyenlő

c. Ismételjük a b. lépést addig, míg a végére nem érünk a tömbnek

Minimum keresés algoritmusa:

a. Jelöljük MINIMUM-mal annak az elemnek az értékét, melynek

minden indexe egyes.

b. Vegyük a tömb bejárása szerinti következő elemet, hasonlítsuk

össze a MINIMUM-mal, ha a tömb eleme kisebb, akkor legyen

MINIMUM értéke vele egyenlő

c. Ismételjük a b. lépést addig, míg a végére nem érünk a tömbnek

Az összeg kiszámítás algoritmusa:

a. Jelöljük ÖSSZEG-gel annak az elemnek az értékét, melynek

minden indexe egyes.

b. Vegyük a tömb bejárása szerinti következő elemet, adjuk hozzá

az értékét az ÖSSZEG-hez, s ez legyen az ÖSSZEG új értéke

96

Keresési algoritmusok

Page 97: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

c. Ismételjük a b. lépést addig, míg a végére nem érünk a tömbnek

d. Az ÖSSZEG-ben láthatjuk az elemek összegét

Az átlag kiszámítás algoritmusa:

a. Használjuk az elemek összegének kiszámításához az iménti

algoritmust

b. Jelöljük ÁTLAG-gal azt az értéket, melyet úgy kapunk, hogy

elosztjuk az ÖSSZEG-et az elemek számával

c. Az ÁTLAG-ban láthatjuk az elemek számtani átlagát.

1.3 A tömb ábrázolása

A tömbök ábrázolása egyszerű, az elemeket egymásután helyezik

el a memóriában, olyan sorrendben, ahogy a bejárás műveletében

felsorolják. Kétféle főbb ábrázolási módszer van:

a. Sorfolytonos: Először az első sor elemeit tároljuk egymásután,

majd a másodikét és így tovább

b. Oszlopfolytonos: Először az első oszlop elemeit tároljuk

egymásután, majd a másodikét és így tovább

1.3.1 Hiányos mátrix ábrázolása

Ha az elemek között sok az azonos értékű, akkor csak a tőlük

különbözőeket fogják tárolni. A sok nem egy pontos mérő szám,

97

Gyakorló feladat: Számolja ki a következő két mátrix

összegét

3 3 8 8

1 6 2 4

:

2:. Készítse el a vektor elemeinek átlagát szolgáltató

blokkdiagramot.

Ábrázolási módszerek

Page 98: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

ezért a határt mi 80%-nál húzzuk meg, tehát ha több, mint 80%

azonos, akkor úgynevezett hiányos mátrixról beszélünk. Egy ilyen

hiányos mátrix látható a következő ábrán, kivételesen melléírtuk a

sorok és oszlopok sorszámát is, hogy könnyebb legyen később

eligazodni benne:

1 2 3 4 5

1 A A A B A

2 A A A A A

3 A A C A A

4 A A A A D

5 A A A A A

6 A A E F A

7 A A A A G

Láthatjuk, hogy a 35 elemből 29 azonos, csak 6 különböző van

köztük, ilyenkor elég csak ezeket ábrázolni. 3 féle ábrázolás terjedt

el, aszerint, hogy a különböző elemeket milyen sorrendben írjuk

be:

– Sorfolytonos, oszlopláncolt ábrázolás.

A neve mutatja, hogy itt az azonos sorokban lévő különböző

elemeket egymás után írjuk, tehát először az első sor elemeit

tároljuk, majd a másodikét és így tovább. Az eredeti mátrix

visszaállításához szükség van az elemek helyének tárolására is,

ezeket az indexek tárolásával oldjuk meg. A tárolás nevében az

oszlopláncolt azt jelenti, hogy minden tárolt elem esetében

letároljuk azt is, hogy melyik elem jön utána az oszlopában. Ha

nincs elem utána, akkor nullát írunk, vagy valamilyen végjelet,

ellenkező esetben a tároló mátrix azon sorának indexét, ahol az

adott elem elhelyezkedik. Legyen a hiányos mátrixunk az eredeti

példa, megadjuk a tároló mátrixot (itt is feltüntettük a sorok

sorszámát a könnyebb kezelés érdekében, de nem tartozik a

mátrixhoz)

98

Hiányos mátrix ábrázolása

Page 99: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

Elem

értéke

Sorának

száma

Oszlopánaks

száma

Oszlopában követke-

ző elem itteni indexe

1 B 1 4 5

2 C 3 3 4

3 D 4 5 6

4 E 6 3 0

5 F 6 4 0

6 G 7 5 0

A sorok kezdetének mutató vektora, az a vektor, mely megadja,

hogy melyik sor hányadik elemmel kezdődik. Ha nincs A-tól

különböző elem, akkor 0-t írunk bele. Ezt a vektort SM-mel

jelölhetjük, a sor mutató rövidítéseként:

SM:

1 0 2 3 0 4 6

Nézzük például a tároló mátrix 3. sorát. Első eleme az D, mivel

sorfolytonosan 3. elemként jelenik meg a bejárásban, ezért került

ide. Következő elem a négyes, mert az eredeti mátrixban a 4.

sorban volt, utána az ötös következik, mert az eredeti mátrixban az

ötödik oszlopban foglal helyet. Az utolsó elem ebben a sorban a 6,

mivel D oszlopában az eredeti mátrixban a G következik, s ennek

a tárolása a tároló mátrix 6. sorában történt. A sormutatót

megtekintve láthatjuk, hogy pl. a 6. eleme a négyes, innen

tudhatjuk, hogy a 6. sor a tároló mátrix negyedik elemével, tehát E-

vel kezdődik. A sormutató és az oszlopláncolásban következő

elem tároló mátrixbeli indexének megadása csupán azt a célt

szolgálja, hogy könnyebben tudjuk kezelni az elemeket a

programozás során.

99

Page 100: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

– Oszlopfolytonos, sorláncolt ábrázolás.A neve mutatja, hogy itt az azonos oszlopokban lévő különböző

elemeket egymás után írjuk, tehát először az első oszlop elemeit

tároljuk, majd a másodikét és így tovább. Az eredeti mátrix

visszaállításához szükség van az elemek helyének tárolására is,

ezeket itt is az indexek tárolásával oldjuk meg. A tárolás nevében

a sorláncolt azt jelenti, hogy minden tárolt elem esetében letároljuk

azt is, hogy melyik elem jön utána a sorában. Ha nincs elem

utána, akkor nullát írunk, vagy valamilyen végjelet, ellenkező

esetben a tároló mátrix azon sorának indexét, ahol az adott elem

elhelyezkedik. Legyen a hiányos mátrixunk az eredeti példa,

megadjuk a tároló mátrixot (itt is feltüntettük a sorok sorszámát a

könnyebb kezelés érdekében, de nem tartozik a mátrixhoz)

Elem

értéke

Sorának

száma

Oszlopának

száma

Sorában következő

elem itteni indexe

1 C 3 3 0

2 E 6 3 4

3 B 1 4 0

4 F 6 4 0

5 D 4 5 0

6 G 7 5 0

Az oszlopok kezdetének mutató vektora, az a vektor, mely

megadja, hogy melyik oszlop hányadik elemmel kezdődik. Ha

nincs A-tól különböző elem, akkor 0-t írunk bele. Ezt a vektort OM-

mel jelölhetjük, az oszlopmutató rövidítéseként:

OM:

0 0 1 3 5

Nézzük például a tároló mátrix 2. sorát. Első eleme az E, mivel

sorfolytonosan 2. elemként jelenik meg a bejárásban, ezért került

ide. Következő elem a hatos, mert az eredeti mátrixban a 6.

sorban volt, utána a hármas következik, mert az eredeti mátrixban

100

Page 101: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

a harmadik oszlopban foglal helyet. Az utolsó elem ebben a

sorban a 4, mivel E sorában az eredeti mátrixban az F következik,

s ennek a tárolása a tároló mátrix 4. sorában történt. Az

oszlopmutatót megtekintve láthatjuk, hogy pl. a 4. eleme a hármas,

innen tudhatjuk, hogy a 4. oszlop a tároló mátrix harmadik

elemével, tehát B-vel kezdődik. Az oszlopmutató és a

sorláncolásban következő elem tároló mátrixbeli indexének

megadása csupán azt a célt szolgálja, hogy könnyebben tudjuk

kezelni az elemeket a programozás során.

Ezekkel az ábrázolásokkal csak egy gond van, hogy merevek az

eredeti mátrix változásaival szemben, bonyolult lenne újra

generálni a tároló mátrixot. Ezért főként statikus, tehát a nem

változó mátrixok tárolására használják. A következőben

bemutatásra kerül egy olyan ábrázolási mód, mely nagyban

hasonlít az iménti kettőhöz, de kiküszöböli ezt a hiányosságot,

azaz képes dinamikusan változó hiányos mátrixot is tárolni. Ezért

az előnyért fizetni is kell, egy újabb oszloppal fog rendelkezni a

tároló mátrix, és két mutató vektort hozunk létre. A lényeges

különbség az, hogy az elemek sorrendje a tároló mátrixban nem

kötött, véletlenszerűen írjuk bele, akár ki is maradhatnak sorok.

(Az üres sorokat onnan ismerjük meg, hogy csupa nulla van

bennük.) Így viszont meg kell adnunk mind a sorában, mind az

oszlopában utána következő elemet.

101

Page 102: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

– Sor és oszlopláncolt ábrázolás.

Elem

értéke

Sorának

száma

Oszlopának

száma

Sorában

következő

elem itteni

indexe

Oszlopában

következő

elem itteni

indexe

1 C 3 3 0 7

2 0 0 0 0 0

3 F 6 4 0 0

4 D 4 5 0 10

5 0 0 0 0 0

6 0 0 0 0 0

7 E 6 3 3 0

8 0 0 0 0 0

9 B 1 4 0 3

10 G 7 5 0 0

A sor és oszlop mutató értelmezése is a szokásos:

OM:

0 0 1 9 4

SM:

9 0 1 4 0 7 10

Látható, hogy az üres sorokba felvihető még elem, s nem kell mást

tenni, csak kitölteni a sort, s esetleg átírni a sor és oszlop mutatót.

Speciálisan szoktuk még ábrázolni a háromszög és szimmetrikus

mátrixokat.

– Háromszög mátrix: A főátló alatti vagy feletti elemek azonosak,

a vagyot kizáró értelemben használjuk. Ilyenkor csak a

különböző elemeket ábrázoljuk

– Szimmetrikus mátrix: Az elemek szimmetrikusak a főátlóra,

azaz A[i,j]=A[j,i]. Ilyenkor is elég csak a felét ábrázolni a

102

Háromszög ésszimmetrikusmátrix

Page 103: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

mátrixnak. Csak négyzetes (kvadratikus) mátrixokra

alkalmazható, azaz amelyik mátrixnak ugyanannyi sora és

oszlopa van.

1.4 Láncolt listák

A tömböket statikus adatszerkezetnek kezelik a programozási

nyelvek, tehát méretük a program futása alatt nem változhat, csak

a tartalmuk. Dinamikus lineáris adatszerkezetet a listákkal

hozhatunk létre. Ebben az esetben egy adatszerkezeti elem

tartalmazza magát az adatot és egy memóriacímet, azt, ahol a

következő elem elhelyezkedik. A memóriacím ábrázolása nyilakkal

történik, s arra az adatra mutat, ahova a memória cím hivatkozik.

Lássunk egy egyszerű példát:

A listához tartozik egy listafej, ahol az első elem címét tároljuk,

utána jönnek az elemek. Az utolsó elem mutatója helyén egy X

van, ezzel azonosítjuk a végjelet, tehát ez egy „sehova sem

mutató mutató”, programozási nyelvekben a NIL kulcs szóval

szokás azonosítani. Látható, hogy mindegyik elem eléréséhez

szükség van az előző elem elérésére, a tömbökhöz képest

nehézkes a kezelésük, de nagyon jó olyan szempontból, hogy

tetszőleges számú eleme lehet, méretének csak a memória szab

határt. Az adatelemek típusai tetszőlegesek, de általában azonos

típusúak. A későbbiekben fogunk látni példát inhomogén láncolt

listára is.

103

Láncolt listák

Az üres mutató

Page 104: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

Kezelése egyszerű, nagyon könnyű benne beszúrni:

Láthatjuk, hogy csak az első elem mutatóját kell felülírni az új

elemre mutató mutatóval és az új elem mutatóját a régi második

elemre állítani. Az új mutatókat szaggatott vonallal jelöltük. A törlés

talán még egyszerűbb:

Itt csak az első elem mutatóját kell a 3. elemre irányítani, s ezzel

töröltük a második elemet. Az új mutatót szaggatott vonallal

jelöltük itt is.

Ami nehézkes ebben az adatszerkezetben, az a bejárása, ugyanis

az utolsó elem eléréséhez végig kell olvasni az összes elemet.

104

Page 105: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

Az utolsó elem mutatóját kicserélve az első elemre mutató

mutatóval, ciklikus listát kapunk:

Ha 2 mutatót rendelünk egy elemhez, akkor lehetőségünk van

arra, hogy visszafelé is tudjunk haladni az elemek között. Ezt

kétirányú láncolt listának nevezik:

Végezetül és elrettentésül nézzünk meg egy bonyolultabb láncolt

listát, mely már nem teljesíti linearitás feltételeit:

105

Ciklikus lista

Kétirányúlista

Nem lineárislista

Page 106: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

1.5 Rendezések

A tömbökkel, láncolt listákkal, tehát a lineáris adatszerkezetekkel

szorosan együtt alkalmazhatóak a rendezések, keresések.

Ezekből adunk egy kis ízelítőt:

Rendezésen az adatszerkezet elemeinek valamilyen szempont

szerinti sorba rendezését értjük. A legkézenfekvőbb a nagyság

szerinti sorrend a számok esetében, vagy az ábécé szerinti

sorrend sztringek esetében. A tömbökkel azért tudunk könnyen

rendezni, mert ellentétben a dinamikus listával, elemei elérhetőek

egyből, azaz direkt módon tudunk rájuk hivatkozni.

1.5.1 Minimum/maximum kiválasztásos rendezés

Az elemek egy vektorban vannak elhelyezve, most a minimum

rendezést alkalmazzuk, és növekvő sorrendbe rendezünk. Az

algoritmus a következő:

Válasszuk ki az első elemet, majd a tömböknél ismert módszerrel

határozzuk meg a MINIMUM-ot. Itt annyiban tér el, hogy azt is

meg kell jegyezni, hogy melyik elem volt a minimális. Ha megvan,

106

Gyakorló feladat: Adja meg a következő

hiányos mátrix mind a 3 féle ábrázolását!

1 1 1 1

2 1 4 1

1 1 1 1

1 1 3 1

1 1 6 1

Adja meg a kétirányú ciklikus láncolt lista rajzát!

Kiválasztásos rendezés

Page 107: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

cseréljük fel az első elemet a minimális elemre. A következő

lépésben a vektorból elhagyjuk az első elemet, s úgy határozzuk

meg a minimumot, majd kicseréljük a második elemmel. A

harmadik lépésben az első két elemet hagyjuk el, meghatározzuk

a minimumot, s kicseréljük a harmadik elemmel. Általánosan az i.

lépésben elhagyjuk az első i-1 darab elemet, meghatározzuk az

így keletkezett csonka vektorban a minimális elemet, majd

kicseréljük az i. elemmel. Az algoritmus akkor ér véget, ha i=n-1,

ugyanis az utolsó elem már a helyén van, ha az összes őt

megelőző a helyén van.

Ezzel az egy algoritmussal 4 rendezést nyertünk, ugyanis ha nem

az elsővel cserélünk, hanem az utolsóval, akkor csökkenő

sorrendet kapunk, akárcsak akkor, ha nem a minimálist keressük,

hanem a maximális elemet kerestük volna, s azt cseréljük az

elsővel. Ez már a 3. rendezés akkor, a negyediket akkor kapjuk,

ha maximális elemet keresünk, s az utolsóval cseréljük, ilyenkor

növekvő rendezést kapunk.

A rendezés bonyolultsága O(n2)

1.5.2 Buborékos rendezés

Egy gyorsabb rendezési mód, ha a következőt tesszük:

Hasonlítsuk össze az első elemet a másodikkal, ha az első

nagyobb, akkor cseréljünk!

Hasonlítsuk össze a másodikat a harmadikkal, ha a második

nagyobb, akkor cseréljünk. Általánosítva: Hasonlítsuk össze az i.-

et az i+1.-kel, ha az i. nagyobb, akkor cseréljük meg őket!

Végighaladva a vektoron, az utolsó összehasonlítás az n-1. és az

n. elem között lesz. Ha sikerült így végighaladni, biztos, hogy a

legnagyobb elem lesz az n., tehát az utolsó helyen. Megismételve

ezt az iménti lépést újra, már az utolsó kettő lesz a helyén, s ha n-

1-szer megismételtük, minden elem a helyén lesz. Jó

optimalizálási lehetőség, hogy figyeljük azt a tényt, hogy volt-e

csere. Ha nem volt, akár abba is lehet hagyni a rendezést, mert

107

Buborékos rendezés

Page 108: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

biztos jó sorrendben van minden elem, valamint az is csökkenti a

lépések számát, ha a már jó helyen lévő elemeket nem hasonlítjuk

össze egymással. A buborék rendezés a nevét onnan kapta, hogy

a legnagyobb elem, mint egy buborék száll fel az őt megillető

helyre.

A rendezés bonyolultsága O(n2)

1.5.3 Összefuttató rendezés

Ha 2 vektorunk van, amelyek rendezettek, akkor nagyon könnyű

belőlük egy harmadik vektort készíteni, mely tartalmazza mindkét

vektor elemeit, és rendezett. Az algoritmus a következő:

Legyen az egyik rendezett vektor A, a másik pedig B, és C-be

szeretnénk rendezni. Tegyük fel, hogy növekvő sorrendben

vannak az adatok (ha nem, akkor fordítsuk meg a helytelen

vektor(oka)t). Hasonlítsuk össze A és B első elemét, a kisebbet

rakjuk bele C-be, majd ha A-ból származott az az elem, akkor

ezentúl A első elemének tekintsük a másodikat, ha B-ből

származott, akkor hasonlóan lépjünk egyet B-ben. Ismételjük meg

az összehasonlításokat mindaddig, míg van elem valamelyik

vektorban, amennyiben csak az egyikben van, folyamatosan írjuk

át a maradék elemeket C-be.

A rendezés hatékonysága O(n).

108

Gyakorló feladat: Hogyan lehet egy számokból álló

állományt rendezni, ha nem fér be a memóriába?

(Ötlet: összefuttatás)

Összefuttató rendezés

Page 109: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

1.6 Speciális lineáris adatszerkezetek

1.6.1 A verem

A verem egy olyan speciális vektor, melynek csak az egyik végén

lehet műveletet végezni, tehát beszúrni (PUSH) vagy törölni

(POP). Angol elnevezése Last In First Out, vagy röviden LIFO.

Naponta találkozhatunk ilyennel, például a fagyi tölcsérek is így

helyezkednek el, vagy a szekrényben a törölközők.

Természetesen hivatkozhatunk a rendes hétköznapi veremre is,

de annak szerepét már átvették a hűtőládák, melyek szintén

verem szerkezetűek, hiszen csak a tetejére tudunk betenni

terméket, s onnan tudunk levenni is.

Ábrázolásuk (a nyilak a növekedés irányát jelzik):

A B C D

3

2

1

A vermeket szívesen használják a számítástechnikában,

úgynevezett elhalasztott döntéseknél. Ha az X problémát csak úgy

tudom megoldani, hogy előtte megoldom az Y problémát, akkor

elvermeljük, vagy más szóval elhalasztjuk az X megoldását.

Veremszerkezetűek például a megszakításkezelések a

számítógépnél, tehát egy gyengébb szintű megszakítás kérelem

kiszolgálását elhalasztjuk, ha jön egy erősebb szintű kérelem.

Két probléma vetődik fel a verem kezelésekor:

– Alulcsordulás: Üres veremből akarunk olvasni, ennek kivédése

a programozó feladata

109

LIFO

Elhalasztott döntések

Page 110: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

– Túlcsordulás: Teli verembe akarunk beleírni, ennek kivédése a

programnyelv, vagy operációs rendszer feladata, tehát az ő

felelőségük, hogy megfelelő nagy verem álljon rendelkezésre

A túlcsordulás ellen egy jó védekezési módszer, hogy a vermeket

szemben helyezik el egymással, így ha az egyik túlcsordulna,

akkor csak belecsordul a másikba, s ha szerencsénk van, az nincs

teli. Ezt szemlélteti a következő ábra, a nyilak a vermek

növekedési irányát jelzik:

A B C D 3 2 1

Ha az elhalasztott döntéseknél a láncolatban megjelenik az eredeti

probléma, rekurzióról beszélünk. A rekurziónál nagy szerepet kap

a verem, hiszen éppen olyan adatszerkezet, mely képes tárolni

helyes sorrendben a felmerülő problémák összefüggéseit.

1.6.2 Rekurzió

Például a pék akkor tud kenyeret készíteni, ha a molnár őröl

lisztet, de ő csak akkor tud őrölni, ha gátőr kinyitja a zsilipet, de ő

csak akkor tudja kinyitni, ha nem kell vigyázni a gyerekére, de

csak akkor nem kell vigyázni, ha otthon van a felesége, de ő csak

akkor van otthon, ha tud venni kenyeret (vagy zsemlét), de csak

akkor tud venni kenyeret, ha süt a pék. Tegyük fel, hogy zsemle

mindig van, mert különben megállna ebben a világban az élet.

A rekurzió nem csak ilyen népmeseszerűen jelenik meg, hanem a

matematikában is. Nem kell bonyolult dologra gondolni, ilyen

például a faktoriális definíciója:

N!=(N-1)!*NLáthatjuk, hogy a faktoriális kiszámításához szükségünk van a

faktoriálisra. Ez elég kellemetlen, ugyanúgy patt helyzetbe

kerülünk, mint a pék, ha nincs zsemle mégsem. Szerencsére van

megoldás, ugyanis ha biztosítunk egy egérutat, akkor feloldódik ez

a helyzet:

110

Védekezés a túlcsordulás ellen

A faktoriális rekurzív képlete

Page 111: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

N!=0. Tehát ha számolom 3! értékét, akkor tudnom kell a 2!, ahhoz

tudnom kell az 1!, ahhoz tudnom kell a 0!, de azt tudom! Ezek

szerint tudni fogom 1! értékét is, de akkor tudni fogom 2! értékét és

így 3! értékét is.

A fentiek alapján azt mondjuk, hogy jóldefiniált egy rekurzió, ha van bázis kritérium, melynek teljesülése esetén nem rekurzív a megoldás, és minden rekurzív lépéssel egyre közelebb kerülünk ennek a báziskritériumnak a teljesítéséhez, és végül el is érjük azt.

A faktoriálisnál ez a báziskritérium a 0! volt, a pékes példában

pedig az, hogy az asszony esetleg hajlandó kivételesen zsemlét

venni.

Nézzünk még néhány rekurzív problémát (dőlttel szedtük a bázis

kritériumot):

– ai=ai-1 * a, és a0=1, hatványozás (i természetes szám)

– ai=ai-1+ai-2, és a1=0, a2=1, Fibonacci számok (0,1,1,2,3,5,..)

– lnko(a,b)= lnko(a-b,b), ha a>b; lnko(a,b)= lnko(a,b-a), ha b>a;

és lnko(a,a)=a

– Hanoi tornyai: Adott 3 rúd, melyek közül az elsőn korongok

vannak felfűzve. Helyezzük át a harmadik rúdra ezt a halmot,

de úgy, hogy egyszerre csak egy korongot rakhatunk át,

valamint vagy üres rúdra tesszük, vagy pedig tőle nagyobb

korongra. Ezt a problémát Hanoi tornyainak nevezik. A

megoldás az, hogy ha van 10 korongom, át tudnám pakolni, ha

valaki megmutatja, hogy 9-et hogy kell, mert akkor 9-et

áttetetek a középsőre, a legalsót átteszem a harmadikra, s

rápakoltatom a 9-et a középsőről erre azzal a valakivel. Kilenc

esetében mással pakoltatnánk a nyolcat, és így tovább, a

végén egyet kellene valakivel pakoltatni, de azt pedig gond

nélkül megtehetjük, így megoldható a probléma. A probléma

megoldása azért nem gyors, Hanoi felé az a mondás járja,

hogy ha átpakolják a korongokat, vége a világnak.

111

Jóldefiniált rekurzió

Adja meg a

probléma

lépésszámát

1000 korong

esetén, s tegyük

fel, hogy egy

pakolás 1

másodpercig

tart. Mennyi idő

alatt oldható meg

a feladat?

A bázis kritérium

Page 112: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

Egy labirintusból is ki tudunk jönni, ha az előttünk lévő ki tud

menni, de ő pedig akkor tud, ha az ő előtte lévő, és így tovább. Ha

mindenki körül van ember, akkor biztos van valaki a kijáratnál is,

így sikeresen szabadulhatunk. Azért ettől biztosabb módszer, ha

megfogjuk egyik kezünkkel a falat, s úgy indulunk el, így is biztos

kijutunk.

A vermek másik érdekes felhasználási területe a kifejezések

kiértékelése. Itt most kifejezések alatt valamilyen matematikai

műveletsort értünk, pl. az 5+4*(1+3) kifejezést. A gondot az jelenti,

hogy a zárójelezést figyelni kell, hiszen

5+4*(1+3)=21, míg 5+4*1+3=12. Ez azt jelenti, hogy ki kell keresni

a legbelső zárójelet, annak értékét meghatározni, stb. Láthatjuk,

hogy nem egyszerű feladat. Szerencsére a kifejezéseknek van

más alakjuk is, melyekben nem kell zárójeleket használni. Nézzük

meg a kifejezések lehetséges alakjait:

3+4–––infix forma, a műveleti jel a tagok között+34–––prefix forma (lengyel forma), a műveleti jel a tagok előtt34+–––postfix forma (fordított lengyel forma) a műveleti jel a

tagok mögött helyezkedik el.

Postfix kifejezés kiértékelése

A kifejezések postfix alakjában nem szükséges zárójelet

alkalmazni, ezért ilyenre szokták átfordítani az infix kifejezéseket.

Először nézzük meg, hogyan tudunk kiértékelni egy postfix

kifejezést, mennyi lesz 5413+*+ értéke? A kiértékelés szabályai:

– ha operandust olvasunk, az a verembe kerül,

– ha operátort, akkor kivesszük a veremből az elvégzéséhez

szükséges operandusokat, majd az eredményt a verembe

tesszük,

– A postfix kifejezés végigolvasása után a veremben lesz az

eredmény.

Alkalmazzuk ezt az algoritmust a példánkra, előre írjuk az olvasott

jelet, mellé a verem tartalmat az olvasás után:

112

Page 113: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

5 5

4 4 5

1 1 4 5

3 3 1 4 5

+ 4 4 5

* 16 5

+ 21

Láthatjuk, hogy valóban ugyanazokkal a számokkal és műveleti

jelekkel sikerült leírni az infix kifejezésnek megfelelő postfix

kifejezést zárójelek nélkül.

Infix kifejezés postfixre alakítása

Megadjuk általánosan is az infix kifejezést postfixre alakító

algoritmust. Jelöljük az infix kifejezést Q-val, az elkészítendő

postfix kifejezést P-vel. Q-t balról jobbra olvassuk, P-t balról jobbra

írjuk, ahogy szokásos esetben. A konvertáláshoz felhasználunk

egy vermet, jelöljük V-vel:

1. „(” beírása V-be, „)” hozzáfűzése Q-hoz

2. Amíg Q végére nem érünk, olvassuk az elemeit, az épp

olvasottat jelöljük q-val, majd utána döntsünk q fajtája szerint:

– Ha q = „(”, akkor q-t írjuk V-be

– Ha q =operandus, akkor q-t írjuk P-hez

– Ha q =operátor, akkor mindaddig írjuk V-ből P-be az elemeket,

amíg azok operátorok és nagyobb vagy egyenlő

precedenciájúak, mint q, majd helyezzük q-t V-be

113

Page 114: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

– Ha q = „)”, akkor írjuk ki V tartalmát az első „(”P-be, majd „(”

törlése

Alkalmazzuk az algoritmust az 5+4*(1+3) infix kifejezésre. Elöl lesz

az éppen olvasott szimbólum, utána a verem, majd a postfix

kifejezés

(

5 ( 5

+ ( + 5

4 ( + 54

* ( + * 54

( ( + * ( 54

3 ( + * ( 543

+ ( + * ( + 543

1 ( + * ( + 5431

) ( + * 5431+

) 5431+*+

Az utolsó lépés azért került kiírásra, hogy megmutassuk a verem

kiürülését

114

Page 115: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

115

Gyakorló feladat:

Alakítsa postfixre, majd kiértékeléssel ellenőrizze:

2+(4*6), 5*(3/4+2), (6-4)3+1.

Page 116: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

1.6.3 A sor

A sor olyan speciális vektor, ahol a vektor két végén lehet

műveletet végezni, az egyiken beszúrni és a másikon törölni.

Angol neve First In First Out, vagy röviden FIFO.

A mindennapi életben ilyen egy sorba állás, aki hamarabb érkezett

hamarabb fog végezni is. Vagy ilyen a hurkatöltés folyamata, vagy

a játszótéren, uszodában a csúszda.

A számítástechnikában is vannak sorok, a legjellemzőbb a

billentyűzet kezelése, akármilyen gyorsan gépelünk, a betűk

megfelelő sorrendben, azaz a lenyomás sorrendjében kerülnek a

monitorra.

Itt is két problémával állunk szembe programozás technikailag:

– Túlcsordulás: Úgy akarunk írni a sorba, hogy az már tele van,

nem fér több adat bele. A technika ilyenkor az, hogy a bevitt

elemek törlődnek mindaddig, míg törlés által szabadul fel hely.

– Alul csordulás: Üres sorból akarunk kiolvasni

A hagyományos sor mellett vannak speciális sorok is, ilyenek

például az úgy nevezett duplavégű sorok, ahol a sor mindkét

végén engedélyezett mindkét művelet.

A másik fajtája a speciális soroknak a prioritás sorok, ahol a

bekerült elemek nem csak az érkezési sorrend alapján álnak

sorba, hanem valamilyen prioritás által is. Lássunk erre egy példát,

legyen az eredet sor a következő (az elemek beírása baloldalon,

kitörlése jobboldalon történik):

A3 B4 C4 D5

A betűk utáni szám adja a prioritást. Egy új elem beszúrása esetén

a következő a stratégia: mindaddig halad előre a sorban, míg a

prioritása nagyobb, mint az előtte lévő elemé. Szúrjuk be az iménti

sorba az F5 elemet, ekkor ez az elem teljesen előre fog csúszni

116

FIFO

Page 117: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

addig, míg előtte kisebb prioritású elemek vannak, azaz D5-ig. Az

új sor:

A3 B4 C4 F5 D5

Ilyen prioritási sort alkot például a számítógép megszakítási

kérelmeinek sorba állítása, vagy amikor bankjegyeket sorba

rendezünk, akkor is az azonos címletűeket rakjuk egymásra a

címlet szerinti sorrenden belül.

2. Nem lineáris adatszerkezetek

A nem lineáris adatszerkezetet az különbözteti meg a lineáristól,

hogy itt az adatokat nem lehet listába sorolni az adatszerkezeten

belül.

Két fő fajtája van a megvalósításnak, a rekord és a gráf.

2.1 A rekord adatszerkezet

A rekord olyan adatszerkezet, melynek adatai különböző típusúak.

Ilyen például egy személy adatait tartalmazó adatszerkezet. Más

típusú a név, az életkor, a magasság, a születési idő, a

jogosítvány létezése. Soroljuk fel ezek típusait, strukturálva is

egyben:

– Név: sztring

– Életkor: természetes szám

– Magasság: valós szám

– Születési idő: –év

–hó

–nap

– Jogosítvány létezése: logikai típus

Megfigyelhetjük, hogy a születési idő maga is egy rekord

szerkezet, az ilyen megjelenést a rekordnak egymásba ágyazott

rekordnak nevezzük:

117

Page 118: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

–év: természetes szám

–hó: sztring

–nap: természetes szám

2.1.1 A rekord ábrázolása

A rekord ábrázolása általában szekvenciálisan történik, azaz

veszik minden elemét, és rögzítik a saját típusának megfelelő

ábrázolási formában. Ha nincs lehetőség az adott program

nyelven belül rekord adatszerkezetre, akkor mutató tömböket használnak, ami azt jelenti, hogy mindegyik elemnek a rekordban

megfelel egy vele azonos típusú elemeket tartalmazó vektor, s az

első rekord a vektorok első elemei lesznek, míg a második rekordé

a második indexű elemek.

Például legyen két a fentebb említett típusú rekordunk megadva:

Kiss Imre Nagy Béla

40 56

1.72 1.83

1962 1946

Augusztus Január

23 12

True False

Ez a két rekord mutatótömbbel ábrázolva:

Kiss Imre 40 1.72 1962 Augusztus 23 True

Nagy Béla 56 1.83 1946 Január 12 False

Van olyan programnyelv, mely megengedi, hogy a rekord egy

pontjától a szerint értelmezze a mezők típusait, hogy az adott

ponton egy mezőnek mi lesz az értéke. Ezek a változó hosszúságú rekordok. Erre is adunk egy példát, a szétváló típust

osztott cellákkal jelöljük:

Név Kor Végzős Államvizsga Záró vizsga

118

Page 119: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

évfolyam? időpontja érdemjegye

Jövő évi

tervei

Jövő évi vizsgák

száma

2.2 A gráf adatszerkezet

A gráf szintén nem lineáris adatszerkezet, s nagyban hasonlít a

láncolt listához, de nem lesz lineáris, azaz nem csak egyetlen

elem lesz egy adott elem rákövetkezője. Biztos hallott már

régebben is a gráfról, mint matematikai fogalomról, itt is ugyanarról

van szó, nem véletlen az elnevezés.

A gyakorlatban gráfokkal találkozhatunk egy pókháló esetén, vagy

ha egy ország úthálózatát vizsgáljuk. A számítástechnikában a

számítógépek szerte a világon az Internetben egy hatalmas gráfot

alkotnak.

A biztonság kedvéért tisztázzuk, hogy mit értünk gráf alatt:

A gráf csomópontokból, és az őket összekötő élekből áll, pl.:

119

Gyakorló feladat: Egy hallgató 20 adatának

rekordszerkezetbe alakítása egymásba ágyazott

rekordokkal. Legyen kreatív, bármilyen 20 adat jó!

B

A

C

E

D

Irányított gráf

Page 120: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

Ha a gráf irányított, akkor az éleknek van kezdő és végpontja,

különben csak végpontokról beszélünk, s ilyenkor azt mondjuk,

hogy nincsenek irányítva az élek az irányítatlan gráfban.

Egymáshoz csatlakozik két él, ha egyik végpontjuk közös, s az

egymáshoz csatlakozó élek sorozatát útnak nevezzük, s a benne

lévő élek száma az út hossza. Adjunk meg egy utat a fenti

gráfban: A––B––D––C. Ezen út hossza 3, mert 3 él alkotja,

irányított gráfnál néha fontos az is, hogy az út maga is irányított

legyen, tehát pl. az E––C––D nem alkot irányított utat, csak utat.

A gráf matematikai származtatása:

Legyen S egy véges nem üres halmaz, elemei szögpontok.

Tekintsük E-t, mely S–nek önmagával vett Descartes szorzata.

Ekkor S1S és E1E esetén az S1 E1 halmazt gráfnak

nevezzük. „E” elemei rendezett szögpont párok, melyek

megfelelnek az éleknek.

Mindegy melyiket használjuk, csak legyünk tisztában a

fogalmakkal. Megengedhető, hogy egy él kezdő és végpontja

egybe essen. Ha az út olyan, hogy kezdő és végpontja azonos,

akkor körútról beszélünk, akkor is, ha a körút nem irányított.

A gráfokról azért beszélünk részletesen, mert a későbbiekben egy

gráffal, az úgynevezett bináris fával fogunk foglalkozni.

Összefüggő egy gráf, ha minden szögpontból eljuthatunk minden

szögpontba úgy, hogy az éleket nem tekintjük irányítottaknak.

2.2.1 A fa adatszerkezet

Az összefüggő körútmentes irányított gráfokat nevezzük fáknak. A

fa részei:

– Gyökérelem: A fa egy kitüntetett eleme (szögpontja), ebből az

elemből csak kiindulnak élek, nem vezetnek bele

120

Út, úthossz

A fa részei

A fa definíciója

Page 121: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

– Levél: Olyan elem, melyből nulla él vezet ki

– Szülő, gyermek: Ha A-ból él vezet B-be, akkor A-t B szülőjének

nevezzük, s B-t „A” gyermekének.

– Részfa: A fa olyan része, mely maga is fa

– Szint: A gyökértől azonos távolságra, vagy más szóval

úthosszra lévő elemek halmaza

A fát (akárcsak a gráfot) igazán jól csak láncolt listával lehet

ábrázolni, a többi megvalósítás nehézkes. Általában nem jelöljük

külön a mutatóadatokat, csak a nyilakat rajzoljuk be. A következő

egy fa adatszerkezet képe:

Ebben a fában „A” a gyökér elem, levél elemek az E, F, G, H

elemek és D szülője G-nek és H-nak, valamint F gyermeke a C

adatelemnek.

2.2.2 A bináris fa

A fák között kitüntetett szerepet játszanak a bináris fák, melyek

olyan fák, hogy egy elemnek maximum 2 gyermeke lehetséges.

Lássunk erre is egy példát:

121

A

B C D

E F G H

H

A

BD

E G H

H

Page 122: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

Érdekes kérdés, hogy miként lehet bejárni egy bináris fát, azaz

hogy lehet minden elemét érinteni pontosan egyszer. Az érintést

általában nem öncélúan végezzük, hanem valamit tenni akarunk,

tehát vagy kiíratni az elem értékét, vagy pedig összehasonlítani,

például keresés céljából. A definícióban ezt vizsgálatnak fogjuk

nevezni, ha a cél a kiíratás, akkor a vizsgálat azt jelenti, hogy

kiírom az elem értékét.

Három stratégia terjedt el a bejárásoknál, és nem is véletlen

módon, de megegyezik a kifejezések elnevezéseivel. A definíciók

rekurzívak, figyelmesen olvassuk el őket, s akkor biztos nem okoz

gondot a használatuk:

– prefix bejárás (preorder): a. Vizsgáljuk a gyökér elemet

b. Járjuk be a baloldali részfát

c. Járjuk be a jobb oldali részfát

A jobb oldali kis fa bejárása ezek szerint: A, B, C

– infix bejárás (inorder): a. Járjuk be a baloldali részfát

b. Vizsgáljuk a gyökér elemet

c. Járjuk be a jobb oldali részfát

A jobb oldali kis fa bejárása ezek szerint: B, A, C

– postfix bejárás (postorder): a. Járjuk be a baloldali részfát

b. Járjuk be a jobb oldali részfát

c. Vizsgáljuk a gyökér elemet

122

A

B C

D

A

B C

D

A

B C

D

Fa bejárások

Page 123: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

A jobb oldali kis fa bejárása ezek szerint: B, C, A

Nézzünk egy nagyobb lélegzetű példát, írjuk fel az iménti példa fa

mindhárom bejárását!

Az prefix bejárás:A, B, E, D, G, H

Az infix:B, E, A, G, D, H

A postfix:E, B, G, H, D, A

A bináris fákra régebben elterjedt volt a tömbbel való láncolt

ábrázolás, ahol 3 oszlop van a táblázatban, az elsőben a baloldali

gyerek táblázatban elfoglalt sorának száma, a másodikban az

elem maga, az utolsóban pedig a jobboldali gyerek táblázatban

elfoglalt sorának száma. Ha nincs gyerek, akkor nulla végjelet

alkalmazunk.

Nézzük meg a példa fánk ilyetén való ábrázolását:

B.o-ielem

Az elem

J.o.-i elem

1

2 A 3

2 0 B 4

3 5 D 6

123

A

BD

E G H

H

A

BD

E G H

H

A bináris fa ábrázoló mátrixa

Page 124: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

4 0 E 0

5 0 G 0

6 0 H 0

A sorok sorszámait csak a könnyebbség miatt írtuk ki. Látható,

hogy a levélelemek mellett csak nulla van, mert nincs gyermekük

egyik oldalon sem. Értelmezzük a tábla 3. sorát:

A „D” elem van ábrázolva, egyébként az elemek sorrendje a táblán

belül tetszőleges, egyedül az van kikötve, hogy az első sorban a

gyökérnek kell elhelyezkedni. A baloldali elem mutatója 5, az

ötödik sorban valóban a G található, s ugyanígy láthatjuk, hogy a

jobb oldali gyerek mutatója hatos, valóban a hatodik sorban a H

elem található.

124

2

8

5

1

7

3

64

Page 125: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

2.2.3 További bináris fák

Ismerkedjünk meg még egy–két bináris fa típussal.

– A teljes fa: Az elemek száma minden szinten maximális, az

utolsó szinten pedig az elemek „legbalrább” helyezkednek el.

Lássunk egy ilyen bináris fát:

125

Gyakorló feladat: Írja fel a következő bináris fa mindhárom

bejárását, majd ábrázolja tömbbel!

A

B D

E GC

Page 126: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

– A kettes fa: Minden szülőnek kettő, vagy nulla gyerek van.

Szokás a kettes fát kiterjesztett bináris fának is nevezni.

Példa rá:

– A halom: Ez számokat tartalmazó bináris fa, ahol a szülő

értéke mindig nagyobb egyenlő a gyerek értékeinél. Néha

maximum halomnak is nevezik.

Példa:

126

A

B D

E GC

EC

E

3

4

3

5

3

0

3

4

1

0

2

1-

8

92

1

1

Page 127: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

A halom szerkezet alkalmas arra is, hogy rendezzünk vele, hiszen

a gyökér ismételt törlés, és a maradék fa halommá alakításával

egyre kisebb elemeket kapnánk.

– Kereső fa (bináris, rendezett fa)

Egy szögpont értéke nagyobb a baloldali részfában található

összes elemnél, és kisebb a jobboldali részfájában található

összes elemnél. Jelentősége nagy, mert O(n) bonyolultsággal

lehet keresni benne, ezenkívül alkalmas a duplikált elemek

kiszűrésére is egy sorozatból. Lássunk erre is egy példát:

127

38

39

582418

27 81

20

Gyakorló feladat: Helyezze el tetszőleges a következő

számokat egy teljes fába, majd megfelelően halomba és

rendezett fába!

8,23,45,12,33,23

Page 128: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

ÖsszefoglalásÖn az anyag elsajátítása után tisztában van az adatszerkezet

fogalmával, tudja, milyen többletet szolgáltat a szerkezet az adatok

halmazához. Ismeri a tömböt, vermet, sort, rekordot, gráf és fa

adatszerkezetet, ezek főbb algoritmusait, felhasználási

lehetőségeit. Egy feladatot ismerve meg tudja határozni, hogy

milyen adatszerkezettel képes megoldani. Keresések, rendezések

esetén több algoritmust ismer, s képes ezek közül kiválasztani a

legmegfelelőbbet a feladat sajátosságait figyelembe véve.

Ajánlott szakirodalomLipschutz: Adatszerkezetek, Bp, Panem Kft, 1993

Gács-Lovász: Algoritmusok, Bp, Tankönyvkiadó, 1991

128

Ellenőrző feladat: Szorozza össze a következő két

mátrixot, majd ábrázolja hiányos mátrixként (akkor is, ha

elemeinek kevesebb, mint 80%-a azonos), rendezze elemeit

és szűrje ki a duplikált elemeket bináris fa segítségével!

0 2 0 5 6 2

1 1 1 1 0 4

0 1 0 1 1 3

2 3 1

0 1 4

Page 129: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

Gyakorló feladat megoldásai.Gyakorló feladat III/1: Számolja ki a két mátrix összegét

3 3 8 8

1 6 2 4

Az összeg:

11 11

3 10

Készítse el a vektor

elemeinek átlagát

szolgáltató blokkdiagramot:

129

Start

Be: elemszam

osszeg= nullaEddigi=0

Eddigi<elemszam

Átlag=osszeg/elemszam

Ki: Atlag

END

Be: elem

osszeg=osszeg+elemEddigi=eddigi+1

i

h

Page 130: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

Gyakorló feladat III/2:Adja meg a következő hiányos mátrix mind a 3 féle ábrázolását!

1 1 1 1

2 1 4 1

1 1 1 1

1 1 3 1

1 1 6 1

Sorfolytonos:

1 2 2 1 0

2 4 2 3 3

3 3 4 3 4

4 6 5 3 0

Oszlopfolytonos:

1 2 2 1 2

2 4 2 3 0

3 3 4 3 0

4 6 5 3 0

Vegyes:

1 6 5 3 0 0

2 0 0 0 0 0

3 4 2 3 0 6

4 2 2 1 3 0

5 0 0 0 0 0

6 3 4 3 0 1

130

Page 131: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

Adja meg a kétirányú ciklikus láncolt lista rajzát

Gyakorló feladat III/3:Hogyan lehet 1 számokból álló állományt rendezni, ha nem férnek

be a memóriába? (Ötlet: összefuttatás)

Vágjuk szét akkora állományokra, hogy azok már beférjenek,

rendezzük ezeket, írjuk ki a háttértárolóra, majd futtassuk össze

őket.

Gyakorló feladat III/4:

Alakítsuk postfixre, majd kiértékeléssel ellenőrizzük:

2+(4*6), 5*(3/4+2), (6-4)3+1.

2 4 6 * +, kiértékelve 26

5 3 4 / 2 +*, kiértékelve 13.75

6 4 – 3 ^ 1 +, kiértékelve 9

131

Page 132: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

Gyakorló feladat III/5:

Egy hallgató 20 adatának rekordszerkezetbe alakítása egymásba

ágyazott rekordokkal.

Például lehet:

Név

Kereszt

Vezeték

Lakhely

Város

Utca

Házszám

Irányítószám

Anyja neve

Egyfőre eső kereset

Szak

Testvérei száma

Születési idő

Év

Nap

Kollégium

Épület

Emelet

Ajtó

Szak

Első szakja

Neve

Évfolyama

Második szakja

Neve

Évfolyama

Telefonszáma

132

Page 133: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

Gyakorló feladat III/6: Írja fel a következő bináris fa mindhárom bejárását, majd ábrázolja

tömbbel!

Prefix: 1,2,4,7,5,8,3,6;

Infix: 7,4,2,5,8,1,3,6

Postfix: 7,4,8,5,2,6,3,1

2 1 3

4 2 5

0 3 6

7 4 0

0 5 8

0 6 0

0 7 0

0 8 0

133

2

8

5

1

7

3

64

Page 134: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

Gyakorló feladat III/7:Helyezze el tetszőleges a következő számokat egy teljes fába,

majd megfelelően halomba és rendezett fába!

8,23,45,12,33,23

A teljes fa (lehet más megoldás is):

Halom (lehet más megoldás is):

A rendezett fa (lehet más megoldás is):

134

8

2

3

4

5

1

23

3

2

3

4

5

3

3

3

2

3

4

58 1

2

2

3

3

3

1

2

4

5

8 2

3

Page 135: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

ZárszóRemélem kitartott a türelme idáig, s nem tartja feleslegesnek, hogy

néhány szóban elbúcsúzzunk Öntől. Először is meg szeretnénk

köszönni azt, hogy a tanulásnak ezt a fajtáját választotta, s

reméljük nem bánta meg. Bizonyára felfedezte a

távoktatás/távtanulás előnyeit, árnyoldalait is. Szeretnénk, ha

megosztaná velünk a tapasztalatait mind az oktatás/tanulás ezen

formájáról, mind pedig a tananyagról. Ne feledje, ahogy mit sem ér

egy film, amit nem néz meg senki, épp úgy haszontalan egy

tankönyv is, ha nem olvassa senki sem el. Természetesen ahogy

a rossz filmek feleslegesek, ugyanúgy nem kívánatosak a rossz

tankönyvek sem. Itt szeretnénk megkérni arra, hogy amennyiben

van ötlete az anyag javítására –legyen az nyomdahiba, elírás,

szakmai tévedés, homályos fogalmazás, stb.– kérjük írja meg a

következő lapon, hogy a jövőben elkerüljük ezeket a hibákat. A

lapot leadhatja névvel, vagy név nélkül is, ahogy jónak látja,

amennyiben névvel adja le, úgy az Ön neve is szerepelni fog a

javított változatban, megköszönve segítségét.

Amennyiben volt olyan rész, amit hiányolt, vagy túl elnagyoltnak,

esetleg épp ellenkezőleg, túl aprólékosnak talált, kérjük jelezze,

hiszen ha csökken az anyag nyomdai mérete, nem csak

szívesebben tanulja a hallgató, de néhány fa életét is

megmentheti.

Reméljük sikerült bemutatni Önnek, hogy a számítástechnika

sokkal szebb és érdekesebb tudomány, mint annak ismerete, hogy

milyen betűkombinációval lehet vastaggá tenni a kijelölt szöveget,

vagy hogy mi után mire kell kattintani. Folytatva a tananyag elején

megkezdett párhuzamot, a cél az, hogy ne csak „úrvezetők”

legyünk, hanem egy kissé autószerelők is. Természetesen nem

csak a szerelők, hanem a konstruktőrök világába is ezen az úton

lehet bejutni, így remélhetőleg sikerült néhány olyan embernek is

felkelteni az érdeklődését a számítástechnika varázslatos világa

iránt, kiknek nevét pár év múlva kénytelenek leszünk megismerni,

sőt akár tananyagként tanítani, esetleg épp ennek a jegyzetnek a

135

Page 136: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

sokadik verziójú kiadásában. Ehhez, valamint a vizsgához is itt

szeretnénk jó egészséget kívánni, mert más nem szükséges,

amennyiben megoldotta a gyakorló és ellenőrző feladatokat, s

követte konzulense tanácsait. Meg persze az a bizonyos

szerencse……………….

136

Page 137: Nyíregyházi Főiskola - zeus.nyf.huzeus.nyf.hu/~falu/bevinfo/jegyzet.doc  · Web viewKedves résztvevő! Először is őszinte örömünket szeretnénk kifejezni, hogy ezt az oktatási

Véleményem az anyagról, a tanulási formáról:

Név:……………………………..(Nem kötelező kitölteni)

Kérem adja le a Matematika és Informatika Intézet titkárságán!

Köszönjük: A szerzők

137