A problémamegoldás lépései INFOÉRA 2006 2006.11.18 A problémamegoldás lépései Mintapélda: házépítés Mi az, ami látszik? Mi az, ami ténylegesen mögötte van? 1. Igényfelmérés (szempontok: család mérete, elképzelése, pénz) 2. Tervezés (alaprajz, anyagigény) 3. Szervezés (ütemterv vagy vállalkozó) 4. Építkezés (anyagbeszerzés, kivitelezés) 5. Használatba vétel (szemrevételezés - szépség, kipróbálás - jóság) 6. Beköltözés, bentlakás (módosítgatás, újabb hibák, ...) Juhász István-Zsakó László: Informatikai képzések a ELTE-n
A programkészítés folyamata 1. Specifikálás (miből?, mit?) specifikáció 2. Tervezés (mivel?, hogyan?) adat- + algo-ritmus-leírás 3. Kódolás (a gép hogyan) kód (reprezen-táció + implementáció) 4. Tesztelés (hibás?) hibalista (diagnózis) 5. Hibakeresés (hol a hiba?) hibahely, -ok 6. Hibajavítás (hogyan jó?) helyes program 7. Minőségvizsgálat, hatékonyság (jobbítható?) jó program 8. Dokumentálás (hogyan működik, használha-tó?) használható program 9. Használat, karbantartás (még mindig jó?) évelő (időtálló) program
A nyelvek (magyar, gépi) közelítése Nyelvi szintek Magyar Algoritmusleíró Programozási nyelv Gépi nyelv A nyelvek (magyar, gépi) közelítése
Az algoritmus fogalma Utcai telefon használata: Vedd fel a kagylót! Dobj be egy 100 Ft-ost! Várj tárcsahangra! Tárcsázz!
Az algoritmus fogalma végrehajtható (van hozzá végre-hajtó) lépésenként hajtható végre a lépések maguk is algoritmusok pontosan definiált, adott végre-hajtási sorrenddel egy folyamat véges hosszúságú, időben esetleg végtelen leírása
Az algoritmus fogalma Szörpautomata használata: Válassz italt! Dobj be egy 100 Ft-ost! Nyomd meg a megfelelő gombot! Várj amíg folyik az ital! Vedd ki az italt! Idd meg!
Az algoritmus fogalma Az alapalgoritmus elemei: egymásutáni végrehajtás nemdeterminisztikusság párhuzamosság
Az algoritmus fogalma Szörpautomata használata: Válassz italt! Dobj be egy 100 Ft-ost! Nyomd meg a megfelelő gombot! Ismételd nézd a poharat! amíg folyik az ital! Vedd ki az italt! Idd meg! Új algoritmikus elem: ismétlés feltételtől függően
Az algoritmus fogalma Szörpautomata használata: Válassz italt! Ha van 100 Ft-osod akkor Dobj be egy 100 Ft-ost! különben Dobj be két 50 Ft-ost … Új algoritmikus elem: választás két tevékenység közül, esetleg nemdeterminisztikus választás
Az algoritmus fogalma Dobj be két 50 Ft-ost: Ismételd 2-szer: Dobj be egy 50 Ft-ost! Új algoritmikus elem: ismétlés adott darabszámszor
Az algoritmus fogalma Az algoritmusok összerakási módjai: Szekvencia (egymás utáni végre-hajtás) Elágazás (választás 2 vagy több tevékenységből) Ciklus (ismétlés adott darabszám-szor vagy adott feltételtől függő-en)
A specifikáció 1. Bemenő adatok (értékhalmaz, mér-tékegység) 2. Ismeretek a bemenetről (előfeltétel) 3. Eredmények (értékhalmaz, …) 4. Az eredmény kiszámítási szabálya (utófeltétel) 5. A megoldással szembeni követelmé-nyek 6. Korlátozó tényezők 7. A használt fogalmak definíciói
A specifikáció Tulajdonságai 1. Egyértelmű, pontos, teljes 2. Rövid, tömör, formalizált 3. Szemléletes, érthető Specifikációs eszközök 1. Szöveges leírás 2. Matematikai megadás
Példa: háromszög Példa: 3 szám lehet-e egy derék-szögű háromszög 3 oldala? Bemenet: x,y,zR Kimenet: lehetL Előfeltétel: x>0 és y>0 és z>0 Utófeltétel: lehet= (x2+y2 = z2)
Példa: háromszög Be: x,y,z Példa: 3 szám lehet-e egy derékszögű háromszög 3 oldala? Be: x,y,z lehet:=(x2+y2=z2) Ki: lehet
Példa: háromszög xx:=x2 Példa: 3 szám lehet-e egy derékszögű háromszög 3 oldala? xx:=x2 yy:=y2 Zz:=z2 lehet:=(xx+yy==zz)
Példa: másodfokú egyenlet Adjuk meg a másodfokú egyenlet egy megoldását! Az egyenlet: ax2+bx+c=0 Mi a megoldás? Előbb: mi a feladat? Biztos van megoldás? Biztos egy megoldás van?
Példa: másodfokú egyenlet Bemenet: a,b,c R Kimenet: xR Előfeltétel: a0 (mi lenne, ha megengednénk?) Utófeltétel: Mindig van megoldás? Egy megoldás van?
Példa: másodfokú egyenlet Kimenet bővítés: Kimenet: xR, vanL Utófeltétel: van=(b24*a*c) és van
Példa: másodfokú egyenlet
Példa: másodfokú egyenlet másképpen Megoldás: d:=b2-4*a*c van:=d>0 Ha van akkor Program vége.
Algoritmusleíró nyelvek Szöveges leírás Mondatokkal leírás Mondatszerű elemek – pszeudokód Rajzos leírás Folyamatábra Struktogram