Programozsi alapismeretek 1 elads Tartalom A problmamegolds lpsei
Programozási alapismeretek 1. előadás
Tartalom ØA problémamegoldás lépései – programkészítés folyamata ØA ELTE programozás során használt nyelvek Ø Az algoritmus Ø A specifikáció Ø Algoritmikus nyelvek – struktogram Ø A kódolás – a fejlesztői környezet 9/24/2021 Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. 2/41
A problémamegoldás lépései ELTE 9/24/2021 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 / mérnök…) 3. Szervezés (ütemterv / vállalkozó…) 4. Építkezés (anyagbeszerzés, kivitelezés / kivitelező…) 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, . . . ) Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. 3/41
A programkészítés folyamata Specifikálás (miből? , mit? ) specifikáció 2. Tervezés (mivel? , hogyan? ) adat- + algoritmus-leírás 3. Kódolás (a gép hogyan? ) kód (reprezentáció + implementáció) 4. Tesztelés (hibás-e? ) 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ó-e? , hogyan? ) jó program 8. Dokumentálás (hogyan működik, használható? ) használható program 1. ELTE 9/24/2021 Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. 4/41
Nyelvi szintek ELTE Élőnyelv = pl. magyar Specifikációs Algoritmusleíró Programozási Gépi A nyelvek (élő gépi) közelítése 9/24/2021 Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. 5/41
Az algoritmus fogalma ELTE 9/24/2021 Italautomata használata: 1. Válassz italt! 2. Dobj be egy 100 Ft-ost! 3. Nyomd meg a megfelelő gombot! 4. Várj, amíg folyik az ital! 5. Vedd ki az italt! 6. Idd meg! Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. 6/41
Az algoritmus fogalma Ø végrehajtható ELTE 9/24/2021 (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 Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. 7/41
Az algoritmus fogalma ELTE 9/24/2021 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! Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. 8/41
Az algoritmus fogalma ELTE Italautomata használata: 1. Válassz italt! 2. Dobj be egy 100 Ft-ost! 3. Nyomd meg a megfelelő gombot! 4. Ismételd nézd a poharat! amíg folyik az ital! 5. Vedd ki az italt! 6. Idd meg! Új algoritmikus elem: ismétlés feltételtől függően 9/24/2021 Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. 9/41
Az algoritmus fogalma ELTE Italautomata használata: 1. Válassz italt! 2. Ha van 100 Ft-osod akkor Dobj be egy 100 Ft-ost! különben Dobj be 5 20 Ft-ost 3. … Új algoritmikus elem: választás két tevé-kenység közül, esetleg nemdeterminisz-tikus választás 9/24/2021 Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. 10/41
Az algoritmus fogalma Dobj be 5 20 Ft-ost: 1. Ismételd 5 -ször: Dobj be egy 20 Ft-ost! ELTE Új algoritmikus elem: ismétlés adott darab-számszor 9/24/2021 Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. 11/41
Az algoritmus fogalma ELTE 9/24/2021 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 – Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. 12/41
A specifikáció 1. 2. 3. ELTE 4. 5. 6. 7. 9/24/2021 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 Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. 13/41
A specifikáció ELTE 9/24/2021 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 Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. 14/41
Példa: háromszög (specifikáció) ELTE 9/24/2021 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=(x 2+y 2=z 2) Megjegyzés: a 3 szám sorrendjét ezek sze-rint rögzítettük – z az átfogó hossza! Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. 15/41
Példa: háromszög (algoritmus) Algoritmus: ELTE A programunk három fő részből áll: az adatok beolvasása, az eredmény kiszámítása, az eredmény kiírása: Be: x, y, z [x>0 és y>0 és z>0] lehet: =(x 2+y 2=z 2) Ki: lehet Az „elemi” utasításokat egy-egy „dobozba” írjuk. Később a be- és kimenetet nem algoritmizáljuk! 9/24/2021 Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. 16/41
Példa: háromszög (algoritmus) Egy másik algoritmus a lényegi részre: xx: =x 2 ELTE yy: =y 2 zz: =z 2 lehet: =(xx+yy=zz) Bevezethetők/-endők segéd (belső, saját) változók. 9/24/2021 Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. 17/41
Példa: másodfokú egyenlet (specifikáció) ELTE Feladat: Adjuk meg a másodfokú egyenlet egy megol-dását! Az egyenlet: ax 2+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? – 9/24/2021 Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. kimenet/utófeltétel 18/41
Példa: másodfokú egyenlet (specifikáció) ELTE Specifikáció 1: Ø Bemenet: a, b, c: Valós Ø Kimenet: x: Valós Ø Előfeltétel: – Ø Utófeltétel 1: ax 2+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: 9/24/2021 Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. 19/41
Példa: másodfokú egyenlet (specifikáció) ELTE Specifikáció 2: Ø Bemenet: a, b, c: Valós Ø Kimenet: x: Valós Ø Előfeltétel: a 0 Mi lenne, ha megengednénk? Ø Utófeltétel 2: Nyitott kérdések: § § 9/24/2021 Mindig van megoldás? Egy megoldás van? Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. 20/41
Példa: másodfokú egyenlet (specifikáció) Kimenet bővítés: Ø Kimenet: x: Valós, van: Logikai Ø Utófeltétel: van=(b 2 4*a*c) és ELTE van Nyitott kérdés: § 9/24/2021 Egy megoldás van? – hf. Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. 21/41
Példa: másodfokú egyenlet (algoritmus) Algoritmus: ELTE d: =b 2 -4*a*c van: =d 0 I Igaz-ág van? N Hamis-ág A feltételes utasítás „ 3 -dobozos” struktúra. 9/24/2021 Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. 22/41
Példa: másodfokú egyenlet (algoritmus) Algoritmus másképpen: ELTE 9/24/2021 Program MásodfokúEgyenlet: d: =b 2 -4*a*c van: =d≥ 0 Ha van akkor Program vége. Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. 23/41
Algoritmusleíró nyelvek Ø Szöveges leírás Mondatokkal leírás Ø Mondatszerű elemekkel – Ø pszeudokód ELTE Ø Rajzos leírás Folyamatábra Ø Struktogram Ø 9/24/2021 Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. 24/41
Struktogram (és pszeudokód) Ø Szekvencia: Utasítás 1 Utasítás 2 ELTE Ø Elágazások: 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étel 1 esetén Feltétel 2 esetén … egyéb esetekben Elágazás vége 9/24/2021 Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. Utasítások 1 Utasítások 2 … Utasítások 25/41
Struktogram (és pszeudokód) Ø Ciklusok: Ciklus amíg Feltétel ciklusmag utasításai Ciklus vége Ciklus ciklusmag utasításai amíg Feltétel Ciklus vége ELTE Ciklus cv=tól ig … ciklusmag utasításai Ciklus vége Ø Struktogramszerkesztés: § § 9/24/2021 Táblázatkezelővel/szövegszerkesztővel Célprogramokkal (pl. NSD) Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. 26/41
Kódolás (fejlesztői környezet) Ø Keretrendszer: Code: : Blocks Ø Letöltés: ELTE www. codeblocks. org Ø Telepítés: értelemszerűen 9/24/2021 Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. 27/41
Kódolás (fejlesztői környezet) Ø Első elindításkor: a fordítóprogram kiválasztása ELTE 9/24/2021 Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. 28/41
Kódolás (fejlesztői környezet) Ø Használat 1. ELTE 2. 9/24/2021 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 Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. 29/41
Kódolás (fejlesztői környezet) Ø Használat § ELTE további lépései: a projekt munkakörnyezete a diszken projektnév projekt szülőkönyvtár 9/24/2021 Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. 30/41
Kódolás (fejlesztői környezet) Ø Használat § ELTE további lépései: a projekt munkakörnyezete a diszken projektnév projekt szülőkönyvtár projektfájlnév útvonallal 9/24/2021 Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. 31/41
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ó § ELTE fejlesztendő? a fejlesztendő környezete végleges? a végleges környezete 9/24/2021 Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. 32/41
Kódolás (fejlesztői környezet) ØA kialakult munkakörnyezet: § a diszken: § a keretrendszerben: ELTE a program „kibontása” 9/24/2021 Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. 33/41
Kódolás (fejlesztői környezet) ØA kialakult munkakörnyezet: § a diszken: § a keretrendszerben: ELTE 9/24/2021 Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. 34/41
Kódolás (fejlesztői környezet) ØA „keletkezett 0. program” fordítása ELTE 9/24/2021 Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. 35/41
Kódolás (fejlesztői környezet) ØA kialakult munkakörnyezet: § a diszken: ELTE 9/24/2021 Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. 36/41
Kódolás (fejlesztői környezet) ØA kialakult munkakörnyezet: § a diszken: ELTE 9/24/2021 Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. 37/41
Kódolás (fejlesztői környezet) ØA kialakult munkakörnyezet: § a main. cpp tartalma: #include <iostream> ELTE using namespace std; int main() { cout << "Hello world!" << endl; return 0; } (meglepő módon? ) 9/24/2021 Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. 38/41
Kódolás (fejlesztői környezet) ØA kialakult munkakörnyezet: § a elsőProg. cbp tartalma (xml): ELTE (mily meglepő!) 9/24/2021 Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. 39/41
Kódolás (fejlesztői környezet) ØA futó konzolalkalmazás: § § ELTE § § „fordítás” – (az utolsó lefordított) futtatás(a) – fordítás+futtatás – futási idő és a konzolablak tartalma: a futás eredménye visszaadott érték 9/24/2021 Érdemes elindítani az exe-t! Mit tapasztalt? Magyarázat? Horváth-Szlávi-Zsakó: Programozási alapismeretek 1. 40/41
Programozási alapismeretek 1. előadás vége
- Slides: 41