1144. 5.tétel

6
1144-5. tétel Egy rendszer tervezésénél milyen módszerekkel tenné hatékonyabbá a benne lévő ciklusok futását? Információtartalom vázlata Alapfogalmak (elágazás, ciklus stb.) Ciklusok megállító feltételeinek vizsgálata Programozási tételek (alapalgoritmusok) Keresések, rendezések gyors változatai Kódolás Globális és lokális változók használata A ciklus : az algoritmusok egyik alapvető eszköze, amely az ismétlődő (azonos vagy hasonló) tevékenységek megvalósítására szolgál. A ciklust az egyes programozási nyelvek különböző kulcsszavakkal valósítják meg, de a működési módjukat tekintve három alaptípusba sorolhatók aszerint, hogy hányszor futnak le: ezek az elöltesztelő, a hátultesztelő és a számlálós ciklus. Az elágazás: az elágazások teszik lehetővé, hogy a program változói értéktől függően különböző tevékenységet hajtson végre. Ciklus fajtái: Feltételes ciklusok Elöltesztelő ciklus While do: addig ismétel amíg a feltétel igaz, ha a feltétel hamis nem kerül végrehajtásra While feltétel do Begin …… End; I:= While (I<=10) do Begin Writeln(I) I:=I+1 End; Hátultesztelő ciklus

Upload: informatikaanyag

Post on 03-Jul-2015

580 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: 1144. 5.tétel

1144-5. tétel Egy rendszer tervezésénél milyen módszerekkel tenné hatékonyabbá a benne lévő ciklusok futását?

Információtartalom vázlata

–Alapfogalmak (elágazás, ciklus stb.)– Ciklusok megállító feltételeinek vizsgálata

–Programozási tételek (alapalgoritmusok)– Keresések, rendezések gyors változatai

–Kódolás– Globális és lokális változók használata

A ciklus: az algoritmusok egyik alapvető eszköze, amely az ismétlődő (azonos vagy hasonló) tevékenységek megvalósítására szolgál. A ciklust az egyes programozási nyelvek különböző kulcsszavakkal valósítják meg, de a működési módjukat tekintve három alaptípusba sorolhatók aszerint, hogy hányszor futnak le: ezek az elöltesztelő, a hátultesztelő és a számlálós ciklus.

Az elágazás: az elágazások teszik lehetővé, hogy a program változói értéktől függően különböző tevékenységet hajtson végre.

Ciklus fajtái:

Feltételes ciklusok Elöltesztelő ciklus

While do: addig ismétel amíg a feltétel igaz, ha a feltétel hamis nem kerül végrehajtásraWhile feltétel do

Begin……End;

I:=While (I<=10) do

BeginWriteln(I)I:=I+1

End;Hátultesztelő ciklus

Repeat until: egyszer mindenképpen lefut, az utasítás addig ismétel míg a feltétel hamisRepeat…….Until feltéte

I:=1Repeat

Writeln (I)I:=I+1

Page 2: 1144. 5.tétel

Until (I>10)

Számlálós (FOR) ciklus For I:=1 to N do

Begin……End;

Addig ismétel amíg a ciklusváltozó nem lesz = N értékével.

ElágazásokIf Then (kétágú) if feltétel then parancs

If feltétel … then BeginBegin ……….. End;End

ElseBegin……End

A logikai értéket összekapcsolhatjuk :AND, OR, NOT, XOR műveletekkel

Case Of (többágú)Case változónév of

Érték1: Begin…..End;

Érték2: Begin……End;

End;

Az algoritmus fogalma: Az algoritmus több, esetleg végtelen sok azonos jellegű, egymástól csak a kiindulópontban különböző feladatok megoldására használható eljárás, amelyek során utasításszerűen előre meghatározott lépéseket kell adott sorrendbe elvégeznünk. Az algoritmus készítésénél első lépés, hogy elkészítsük a problémamegoldás tervét.

Algoritmus leíró eszközök: - szöveges leírás - blokkdiagram - struktogram

Első lépésnél fentről lefelé módszerrel célszerű készíteni, a megoldásnál pedig lentről felfelé. A tervet átültetjük konkrét programozási nyelvekre. A feladat lépéseit a különféle utasítások jelentik:

- I/O utasítás - értékadó utasítás - felvételvizsgáló- vagy tesztelő utasítás - adat átalakító utasítás

Page 3: 1144. 5.tétel

Az algoritmus leíró eszközei:1., Szekvencia: sorban egymás után való végrehajtás. 2., Elágazás: elágazik, de továbbra is előre megy. 3., Ciklus: elágazik, és visszamegy egy időre.

KeresésekEgy sorozatban keresünk egy bizonyos (vagy egy bizonyos tulajdonságú; kulcsú) elemet. Tehát szeretnénk megtalálni magát az elemet és esetleg a sorozatban elfoglalt helyét is.Keresések gyors változataiStrázsás keresésA[N+1]:= adatI:=1Amíg A[I]<> adat ismétel

I:=I+1Avége

Hely:=IStrázsáskeresés:=(I<=N)

Fvége

Bináris keresésE:=1, U:=N, K:=(E+U)/2Amíg (E<K=U) és A([K]<adat) ismétel

ElágazásAmikor adat <A[K]:U:=K-1Amikor adat >A[K]:E:=K+1EvégeK:=(E+U)/2

AvégeHely:=KBináris keresés:=E<=U

Fvége

RendezésekAz alapvető algoritmusok legnagyobb csoportját a rendezések alkotják: Egy sorozat elemeit valamilyen szempont szerint növekvő vagy csökkenő sorrendbe szeretnénk állítani. Ezt például a sorozat elemeinek felcserélgetésével (permutációjával) érhetjük el. Fontos tudni, hogy egy elemsorozatnak bármilyen sorrendjét elő tudjuk állítani úgy, hogy egymás után, esetleg többször elemcseréket végzünk. Hogy milyen terv szerint végezzük az elemcseréket, annak rengeteg módja lehet, ezért is létezik sokfajta rendezés. A rendezési algoritmusok közül nincs abszolút értelemben legjobb, ezért mindig az adott feladatnak legmegfelelőbb rendezést választjuk ki. A rendezések fontos jellemzője a gyorsaság (végrehajtási idő), tárigény vagy memóriaigény (a felhasznált változók száma ), az adatainkkal végrehajtott összehasonlítások (kisebb-e ) és mozgatások (értékadások) száma . Ezeket a jellemzőket együttesen hatékonysági mutatóknak szokták nevezni. A hatékonysági mutatók különösen fontosak akkor, ha nagyszámú adatot rendezünk, az adatelemek nagyméretűek (pl. sokmezős rekordok), vagy ha file-kezeléssel rendezünk (rendezés közben lemezre írjuk az adatokat).A különféle rendezéseknek sok változata és javítása is van.

Page 4: 1144. 5.tétel

Kiválasztó rendezés (minimum kiválasztásos rendezés)(legkisebb elem kiválasztásán alapuló rendezés,rendezés közvetlen kiválasztással)Eljárás

Ciklus I:= 1-NIndex:=I : érték:=A(I)

Ciklus J:=I+1-NHa érték >A(J) akkor érték:=A(J) : index:=J

Ciklus végeA(index):= A(I) : A(I):=értékCiklus vége

Eljárás vége

Fizikai és logikai rendezésekMivel a mozgatások száma alapvetően meghatározza a rendezések mutatóit, igen elterjedten használnak olyan rendezéseket, amelyek ezt kiküszöbölik. Ezek nem mozgatják az elemeket, hanem hozzájuk rendelnek egy sorszámot, ami a sorrendben elfoglalt helyüket mutatja. (Vagyis fizikailag minden adatelem a helyén marad, és az adatszerkezet kibővítésével vagy plusz adatszerkezet létrehozásával rögzítik az elemekhez tartozó sorszámokat. – Ha az adatelemek állományban vannak, akkor ez akár lehet egy külön fájl is.) Rendezett sorrendben való kiíratáskor („listázáskor”) pedig a sorszámuknak megfelelő rendben adják elő a sorozat elemeit. Ezt logikai rendezésnek vagy indexelésnek nevezik, az előző módszereinket pedig fizikai rendezésnek.

Egyéb rendezési lehetőségekRendezések megvalósítására e rendezéseken kívül felhasználhatunk dinamikus adatszerkezetekkel dolgozó algoritmusokat is.

Algoritmus kódolásaAz algoritmus alapján a kiválasztott programozási nyelv szimbólumainak felhasználásával a program elkészítéseMinden programozási nyelvnek megvannak a sajátosságai, melyek bizonyos mértékig behatárolják, hogy hol és milyen feladatokat érdemes, célszerű az adott nyelven megvalósítani.

Globális és lokális változókA változók érvényességi köre alapján szokás globális és lokális változókat megkülönböztetni:A főprogramban deklarált változó az egész programban érvényes, ezért globális változónak nevezzük.Az eljárásban deklarált változó csak abban az eljárásban érvényes, melyben deklaráltuk, (és az ebbe ágyazottakban ), ezért lokális változónak nevezzük. A változó addig van a memóriában, amíg az eljárás aktív. Előfordulhat olyan eset, amikor a globális és lokális változó neve megegyezik. Ilyenkor a blokkban az ott deklarált (lokális) változó lesz az érvényes. Az eljárás hívásakor a globális változó nem veszti el értékét, az eljárás lefutása után az értéke ismét hivatkozható.