410 likes | 623 Views
Programozási alapismeretek 1. előadás. 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. A problémamegoldás lépései.
E N D
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 Szlávi-Zsakó: Programozási alapismeretek 1.
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, ...) Szlávi-Zsakó: Programozási alapismeretek 1.
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 Szlávi-Zsakó: Programozási alapismeretek 1.
Nyelvi szintek Élőnyelv = Magyar Specifikáció Algoritmusleíró Programozási Gépi A nyelvek (magyar gépi) közelítése Szlávi-Zsakó: Programozási alapismeretek 1.
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! Szlávi-Zsakó: Programozási alapismeretek 1.
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 Szlávi-Zsakó: Programozási alapismeretek 1.
Az algoritmus fogalma Az alapalgoritmus elemei: egymásutáni végrehajtás nem-determinisztikusság párhuzamosság Szlávi-Zsakó: Programozási alapismeretek 1.
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 Szlávi-Zsakó: Programozási alapismeretek 1.
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 öt 20 Ft-ost … Új algoritmikus elem: választás két tevé-kenység közül, esetleg nem-determinisz-tikus választás Szlávi-Zsakó: Programozási alapismeretek 1.
Az algoritmus fogalma Dobj be öt 20 Ft-ost: Ismételd 5-ször: Dobj be egy 20 Ft-ost! Új algoritmikus elem: ismétlés adott darab-számszor Szlávi-Zsakó: Programozási alapismeretek 1.
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) Szlávi-Zsakó: Programozási alapismeretek 1.
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 Szlávi-Zsakó: Programozási alapismeretek 1.
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 Szlávi-Zsakó: Programozási alapismeretek 1.
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! Szlávi-Zsakó: Programozási alapismeretek 1.
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, azeredmény kiírása: Megjegyzés: később eltekintünk a be- és ki-menet algoritmizálásától! Szlávi-Zsakó: Programozási alapismeretek 1.
Példa: háromszög(algoritmus) Egy másik algoritmusa lényegi részre: Bevezethetők/-endők segéd (belső, saját) változók. Szlávi-Zsakó: Programozási alapismeretek 1.
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 Szlávi-Zsakó: Programozási alapismeretek 1.
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! Szlávi-Zsakó: Programozási alapismeretek 1.
Példa: másodfokú egyenlet(specifikáció) Specifikáció2: Bemenet: a,b,c:Valós Kimenet: x:Valós Előfeltétel: a0Mi lenne, ha megengednénk? Utófeltétel2: Nyitott kérdések: Mindig van megoldás? Egy megoldás van? Szlávi-Zsakó: Programozási alapismeretek 1.
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 . Szlávi-Zsakó: Programozási alapismeretek 1.
Példa: másodfokú egyenlet(algoritmus) Algoritmus: I N Igaz-ág Hamis-ág Szlávi-Zsakó: Programozási alapismeretek 1.
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. Szlávi-Zsakó: Programozási alapismeretek 1.
Algoritmusleíró nyelvek Szöveges leírás Mondatokkal leírás Mondatszerű elemekkel – pszeudokód Rajzos leírás Folyamatábra Struktogram Szlávi-Zsakó: Programozási alapismeretek 1.
Struktogram(és pszeudokód) Szekvencia: Elágazások: Utasítás1 Utasítás2 Ha Feltétel akkor Igaz-ág utasításaikülönben Hamis-ág utasításaiElá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ásokElágazás vége Szlávi-Zsakó: Programozási alapismeretek 1.
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ásaiCiklus vége Ciklus ciklusmag utasításaiamíg FeltételCiklus vége Ciklus cv=tól ig … ciklusmag utasításaiCiklus vége Szlávi-Zsakó: Programozási alapismeretek 1.
Kódolás(fejlesztői környezet) Keretrendszer: Code::Blocks Letöltés: www.codeblocks.org Telepítés: értelemszerűen Szlávi-Zsakó: Programozási alapismeretek 1.
Első elindításkor: a fordítóprogram kiválasztása Kódolás(fejlesztői környezet) Szlávi-Zsakó: Programozási alapismeretek 1.
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 Kódolás(fejlesztői környezet) Szlávi-Zsakó: Programozási alapismeretek 1.
Használat további lépései: a projekt munkakörnyezete a diszken Kódolás(fejlesztői környezet) projektnév projekt szü-lőkönyvtár Szlávi-Zsakó: Programozási alapismeretek 1.
Használat további lépései: a projekt munkakörnyezete a diszken Kódolás(fejlesztői környezet) projektnév projekt szü-lőkönyvtár projektfájl-név projektfájl-név útvonallal Szlávi-Zsakó: Programozási alapismeretek 1.
Használat további lépései: fordítóválasztás a munkakörnyezet kialakítás befejezése Kódolás(fejlesztői környezet) fordító fejlesztendő? a fejlesztendő környezete végleges? a végleges környezete Szlávi-Zsakó: Programozási alapismeretek 1.
A kialakult munkakörnyezet: a diszken: a keretrendszerben: Kódolás(fejlesztői környezet) a program „kibontása” Szlávi-Zsakó: Programozási alapismeretek 1.
A kialakult munkakörnyezet: a diszken: a keretrendszerben: Kódolás(fejlesztői környezet) Szlávi-Zsakó: Programozási alapismeretek 1.
A „keletkezett 0. program” fordítása Kódolás(fejlesztői környezet) Szlávi-Zsakó: Programozási alapismeretek 1.
A kialakult munkakörnyezet: a diszken: Kódolás(fejlesztői környezet) Szlávi-Zsakó: Programozási alapismeretek 1.
A kialakult munkakörnyezet: a diszken: Kódolás(fejlesztői környezet) Szlávi-Zsakó: Programozási alapismeretek 1.
A kialakult munkakörnyezet: a main.cpp tartalma:(meglepő módon?) Kódolás(fejlesztői környezet) #include <iostream> usingnamespace std; intmain() { cout << "Hello world!" << endl; return 0; } Szlávi-Zsakó: Programozási alapismeretek 1.
A kialakult munkakörnyezet: a elsőProg.cbp tartalma (xml): Kódolás(fejlesztői környezet) (mily meglepő!) Szlávi-Zsakó: Programozási alapismeretek 1.
A futó konzolalkalmazás: „fordítás” – (az utolsó lefordított) futtatás(a) – fordítás+futtatás – és a konzolablak tartalma: Kódolás(fejlesztői környezet) futási idő a futás eredménye visszaadott érték Érdemes elindítani az exe-t! Mit tapasztalt? Magyarázat? Szlávi-Zsakó: Programozási alapismeretek 1.