Algoritmusok Tusnádi István

Slides:



Advertisements
Hasonló előadás
Az algoritmus.
Advertisements

Programozási feladatok
Definíciók: Algoritmus: bármely véges sok lépéssel leírható tevékenység. Olyan pontos előírás, amely megmondja, hogy egy adott típushoz tartozó feladat.
Bevezetés a programozásba - Az algoritmusok leírása
Összefoglalás Hardver,szoftver,perifériák Memóriák fajtái
Algoritmusok.
Adatelemzés számítógéppel
Algoritmusleíró eszközök
ADATBÁZISOK.
C++ programozási nyelv Gyakorlat hét
Rendszerfejlesztés.
Az integrált áramkörök (IC-k) tervezése
Függvények Egyenlőre csak valós-valós függvényekkel foglalkozunk.
Matematika és Tánc Felkészítő tanár: Komáromi Annamária
3. A programozás eszközei, programozás-technikai alapismeretek
Az egyed-kapcsolat modell
Algoritmus Az algoritmus problémamegoldásra szolgáló elemi lépések olyan sorozata, amely: véges – azaz véges számú lépés után befejeződik, és eredményt.
Budapesti Műszaki és Gazdaságtudományi Egyetem Elektronikus Eszközök Tanszéke A programozás alapjai 1. (VIEEA100) 9. előadás.
Programozás alapjai A programozás azt a folyamatot jelenti, melynek során a feladatot a számítógép számára érthető formában írjuk le. C++, Delphi, Java,
Algoritmus és adatszerkezet Tavaszi félév Tóth Norbert1.
Programozási alapismeretek 1. előadás
Programozás alapjai.
OBJEKTUMORIENTÁLT PROGRAM
Algoritmusok Az algoritmus fogalma:
Vizuális modellezés Uml és osztálydiagram UML eszközök
Algoritmizálás Göncziné Kapros Katalin humaninformatika.ektf.hu.
SZÁMÍTÓGÉP ARCHITEKTÚRÁK
Java programozási nyelv 2. rész – Vezérlő szerkezetek
Programozás I. Ciklusok
ISZAM III.évf. részére Bunkóczi László
Komplex rendszertervezési módszerek
Objektumok. Az objektum információt tárol, és kérésre feladatokat hajt végre. Az objektum adatok (attribútumok) és metódusok (operációk,műveletek) összessége,
A problémamegoldás lépései
Algoritmus. Folyamatábrák
Algoritmusok Páll Boglárka.
Az algoritmusok áttekinthető formában történő leírására szolgáló eszközök Páll Boglárka.
Algoritmusok.
ALGORITMUS.
Algoritmusok.
ALGORITMUSOK.
Programozási nyelvek.
Hernyák Zoltán Programozási Nyelvek II.
Objektumorientált programozás
Objektumorientált tervezés Út az objektumig Az objektum fogalma, jellemzői Objektummal kapcsolatos fogalmak Hardverfogalmak A rendszer modell nézetei Objektumorientált.
Algoritmus szerkezetek
Algoritmusok.
Algoritmizálás, adatmodellezés tanítása 8. előadás.
Programozás, programtervezés
UML modellezés 3. előadás
Algoritmusok. Az algoritmus meghatározott sorrendben elvégzendő műveletek előírása, mint azonos típusú (matematikai, logikai) feladatok megoldására alkalmas.
Adatbáziskezelés. Adat és információ Információ –Új ismeret Adat –Az információ formai oldala –Jelsorozat.
Algoritmizálás és programozás tanítása Balogh Zoltán PTE-TTK IÁTT Az algoritmuskészítés.
Összeállította: Sashalmi Tibor
Algoritmizálás, adatmodellezés
Adatszerkezetek és algoritmusok 2008/ Algoritmus Az algoritmus szó eredete a középkori arab matematikáig nyúlik vissza, egy a i.sz. IX. században.
A szoftver mint komplex rendszer: objektumorientált megközelítés.
A programozás módszertana. Monolitikus programozás Egyszerű feladatok - egyszerű programok Egy program – egy programozó Nincs belső struktúra, lineáris.
Programozási nyelvek csoportosítása.
Algoritmusok Tusnádi István
Programozási alapok.
Operációs rendszerek.
Hernyák Zoltán Programozási Nyelvek II.
Beépített függvények használata programozáskor
Bevezetés a programozásba Algoritmikus gondolkodás
Algoritmusok Az algoritmus fogalma:
Számítógépes algoritmusok
Algoritmusok szerkezete
Algoritmus készítés.
Algoritmusok és Adatszerkezetek I.
Strukturált és nem strukturált programok
Előadás másolata:

Algoritmusok Tusnádi István Informatika Előadás Algoritmusok Tusnádi István

Az algoritmus definíciója Azon egyértelmű instrukciók halmazát, mely egy konkrét feladat véges számú lépésben történő megoldásához vezet, algoritmusnak nevezzük

Az algoritmizálhatóság feltételei Lépésekre bontott végrehajtható folyamat Minden lépés egy elemi utasítás vagy felbontható elemi utasításokra Meghatározott a végrehajtási sorrend Véges a leírás

Az algoritmus műveletei szekvenciák (utasítások egymás utánisága) iterációk más néven ciklusok (utasítások ismétlődése) szelekciók (az algoritmus feltételtől függő elágaztatása)

Az algoritmizálás alapjai Az algoritmus lépésekből áll. Minden lépésnek egyértelműen végrehajthatónak kell lennie. A végrehajtandó instrukcióknak valamilyen célja van. Az algoritmusnak vannak bemenő adatai melyeket felhasznál. Az algoritmusnak legalább egy kimenő adatot produkálnia kell. Az algoritmus véges számú lépésben megoldhatónak kell lennie. Az algoritmus legyen hatékony és felhasználó barát

Egymás utáni utasítások Hétköznapi életből vett algoritmus: Utcai telefonkészülék használatának algoritmusa Emelje fel a kézibeszélőt Várja meg a tárcsahangot Ha van tárcsahang, akkor Dobjon be egy 50 Ft-ost! Tárcsázzon! Vége

Feltételtől függő elágaztatás Az előbbi példa finomítása: Utcai telefonkészülék használatának algoritmusa Emelje fel a kézibeszélőt Várja meg a tárcsahangot Ha nincs búgó hang, akkor Keressen egy másik telefonkészüléket! Kezdje elölről a folyamatot egyébként Dobjon be egy 50 Ft-ost! Tárcsázzon! Vége

Ismételt, feltételtől függő végrehajtás Példa egy másik algoritmusra: Szörpautomata használati algoritmusa: Válaszd ki a megfelelő szörpöt! Dobj be egy 100 Ft-ost! Nyomd meg a kívánt szörphöz tartozó gombot! Ismételd amíg nem telik meg a pohár: Nézd a poharat! Vedd ki a poharat! Idd meg a szörpöt! Vége

Az algoritmizálás alapjai Az algoritmusok 3 alapvető műveletből épülnek fel: szekvenciák (utasítások egymás utánisága) iterációk más néven ciklusok (utasítások ismétlődése) szelekciók (az algoritmus feltételtől függő elágaztatása)

A program Egy számítógép által érthető nyelven írt algoritmust programnak nevezünk.

Az algoritmus tervezése Meg kell fogalmazni, hogy pontosan mit kíván a feladat, azaz milyen adat(ok)ból mi(ke)t, s milyen összefüggés alapján kell kiszámolni. Ezt a pontos, precíz megfogalmazást hívják specifikációnak. Az algoritmus áttekinthető formában való leírására számtalan eszköz létezik: Folyamatábra Stuktogram Jackson-féle jelölés Leírás fával Leírás mondatszerű elemekkel

Algoritmus leíró eszközök Folyamatábra: A programot gráfként írja le. A programgráf egy irányított gráf, amely a csomópontokból és őket összekötő élekből áll, egyetlen induló és befejező éle van, az induló élből bármely csomópont elérhető. A folyamatábra három féle csomópontot tartalmaz: utasítás csomópont döntés csomópont gyűjtő csomópont. Ez az algoritmus leíró eszköz jól használható az algoritmusok végrehajtásának követésére. Hátrányai: terjedelmes, szövegszerkesztővel nehezen készíthető, javítása rendkívül nehézkes.

Folyamatábra Utasítás csomópont Döntés csomópont Gyűjtő csomópont Igaz Hamis

Folyamatábra Emelje fel a kézibeszélőt Van búgó hang? Várja meg a tárcsahangot Igaz Hamis Keressen egy másik telefonkészüléket! Dobjon be egy 50 Ft-ost! Tárcsázzon! Vége

Algoritmus leíró eszközök Stuktogram: Az eszköz a folyamatábra hibáit próbálja meg kiküszöbölni azzal, hogy a programgráfot élek nélkül ábrázolja, így egyetlen egy alapelem marad a téglalap. Az eszköz csak struktúrált programok írására alkalmas, rajzossága miatt terjedelmes, nehezen javítható és nehezen „olvasható”.

Stuktogram Szekvencia: Szelekció: Iteráció: Utasítás Utasítás Feltétel Igen Nem Szelekció: Utasítás Utasítás Feltétel Iteráció: Utasítás(ok)

Algoritmus leíró eszközök Jackson diagram: Ez az eszköz az adat- és algoritmikus szerkezetek leírására egységes ábrakészletet definiál. Az új eszköz egyértelmű előnye az algoritmus- és adatleírás egységessége, áttekinthetősége azonban az eddigieknél is rosszabb.

Jackson diagram A Szekvencia: B C A Szelekció: F B C A Iteráció: F * C

Algoritmus leíró eszközök Leírás fával: Ez a leíró eszköz a programgráfot és-vagy-fával írja le. A fa ciklust nem tartalmaz, a ciklusokat rekurzívan írhatjuk le. Az eszköz az eddigieknél szélesebb alkalmazási lehetőségű, áttekinthetősége viszont továbbra is rossz.

Algoritmus leíró eszközök Leírás mondatokkal: Sorszámozott utasítású programozási nyelvekhez (pl.: BASIC) illeszkedik ez az eszköz. Utasításai sorszámozott mondatok. Ennél az eszköznél a követést a sorszámok biztosítják. Nehezen áttekinthető, olvasható sok hátrányos tulajdonsága van.

Leírás mondatokkal 1. Emelje fel a kézibeszélőt 2. Várja meg a tárcsahangot 3. Ha van búgó hang, akkor folytasd az 5. soron! 4. Keressen egy másik telefonkészüléket! Folytasd a 7. soron! 5. Dobjon be egy 50 Ft-ost! 6. Tárcsázzon! 7. Vége

Algoritmus leíró eszközök Leírás mondat-szerű elemekkel: Elemei nem teljes mondatok, mondat szerű elemek. Struktúrái megfelelnek a szokásos Neumann elvű programozási nyelv struktúráknak, kódolása egyszerű.

Algoritmus tervezése Az algoritmus tervezésének alapja a dekompozíció: A feladatot részekre kell bontani, a részeket meg kell oldani, majd a megoldott részeket kell összeállítani, hogy együtt működhessenek. A részekre bontásnál két irányzatot különböztetünk meg: Felülről lefelé, fokozatosan, lépésenként finomítással. (Top-down módszer) Alulról felfelé (bottom-up) módszer, ahol a kisebb feladatok megoldásával kezdjük, majd azután gondolkodunk az összeállítás struktúráján.

Algoritmus tervezése A felülről lefelé való programtervezés irányelvei: Oszd meg és uralkodj elv: a lebontott részek egymástól függetlenek legyenek Adatok elrejtésének elve: a megfelelő program részek csak saját adataikon dolgozzanak Döntések elhalasztásának elve: azokat a döntéseket, melyekhez nincs elég ismeretünk halasszuk későbbre. Döntések kimondásának elve: ha már meghoztunk egy döntést, meg kell fogalmazni, le kell rögzíteni, nehogy később erről megfeledkezve ellentmondásba keveredjünk.

Algoritmus tervezése Az alulról felfelé tervezés lényege: Már meglévő programrészeket építünk programunkba. Erre akkor kerül sor, ha bizonyos részfeladatokat már megcsináltunk, vagy amikor megvásárolunk egy rutingyűjteményt.

Objektumorientált szemléletmód Az algoritmust végrehajtó programot a tervezés során jól elkülöníthető modulokra kell bontani, A modulok külön-külön jól definiált feladatot látnak el, így könnyen változtathatók, karbantarthatók, védettek, könnyen összeépíthetők és újrafelhasználhatók lesznek. A megvalósításhoz a modulokon belül erős összetartás, a modulok között laza kapcsolat elvét kell követni

Modulok az objektumorientált rendszerben Adat Eljárás Eljárás Adat Eljárás Adat Adat Adat Eljárás Eljárás Adat Eljárás

Objektumorientált szemléletmód Egy objektumorientált programban a legkisebb modul az objektum, melyben adatok és az eljárások össze vannak zárva. Minden objektumnak megvan a jól meghatározott feladata. A program működése során az objektumok egymással kommunikálva végzik a rájuk bízott feladatot Egy objektumorientált rendszer tervezésekor a feladatspecifikáció alapján meg kell határozni a rendszerben szereplő objektumokat, és az objektumok között szét kell osztani a feladatokat.

Objektumorientált szemléletmóddal kapcsolatos fogalmak Felelősség: minden objektumnak megvan a jól meghatározott feladata. Az objektum felelős a feladatai elvégzéséért. Bezárás, információ elrejtése: a feladatok elvégzésének hogyanja az objektum belügye. Az objektum belseje sérthetetlen. Polimorfizmus, többalakúság: ugyanarra a kérelemre a különböző objektumok különbözőképpen reagálnak.

Objektumorientált szemléletmóddal kapcsolatos fogalmak Osztályozás: az objektum példányokat viselkedésük szerint osztályokba soroljuk. Öröklődés: egy osztály örökölhet tulajdonságokat és viselkedésformákat egy másik osztálytól. Az utód osztályban csak az ős osztálytól való eltéréseket kell megadni. Futás alatti kötés: bizonyos operációkról csak futáskor lehet kideríteni, hogy konkrétean melyikre van szükség. Ezek az operációk később kötődnek a programhoz.

Példa objektum öröklődésre Ember Név Születési év Ős osztály Tanul Beszél Hallgató Oktató Tanfolyamszám Eredmény Tanszék Fizetés Utód osztályok Tanul Tanít Beszél

Vége