ALGORITMUSOK Kivonatolta Katona Lszl rta Ionescu Klra claracs

  • Slides: 64
Download presentation
ALGORITMUSOK Kivonatolta: Katona László Írta: Ionescu Klára clara@cs. ubbcluj. ro

ALGORITMUSOK Kivonatolta: Katona László Írta: Ionescu Klára clara@cs. ubbcluj. ro

Az algoritmus fogalma A mindennapi életben nem tudjuk mindig megállapítani, hogy egy adott helyzetben

Az algoritmus fogalma A mindennapi életben nem tudjuk mindig megállapítani, hogy egy adott helyzetben elérhető-e kitűzött célunk, és ha igen, hogyan. l A „megoldás” két dolgot feltételez: l – az eredmény milyenségének, azaz elvárásainknak pontos ismeretét; – annak a folyamatnak a tervét, amely az eredmény eléréséhez vezet. l A cél elérése érdekében megtervezzük az elvégzendő cselekvések sorozatát, vagyis megtervezzük az algoritmust, amely a kívánt eredményhez vezet.

Az algoritmus fogalma Olyan problémamegoldó eljárást (algoritmust) kell kidolgoznunk, amely véges számú lépésben befejeződik,

Az algoritmus fogalma Olyan problémamegoldó eljárást (algoritmust) kell kidolgoznunk, amely véges számú lépésben befejeződik, és a bemeneti adatok alapján előállítja a kimeneti adatokat, azaz megoldja a feladatot. l A számítógép csak egyértelmű leírást ért meg és így követni fogja elképzelésünket. l

Definíció (röviden) Az algoritmus egy adott feladatkör megoldására kidolgozott eljárás, amely utasításszerűen előre megadott

Definíció (röviden) Az algoritmus egy adott feladatkör megoldására kidolgozott eljárás, amely utasításszerűen előre megadott lépések sorozatából áll. Definíció (bővebben) Algoritmus alatt egy véges, bizonyos sorrendben megadott egyértelmű műveletsort értünk, amely mechanikusan elvégezhető (anélkül, hogy az ember arra szorulna, hogy saját maga döntéseket hozzon), és amely a rendelkezésre álló adatokból új adatokat hoz létre, vagy más formában vezet a kívánt eredményhez.

Valamely algoritmus akkor helyes, ha eleget tesz az alábbi követelményeknek: l l Elvégezhető –

Valamely algoritmus akkor helyes, ha eleget tesz az alábbi követelményeknek: l l Elvégezhető – az ember is képes eljutni az eredményhez, ha szigorúan betartja az algoritmus lépéseit; Meghatározott – bármely pillanatban tudjuk, hogy éppen mi fog történni; Általános – egy adott feladatkör megoldására képes; Véges – az algoritmus véges számú lépésben vezet eredményre.

Más tulajdonságok világos ■ az algoritmus leírása pontos, érthető, követhető; l hatékony ■ megkeressük

Más tulajdonságok világos ■ az algoritmus leírása pontos, érthető, követhető; l hatékony ■ megkeressük azt az algoritmust, amely a legkevésbé veszi igénybe a számítógép erőforrásait: nem terheli fölösleges műveletek elvégzésével, illetve fölösleges adatok tárolásával; ezek az algoritmusok „hatékonyak”, „optimálisak”, vagyis a bonyolultságuk a lehető legkisebb. l

Az algoritmus l Egy algoritmus kezdeti értékeket igényel, ezekből „származtatja” az eredményt. A kezdeti

Az algoritmus l Egy algoritmus kezdeti értékeket igényel, ezekből „származtatja” az eredményt. A kezdeti értékeket bemeneti (bemenő) adatoknak nevezzük. l Az algoritmus által szolgáltatott (kiszámolt, megtalált, kiírt stb. ) adatokat (eredményt) kimeneti (kimenő) adatoknak nevezzük. l Mindaz amit az algoritmus elvégez, funkciójaként, nevezhető meg.

Az algoritmusok leírásához használt elemek Adatok a) numerikus adatok; a numerikus adatok cso-portjába tartoznak

Az algoritmusok leírásához használt elemek Adatok a) numerikus adatok; a numerikus adatok cso-portjába tartoznak az egész típusú adatok (egész számok), valamint a valós típusú adatok (tizedes számok). b) logikai adatok; mindössze két értéket vehetnek fel: a logikai igaz (true), valamint logikai hamis (false) értékeket. c) karakterláncok; egyszeres idézőjelek (aposztrófok) közé zárt karaktersorozatot jelentenek (például 'ez egy szoveg' vagy 'A'.

Állandók (konstansok) Algoritmusok írásakor numerikus, logikai és karakterlánc típusú állandókat használhatunk. l Ezek nem

Állandók (konstansok) Algoritmusok írásakor numerikus, logikai és karakterlánc típusú állandókat használhatunk. l Ezek nem változtatják értéküket az algoritmus lépéseiben. Példák: 12, 3. 14, true, 'algoritmus' Szimbolikus konstans: az állandó értékét hozzárendeljük egy választott névhez. Példák: a=12, pi=3. 14, igaz=true, cim='algoritmus' l

Változók Az algoritmusok leírásakor használt olyan elemeket, amelyeknek értéke, akár új értékadás, beolvasás, vagy

Változók Az algoritmusok leírásakor használt olyan elemeket, amelyeknek értéke, akár új értékadás, beolvasás, vagy valamely számítás során módosulhat, változóknak nevezzük. l Minden változónak van azonosítója, típusa, pillanatnyi értéke, valamint helye (címe) a memóriában. De beszélünk a jelentéséről is. l A változók típusa lehet numerikus, logikai és karakterlánc (standard típusok). Mellettük még végtelen sok típust definiálhat maga a programozó. l

Kifejezések l l l A kifejezés egy számítás kijelölése: előírja valamely érték kiszámításának módját.

Kifejezések l l l A kifejezés egy számítás kijelölése: előírja valamely érték kiszámításának módját. A kifejezés operátorokból (műveletekből) és operandusokból áll. Az operandusok lehetnek konstansok, változók vagy függvénykifejezések. A kifejezés kiértékelése az operátorprecedencia figyelembevételével történik. Azonos prioritású operátorok esetében a kifejezés kiértékelését balról jobbra haladva végezzük. Az algoritmusok leírásakor numerikus, logikai és karakterlánc típusú kifejezéseket használhatunk.

Egész típusú kifejezések Az egész típusú kifejezések operandusai egész típusúak. Az egész típusú kifejezésekben

Egész típusú kifejezések Az egész típusú kifejezések operandusai egész típusúak. Az egész típusú kifejezésekben a következő operátorokat használhatjuk: Operátor Aritmetikai művelet + összeadás – kivonás * szorzás [a/b] egész számok osztásának hányadosa (szintén egész szám) maradék[a/b] egész számok osztási maradéka

Valós típusú kifejezések A valós típusú kifejezések operandusai egész vagy valós típusúak. A valós

Valós típusú kifejezések A valós típusú kifejezések operandusai egész vagy valós típusúak. A valós típusú kifejezésekben a következő operátorokat használjuk: Operátor Aritmetikai művelet + összeadás – kivonás * szorzás / osztás (A / valós eredményt szolgáltat még akkor is, ha az operandusok egész típusúak. )

Logikai kifejezések A logikai kifejezések operandusai logikai típusúak. l A logikai kifejezések leírásában a

Logikai kifejezések A logikai kifejezések operandusai logikai típusúak. l A logikai kifejezések leírásában a következő operátorokat használhatjuk: – relációs operátorok: <, >, , , =, <>; – logikai operátorok: nem (az eredeti állítás tagadása, ellenkezője), és, vagy, xor (kizáró vagy). l

Karakterlánc típusú kifejezések Egyszerű műveletünk egy van: a karakterláncokat össze lehet fűzni. Példa Legyen

Karakterlánc típusú kifejezések Egyszerű műveletünk egy van: a karakterláncokat össze lehet fűzni. Példa Legyen a kifejezés: a + 'szöveg', ahol a egy karakterlánc típusú változó; ha a értéke ' Ez egy ', akkor a kifejezés értéke ' Ez egy szöveg' lesz. l Más műveletek is lehetségesek, de ezek megvalósítását függvényekkel és eljárásokkal fogjuk elvégezni.

Műveletek Az algoritmusok leírásakor az alábbi műveleteket használhatjuk: l ki/bemeneti műveletek; l értékadás; l

Műveletek Az algoritmusok leírásakor az alábbi műveleteket használhatjuk: l ki/bemeneti műveletek; l értékadás; l döntéshozatal.

Ki/bemeneti műveletek A bemeneti művelet szerepe bekérni a szükséges bemeneti adatokat. l Ezeket billentyűzetről

Ki/bemeneti műveletek A bemeneti művelet szerepe bekérni a szükséges bemeneti adatokat. l Ezeket billentyűzetről vagy állományokból olvashatjuk be. l A kimeneti művelet szerepe a feldolgozott adatokat, eredményeket megjeleníteni. l Ez a kiírás történhet a képernyőre, papírra vagy valamilyen állományba. l

Értékadás Az értékadó művelet a : = (vagy ) műveleti jel bal oldalán található

Értékadás Az értékadó művelet a : = (vagy ) műveleti jel bal oldalán található változóhoz hozzárendeli a jobb oldalon levő kifejezés értékét. Példa: a 5 + x Döntéshozatal A döntéshozó művelet lényege, hogy adott feltételek teljesülésekor egy bizonyos műveletsor elvégzését írja elő, egyébként egy másik műveletsorét. Példa: Ha a > 0 akkor b 12 különben b 100

Adatszerkezetek Adatszerkezet alatt az adatok olyan csoportosulását értjük, amelyben pontos szabályok szerint szervezzük a

Adatszerkezetek Adatszerkezet alatt az adatok olyan csoportosulását értjük, amelyben pontos szabályok szerint szervezzük a feldolgozandó adatokat. l Egy adattípuson belül azonos tulajdonságú értékeket foglalunk egybe, amelyekhez hozzárendeljük az elvégezhető műveleteket. l – egyszerű adattípusok: például az egész típusú számot nem tekintjük számjegyek sorozataként. – összetett adattípusok: az értékek elemekre bonthatók, az elemek egy adott szerkezetnek megfelelően csoportosulnak. – Az adatszerkezeten belül ismerjük az elemek közti kapcsolatot (szerkezetet).

Példa l l A Pascalban az Integer (a C-ben az int) egy egész adattípus.

Példa l l A Pascalban az Integer (a C-ben az int) egy egész adattípus. Ha több Integer (int) típusú számot szeretnénk egy adatkent kezelni, akkor egy sorozatot képezünk belőlük. Így a sorozat egy adatszerkezet, amelynek az elemei egész számok. Az elemek közti kapcsolat az, hogy egymás után következnek. Műveletek: elemek lekérdezése a sorszámuk (indexük) segítségével, értékadás stb.

Algoritmusok ábrázolása folyamatábrák és pszeudokód nyelvek segítségével Az algoritmusok ábrázolásához használhatunk: – folyamatábrákat –

Algoritmusok ábrázolása folyamatábrák és pszeudokód nyelvek segítségével Az algoritmusok ábrázolásához használhatunk: – folyamatábrákat – pszeudokód nyelvet – különböző típusú diagramokat – a hétköznap használt nyelvet A folyamatábra grafikus ábrázolásmód, amelynek segítségével nem csupán az egyes műveleteket, hanem ezek elvégzésének sorrendjét és összefüggését is feltüntetjük.

Pszeudokód nyelvek Közelebb állnak a programozási nyelvekhez, de ezeknél kevésbé szigorú szabályok alapján használjuk

Pszeudokód nyelvek Közelebb állnak a programozási nyelvekhez, de ezeknél kevésbé szigorú szabályok alapján használjuk őket, mivel nem abból a célból születtek, hogy a számítógépen futtatható programot írjunk. l Az úgynevezett pszeudokód, az elemi struktúrákat írja le egyszerű utasítások formájában. l A pszeudókodban leírt algoritmus nagyon könnyen átírható bármely programozási nyelvre. l

A strukturált programozás alapelvei Hoare és Dijkstra – a strukturált programozás alapelve: az algoritmusok

A strukturált programozás alapelvei Hoare és Dijkstra – a strukturált programozás alapelve: az algoritmusok leírására néhány alapstruktúrát (elemi struktúrát) használunk, amelyeknek egyetlen bejárata és egyetlen kijárata van. l A kitűzött feladatot részfeladatokra bontjuk, majd e részfeladatok megoldásával jutunk el az eredeti feladat megoldásához. l Bármely algoritmus: alapstruktúrák lineáris szekvenciája.

Alapstruktúrák lineáris struktúra – valamely művelet feltétel nélküli elvégzését jelenti; l elágazási (alternatív) struktúra

Alapstruktúrák lineáris struktúra – valamely művelet feltétel nélküli elvégzését jelenti; l elágazási (alternatív) struktúra – lehetővé teszi, hogy valamely műveletet csak adott feltételek teljesülésekor végezzünk el; l ismétlő struktúra (ciklus) – adott műveletsor véges számszor történő ismételt elvégzését jelenti. l Az elemi struktúrák használata megkönnyíti az algoritmusírást. A kész algoritmus érthetőbb, áttekinthetőbb, könnyebben javítható lesz.

Elemi struktúrák leírása pszeudokód segítségével Utasítás Általános alak – az algoritmus első utasítása: Algoritmus

Elemi struktúrák leírása pszeudokód segítségével Utasítás Általános alak – az algoritmus első utasítása: Algoritmus Név(Paramételista): Lineáris struktúrák – beolvasás: Be: változólista – kiírás: Ki: kifejezéslista – értékadás: változónév kifejezés – eljáráshívás: eljárásnév(paraméterlista)

Elágazási struktúrák Ha. . . akkor. . . különben típusú struktúra Ha feltétel akkor

Elágazási struktúrák Ha. . . akkor. . . különben típusú struktúra Ha feltétel akkor utasítás(ok)1 különben utasítás(ok)2 vége(Ha) Ha. . . akkor típusú struktúra Ha feltétel akkor utasítás(ok) vége(Ha)

Példa Határozzuk meg és írjuk ki adott valós szám abszolút értékét! Elemzés Matematikából tudjuk,

Példa Határozzuk meg és írjuk ki adott valós szám abszolút értékét! Elemzés Matematikából tudjuk, hogy valamely szám abszolút értéke:

Algoritmus Abszolút_érték(x, modulusz): { bemeneti adat: x, kimeneti adat: modulusz } Ha x 0

Algoritmus Abszolút_érték(x, modulusz): { bemeneti adat: x, kimeneti adat: modulusz } Ha x 0 akkor modulusz x különben modulusz -x vége(ha) Vége(algoritmus)

Megjegyzés: Ha az x változó eredeti értékére a továbbiakban nincs szükségünk, elegánsabb megoldást kapunk,

Megjegyzés: Ha az x változó eredeti értékére a továbbiakban nincs szükségünk, elegánsabb megoldást kapunk, ha nem használunk külön változót az abszolút érték tárolására! Egyébként a megoldás hátránya lehet, hogy módosul az x értéke! Algoritmus Abszolút_érték_másként(x): { bemeneti és kimeneti adat: x } Ha x < 0 akkor x -x vége(ha) Vége(algoritmus)

Ismétlő struktúrák Amíg típusú struktúra Amíg feltétel végezd el: utasítás(ok) vége(amíg) Ismételd típusú struktúra

Ismétlő struktúrák Amíg típusú struktúra Amíg feltétel végezd el: utasítás(ok) vége(amíg) Ismételd típusú struktúra Ismételd utasítás(ok) ameddig feltétel

Példa Számítsuk ki két természetes szám egész hányadosát ismételt kivonásokkal! Algoritmus Osztás(a, b, hányados):

Példa Számítsuk ki két természetes szám egész hányadosát ismételt kivonásokkal! Algoritmus Osztás(a, b, hányados): { bemeneti adatok: a, b, kimeneti adat: hányados } hányados 0 Amíg a ≥ b végezd el: hányados + 1 a a-b vége(amíg) Vége(algoritmus)

Ismert számú ismétlés Minden típusú struktúra Minden i: =ek, ev, r-re végezd el: utasítás(ok)

Ismert számú ismétlés Minden típusú struktúra Minden i: =ek, ev, r-re végezd el: utasítás(ok) Vége(minden) – az algoritmus utolsó utasítása: Vége(algoritmus)

Példa 1. Felcserélés Olvassunk be két egész típusú változót! Cseréljük fel, majd írjuk ki

Példa 1. Felcserélés Olvassunk be két egész típusú változót! Cseréljük fel, majd írjuk ki a két változó tartalmát! Algoritmus Felcserél(a, b): { bemeneti adatok: a, b, kimeneti adatok: a, b } segéd: =a a: =b b: =segéd Ki a, b Vége(algoritmus)

Példa Számoljuk meg n szám közül a páros számokat! Algoritmus Páros(n, db): db 0

Példa Számoljuk meg n szám közül a páros számokat! Algoritmus Páros(n, db): db 0 { bemeneti adat: n, kimeneti adat: db } Minden i=1, n végezd el: Be: szám Ha szám páros akkor db + 1 vége(ha) vége(minden) Vége(algoritmus)

3. Maximumérték Határozzuk meg és írjuk ki három, páronként különböző valós szám közül a

3. Maximumérték Határozzuk meg és írjuk ki három, páronként különböző valós szám közül a legnagyobbat! Algoritmus Maximum(a, b, c): { bemeneti adatok: a, b, c } Ha ( a > b ) és ( a > c ) akkor Ki 'a legnagyobb: ', a vége(ha) Ha ( b > c ) és ( b > a ) akkor Ki 'a legnagyobb: ', b vége(ha) Ha ( c > a ) és ( c > b ) akkor Ki 'A legnagyobb: ', c vége(ha) Vége(algoritmus)

A megoldás menete, segédváltozó használatával: Algoritmus Maximum_másként: { bemeneti adatok: a, b, c, kimeneti

A megoldás menete, segédváltozó használatával: Algoritmus Maximum_másként: { bemeneti adatok: a, b, c, kimeneti adat: max } max: =a Ha max < b akkor max: =b vége(ha) Ha max < c akkor max: =c vége(ha) Vége(algoritmus)

Algoritmus Maximum_harmadik_változata: { bemeneti adatok: a, b, c, kimeneti adat: max } Ha (

Algoritmus Maximum_harmadik_változata: { bemeneti adatok: a, b, c, kimeneti adat: max } Ha ( a > b) és ( a > c) akkor max: =a különben Ha ( b > a) és ( b > c) akkor max: = b különben Ha ( c > a) és ( c > b) akkor max: = c vége(ha) Ki 'A legnagyobb: ', max Vége(algoritmus) Megjegyzés: egymásbaágyazott döntések. . .

Alapszabályok l l l l Adjunk a változóknak beszédes azonosítókat! Ne használjunk inicializálatlan változókat!

Alapszabályok l l l l Adjunk a változóknak beszédes azonosítókat! Ne használjunk inicializálatlan változókat! A megoldandó feladatot teljes egészében elemezzük! Amíg lehet, a feladatot bontsuk részfeladatokra, az algoritmust pedig al-algoritmusokra (alprogramokra)! Ha a Ha struktúrában valamelyik ág hiányzik, ez legyen a különben! Az egymásba ágyazott Ha struktúrák következzenek a megvalósulásuk valószínűsége szerint csökkenő sorrendben! A Minden típusú struktúrában ne módosítsuk a ciklusváltozót, de a kezdő-, illetve a végső értéket sem! Írjuk indentálva algoritmusunkat (programunkat)!

Példa Írjunk algoritmust, amely megvizsgálja, hogy egy adott természetes szám palindromszám-e vagy sem. Elemzés

Példa Írjunk algoritmust, amely megvizsgálja, hogy egy adott természetes szám palindromszám-e vagy sem. Elemzés l Egy számot palindromszámnak (vagy tükörszámnak) hívunk, ha egyenlő a „fordított”-jával, vagyis azzal a számmal, amelyet a számjegyei fordított sorrendben alkotnak. l A számot számjegyekre bontjuk. l Ezzel párhuzamosan felépítjük az új számot.

Elemzés l l l Az új szám generálását a Horner-séma néven ismert módszer segítségével

Elemzés l l l Az új szám generálását a Horner-séma néven ismert módszer segítségével végezzük: a ciklusban újszám 10 + számjegy. Az algoritmus a számjegyeket úgy határozza meg, hogy ismételten osztja az eredeti számot 10 -zel az algoritmus végén az eredeti szám értéke 0. De nekünk szükségünk van az eredeti értékre, hogy összehasonlíthassuk az új számmal. Ezért a beolvasott számról a feldolgozás előtt másolatot készítünk.

Algoritmus Palindrom(szám, p): { bemeneti adat: szám, kimeneti adat: p } { p =

Algoritmus Palindrom(szám, p): { bemeneti adat: szám, kimeneti adat: p } { p = igaz, ha szám palindrom, különben hamis } { az algoritmus eldönti, hogy szám palindrom-e? } másolat szám újszám 0 Amíg szám > 0 végezd el: számjegy maradék[szám/10] { számjegyekre bontás } újszám*10 + számjegy { Horner séma } szám [szám/10] { a feldolgozott számjegyet levágjuk } vége(amíg) p újszám = másolat { ugyanaz, de jobb mint: Ha újszám = másolat akkor p igaz különben p hamis } vége(ha) Vége(algoritmus)

A számítógépes feladatmegoldás lépései A számítógép egy feladatot akkor képes megoldani, ha végrehajtjuk rajta

A számítógépes feladatmegoldás lépései A számítógép egy feladatot akkor képes megoldani, ha végrehajtjuk rajta azt a programot, amelyet abból a célból írtunk, hogy a feladatot megoldja. l A programon keresztül irányítjuk a számítógép által elvégzendő lépéseket és biztosítjuk a feladat automatikus módon való megoldását.

Ma: programozás = csapatmunka Egy alkalmazás nem egyetlen program megírását jelenti. l Több személy,

Ma: programozás = csapatmunka Egy alkalmazás nem egyetlen program megírását jelenti. l Több személy, többhetes, esetleg többéves munkával programrendszereket hoz létre. l Szükségessé vált a programozói tevékenység szabályozása, egy bizonyos sajátos fegyelem megkövetelése, a programozók közti kommunikáció szabványosítása, valamint a megoldandó feladatok szövegeinek megfelelő specifikálása. l

Moduláris programozás A programozási munka egyszerűsítését tűzte ki céljául (1956). l Az eredetileg bonyolult

Moduláris programozás A programozási munka egyszerűsítését tűzte ki céljául (1956). l Az eredetileg bonyolult feladatot részfeladatokra bontjuk, és az ezeket megoldó algoritmusokat alprogramokkal kódoljuk. l A részfeladatokat megoldó alprogramokat összefűzve, megkapjuk az eredeti feladat megoldását. l

Strukturált programozás 1972: E. W. Dijkstra olyan algoritmusokat javasolt, amelyekből hiányzik a goto utasítás.

Strukturált programozás 1972: E. W. Dijkstra olyan algoritmusokat javasolt, amelyekből hiányzik a goto utasítás. l Nagymértékben megnőtt a programok olvashatósága, frissíthetősége, sőt könnyebb lett azok karbantartása is. l Böhm és Jacopini: bármely algoritmus megvalósítható a három alapstruktúrával: szekvencia, elágazás (döntés) és az előltesztelő ismeretlen lépésszámú ciklus (iteráció). l

A feladatmegoldás lépései számítógépes környezetben Az ember által elvégzendő lépések: A követelmények és a

A feladatmegoldás lépései számítógépes környezetben Az ember által elvégzendő lépések: A követelmények és a feladat megfogalmazása ■ A megrendelő leírja a kivitelező számára (sokszor pontatlanul és ellentmondásosan) azt a feladatot, amelyet számítógépes programmal szeretne megoldani. A leírás (általában) a kimenetre összpontosít.

A feladat specifikációja Több beszélgetés után a rendszertervező megfogalmazza a feladatot. l Ehhez ismernie

A feladat specifikációja Több beszélgetés után a rendszertervező megfogalmazza a feladatot. l Ehhez ismernie kell: l – milyen körülmények között, – mekkora méretű adatokkal, – milyen számítógépen kerül fölhasználásra az elkészítendő program.

A fejlesztői dokumentáció l A rendszertervezők elemzik a megrendelő követelményeit és lefordítják „saját nyelvükre”

A fejlesztői dokumentáció l A rendszertervezők elemzik a megrendelő követelményeit és lefordítják „saját nyelvükre” a feladatot: létrehozzák azt a belső használatra készülő dokumentációt, amely a feladat pontos és helyes specifikációját tartalmazza. – Itt már bemeneti és kimeneti adatokról, valamint megszorításokról (a bemeneti adatok és az adatszerkezetek méretéről, az elfogadható legnagyobb futási időről stb. ) van szó.

Az algoritmus megtervezése (elemzés, modellek és módszerek megállapítása) ■ A programozók kiválasztják a megfelelő

Az algoritmus megtervezése (elemzés, modellek és módszerek megállapítása) ■ A programozók kiválasztják a megfelelő matematikai modelleket, megtervezik az adatszerkezeteket és eldöntik, hogy milyen programozási környezetben milyen módszereket fognak alkalmazni. Több megoldási lehetőség közül az lesz a jobb, amely a számítógép erőforrásait (memória és idő) a leghatékonyabban használja.

Az algoritmus megtervezése (elemzés, modellek és módszerek megállapítása) (2) A feladatot részfeladatokra bontják és

Az algoritmus megtervezése (elemzés, modellek és módszerek megállapítása) (2) A feladatot részfeladatokra bontják és megtervezik a megoldásokat. l A matematikai modellek, az adatszerkezetek és az algoritmusok kiválasztása összefonódik. l Kialakulnak a modulok és a köztük levő kapcsolatok. l Bővül a fejlesztői dokumentáció, amely tartalmazza a megoldás vázát, a választások indoklását. Erre a kódolás során, valamint a program karbantartásakor lesz szükség. l

Kódolás (az algoritmus implementálása egy programozási nyelvben) ■ Ebben a fázisban az algoritmust átírják

Kódolás (az algoritmus implementálása egy programozási nyelvben) ■ Ebben a fázisban az algoritmust átírják valamilyen programozási nyelvre, amelyet – a feladat jellegének megfelelően – gondosan választanak ki.

Tesztelés (ellenőrzés = „verifikáció” és érvényesítés = „validálás”) ■ A programozók különböző tesztadatok esetében

Tesztelés (ellenőrzés = „verifikáció” és érvényesítés = „validálás”) ■ A programozók különböző tesztadatok esetében tanulmányozzák a program működését. l Arra számítanak, hogy a program a várt (helyes) adatokat adja, de megfigyelik a futási időt, a biztonságos működést stb. l A felfedezett hibákat kijavítják, majd újra ellenőrzik az eredményt.

Ellenőrzés és érvényesítés Olyan ellenőrzésről van szó, amely egy folyamatos tevékenység, és amely a

Ellenőrzés és érvényesítés Olyan ellenőrzésről van szó, amely egy folyamatos tevékenység, és amely a tervezés, a kódolás és a karbantartás során zajlik. l Az ellenőrzés lényeges összetevője az úgynevezett érvényesítés. l Ezt előbb elvégzi a kivitelező, később a felhasználás során a megrendelő. l A megrendelő nem végez ellenőrzéseket, hanem valós adatokkal futtatja a programot. l

A fejlesztői és a felhasználói dokumentáció elkészítése ■ A dokumentációk a program fontos tartozékai,

A fejlesztői és a felhasználói dokumentáció elkészítése ■ A dokumentációk a program fontos tartozékai, amelyek a programhoz kapcsolódó fontos információkat tartalmazzák. – A fejlesztői dokumentáció leírja, hogyan volt megtervezve a program. – A felhasználói dokumentáció elmagyarázza, hogyan kell használni a programot.

Felhasználás és karbantartás ■ A megrendelő a programot a felhasználás közben valós adatokkal futtatja.

Felhasználás és karbantartás ■ A megrendelő a programot a felhasználás közben valós adatokkal futtatja. Ez természetesen hosszabb ideig zajlik, és előfordulhat, hogy a felhasználás során bizonyos programrészeket a programozónak meg kell változtatnia.

Alkalmazások minőségi szempontjai Helyesség ■ A program helyes, ha pontosan megoldja a feladatot, megfelel

Alkalmazások minőségi szempontjai Helyesség ■ A program helyes, ha pontosan megoldja a feladatot, megfelel a pontos és helyes specifikációnak.

Megbízhatóság ■ Egy programot megbízhatónak nevezünk, ha helyes eredményt határoz meg, és a specifikációban

Megbízhatóság ■ Egy programot megbízhatónak nevezünk, ha helyes eredményt határoz meg, és a specifikációban nem leírt helyzetekben is intelligens módon viselkedik.

Karbantarthatóság ■ Milyen könnyű a programterméket a specifikáció esetleges változtatásához adaptálni? – Néha a

Karbantarthatóság ■ Milyen könnyű a programterméket a specifikáció esetleges változtatásához adaptálni? – Néha a szoftverköltségek 70%-át a szoftverek karbantartására fordítják! – A karbantarthatóság növelése szempontjából a két legfontosabb alapelv: a tervezési egyszerűség és a decentralizáció (minél önállóbb modulok létrehozása).

Újrafelhasználhatóság ■ Az újrafelhasználhatóság a szoftvertermékek azon képessége, hogy egészben vagy részben újrafelhasználhatók új

Újrafelhasználhatóság ■ Az újrafelhasználhatóság a szoftvertermékek azon képessége, hogy egészben vagy részben újrafelhasználhatók új alkalmazásokban.

Kompatibilitás ■ A kompatibilitás azt mutatja meg, hogy milyen könnyű a szoftvertermékeket egymás között

Kompatibilitás ■ A kompatibilitás azt mutatja meg, hogy milyen könnyű a szoftvertermékeket egymás között kombinálni.

Hordozhatóság ■ A program hordozhatósága arra vonatkozik, hogy mennyire könnyű a programot más géphez,

Hordozhatóság ■ A program hordozhatósága arra vonatkozik, hogy mennyire könnyű a programot más géphez, konfigurációhoz, vagy operációs rendszerhez – általában más fizikai környezethez – igazítani.

Hatékonyság ■ A program hatékonysága a futási idővel és a felhasznált memória méretével arányos

Hatékonyság ■ A program hatékonysága a futási idővel és a felhasznált memória méretével arányos – minél gyorsabb, illetve minél kevesebb memóriát használ, a program annál hatékonyabb.

Barátságosság ■ A program emberközelisége, barátságossága a felhasználó számára rendkívül fontos: ez megköveteli, hogy

Barátságosság ■ A program emberközelisége, barátságossága a felhasználó számára rendkívül fontos: ez megköveteli, hogy a bemenet logikus és egyszerű, az eredmények formája áttekinthető legyen.

Tesztelhetőség ■ A tesztelhetőség a program karbantartói, fejlesztői számára fontos.

Tesztelhetőség ■ A tesztelhetőség a program karbantartói, fejlesztői számára fontos.