41
Programozási alapismeretek 1. előadás

Programozás alapismeretek EA

  • Upload
    egyetem

  • View
    143

  • Download
    3

Embed Size (px)

Citation preview

Page 1: Programozás alapismeretek EA

Programozási alapismeretek 1. előadás

Page 2: Programozás alapismeretek EA

ELTEELTE

Tartalom

A problémamegoldás lépései –programkészítés folyamata

A programozás során használt nyelvekAz algoritmusA specifikációAlgoritmikus nyelvek –

struktogram A kódolás –

a fejlesztői környezet

Horváth-Szlávi-Zsakó: Programozási alapismeretek 1.Horváth-Szlávi-Zsakó: Programozási alapismeretek 1.14-10-0614-10-06 22/41/41

Page 3: Programozás alapismeretek EA

ELTEELTE

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 / 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.Horváth-Szlávi-Zsakó: Programozási alapismeretek 1.14-10-0614-10-06 33/41/41

Page 4: Programozás alapismeretek EA

ELTEELTE

A programkészítés folyamata

1. Specifikálás (miből?, mit?) → specifikáció2. Tervezés (mivel?, hogyan?) → adat- + algoritmus-

leírás3. 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, -ok6. Hibajavítás (hogyan jó?) → helyes program7. Minőségvizsgálat, hatékonyság (jobbítható-e?,

hogyan?) → jó program8. Dokumentálás (hogyan működik, használható?) →

használható program9. Használat, karbantartás (még mindig jó?) → évelő

(időtálló) program

Horváth-Szlávi-Zsakó: Programozási alapismeretek 1.Horváth-Szlávi-Zsakó: Programozási alapismeretek 1.14-10-0614-10-06 44/41/41

Page 5: Programozás alapismeretek EA

ELTEELTE

Nyelvi szintek

Élőnyelv = pl. magyar ⇓

Specifikációs⇓

Algoritmusleíró⇓

Programozási⇑

Gépi

A nyelvek (élő ⇔ gépi) közelítése

Horváth-Szlávi-Zsakó: Programozási alapismeretek 1.Horváth-Szlávi-Zsakó: Programozási alapismeretek 1.14-10-0614-10-06 55/41/41

Page 6: Programozás alapismeretek EA

ELTEELTE

Az algoritmus fogalma

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.Horváth-Szlávi-Zsakó: Programozási alapismeretek 1.14-10-0614-10-06 66/41/41

Page 7: Programozás alapismeretek EA

ELTEELTE

Az algoritmus fogalma

végrehajtható (van hozzá végrehajtó)lépésenként hajtható végrea lépések maguk is algoritmusokpontosan definiált, adott végrehajtási

sorrenddelegy folyamat véges hosszúságú, időben

esetleg végtelen leírása

Horváth-Szlávi-Zsakó: Programozási alapismeretek 1.Horváth-Szlávi-Zsakó: Programozási alapismeretek 1.14-10-0614-10-06 77/41/41

Page 8: Programozás alapismeretek EA

ELTEELTE

Az algoritmus fogalma

Az (alap)algoritmus elemeinek végre-hajtási „stratégiái”:

egymásutáni végrehajtásnem-determinisztikusságpárhuzamosság

Gondoljuk meg a példa elemeit ebből a szempontból!

Horváth-Szlávi-Zsakó: Programozási alapismeretek 1.Horváth-Szlávi-Zsakó: Programozási alapismeretek 1.14-10-0614-10-06 88/41/41

Page 9: Programozás alapismeretek EA

ELTEELTE

Az algoritmus fogalma

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

Horváth-Szlávi-Zsakó: Programozási alapismeretek 1.Horváth-Szlávi-Zsakó: Programozási alapismeretek 1.14-10-0614-10-06 99/41/41

Page 10: Programozás alapismeretek EA

ELTEELTE

Az algoritmus fogalma

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 nem-determinisz-tikus választás

Horváth-Szlávi-Zsakó: Programozási alapismeretek 1.Horváth-Szlávi-Zsakó: Programozási alapismeretek 1.14-10-0614-10-06 1010/41/41

Page 11: Programozás alapismeretek EA

ELTEELTE

Az algoritmus fogalma

Dobj be 5 20 Ft-ost:

1. Ismételd 5-ször: Dobj be egy 20 Ft-ost!

Új algoritmikus elem: ismétlés adott darab-számszor

Horváth-Szlávi-Zsakó: Programozási alapismeretek 1.Horváth-Szlávi-Zsakó: Programozási alapismeretek 1.14-10-0614-10-06 1111/41/41

Page 12: Programozás alapismeretek EA

ELTEELTE

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ó)

Horváth-Szlávi-Zsakó: Programozási alapismeretek 1.Horváth-Szlávi-Zsakó: Programozási alapismeretek 1.14-10-0614-10-06 1212/41/41

Page 13: Programozás alapismeretek EA

ELTEELTE

A specifikáció

1. Bemenő adatok (azonosító, értékhalmaz [mértékegység])

2. Ismeretek a bemenetről (előfeltétel)3. Eredmények (azonosító, értékhalmaz …)4. Az eredmény kiszámítási szabálya

(utófeltétel)5. A megoldással szembeni követelmények6. Korlátozó tényezők7. A használt fogalmak definíciói

Horváth-Szlávi-Zsakó: Programozási alapismeretek 1.Horváth-Szlávi-Zsakó: Programozási alapismeretek 1.14-10-0614-10-06 1313/41/41

Page 14: Programozás alapismeretek EA

ELTEELTE

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

Horváth-Szlávi-Zsakó: Programozási alapismeretek 1.Horváth-Szlávi-Zsakó: Programozási alapismeretek 1.14-10-0614-10-06 1414/41/41

Page 15: Programozás alapismeretek EA

ELTEELTE

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ósValósKimenet: lehet:LogikaiLogikaiElőfeltétel: x>0 és y>0 és z>0Utó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!

Horváth-Szlávi-Zsakó: Programozási alapismeretek 1.Horváth-Szlávi-Zsakó: Programozási alapismeretek 1.14-10-0614-10-06 1515/41/41

Page 16: Programozás alapismeretek EA

ELTEELTE

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:

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

Horváth-Szlávi-Zsakó: Programozási alapismeretek 1.Horváth-Szlávi-Zsakó: Programozási alapismeretek 1.14-10-0614-10-06 1616/41/41

Page 17: Programozás alapismeretek EA

ELTEELTE

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)

Horváth-Szlávi-Zsakó: Programozási alapismeretek 1.Horváth-Szlávi-Zsakó: Programozási alapismeretek 1.14-10-0614-10-06 1717/41/41

Page 18: Programozás alapismeretek EA

ELTEELTE

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

Horváth-Szlávi-Zsakó: Programozási alapismeretek 1.Horváth-Szlávi-Zsakó: Programozási alapismeretek 1.14-10-0614-10-06 1818/41/41

Page 19: Programozás alapismeretek EA

ELTEELTE

Példa: másodfokú egyenlet(specifikáció)

Specifikáció1:

Bemenet: a,b,c:ValósValósKimenet: x:ValósValósElő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:

Horváth-Szlávi-Zsakó: Programozási alapismeretek 1.Horváth-Szlávi-Zsakó: Programozási alapismeretek 1.14-10-0614-10-06 1919/41/41

a2ca4bb

x2

1,2 ∗∗∗−±−=

Page 20: Programozás alapismeretek EA

ELTEELTE

Példa: másodfokú egyenlet(specifikáció)

Specifikáció2:Bemenet: a,b,c:ValósValósKimenet: x:ValósValósElőfeltétel: a≠0

Mi lenne, ha megengednénk?

Utófeltétel2:

Nyitott kérdések: Mindig van megoldás? Egy megoldás van?

a2

ca4bbx

2

∗∗∗−+−=

Horváth-Szlávi-Zsakó: Programozási alapismeretek 1.Horváth-Szlávi-Zsakó: Programozási alapismeretek 1.14-10-0614-10-06 2020/41/41

Page 21: Programozás alapismeretek EA

ELTEELTE

Példa: másodfokú egyenlet(specifikáció)

Kimenet bővítés:Kimenet: x:ValósValós,, van:LogikaiLogikaiUtófeltétel: van=(b2≥4*a*c) és

van →

Nyitott kérdés: Egy megoldás van? – hf .

a2

ca4bbx

2

∗∗∗−+−=

Horváth-Szlávi-Zsakó: Programozási alapismeretek 1.Horváth-Szlávi-Zsakó: Programozási alapismeretek 1.14-10-0614-10-06 2121/41/41

Page 22: Programozás alapismeretek EA

ELTEELTE

Példa: másodfokú egyenlet(algoritmus)

d:=b2-4*a*c

van:=d≥0van?

a2

db:x

∗+−=

Igaz-ág Igaz-ág

Hamis-ág Hamis-ág

II NN

Algoritmus:

A feltételes utasítás „3-dobozos” struktúra.

Horváth-Szlávi-Zsakó: Programozási alapismeretek 1.Horváth-Szlávi-Zsakó: Programozási alapismeretek 1.14-10-0614-10-06 2222/41/41

Page 23: Programozás alapismeretek EA

ELTEELTE

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.a2

db:x

∗+−=

Horváth-Szlávi-Zsakó: Programozási alapismeretek 1.Horváth-Szlávi-Zsakó: Programozási alapismeretek 1.14-10-0614-10-06 2323/41/41

Page 24: Programozás alapismeretek EA

ELTEELTE

Algoritmusleíró nyelvek

Szöveges leírás Mondatokkal leírás Mondatszerű elemekkel – pszeudokód

Rajzos leírás Folyamatábra Struktogram

Horváth-Szlávi-Zsakó: Programozási alapismeretek 1.Horváth-Szlávi-Zsakó: Programozási alapismeretek 1.14-10-0614-10-06 2424/41/41

Page 25: Programozás alapismeretek EA

ELTEELTE

Struktogram(és pszeudokód)

Szekvencia:

Elágazások:

Utasítás1Utasítás1Utasítás2Utasítás2

HaHa Feltétel Feltétel akkorakkor Igaz-ág utasításai Igaz-ág utasításaikülönbenkülönben Hamis-ág utasításaiHamis-ág utasításaiElágazás végeElágazás vége

ElágazásElágazás Feltétel1 Feltétel1 eseténesetén Utasítások1 Utasítások1 Feltétel2 Feltétel2 eseténesetén Utasítások2 Utasítások2 … … … … egyéb esetekbenegyéb esetekben Utasítások UtasításokElágazás végeElágazás vége

Horváth-Szlávi-Zsakó: Programozási alapismeretek 1.Horváth-Szlávi-Zsakó: Programozási alapismeretek 1.14-10-0614-10-06 2525/41/41

Page 26: Programozás alapismeretek EA

ELTEELTE

Struktogram(és pszeudokód)

Ciklusok:

Struktogramszerkesztés: Táblázatkezelővel/szövegszerkesztővel Célprogramokkal (pl. NSD)

Ciklus amígCiklus amíg Feltétel Feltétel ciklusmag utasításai ciklusmag utasításaiCiklus végeCiklus vége

Ciklus Ciklus ciklusmag utasításaiciklusmag utasításaiamígamíg Feltétel FeltételCiklus végeCiklus vége

Ciklus Ciklus cv=tól ig …cv=tól ig … ciklusmag utasításai ciklusmag utasításaiCiklus végeCiklus vége

Horváth-Szlávi-Zsakó: Programozási alapismeretek 1.Horváth-Szlávi-Zsakó: Programozási alapismeretek 1.14-10-0614-10-06 2626/41/41

Page 27: Programozás alapismeretek EA

ELTEELTE

Kódolás(fejlesztői környezet)

Keretrendszer:Code::Blocks

Letöltés:www.codeblocks.org

Telepítés:értelemszerűen

Horváth-Szlávi-Zsakó: Programozási alapismeretek 1.Horváth-Szlávi-Zsakó: Programozási alapismeretek 1.14-10-0614-10-06 2727/41/41

Page 28: Programozás alapismeretek EA

ELTEELTE

Első elindításkor:a fordítóprogram kiválasztása

Kódolás(fejlesztői környezet)

Horváth-Szlávi-Zsakó: Programozási alapismeretek 1.Horváth-Szlávi-Zsakó: Programozási alapismeretek 1.14-10-0614-10-06 2828/41/41

Page 29: Programozás alapismeretek EA

ELTEELTE

Használat lépései:1. projekt létrehozása, azaz milyen plat-

formra készül a majdani alkalmazás:Create a new project

2. sablon (template) választása: Console application

Kódolás(fejlesztői környezet)

Horváth-Szlávi-Zsakó: Programozási alapismeretek 1.Horváth-Szlávi-Zsakó: Programozási alapismeretek 1.14-10-0614-10-06 2929/41/41

Page 30: Programozás alapismeretek EA

ELTEELTE

Használat további lépései: a projekt munkakörnyezete a diszken

projektnév

projekt szü-lőkönyvtár

Kódolás(fejlesztői környezet)

Horváth-Szlávi-Zsakó: Programozási alapismeretek 1.Horváth-Szlávi-Zsakó: Programozási alapismeretek 1.14-10-0614-10-06 3030/41/41

Page 31: Programozás alapismeretek EA

ELTEELTE

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

Kódolás(fejlesztői környezet)

Horváth-Szlávi-Zsakó: Programozási alapismeretek 1.Horváth-Szlávi-Zsakó: Programozási alapismeretek 1.14-10-0614-10-06 3131/41/41

Page 32: Programozás alapismeretek EA

ELTEELTE

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

Kódolás(fejlesztői környezet)

Horváth-Szlávi-Zsakó: Programozási alapismeretek 1.Horváth-Szlávi-Zsakó: Programozási alapismeretek 1.14-10-0614-10-06 3232/41/41

Page 33: Programozás alapismeretek EA

ELTEELTE

A kialakult munkakörnyezet: a diszken:

a keretrendszerben:

a program „kibontása”

Kódolás(fejlesztői környezet)

Horváth-Szlávi-Zsakó: Programozási alapismeretek 1.Horváth-Szlávi-Zsakó: Programozási alapismeretek 1.14-10-0614-10-06 3333/41/41

Page 34: Programozás alapismeretek EA

ELTEELTE

A kialakult munkakörnyezet: a diszken:

a keretrendszerben:

Kódolás(fejlesztői környezet)

Horváth-Szlávi-Zsakó: Programozási alapismeretek 1.Horváth-Szlávi-Zsakó: Programozási alapismeretek 1.14-10-0614-10-06 3434/41/41

Page 35: Programozás alapismeretek EA

ELTEELTE

A „keletkezett 0. program” fordítása

Kódolás(fejlesztői környezet)

Horváth-Szlávi-Zsakó: Programozási alapismeretek 1.Horváth-Szlávi-Zsakó: Programozási alapismeretek 1.14-10-0614-10-06 3535/41/41

Page 36: Programozás alapismeretek EA

ELTEELTE

A kialakult munkakörnyezet: a diszken:

Kódolás(fejlesztői környezet)

Horváth-Szlávi-Zsakó: Programozási alapismeretek 1.Horváth-Szlávi-Zsakó: Programozási alapismeretek 1.14-10-0614-10-06 3636/41/41

Page 37: Programozás alapismeretek EA

ELTEELTE

A kialakult munkakörnyezet: a diszken:

Kódolás(fejlesztői környezet)

Horváth-Szlávi-Zsakó: Programozási alapismeretek 1.Horváth-Szlávi-Zsakó: Programozási alapismeretek 1.14-10-0614-10-06 3737/41/41

Page 38: Programozás alapismeretek EA

ELTEELTE

A kialakult munkakörnyezet: a main.cpp tartalma:

(meglepő módon?)

#include <#include <iostreamiostream>>

usingusing namespacenamespace std; std;

intint main()main(){{ cout <<cout << "Hello world!" "Hello world!" << endl;<< endl; returnreturn 0 0;;}}

Kódolás(fejlesztői környezet)

Horváth-Szlávi-Zsakó: Programozási alapismeretek 1.Horváth-Szlávi-Zsakó: Programozási alapismeretek 1.14-10-0614-10-06 3838/41/41

Page 39: Programozás alapismeretek EA

ELTEELTE

A kialakult munkakörnyezet: a elsőProg.cbp tartalma (xml):

(mily meglepő!)(mily meglepő!)

Kódolás(fejlesztői környezet)

Horváth-Szlávi-Zsakó: Programozási alapismeretek 1.Horváth-Szlávi-Zsakó: Programozási alapismeretek 1.14-10-0614-10-06 3939/41/41

Page 40: Programozás alapismeretek EA

ELTEELTE

A futó konzolalkalmazás: „fordítás” – (az utolsó lefordított) futtatás(a) – fordítás+futtatás – és a konzolablak tartalma:

Érdemes elindítani az exe-t! Érdemes elindítani az exe-t! Mit tapasztalt? Magyarázat?Mit tapasztalt? Magyarázat?

visszaadott érték

futási idő

a futás eredménye

Kódolás(fejlesztői környezet)

Horváth-Szlávi-Zsakó: Programozási alapismeretek 1.Horváth-Szlávi-Zsakó: Programozási alapismeretek 1.14-10-0614-10-06 4040/41/41

Page 41: Programozás alapismeretek EA

Programozási alapismeretek1. előadás vége