You are on page 1of 39

Bevezets a programozsba

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.

1.1 Az algoritmus fogalma


A szmtgp ltalnos megfogalmazs szerint egy adatok feldolgozsra
ksztett eszkz. Ilyen megkzelts alapjn az adatok kt csoportba sorolhatk:
A program
A program ltal kezelt adat

1.1.1 A program s az algoritmus


A program a megoldshoz vezet utat tartalmazza, azaz azt rja le, hogy milyen
mveleteket kell elvgezni a tnyleges adatokkal, hogy a kvnt eredmnyhez
jussunk.
A program egy adott programnyelven megvalstott vgrehajtsi algoritmus. Az
algoritmus ltalban nem ktdik semmilyen konkrt programnyelvhez. Az a md-

INF-501a.doc 2011.09.05 Kgelmann Gbor

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

1.1.2 A program ltal kezelt adatok


Az adatok egyik nagy csoportjt a konstansok alkotjk. rtkk a program
futtatsa sorn nem vltozhat meg.
A msik csoportot a vltozk kpezik. Ezek rtke a program futtatsa sorn
megvltozhat. A vltoz is ktfle lehet: egyszer (skalr) s sszetett.

INF-501a.doc 2011.09.05 Kgelmann Gbor

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 )

INF-501a.doc 2011.09.05 Kgelmann Gbor

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

a AND b a OR b a XOR b NOT a


1
1
0
0
0
1
1
0
1
1
1
0
0
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.

A vltozk fggvnyek segtsgvel is kaphatnak rtket. Pldaknt nhny,


majdnem minden programnyelvben elfordul, beptett fggvny:
Matematikai
ABS(x)
x numerikus
COS(x)
x numerikus
SQRT(x)
x nemnegatv numerikus

INF-501a.doc 2011.09.05 Kgelmann Gbor

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)

x sztring, y nemnegatv egsz


x sztring

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

Az utbbi plda olvassa: Olvasd ki i rtkt, nveld meg eggyel, s az


eredmnyt helyezd vissza i - be.

INF-501a.doc 2011.09.05 Kgelmann Gbor

DF Informatikai Intzet

1.2 Az algoritmusokban elfordul tevkenysgek


Alaptevkenysgek:
Adatok beolvassa megadott vltozkba.
(Input tevkenysg)
Adatok kirsa. Az adat lehet konstans, vltoz tartalom, s kifejezs
rtke.
(Output tevkenysg)
A kifejezsek rtknek kiszmtsa.
(rtkad tevkenysg)
Vezrltevkenysgek:
A szmtgp az egyes mveleteket az utastsok lersnak sorrendjben
hajtja vgre.
(Szekvencilis vezrltevkenysg)
Egy kifejezs rtktl fggen kivlasztja a kvetkez tevkenysget.
(Szelekcis vezrltevkenysg)
Egy vagy tbb tevkenysget, egy feltteltl fggen ismtel.
(Itercis vezrltevkenysg)

1.2.1 Szekvencilis vezrltevkenysg


Msnven szekvencilis (soros) vgrehajtsi folyamat. A legtbb
adatfeldolgozsi folyamat ezt a logikt kveti.
........
A - tevkenysg
B - tevkenysg
A vgrehajts sorrendje
C - tevkenysg
.......

1.2.2 Szelekcis vezrltevkenysg


Feltteltl fgg vgrehajtsi folyamat. Olyan felttelt tartalmaz, amely tbb
alternatv tevkenysg kzl egynek a kivlasztshoz vezet.
Tpusai:
Egyszer alternatva
IF
felttel
THEN
[A - modul]
(Az IF szerkezet vge)

INF-501a.doc 2011.09.05 Kgelmann Gbor

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

A modul egy, vagy tbb tevkenysget (utastst) foglal magba.

1.2.3 Itercis vezrltevkenysg


Feltteltl fgg, ismtld vgrehajtsi folyamat, msnven ciklus. Az
ismtld utasts(ok) alkotjk a ciklustrzset (ciklusmagot). Az itercis vezrltevkenysg msik rsze a ciklusfej.
ltalnos esetben a ciklusfej rsztevkenysgei:
Ciklusvltoz kezdeti rtkadsa (inicializls)
A ciklusvltoz tesztelse (a ciklusbl val kilps rdekben)
A ciklusvltoz rtknek mdostsa
Konkrt programnyelvtl fggen az els, illetve harmadik rsztevkenysg el is
maradhat.
Tpusai:
Elltesztel - WHILE tpus ciklus
WHILE felttel
[modul (ciklusmag)]
(A WHILE szerkezet vge)
Elltesztel - FOR tpus ciklus
FOR i = k TO v BY m
[modul (ciklusmag)]
(A FOR szerkezet vge)

INF-501a.doc 2011.09.05 Kgelmann Gbor

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.

INF-501a.doc 2011.09.05 Kgelmann Gbor

DF Informatikai Intzet

2. Az algoritmusok megfogalmazsra felhasznlhat


segdeszkzk

Ebben a fejezetben a leggyakrabban hasznlt algoritmus ler mdszereket tekintjk


t:
Pszeudkd
Folyamatbra
Struktogram
Szerkezeti bra

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.

INF-501a.doc 2011.09.05 Kgelmann Gbor

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.

Elltesztel - FOR tpus ciklus:


Ciklus <kezdrtktl> <vgrtkig> [<lpskz>]
<mveletek>
ciklus vge.

Htultesztel - DO - WHILE tpus ciklus:


Ciklus
<mveletek>
amg <felttel> ciklus vge.

Eljrs (szubrutin, fggvny):


<az eljrs neve> (<formlis paramterlista>)
<mveletek>
<az eljrs neve> 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

INF-501a.doc 2011.09.05 Kgelmann Gbor

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.

2.2.1 Folyamatbra szimblumok


Az aritmetikai (ltalnos) utasts szimbluma:
Elssorban aritmetikai utastsok jellsre hasznlatos, de minden olyan
esetben is hasznlhat, amelyre nincs kln szimblum.

a=b

I=I+1

A mvelet vgrehajtsi sorrend:


A sorrendet nyilakkal jelljk. A fentrl lefel, illetve a balrl jobbra mutat
nyilat nem kell kitenni.
A folyamatvonalak nem keresztezhetik egymst.

INF-501a.doc 2011.09.05 Kgelmann Gbor

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

A beolvas (input) s kir (output) mvelet szimbluma:


A szimblum nem hatrozza meg az adott perifria tpust, csak az adatmozgs irnyt.
A beolvass specilis rtkadsnak tekinthet. A kir mvelet esetn konstans
rtk is megadhat.
Read:
A

R:
A

Write:
A

Read
A, B, C

W:
A

W:
Hibs!

Az eljrs hvs szimbluma:


Amennyiben a feladat mrete s bonyolultsga megkvnja hasznlhat.

Eljrsnv

KIIRAS

Az algoritmus kezds s befejezs szimbluma:


Minden folyamatbrnak egy kezd s egy vgpontja lehet. Az eljrsoknl a
szimblumok az eljrs nevt is tartalmazzk.
START

STOP

START eljrs

STOP eljrs

INF-501a.doc 2011.09.05 Kgelmann Gbor

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

2.2.2 A vezrltevkenysgek megvalstsa


folyamatbrval
Szelekcis vezrltevkenysg:
Egyszer alternatva
I
felttel

A - modul

N
Ketts alternatva
I
felttel

A - modul

N
B - modul

sszetett alternatva
N
felttel(1)
I
A(1) - modul

INF-501a.doc 2011.09.05 Kgelmann Gbor

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

Htultesztel - DO - WHILE tpus ciklus

ciklusmag

I
felttel
N

INF-501a.doc 2011.09.05 Kgelmann Gbor

15

DF Informatikai Intzet

2.2.3 Pldk folyamatbrra


1. Plda
Olvasson (krjen) be szmokat s vlassza ki kzlk a maximlis rtkt! A
maximumot jelentse meg!
Az els megolds:
A legegyszerbb, de csak bizonyos felttelek mellett mkdik helyesen. Ezek
a felttelek:
A szmok maximum hat jegyek
A szmsorozat vgt a 999999 jelzi
A szmok kztt nem lehet a -999999 s a 999999
A vltozk:

A A beolvasott szm
M A maximum

1. plda / 1. megolds

INF-501a.doc 2011.09.05 Kgelmann Gbor

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

INF-501a.doc 2011.09.05 Kgelmann Gbor

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

A kvetkez oldalon lthatjk a fprogram (falgoritmus) folyamatbrjt:

INF-501a.doc 2011.09.05 Kgelmann Gbor

18

DF Informatikai Intzet

2. plda / 1. lap

INF-501a.doc 2011.09.05 Kgelmann Gbor

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.

INF-501a.doc 2011.09.05 Kgelmann Gbor

20

DF Informatikai Intzet
A felhasznlt tmbket s ciklusvltozkat az albbi brn szemlltetjk:
J
1

1
I

HJ

HJ - Hallgatk jegyei mtrix

TA

TA - Tantrgy tlag vektor

TE

TE - Tantrgy jegyeloszls mtrix

X
1
1
K
5

A fprogram (falgoritmus):

3. plda / 1. lap

INF-501a.doc 2011.09.05 Kgelmann Gbor

21

DF Informatikai Intzet

Az eljrsok:

3. plda / 2. lap

INF-501a.doc 2011.09.05 Kgelmann Gbor

22

DF Informatikai Intzet

3. plda / 3. lap

INF-501a.doc 2011.09.05 Kgelmann Gbor

23

DF Informatikai Intzet

3. plda / 4. lap

INF-501a.doc 2011.09.05 Kgelmann Gbor

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.

2.3.1 A vezrltevkenysgek megvalstsa


struktogrammal
Szelekcis vezrltevkenysg:
Egyszer alternatva
//

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

INF-501a.doc 2011.09.05 Kgelmann Gbor

//
nem

A(3) - modul

25

DF Informatikai Intzet

Itercis vezrltevkenysg:
Elltesztel - WHILE tpus ciklus
felttel

ciklusmag

Elltesztel - FOR tpus ciklus


i=k;v;m

ciklusmag

Htultesztel - DO - WHILE tpus ciklus

ciklusmag

felttel

INF-501a.doc 2011.09.05 Kgelmann Gbor

26

DF Informatikai Intzet

2.3.2 Plda struktogramra


Olvassunk (krjnk) be 20 szmot! Keressk ki a szmsorozat pozitv elemeinek minimumt, szmtsuk ki ezek sszegt s tlagt!
A feladatban felhasznlt vltozk:
A vltozk: MIN
A pozitv szmok minimum rtke
OSSZEG
A pozitv szmok sszege
DARAB
A pozitv szmok darabszma
ATLAG
A pozitv szmok tlaga
I
Ciklusvltoz

INF-501a.doc 2011.09.05 Kgelmann Gbor

27

DF Informatikai Intzet
A feladat struktogramja:

MIN = 0
OSSZEG = 0
DARAB = 0
I = 1 ; 20 ; 1
Be: ADAT
//

ADAT > 0

//

igen

nem

OSSZEG = OSSZEG + ADAT


DARAB = DARAB + 1
// DARAB = 1 OR ADAT < MIN //

//

igen

nem

MIN = ADAT

DARAB > 0
igen

ATLAG = OSSZEG / DARAB


Ki: MIN ; DARAB ; ATLAG

INF-501a.doc 2011.09.05 Kgelmann Gbor

//
nem
Ki:
" Nem volt
pozitv! "

28

DF Informatikai Intzet

2.4 A szerkezeti bra (Jackson-diagram)


A szerkezeti bra modulokbl pl fel. A modulok jelentik az elvgzend feladatokat. Jellsre tglalapokat hasznlunk, amelybe a modul
nevt, vagy az elvgzend feladatot rjuk.

2.4.1 A vezrltevkenysgek megvalstsa szerkezeti


brval
Szekvencilis vezrltevkenysg:

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:

INF-501a.doc 2011.09.05 Kgelmann Gbor

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.

Elltesztel - FOR tpus ciklus

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.

INF-501a.doc 2011.09.05 Kgelmann Gbor

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.

2.4.2 Plda szerkezeti brra


Olvassunk (krjnk) be 20 szmot! Keressk ki a szmsorozat pozitv elemeinek minimumt, szmtsuk ki ezek sszegt s tlagt!
A feladatban felhasznlt vltozk:
MIN
OSSZEG
DARAB
ATLAG
I

- A pozitv szmok minimum rtke


- A pozitv szmok sszege
- A pozitv szmok darabszma
- A pozitv szmok tlaga
- Ciklusvltoz

INF-501a.doc 2011.09.05 Kgelmann Gbor

31

DF Informatikai Intzet

A feladat szerkezeti brja:

Pozitv szmok minimuma, sszege, tlaga

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.!"

Egy elem vizsglata

Beolvass
Be: ADAT

Vizsglat
ADAT>0
Feldolgozs

sszeads

Minimum

OSSZEG = OSSZEG + ADAT


DARAB = DARAB + 1

DARAB=1 OR
ADAT< MIN
MIN = ADAT

INF-501a.doc 2011.09.05 Kgelmann Gbor

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

INF-501a.doc 2011.09.05 Kgelmann Gbor

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

Kivons komplemens szm segtsgvel (Bin):


1011101101 - 11011111 = ?
0011011111 Egyes komplemense:
1100100000
Kettes komplemense: +
1
1100100001
1011101101
+ 1100100001
110000011102
talakts decimlisbl hexadecimlisba:
51.7510
33.C16
51 / 16
3
0

3
3

75 * 16
12 00

talakts hexadecimlisbl binrisba:


33.C16
11 0011.112
sszeads (Hex):
1AF
+ 3A
1E916

431
+ 58
48910

INF-501a.doc 2011.09.05 Kgelmann Gbor

34

DF Informatikai Intzet
Kivons (Hex):
2BA
- 1E2
D816

698
- 482
21610

Kivons komplemens szm segtsgvel (Hex):


2BA - 1E2 = ?
1E2

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.

Egy bjt rtke teht a kvetkez formban adhat meg:


1110 10102 = EA16
Znarsz Szmrsz
High
Low

INF-501a.doc 2011.09.05 Kgelmann Gbor

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

Fixpontos binris tpus


A kettedespont a szm utn kpzelend (Csak egsz rtk)
A negatv szmok kettes komplemens formban
A binris aritmetika szmol vele

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

INF-501a.doc 2011.09.05 Kgelmann Gbor

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

Vals tpus adatok brzolsa


Minden szm felrhat a kvetkez formban:
m * r e
Ahol m a mantissza, r a szmrendszer alapszma (radixa), e a kitev
(exponens)
Binris szmrendszerben teht:
e
m * 2
A trtszmok is brzolhatk
Az exponens 8, 11, 15 bit, tpustl fggen
e
A trols normalizlt formban: 1.m * 2
IEEE 754 szabvny
Tudomnyos, gazdasgi szmtsokhoz
A lebegpontos aritmetika hasznlja
A hossz alapjn:
Egyszeres pontossg lebegpontos szm
(Single precision, 4 bjt)
A szmbrzolsi tartomny:
1038 10+38
A pontossga: 6 - 7 decimlis jegy
Felptse:
31

23 22

Me Exponens (ek)

0 bit

Mantissza (m)

Me - A mantissza eljele: + esetn 0


- esetn 1
Az talakts lpsei pldn bemutatva:
a. A decimlis szm talaktsa binriss
26.7510
11010.112
b. Normalizls
11010.11
1.101011 * 24

INF-501a.doc 2011.09.05 Kgelmann Gbor

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)

Me - A mantissza eljele: + esetn 0


- esetn 1
Kiterjesztett pontossg lebegpontos szm
(Extended precision, 10 bjt)
A teljes hossz 80 bit, amibl 1bit mantissza eljel, 15 bit az
exponens, s 64 bit a mantissza.
A szmbrzolsi tartomny:
104932 10+4932
A pontossga:
18 - 19 decimlis jegy
A korriglt exponens:
ek = e + 16385

INF-501a.doc 2011.09.05 Kgelmann Gbor

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

INF-501a.doc 2011.09.05 Kgelmann Gbor

39

You might also like