Programozás Programozás # 1 Program = egy feladat megoldására szolgáló, a számítógép számára értelmezhető utasítássorozat. ADATOK A programkészítés lépései 1. A feladat meghatározása PROGRAM EREDMÉNY A cél kitűzése A kimenetek (jelentések, kimutatások, ) elemzése A bemenetek (űrlapok, számlák, ).meghatározása 2. Programtervezés (SPECFKÁCÓ) Menüszerkezet Képernyőtervek Adatszerkezetek Algoritmusok elkészítése 3. Kódolás (PROGRAMOZÁS) Programnyelv generációk (GENERATON LANGUAGE) 1GL: gépi kód 2GL: assembly (MNEMONC) 3GL: magasszintű procedurális utasítás-orientált (BASC, PASCAL) kifejezés-orientált (C) 4GL: probléma-orientált nyelvek funkcionális (LSP) logikai (PROLOG) adatbázis-kezelő (SQL) objektum-orientált (C++, JAVA) 5GL: természetes nyelvek Fordítás: A fordítóprogram (COMPLER) a forrásprogramot gépi kódra fordítja. Utána a program futtatásához se a forráskód, se a fordító nem kell. Értelmezés: Az értelmező program (NTERPRETER) a forrásprogramot utasításonként értelmezi és hajtja végre minden futáskor, így a program végrehajtása lassabb lesz. 4. Tesztelés Forrásprogram FORDÍTÓ ÉRTELMEZŐ Gépi kódú program Végrehajtás Futtatás 5. Dokumentálás (FELASZNÁLÓ ÉS FEJLESZTŐ KÉZKÖNYV)
Algoritmusok Programozás # 2 Algoritmus = egy feladat megoldására szolgáló lépéssorozat Az algoritmus jellemzői 1. elvégezhető (elemi, végrehajtható lépésekből áll) 2. meghatározott (minden lépés pontosan definiált) 3. véges (véges számú lépés után véget ér) 4. meghatározott input halmazra érvényes 5. adekvát output halmazt eredményez (az adatok meghatározzák az eredményt) 6. egy feladatosztály megoldására szolgál Algoritmusok tervezése Modularitás - Önálló részfeladatokra bontás, egymástól független elkészítés, kapcsolódás, adatelrejtés Top-down tervezés - Lépésenkénti finomítás Bottom-up tervezés - Alulról felfelé építkezés kész modulokból Strukturált programozás - Egy algoritmus a következő elemekből építhető fel: Szekvencia: Egymás után végrehajtandó ek sorozata. Szelekció: Adott ek közötti választás. teráció: Adott ek többszöri ismételt végrehajtása. Feltétel nélküli ugrás: A vezérlés átadása a program egy másik pontjára. Áttekinthetőbb program, Dijkstra, Böhm és Jacopini tétele Algoritmus leíró eszközök 1. Pszeudokód Mondatszerű leírás. 2. Folyamatábra Blokkdiagram. 3. Struktogram Egyetlen téglalap tagolása, amely a teljes feladat részekre bontását jelenti. Felülről lefelé történő tervezés, strukturált programozási stílus. 4. Jackson-ábra Szerkezeti ábra. A vezérlőszerkezeteteket ábrázoló téglalapok kifejtése külön téglalapokban történik.
Folyamatábra Programozás # 3 Program eleje Bevitel Be: változó(k) Kivitel Ki: változó(k) Tevékenység Elágazás Címke C C Program vége
Programszerkezetek Programozás # 4 Szekvencia 1 2 Szelekció Egyágú szelekció Kétágú szelekció tev2 felt tev1 teráció Elöltesztelő ciklus átultesztelő ciklus Növekményes ciklus i := 1 vált := tól.. ig i < n i := i + 1
Programozás # 5 Példa folyamatábrára FELADAT: Két természetes szám osztási maradéka Be: a, b a N b N m := b mod a a > b m := a mod b Ki: m
Programozás # 6 Struktogram Program eleje Modulnév Bevitel Be: változó(k) Kivitel Ki: változó(k) Tevékenység Elágazás 1 2 Ciklus
Programszerkezetek Programozás # 7 Szekvencia 1 2 Szelekció Egyágú szelekció Kétágú szelekció: 1-1 2 Többágú szelekció: _1 _2... egyébként 1 2... teráció Elöltesztelő ciklus átultesztelő ciklus Növekményes ciklus vált := tól.. ig
Programozás # 8 Példa a struktogramra FELADAT: Két természetes szám osztási maradéka Maradék Be: a, b (a N b N) m := a mod b a > b Ki: m m := b mod a
Példák a programszerkezetekre Programozás # 9 PÉLDA A SZEKVENCÁRA: Egy téglalap kerületének és területének kiszámítása Változók: a: Valós a téglalap egyik oldala b: Valós a téglalap másik oldala k: Valós a téglalap kerülete T: Valós a téglalap területe Be: a, b TÉGLA k := 2 * ( a + b ) Be: a, b k := 2 * ( a + b ) T := a * b Ki: k, T T := a * b Ki: k, T PÉLDA A SZELEKCÓRA: Egy számelőjele az előjel függvény szerint Változók: x: Valós szám sign: Valós a szám előjele 1, ha x > 0 sign( x) : = 0, ha x = 0 1, ha x < 0 Be: x x = 0 sign:=0 sign := -1 x > 0 sign := 1 Ki: sign
PÉLDA AZ TERÁCÓRA: Két természetes szám legnagyobb közös osztója Programozás # 10 1. megoldás Be: a, b x := b a < b x := a a&b mod x = 0 Ki: x x := x - 1 2. megoldás: Euklides algoritmusa 3. megoldás: Javított Euklides a b 40 15 25 15 10 15 10 5 5 5 LNKO a b 40 15 10 15 10 5 0 5 LNKO Be: a,b a b a>b Be: a,b a*b 0 a>b a:=a-b Ki: a b:=b-a a:=a mod b b:=b mod a Ki: a+b
Programozás # 11 PÉLDA: Egy természetes számról el kell dönteni, hogy prímszám e FOLYAMATÁBRA Be: x x Ν i := 2 Ki: nem x osztója i i := i+1 i i = x Ki: prim STRUKTOGRAM PRM Be: x x Ν i := 2 i nem osztója x-nek i := i + 1 i = x Ki: prim Ki: nem prim