Professional Documents
Culture Documents
Gyak 1
Gyak 1
gyakorlat
Adatstruktúrák, algoritmusok
Adatstruktúrák tervezése
A programozási feladatok megoldása során először az algoritmus vázlatát készítjük el, majd a
szükséges adatstruktúrák definícióját: milyen objektumokat akarunk tárolni, és ezekkel
milyen műveleteket akarunk végezni, például
• üres adatstruktúra létrehozása,
• elem berakása az adatstruktúrába,
• speciális műveletek (pld. keresés, a legkisebb kulcsú elem kivétele).
Alapvető adatszerkezetek:
• egyszerű: egy változó egy érték,
• sor és verem,
• tömb,
• halmaz,
• láncolt lista.
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 sorrendben elvégeznünk.
Röviden:
Egy probléma megoldásának véges számú részlépésben történő egyértelmű és teljes leírását
algoritmusnak nevezzük.
Követelmények:
• Az egyes részlépéseknek végrehajthatónak kell lennie.
• A lépéseknek egyértelműnek kell lenni. Ez biztosítja, hogy tetszőlegesen sokszor
végrehajtva, mindig ugyanazt a részeredményt kapjuk.
• A részlépéseket véges sokszor kell végrehajtani.
Az algoritmus részei:
• szekvenciák (utasítások egymás utánisága),
• iterációk más néven ciklusok (utasítások ismétlése, amíg teljesül egy vizsgált feltétel),
• szelekciók (az algoritmus feltételtől függő elágaztatása).
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,
• feltételvizsgáló vagy tesztelő utasítás,
• adatátalakító utasítás.
Az algoritmus tulajdonságai:
1. Meg kell adni a végrehajtandó műveleteket, azaz le kell írni, hogy mely adatokkal
milyen átalakítást kell végezni. Valamint azt, hogy az eredményül kapott adatokat a
tevékenység későbbi fázisában fel kell-e használni, alkalmazni.
2. Meg kell fogalmazni azokat a különleges eseteket, melyek az átlagosnál eltérő
megoldást igényelnek.
3. Meg kell adni a műveletek sorrendjét az összes esetre vonatkozólag.
4. Csak olyan instrukciókat tartalmazzon, amely egyértelműen hajtható végre.
5. Mindezeket az információkat a végrehajtó számára érthető és egyértelműen
értelmezhető formában, szimbólumrendszerben kell közvetítenie.
Példa algoritmusok
1. LNKO algoritmus
Pszeudokód:
BEGIN
INPUT (m, n)
r := m%n
WHILE (r>0)
m := n
n := r
r :=m%n
END
OUTPUT (n)
END
BEGIN
INPUT: a[N]
i := 1, s := 1, g := 0, ma := 0
WHILE i<=N
IF a[i] >0
s := s*a[i]
g := g+1
END
i := i+1
END
ma := s*exp(1/g)
OUTPUT: ma
END