Professional Documents
Culture Documents
INF 501a
INF 501a
INF-501
Algoritmusok s adatbrzols
Kgelmann Gbor
fiskolai docens
Informatikai Intzet
112 - es szoba
Ez a dokumentum elektronikus formban sajt clokra szabadon msolhat. A nem
kereskedelmi jelleg alkalmazsokhoz, vltoztatsok nlkl s a forrsra val hivatkozssal
hasznlhat. Minden ms terjeszts s felhasznls esetben a szerz / tulajdonos engedlyt ki kell
krni. Ennek a szvegnek a dokumentumban mindig benne kell maradnia!
DF Informatikai Intzet
1. Az algoritmusszerkeszts alapfogalmai
Az elektronikus szmtgpek ltal vgrehajtand feladatokat a gp szmra rthet
nyelven kell megfogalmazni. Erre a feladatra szmtgpi programokat hasznlunk.
A szmtstechnika trtnetnek legjelentsebb programnyelvei, kialakulsuk
idrendjben:
ALGOL
(ALGOrithmic Language)
FORTRAN
(FORmula TRANslator)
COBOL
(COmmon Business Oriented Language)
PL/I
(Programming Language I)
PASCAL
C, C++
Modula
stb...
A fenti, gynevezett magasszint programnyelvek mellett minden szmtgp
architektra (mikroprocesszor) szmra ltezik egy gpkzeli programnyelv, amit
ASSEMBLY szint programnyelvnek hvnak.
A program utastsok sorozata, amelyeket az adott programnyelv formai
(szintaktikai) szablyainak betartsval kell alkalmazni. A programok tartalmi
("mkdsi") helyessge a szemantikai programhelyessg.
Az algoritmikus gondolkodsmd, a programozsi logika elsajttshoz nincs
szksg konkrt programnyelv ismeretre.
Tananyagunk e fejezete, az algoritmuskszts alapjainak megismertetsre
vllalkozik.
DF Informatikai Intzet
szer vezet j eredmnyre, ha elbb elksztjk a feladat megoldsnak algoritmust,
majd ehhez vlasztunk megfelel programnyelvet.
Definci:
Algoritmusnak nevezzk az aritmetikai, logikai, stb... mveletek olyan clszeren sszelltott sorozatt, amely a kitztt feladat egyrtelm megoldshoz
vezet.
A feladatok ltalban bonyolultak, azaz sok esetben tbb szz, st tbb ezer
elemi lpst tartalmaznak. Ezrt a feladatot clszer rszfeladatokra bontani.
Ebben az esetben mindig van egy fprogram, s tbb-kevesebb alprogram. Az
alprogramokat szoks eljrsnak, szubrutinnak is nevezni. A feladat megoldsnak
ezt a megkzeltst strukturlt programozsnak nevezzk.
A fprogram eljrst, vagy eljrsokat hv meg, melyek aztn tovbbi eljrsokat hvhatnak. Az eljrsok befejeztvel a vezrls a hvs utni utastsra kerl
vissza. Az eljrshvskor paramterek adhatk t a hvottnak. Ennek segtsgvel
lehet az ltalnos feladatmegoldst az aktulis ignyhez igaztani.
Kvetelmnyek az algoritmusokkal szemben:
Legyen ltalnos, amennyire ezt az adott feladat megengedi.
Szls esetekben is helyes eredmnyt adjon.
Vges szm lps (id) utn fejezdjn be.
Az algoritmusok fajti:
Verblis algoritmus
Jel algoritmus
A verblis algoritmus szvegesen adja meg a feladatot. (lszban, vagy rsban.)
Az rsban megadott feladatmegoldst szoks pszeud kdnak nevezni.
A jel algoritmus a feladat megfogalmazsra geometriai szimblumokat, matematikai jellseket hasznl.
A leggyakrabban hasznlt jel algoritmusok:
Folyamatbra
Struktogram
Szerkezeti bra
DF Informatikai Intzet
Az egyszer vltozk hrom jellemz tulajdonsga:
Nv
ltalban az angol ABC betibl, a szmokbl, s nhny klnleges
jelbl kpezzk. Clszer a tartalomra utal elnevezst vlasztani.
Egy memriaterletet szimbolizl.
Tpus
Ez a jellemz utal arra, hogy a memriban az adatot milyen formban
troljuk, illetve azt is behatrolja, hogy milyen jelleg mveletet
vgezhetnk vele.
A vltoz cme a memriban
Azt rja le, hogy az adat milyen kezdcmtl helyezkedik el a memriban.
Az sszetett vltozk jellemz tulajdonsgai:
Megegyezik az elz hrommal
A kezelt adatcsoport jellemzi
Eszerint beszlnk tmbrl s halmazrl.
Tmb
Jellemz tulajdonsga a dimenzi.
Egy, kt, hrom, esetleg tbb dimenzi.
Az egydimenzis tmb neve: vektor
A[3]
;
B[12]
A ktdimenzis tmb neve:
mtrix
C[3,2] ;
D[5,5]
A tmb elemeire az indexel hivatkozunk.
C[1,1] - Az els sor, els oszlopa
C[3,2] - A harmadik sor msodik oszlopa
Halmaz
Jellemz tulajdonsga, hogy elemeit mely adatok kzl
vlaszthatjuk ki.
H1 = [12, 34, 7, 23, 12]
H2 = [A, B, a, b]
H3 = [ ]
- res halmaz.
Az egyes adat tpusokon rtelmezett mveletek:
Numerikus (vals, egsz)
A ngy alapmvelet ( + - * / )
A hatvnyozs ( ^ vagy ** )
Egyvltozs mveletnl az eljel ( - )
Csak egsz tpus adatok esetn
Egszoszts ( DIV )
Maradkkpzs ( MOD )
7 DIV 2 3
7 MOD 2 1
DF Informatikai Intzet
Karakter s sztring tpus adatok
Egymsutnrs ( + ) (konkatenls)
"A" + "1" "A1"
"ABCD" + "EFG" "ABCDEFG"
Logikai adatok
S mvelet ( AND )
VAGY mvelet ( OR )
KIZR VAGY mvelet ( XOR )
TAGADS mvelet ( NOT )
Az igazsgtblzat:
a
1
1
0
0
b
1
0
1
0
0 - Hamis
1 - Igaz
( FALSE )
( TRUE )
Relcis mveletek:
Kt azonos tpus konstans, illetve vltoz(k) kztt rtelmezhet.
= , > , < , >= , <= , <> (Nem egyenl)
A mvelet eredmnye egy logikai rtk ( 1 , 0 )
A = 5;
B = 6;
A>B 0
A<B 1
A=B 0
A halmazokon rtelmezett mveletek:
Mindig ktoperandusak.
Halmazok sszege ( + )
Az azonosak csak egyszer kerlnek az eredmny halmazba.
Halmazok szorzata ( * )
Azok kerlnek az eredmny halmazba, melyek mindkt halmazban
elfordulnak.
Halmazok klnbsge ( - )
Az els operandus elemeibl elmaradnak azok az elemek, amelyek a
msodikban is megvannak.
DF Informatikai Intzet
Konverzis
CHR(x)
STR(x)
VAL(x)
x numerikus (0 - 255)
x numerikus
x sztring
Sztring-kezel
LEFT(x,y)
LENGTH(x)
rtkad kifejezsek:
Azt, hogy milyen adatokon, milyen mveletet kell elvgezni kifejezssel adjuk meg.
A kifejezs bal oldaln vltoznak kell lennie, a jobb oldalon elfordulhatnak
vltozk, konstansok, fggvnyhvsok (visszatr rtkkel) s mveleti jelek. A kt
oldal kztt az egyenlsgjel ll.
A jobboldali vltoz(k) rtke a mveletvgzs sorn nem vltozik meg.
A mveletek elvgzsi sorrendje kttt. A sorrend zrjelekkel befolysolhat. Tbb
zrjel esetn a kirtkels a bels zrjelprtl indul. A mveleteknek
precedencija (prioritsa) van. A precedencia-szably rszben programnyelv fgg,
de ltalban az albbi:
eljel
negci
hatvnyozs
szorzs, oszts
sszeads, kivons
relci mveletek
stb.
A felsorols cskken priorits szerinti.
Az azonos prioritsszinten a kirtkels ltalban balrl jobbra irny.
Plda:
a = -b + c * 2
z = ABS(x) + y
i =i+1
a = -(b + c) * 2
a = (-b + c) * 2
DF Informatikai Intzet
DF Informatikai Intzet
Ketts alternatva
IF
felttel
THEN
[A - modul]
ELSE
[B - modul]
(Az IF szerkezet vge)
sszetett alternatva
IF
felttel(1)
[A(1) - modul]
ELSE IF felttel(2)
[A(2) - modul]
......
......
ELSE IF felttel (n)
[A(n) - modul]
ELSE
[B - modul]
(Az IF szerkezet vge)
THEN
THEN
THEN
DF Informatikai Intzet
A betk (vltozk) jelentse:
i
- Ciklusvltoz
k
- A ciklusvltoz kezdrtke
v
- A ciklusvltoz vgrtke
m
- A ciklusvltoz mdost rtke
Htultesztel - DO - WHILE tpus ciklus
DO
[modul (ciklusmag)]
WHILE felttel
(A WHILE szerkezet vge)
A htultesztel ciklus esetn a ciklusmag legalbb egyszer vgrehajtdik.
Ha a ciklusvltoz tesztelse elmarad, (esetleg hibs) gynevezett vgtelen ciklust
kapunk.
A ciklusok a gyakorlati feladatok megoldsakor sok esetben egymsba gyazottak.
x=0
FOR i = 1 TO 2 [BY 1]
FOR j = 1 TO 3 [BY 1]
x=x+1
NEXT
NEXT
Az x rtke az egymsbagyazott ciklusok vgrehajtsa utn 6 lesz.
A [...] jells arra utal, hogy a mdost (lpskz) megadsa elmaradhat. Ekkor a
felttelezett rtk: +1.
DF Informatikai Intzet
2.1 Pszeudkd
Az algoritmus szvegszer (mondatszer) lersa. Htrnya, hogy nincs
szabvnyostva. Minden knyv, jegyzet szerzje az zlsnek legjobban megfelel
jellsrendszert hasznl, ezrt mindig definilni kell az egyes alap s
vezrltevkenysgek ppen aktulisan alkalmazott jellsrendszert.
A nyelve lehet angol, de adott esetben akr a szerz anyanyelvnek megfelel
kulcsszavak is alkalmazhatk. E jegyzetben mi is ez utbbit tesszk.
Opertorok:
Aritmetikai opertorok: +, -, *, /
Relcis (sszehasonlt) opertorok: <, <=, >, >=, =, <>
Logikai opertorok: s, vagy, nem
Tevkenysgek (mveletek):
rtkads: vltoz = kifejezs
Beolvass: Be: <vltoz lista>
Kirs: Ki: <vltoz lista>
Szelekcis tevkenysg:
Egyszer alternatva
Ha <felttel> akkor
<mveletek>
ha vge.
Ketts alternatva:
Ha <felttel> akkor
<mveletek1>
klnben
<mveletek2>
ha vge.
10
DF Informatikai Intzet
sszetett alternatva:
Ha <felttel1> akkor
<mveletek1>
klnben Ha <felttel2> akkor
<mveletek2>
klnben Ha <felttel3> akkor
<mveletek3>
[klnben
<mveletek4>]
ha vge.
Itercis tevkenysg:
Elltesztel - WHILE tpus ciklus:
Ciklus amg <felttel>
<mveletek>
ciklus vge.
Plda:
Szmoljuk ki egy N elem sorozat sszegt!
Megolds:
1. Olvassuk be az sszegzend elemek szmt (N);
2. Olvassuk be az sszegzend elemeket (A[1] A[N]);
3. Szmoljuk ki az elemek sszegt;
4. Irassuk ki az eredmnyt (S)!
Be: N
Be: A[1] -> A[N]
S = 0
Ciklus I=1-tl N-ig
S = S + A[I]
ciklus vge.
Ki: S
11
DF Informatikai Intzet
2.2 Folyamatbra
A folyamatbrt szoks blokksmnak is nevezni.
Kt alaptpusa:
Szervezi
Programozi
A szervezi folyamatbra a felhasznlt adatllomnyok nevt, tpust, s az
adatokat kezel programok megnevezst tartalmazza.
A programozi folyamatbra (blokk-diagram) a megoldand feladat rszletekbe
men megfogalmazsa.
A folyamatbra blokkokbl ll, ezek tartalmazzk az egyes utastsokat.
Hogy egy feladatnak mekkora rszt tekintjk egy blokknak, nincs elrs. sszetett,
nagyobb mret feladat esetn, mindenkppen alkalmazzunk eljrsokat.
a=b
I=I+1
12
DF Informatikai Intzet
A dnts, elgaztats (szelekci) szimbluma:
A szimblum belsejbe rt felttel (kifejezs) teljeslsekor az Igen, ellenkez
esetben a Nem gon folytatdik a feladat vgrehajtsa.
felttel
felttel
R:
A
Write:
A
Read
A, B, C
W:
A
W:
Hibs!
Eljrsnv
KIIRAS
STOP
START eljrs
STOP eljrs
13
DF Informatikai Intzet
A csatlakozpont szimbluma:
Amennyiben a folyamatbra nem fr el egy lapon,vagy a folyamatvonalak
kereszteznk egymst, akkor kell alkalmazni.
A
A
A - modul
N
Ketts alternatva
I
felttel
A - modul
N
B - modul
sszetett alternatva
N
felttel(1)
I
A(1) - modul
I
felttel(2)
A(2) - modul
N
B - modul
14
DF Informatikai Intzet
Itercis vezrltevkenysg:
Elltesztel - WHILE tpus ciklus
I
felttel
ciklusmag
N
Elltesztel - FOR tpus ciklus
i=k
N
i>v
ciklusmag ... ; i = i + m
ciklusmag
I
felttel
N
15
DF Informatikai Intzet
A A beolvasott szm
M A maximum
1. plda / 1. megolds
16
DF Informatikai Intzet
A msodik megolds:
Ebben a tovbbfejlesztett megoldsban minden jabb adatbekrse eltt
megkrdezzk, van-e mg tovbbi szm?
A vltozk:
A
M
VALASZ
A beolvasott szm
A maximum
A feltett krdsre adott vlasz
1. plda / 2. megolds
17
DF Informatikai Intzet
2. Plda
Olvasson (krjen) be (N) darab szmot, s gyjtse a prosakat a (B) vektorba, a
pratlanokat a (C) vektorba! A kt tmb elemeit rassa ki!
Miutn elszr a pros, majd a pratlan szmokat szeretnnk kiratni, a
vektorokba val ideiglenes trols elkerlhetetlen.
A szm pros, illetve pratlan voltnak eldntsre kt mdszert is vlaszthatunk:
Alkalmazzuk a modul (MOD) utastst, vagy fggvnyt.
Egszosztst (DIV) vgznk kettvel, s a kapott eredmnyt kettvel
visszaszorozva hasonltjuk az eredeti rtkhez.
Az algoritmusban a pros, illetve pratlan szmok kirsra eljrsokat hasznlunk.
A vltozk: N
A
I
J
K
W
Az elemek szma
A beolvasott szm
A fut index
A pratlan szmok tmbjnek indexe
A pros szmok tmbjnek indexe
Munkavltoz
18
DF Informatikai Intzet
2. plda / 1. lap
19
DF Informatikai Intzet
Az eljrsok:
2. plda / 2. lap
3. Plda
Adott (X) hallgat (Y) tantrgynak rdemjegye.
Hatrozza meg a tantrgyanknti jegyeloszlst, illetve tlagot!
A feladat elgg sszetett ahhoz, hogy egy fprogram mellett tbb eljrsra bontsuk.
A legegyszerbb (s egyben legltalnosabb) megoldst akkor kapjuk, ha tmbket
hasznlunk a feladat megoldsra.
20
DF Informatikai Intzet
A felhasznlt tmbket s ciklusvltozkat az albbi brn szemlltetjk:
J
1
1
I
HJ
TA
TE
X
1
1
K
5
A fprogram (falgoritmus):
3. plda / 1. lap
21
DF Informatikai Intzet
Az eljrsok:
3. plda / 2. lap
22
DF Informatikai Intzet
3. plda / 3. lap
23
DF Informatikai Intzet
3. plda / 4. lap
24
DF Informatikai Intzet
2.3 Struktogram
A jel algoritmus msik gyakran hasznlt formja. Jellemzje, hogy az algoritmus megtervezsre s megfogalmazsra csak tglalapokat hasznl. Egy feladat
megoldst az t jelkpez tglalapba rajzolt - szintn tglalappal jelkpezett rszfeladatok megoldsval, vagy alaptevkenysgek vgrehajtsval kapjuk meg.
felttel
//
igen
nem
A - modul
Ketts alternatva
//
felttel
//
igen
nem
A - modul
B - modul
sszetett alternatva
//
felttel(1)
igen
nem
//
A(1) - modul
//
felttel(2)
igen
A(2) - modul
//
nem
A(3) - modul
25
DF Informatikai Intzet
Itercis vezrltevkenysg:
Elltesztel - WHILE tpus ciklus
felttel
ciklusmag
ciklusmag
ciklusmag
felttel
26
DF Informatikai Intzet
27
DF Informatikai Intzet
A feladat struktogramja:
MIN = 0
OSSZEG = 0
DARAB = 0
I = 1 ; 20 ; 1
Be: ADAT
//
ADAT > 0
//
igen
nem
//
igen
nem
MIN = ADAT
DARAB > 0
igen
//
nem
Ki:
" Nem volt
pozitv! "
28
DF Informatikai Intzet
modul
m1
..........
mn
Jelentse:
A modul nev feladat gy oldand meg, hogy egyms utn megoldjuk
az m1..... mn nev feladatokat, vagy ha valamelyik mi modul alaptevkenysg, azt vgrehajtjuk.
Szelekcis vezrltevkenysg:
modul
f1
..........
fn
m1
..........
mn
Jelentse:
29
DF Informatikai Intzet
A modul nev feladatot gy kell megoldani, hogy a feltteleket megvizsglva, megoldjuk, vagy vgrehajtjuk azt a modult, melynl az fi felttel igaz.
Kikts, hogy a felttelek kzl csak egy, vagy egyik sem lehet igaz.
Itercis vezrltevkenysg:
Elltesztel - WHILE tpus ciklus
modul
f
ciklusmag
Jelentse:
A modul nev feladatot gy oldjuk meg, hogy a ciklusmagot addig ismteljk, mg
az f felttel igaz.
modul
i=k;v;m
ciklusmag
Jelentse:
A modul nev feladat megoldsa i = k rtkkel kezddik v rtkig tart, s m
rtkkel mdosul minden ciklusmag vgrehajts utn.
30
DF Informatikai Intzet
Htultesztel - DO - WHILE tpus ciklus
modul
f
ciklusmag
Jelentse:
A modul nev feladatot gy oldjuk meg, hogy a ciklusmagot addig ismteljk, mg
az f felttel igaz.
A felttel vizsglat a ciklusmag vgrehajtsa utn trtnik.
31
DF Informatikai Intzet
Elkszts
Minim. s sszeg
MIN = 0
OSSZEG = 0
DARAB = 0
I = 1 ; 20 ; 1
tlag s kirs
DARAB>0
DARAB=0
ATLAG =
OSSZEG / DARAB
Kirs
KI: MIN, DARAB
ATLAG
Kirs
KI: "Nem
volt poz.!"
Beolvass
Be: ADAT
Vizsglat
ADAT>0
Feldolgozs
sszeads
Minimum
DARAB=1 OR
ADAT< MIN
MIN = ADAT
32
DF Informatikai Intzet
3. Adatbrzols
A szmtgpi programok utastsai dnten valamilyen adatra vonatkoz
mveletet hajtanak vgre. Az adatnak a mveletvgzs idejn a memriban kell
lennie, azaz valamilyen "szabvnyos" formtumban a memriban kell trolni.
Az adatok felhasznlsi terletk szerint a kvetkez csoportokba sorolhatk:
Numerikus
Logikai
Karakteres
Az informatikban a megszokott tizes szmrendszer mellett mg tovbbi hrom
szmrendszerrel tallkozhatnak:
Kettes (binris)
Szmjegyek: 0 , 1
Jells:
101011102
Tizenhatos (hexadecimlis)
Szmjegyek: 0 - 9 , A , B , C , D , E , F
Jells:
1AF316
Nyolcas (oktlis)
Szmjegyek: 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7
Jells:
17328
3.1 Alapmveletek
klnbz szmrendszerekben
talakts decimlisbl binrisba:
51.7510
110011.112
51 / 2
25
12
6
3
1
0
75 * 2
1
1
0
0
1
1
1
1
50
00
33
DF Informatikai Intzet
talakts binrisbl hexadecimlisba:
1 0110 0010.0012
162.216
sszeads (Bin):
1011101101
101110
+
11011
11001101102
749
46
+
27
82210
Kivons (Bin):
1011101101
11011111
10000011102
749
223
52610
3
3
75 * 16
12 00
431
+ 58
48910
34
DF Informatikai Intzet
Kivons (Hex):
2BA
- 1E2
D816
698
- 482
21610
Komplemense:
E1D
+ 1
E1E
2BA
+ E1E
10D816
3.2 Adattpusok
A konkrt adattpusok ismertetse eltt rdemes mg nhny fogalommal
megismerkedni.
Bjt (Byte)
A szmtgpek legkisebb cmezhet egysge.
A memriban nyolc egyms melletti bit.
Flsz (Half Word)
Kt egyms melletti bjt.
Sz (Word)
Ngy egyms melletti bjt.
Duplasz (Double Word)
Nyolc egyms melletti bjt.
Znarsz, Magas (High) bitek
Egy bjt balrl szmolt ngy bitje. (Tetrd)
Szmrsz, Alacsony (Low) bitek
Egy bjt jobbrl szmolt ngy bitje.
35
DF Informatikai Intzet
Karakterek brzolsa
Az ASCII kdrendszert hasznlja
(American Standard Code for Information Interchange)
7 bites, 8 bites vltozat
Nemzeti karakterkszletek
(437, 852, 1250 kdlapok)
Magyar szabvny: MSZ 7794-3
Nemzetkzi szabvny: ISO-8859-x
x = 2 Kelet Eurpa
Tbb bjtos vltozat: (UNICODE, UTF-8)
Egsz tpus adatok brzolsa
A hossz alapjn:
Szavas egsz (2 bjt)
A szmbrzolsi tartomny:
- 215
+ 215 - 1
- 32768
+ 32767
A szm
(Decimlis)
Memria tartalom
(Hexadecimlis)
1000
3
-1
32767
-32768
0
03E8
0003
FFFF
7FFF
8000
0000
Dupla egsz
(4 bjt)
A szmbrzolsi tartomny:
- 231
+ 231 - 1
Tbb mint 2 millird
A szm
(Decimlis)
Memria tartalom
(Hexadecimlis)
-1
1
FFFFFFFF
00000001
36
DF Informatikai Intzet
Hossz egsz (8 bjt)
A szmbrzolsi tartomny:
63
63
-2
+2 -1
A szm
(Decimlis)
-1
5
Memria tartalom
(Hexadecimlis)
FFFFFFFF FFFFFFFF
00000000 00000005
23 22
Me Exponens (ek)
0 bit
Mantissza (m)
37
DF Informatikai Intzet
c. Az exponens korriglsa (nulla pont eltols)
ek = e + 127 = 4 + 127 = 13110 = 8316
d. brzols
0 10000011 10101100000000000000000
4
1
D
6 0
0
0
0
Dupla pontossg lebegpontos szm
(Double precision, 8 bjt)
A szmbrzolsi tartomny:
10308 10+308
A pontossga:
15 - 16 decimlis jegy
A korriglt exponens:
ek = e + 1023
Felptse:
63
52 51
Me Exponens (ek)
0 bit
Mantissza (m)
38
DF Informatikai Intzet
A felhasznlt irodalom
1. N. Wirth: Algoritmusok + adatstruktrk = programok
knyv
Mszaki Knyvkiad, Budapest
2. Lipschutz: Adatszerkezetek
knyv
Panem Kft, Budapest
3. Dr. Marton Lszl - Pukler Antal - Pusztai Pl: Bevezets a programozsba
knyv
NOVADAT BT, Gyr
39