Programozási alapismeretek 1. előadás Programozás alapjai 2017.04.04. Programozási alapismeretek 1. előadás Szlávi-Zsakó: 1. előadás
Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. Programozás alapjai 2017.04.04. Tartalom A problémamegoldás lépései – programkészítés folyamata A programozás során használt nyelvek Az algoritmus A specifikáció Algoritmikus nyelvek – struktogram A kódolás – a fejlesztői környezet 2017.04.04. Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. Szlávi-Zsakó: 1. előadás 2
A problémamegoldás lépései Programozás alapjai 2017.04.04. 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? Igényfelmérés (szempontok: család mérete, elképzelése, pénz) Tervezés (alaprajz, anyagigény / mérnök…) Szervezés (ütemterv / vállalkozó…) Építkezés (anyagbeszerzés, kivitelezés / kivitelező…) Használatba vétel (szemrevételezés – szépség, kipróbálás – jóság) Beköltözés, bentlakás (módosítgatás, újabb hibák, ...) Igényfelmérés nem-formális specifikálás Tervezés formális specifikálás Szervezés algoritmizálás Építkezés Kódolás Használatba vétel Tesztelés, hibakeresés, hibajavítás Beköltözés, bentlakás használat, karbantartás 2017.04.04. Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. Szlávi-Zsakó: 1. előadás 3
A programkészítés folyamata Programozás alapjai 2017.04.04. A programkészítés folyamata Specifikálás (miből?, mit?) specifikáció Tervezés (mivel?, hogyan?) adat- + algoritmus-leírás Kódolás (a gép hogyan?) kód (reprezentáció + implementáció) Tesztelés (hibás-e?) hibalista (diagnózis) Hibakeresés (hol a hiba?) hibahely, -ok Hibajavítás (hogyan jó?) helyes program Minőségvizsgálat, hatékonyság (jobbítható-e?, hogyan?) jó program Dokumentálás (hogyan működik, használható?) használható program Használat, karbantartás (még mindig jó?) évelő (időtálló) program 2017.04.04. Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. Szlávi-Zsakó: 1. előadás
Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. Programozás alapjai 2017.04.04. Nyelvi szintek Élőnyelv = pl. magyar Specifikációs Algoritmusleíró Programozási Gépi A nyelvek (élő gépi) közelítése 2017.04.04. Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. Szlávi-Zsakó: 1. előadás
Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. Programozás alapjai 2017.04.04. Az algoritmus fogalma Italautomata 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! 2017.04.04. Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. Szlávi-Zsakó: 1. előadás
Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. Programozás alapjai 2017.04.04. Az algoritmus fogalma végrehajtható (van hozzá végrehajtó) lépésenként hajtható végre a lépések maguk is algoritmusok pontosan definiált, adott végrehajtási sorrenddel egy folyamat véges hosszúságú, időben esetleg végtelen leírása 2017.04.04. Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. Szlávi-Zsakó: 1. előadás
Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. Programozás alapjai 2017.04.04. Az algoritmus fogalma Az (alap)algoritmus elemeinek végre-hajtási „stratégiái”: egymásutáni végrehajtás nem-determinisztikusság párhuzamosság Gondoljuk meg a példa elemeit ebből a szempontból! 2017.04.04. Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. Szlávi-Zsakó: 1. előadás
Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. Programozás alapjai 2017.04.04. Az algoritmus fogalma Italautomata 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 2017.04.04. Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. Szlávi-Zsakó: 1. előadás
Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. Programozás alapjai 2017.04.04. Az algoritmus fogalma Italautomata használata: Válassz italt! Ha van 100 Ft-osod akkor Dobj be egy 100 Ft-ost! különben Dobj be 5 20 Ft-ost … Új algoritmikus elem: választás két tevé-kenység közül, esetleg nem-determinisz-tikus választás 2017.04.04. Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. Szlávi-Zsakó: 1. előadás
Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. Programozás alapjai 2017.04.04. Az algoritmus fogalma Dobj be 5 20 Ft-ost: Ismételd 5-ször: Dobj be egy 20 Ft-ost! Új algoritmikus elem: ismétlés adott darab-számszor 2017.04.04. Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. Szlávi-Zsakó: 1. előadás
Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. Programozás alapjai 2017.04.04. Az algoritmus fogalma Az algoritmusok összeállítási módjai: Szekvencia (egymás utáni végrehaj-tás) Elágazás (választás 2 vagy több tevé-kenységből) Ciklus (ismétlés adott darabszámszor vagy adott feltételtől függően) Alprogram (egy összetett tevékenység, egyedi néven – absztrakció) 2017.04.04. Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. Szlávi-Zsakó: 1. előadás
Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. Programozás alapjai 2017.04.04. A specifikáció Bemenő adatok (azonosító, értékhalmaz [mértékegység]) Ismeretek a bemenetről (előfeltétel) Eredmények (azonosító, értékhalmaz …) Az eredmény kiszámítási szabálya (utófeltétel) A megoldással szembeni követelmények Korlátozó tényezők A használt fogalmak definíciói 5-6.: Egyéb „technikai” körülmények (pl. megjelenítés, memóriakorlát, speciális adatszerkezet…) 2017.04.04. Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. Szlávi-Zsakó: 1. előadás
Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. Programozás alapjai 2017.04.04. A specifikáció Tulajdonságai Egyértelmű, pontos, teljes Rövid, tömör, formalizált Szemléletes, érthető Specifikációs eszközök Szöveges leírás Matematikai megadás T/2-3.: inkább lehetőség, mint alaptulajdonság, nagyban függ az ember „leleményességétől”, fogalomalkotó képességétől, kreativitásától 2017.04.04. Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. Szlávi-Zsakó: 1. előadás
Példa: háromszög (specifikáció) Programozás alapjai 2017.04.04. Példa: háromszög (specifikáció) Feladat: 3 szám lehet-e egy derékszögű háromszög 3 oldala? Specifikáció: Bemenet: x,y,z:Valós Kimenet: lehet:Logikai Előfeltétel: x>0 és y>0 és z>0 Utófeltétel: lehet=(x2+y2=z2) Megjegyzés: a 3 szám sorrendjét ezek sze-rint rögzítettük – z az átfogó hossza! 2017.04.04. Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. Szlávi-Zsakó: 1. előadás
Példa: háromszög (algoritmus) Programozás alapjai 2017.04.04. Példa: háromszög (algoritmus) Algoritmus: A programunk három fő rész- ből áll: az adatok beolvasása, az eredmény kiszámítása, az eredmény kiírása: Az „elemi” utasításokat egy-egy „dobozba” írjuk. Később a be- és kimenetet nem algoritmizáljuk! Be: x,y,z [x>0 és y>0 és z>0] lehet:=(x2+y2=z2) Ki: lehet A „lehet:=(x2+y2=z2)” utasítással ekvivalens, csak nála jóval hosszabb a „Ha x2+y2=z2 akkor lehet:=Igaz különben lehet:=Hamis” utasítással. 2017.04.04. Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. Szlávi-Zsakó: 1. előadás
Példa: háromszög (algoritmus) Programozás alapjai 2017.04.04. Példa: háromszög (algoritmus) Egy másik algoritmus a lényegi részre: Bevezethetők/-endők segéd (belső, saját) változók. xx:=x2 yy:=y2 zz:=z2 lehet:=(xx+yy=zz) 2017.04.04. Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. Szlávi-Zsakó: 1. előadás
Példa: másodfokú egyenlet (specifikáció) Programozás alapjai 2017.04.04. Példa: másodfokú egyenlet (specifikáció) Feladat: Adjuk meg a másodfokú egyenlet egy megol-dását! Az egyenlet: ax2+bx+c=0 Kérdések: Mi a megoldás? – kimenet Mit jelent: „megoldásnak lenni”? – utófeltétel Biztos van megoldás? – előfeltétel Biztos egy megoldás van? – kimenet/utófeltétel 2017.04.04. Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. Szlávi-Zsakó: 1. előadás
Példa: másodfokú egyenlet (specifikáció) Programozás alapjai 2017.04.04. Példa: másodfokú egyenlet (specifikáció) Specifikáció1: Bemenet: a,b,c:Valós Kimenet: x:Valós Előfeltétel: – Utófeltétel1: ax2+bx+c=0 Megjegyzés: az uf. nem ad algoritmizálható információt. Nem baj, de … próbálkozzunk még! Megoldóképlet: 2017.04.04. Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. Szlávi-Zsakó: 1. előadás
Példa: másodfokú egyenlet (specifikáció) Programozás alapjai 2017.04.04. Példa: másodfokú egyenlet (specifikáció) Specifikáció2: Bemenet: a,b,c:Valós Kimenet: x:Valós Előfeltétel: a0 Mi lenne, ha megengednénk? Utófeltétel2: Nyitott kérdések: Mindig van megoldás? Egy megoldás van? 2017.04.04. Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. Szlávi-Zsakó: 1. előadás
Példa: másodfokú egyenlet (specifikáció) Programozás alapjai 2017.04.04. Példa: másodfokú egyenlet (specifikáció) Kimenet bővítés: Kimenet: x:Valós, van:Logikai Utófeltétel: van=(b24*a*c) és van Nyitott kérdés: Egy megoldás van? – hf . 2017.04.04. Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. Szlávi-Zsakó: 1. előadás
Példa: másodfokú egyenlet (algoritmus) Programozás alapjai 2017.04.04. Példa: másodfokú egyenlet (algoritmus) Algoritmus: A feltételes utasítás „3-dobozos” struktúra. d:=b2-4*a*c van:=d0 van? I N Igaz-ág Hamis-ág 2017.04.04. Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. Szlávi-Zsakó: 1. előadás
Példa: másodfokú egyenlet (algoritmus) Programozás alapjai 2017.04.04. Példa: másodfokú egyenlet (algoritmus) Algoritmus másképpen: Program MásodfokúEgyenlet: d:=b2-4*a*c van:=d≥0 Ha van akkor Program vége. 2017.04.04. Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. Szlávi-Zsakó: 1. előadás
Algoritmusleíró nyelvek Programozás alapjai 2017.04.04. Algoritmusleíró nyelvek Szöveges leírás Mondatokkal leírás Mondatszerű elemekkel – pszeudokód Rajzos leírás Folyamatábra Struktogram 2017.04.04. Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. Szlávi-Zsakó: 1. előadás
Struktogram (és pszeudokód) Programozás alapjai 2017.04.04. Struktogram (és pszeudokód) Szekvencia: Elágazások: Utasítás1 Utasítás2 Ha Feltétel akkor Igaz-ág utasításai különben Hamis-ág utasításai Elágazás vége Elágazás Feltétel1 esetén Utasítások1 Feltétel2 esetén Utasítások2 … … egyéb esetekben Utasítások Elágazás vége 2017.04.04. Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. Szlávi-Zsakó: 1. előadás
Struktogram (és pszeudokód) Programozás alapjai 2017.04.04. Struktogram (és pszeudokód) Ciklusok: Struktogramszerkesztés: Táblázatkezelővel/szövegszerkesztővel Célprogramokkal (pl. NSD) Ciklus amíg Feltétel ciklusmag utasításai Ciklus vége Ciklus ciklusmag utasításai amíg Feltétel Ciklus vége Ciklus cv=tól ig … ciklusmag utasításai Ciklus vége http://people.inf.elte.hu/szlavi/Magamnak/C++/NSD10.zip http://people.inf.elte.hu/szlavi/C++/structorizer_3_08.zip 2017.04.04. Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. Szlávi-Zsakó: 1. előadás
Kódolás (fejlesztői környezet) Programozás alapjai 2017.04.04. Kódolás (fejlesztői környezet) Keretrendszer: Code::Blocks Letöltés: www.codeblocks.org Telepítés: értelemszerűen 2017.04.04. Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. Szlávi-Zsakó: 1. előadás
Kódolás (fejlesztői környezet) Programozás alapjai 2017.04.04. Kódolás (fejlesztői környezet) Első elindításkor: a fordítóprogram kiválasztása 2017.04.04. Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. Szlávi-Zsakó: 1. előadás
Kódolás (fejlesztői környezet) Programozás alapjai 2017.04.04. Kódolás (fejlesztői környezet) Használat lépései: projekt létrehozása, azaz milyen plat-formra készül a majdani alkalmazás: Create a new project sablon (template) választása: Console application 2017.04.04. Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. Szlávi-Zsakó: 1. előadás
Kódolás (fejlesztői környezet) Programozás alapjai 2017.04.04. Kódolás (fejlesztői környezet) Használat további lépései: a projekt munkakörnyezete a diszken projektnév projekt szü-lőkönyvtár 2017.04.04. Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. Szlávi-Zsakó: 1. előadás
Kódolás (fejlesztői környezet) Programozás alapjai 2017.04.04. Kódolás (fejlesztői környezet) Használat további lépései: a projekt munkakörnyezete a diszken projektnév projekt szü-lőkönyvtár projektfájl-név projektfájl-név útvonallal 2017.04.04. Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. Szlávi-Zsakó: 1. előadás
Kódolás (fejlesztői környezet) Programozás alapjai 2017.04.04. Kódolás (fejlesztői környezet) Használat további lépései: fordítóválasztás a munkakörnyezet kialakítás befejezése fordító fejlesztendő? a fejlesztendő környezete végleges? a végleges környezete 2017.04.04. Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. Szlávi-Zsakó: 1. előadás
Kódolás (fejlesztői környezet) Programozás alapjai 2017.04.04. Kódolás (fejlesztői környezet) A kialakult munkakörnyezet: a diszken: a keretrendszerben: a program „kibontása” 2017.04.04. Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. Szlávi-Zsakó: 1. előadás
Kódolás (fejlesztői környezet) Programozás alapjai 2017.04.04. Kódolás (fejlesztői környezet) A kialakult munkakörnyezet: a diszken: a keretrendszerben: 2017.04.04. Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. Szlávi-Zsakó: 1. előadás
Kódolás (fejlesztői környezet) Programozás alapjai 2017.04.04. Kódolás (fejlesztői környezet) A „keletkezett 0. program” fordítása 2017.04.04. Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. Szlávi-Zsakó: 1. előadás
Kódolás (fejlesztői környezet) Programozás alapjai 2017.04.04. Kódolás (fejlesztői környezet) A kialakult munkakörnyezet: a diszken: 2017.04.04. Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. Szlávi-Zsakó: 1. előadás
Kódolás (fejlesztői környezet) Programozás alapjai 2017.04.04. Kódolás (fejlesztői környezet) A kialakult munkakörnyezet: a diszken: 2017.04.04. Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. Szlávi-Zsakó: 1. előadás
Kódolás (fejlesztői környezet) Programozás alapjai 2017.04.04. Kódolás (fejlesztői környezet) A kialakult munkakörnyezet: a main.cpp tartalma: (meglepő módon?) #include <iostream> using namespace std; int main() { cout << "Hello world!" << endl; return 0; } A C++ kulcs-szavakat vastagítottuk. 2017.04.04. Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. Szlávi-Zsakó: 1. előadás
Kódolás (fejlesztői környezet) Programozás alapjai 2017.04.04. Kódolás (fejlesztői környezet) A kialakult munkakörnyezet: a elsőProg.cbp tartalma (xml): (mily meglepő!) 2017.04.04. Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. Szlávi-Zsakó: 1. előadás
Kódolás (fejlesztői környezet) Programozás alapjai 2017.04.04. Kódolás (fejlesztői környezet) A futó konzolalkalmazás: „fordítás” – (az utolsó lefordított) futtatás(a) – fordítás+futtatás – és a konzolablak tartalma: futási idő a futás eredménye visszaadott érték Érdemes elindítani az exe-t! Mit tapasztalt? Magyarázat? 2017.04.04. Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. Szlávi-Zsakó: 1. előadás
Programozási alapismeretek 1. előadás vége Programozás alapjai 2017.04.04. Programozási alapismeretek 1. előadás vége Szlávi-Zsakó: 1. előadás 41