programozási alapismeretek 1. előadás

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

Upload: ira

Post on 21-Jan-2016

125 views

Category:

Documents


11 download

DESCRIPTION

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. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Programozási alapismeretek  1. előadás

Programozási alapismeretek

1. előadás

Page 2: Programozási alapismeretek  1. előadás

ELTEELTE

Szlávi-Zsakó: Programozási alapismeretek 1.Szlávi-Zsakó: Programozási alapismeretek 1. 22/41/4123.04.21.23.04.21.

Tartalom

A problémamegoldás lépései –

programkészítés folyamataA programozás során használt nyelvek

Az algoritmusA specifikációAlgoritmikus nyelvek –

struktogram A kódolás –

a fejlesztői környezet

Page 3: Programozási alapismeretek  1. előadás

ELTEELTE

Szlávi-Zsakó: Programozási alapismeretek 1.Szlávi-Zsakó: Programozási alapismeretek 1. 33/41/4123.04.21.23.04.21.

A problémamegoldás

lépéseiMintapé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, ...)

Page 4: Programozási alapismeretek  1. előadás

ELTEELTE

Szlávi-Zsakó: Programozási alapismeretek 1.Szlávi-Zsakó: Programozási alapismeretek 1. 44/41/4123.04.21.23.04.21.

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

Page 5: Programozási alapismeretek  1. előadás

ELTEELTE

Szlávi-Zsakó: Programozási alapismeretek 1.Szlávi-Zsakó: Programozási alapismeretek 1. 55/41/4123.04.21.23.04.21.

Nyelvi szintek

Élőnyelv = Magyar

Specifikáció

Algoritmusleíró

Programozási

Gépi

A nyelvek (magyar gépi) közelítése

Page 6: Programozási alapismeretek  1. előadás

ELTEELTE

Szlávi-Zsakó: Programozási alapismeretek 1.Szlávi-Zsakó: Programozási alapismeretek 1. 66/41/4123.04.21.23.04.21.

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!

Page 7: Programozási alapismeretek  1. előadás

ELTEELTE

Szlávi-Zsakó: Programozási alapismeretek 1.Szlávi-Zsakó: Programozási alapismeretek 1. 77/41/4123.04.21.23.04.21.

Az algoritmus fogalma

végrehajtható (van hozzá végrehajtó)

lépésenként hajtható végrea 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

Page 8: Programozási alapismeretek  1. előadás

ELTEELTE

Szlávi-Zsakó: Programozási alapismeretek 1.Szlávi-Zsakó: Programozási alapismeretek 1. 88/41/4123.04.21.23.04.21.

Az algoritmus fogalma

Az alapalgoritmus elemei:egymásutáni végrehajtásnem-determinisztikusságpárhuzamosság

Page 9: Programozási alapismeretek  1. előadás

ELTEELTE

Szlávi-Zsakó: Programozási alapismeretek 1.Szlávi-Zsakó: Programozási alapismeretek 1. 99/41/4123.04.21.23.04.21.

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

Page 10: Programozási alapismeretek  1. előadás

ELTEELTE

Szlávi-Zsakó: Programozási alapismeretek 1.Szlávi-Zsakó: Programozási alapismeretek 1. 1010/41/4123.04.21.23.04.21.

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 öt 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

Page 11: Programozási alapismeretek  1. előadás

ELTEELTE

Szlávi-Zsakó: Programozási alapismeretek 1.Szlávi-Zsakó: Programozási alapismeretek 1. 1111/41/4123.04.21.23.04.21.

Az algoritmus fogalma

Dobj be öt 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

Page 12: Programozási alapismeretek  1. előadás

ELTEELTE

Szlávi-Zsakó: Programozási alapismeretek 1.Szlávi-Zsakó: Programozási alapismeretek 1. 1212/41/4123.04.21.23.04.21.

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)

Page 13: Programozási alapismeretek  1. előadás

ELTEELTE

Szlávi-Zsakó: Programozási alapismeretek 1.Szlávi-Zsakó: Programozási alapismeretek 1. 1313/41/4123.04.21.23.04.21.

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

Page 14: Programozási alapismeretek  1. előadás

ELTEELTE

Szlávi-Zsakó: Programozási alapismeretek 1.Szlávi-Zsakó: Programozási alapismeretek 1. 1414/41/4123.04.21.23.04.21.

A specifikáció

Tulajdonságai1. Egyértelmű, pontos, teljes2. Rövid, tömör, formalizált3. Szemléletes, érthetőSpecifikációs eszközök1. Szöveges leírás2. Matematikai megadás

Page 15: Programozási alapismeretek  1. előadás

ELTEELTE

Szlávi-Zsakó: Programozási alapismeretek 1.Szlávi-Zsakó: Programozási alapismeretek 1. 1515/41/4123.04.21.23.04.21.

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!

Page 16: Programozási alapismeretek  1. előadás

ELTEELTE

Szlávi-Zsakó: Programozási alapismeretek 1.Szlávi-Zsakó: Programozási alapismeretek 1. 1616/41/4123.04.21.23.04.21.

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!

Be: x,y,z [x>0 és y>0 és z>0]lehet:=(x2+y2=z2)

Ki: lehet

Page 17: Programozási alapismeretek  1. előadás

ELTEELTE

Szlávi-Zsakó: Programozási alapismeretek 1.Szlávi-Zsakó: Programozási alapismeretek 1. 1717/41/4123.04.21.23.04.21.

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)

Page 18: Programozási alapismeretek  1. előadás

ELTEELTE

Szlávi-Zsakó: Programozási alapismeretek 1.Szlávi-Zsakó: Programozási alapismeretek 1. 1818/41/4123.04.21.23.04.21.

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

Page 19: Programozási alapismeretek  1. előadás

ELTEELTE

Szlávi-Zsakó: Programozási alapismeretek 1.Szlávi-Zsakó: Programozási alapismeretek 1. 1919/41/4123.04.21.23.04.21.

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!

Page 20: Programozási alapismeretek  1. előadás

ELTEELTE

Szlávi-Zsakó: Programozási alapismeretek 1.Szlávi-Zsakó: Programozási alapismeretek 1. 2020/41/4123.04.21.23.04.21.

Példa: másodfokú egyenlet

(specifikáció)

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

Mi lenne, ha megengednénk?

Utófeltétel2:

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

a2ca4bb

x2

Page 21: Programozási alapismeretek  1. előadás

ELTEELTE

Szlávi-Zsakó: Programozási alapismeretek 1.Szlávi-Zsakó: Programozási alapismeretek 1. 2121/41/4123.04.21.23.04.21.

Példa: másodfokú egyenlet

(specifikáció)

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

van

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

a2ca4bb

x2

Page 22: Programozási alapismeretek  1. előadás

ELTEELTE

Szlávi-Zsakó: Programozási alapismeretek 1.Szlávi-Zsakó: Programozási alapismeretek 1. 2222/41/4123.04.21.23.04.21.

Példa: másodfokú egyenlet

(algoritmus)

d:=b2-4*a*c

van:=d0

van?

a2db

:x

Igaz-ág Igaz-ág

Hamis-ág Hamis-ág

II NN

Algoritmus:

Page 23: Programozási alapismeretek  1. előadás

ELTEELTE

Szlávi-Zsakó: Programozási alapismeretek 1.Szlávi-Zsakó: Programozási alapismeretek 1. 2323/41/4123.04.21.23.04.21.

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

:x

Page 24: Programozási alapismeretek  1. előadás

ELTEELTE

Szlávi-Zsakó: Programozási alapismeretek 1.Szlávi-Zsakó: Programozási alapismeretek 1. 2424/41/4123.04.21.23.04.21.

Algoritmusleíró nyelvek

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

Rajzos leírás Folyamatábra Struktogram

Page 25: Programozási alapismeretek  1. előadás

ELTEELTE

Szlávi-Zsakó: Programozási alapismeretek 1.Szlávi-Zsakó: Programozási alapismeretek 1. 2525/41/4123.04.21.23.04.21.

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

Page 26: Programozási alapismeretek  1. előadás

ELTEELTE

Szlávi-Zsakó: Programozási alapismeretek 1.Szlávi-Zsakó: Programozási alapismeretek 1. 2626/41/4123.04.21.23.04.21.

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

Page 27: Programozási alapismeretek  1. előadás

ELTEELTE

Szlávi-Zsakó: Programozási alapismeretek 1.Szlávi-Zsakó: Programozási alapismeretek 1. 2727/41/4123.04.21.23.04.21.

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

Keretrendszer:Code::Blocks

Letöltés:www.codeblocks.org

Telepítés:értelemszerűen

Page 28: Programozási alapismeretek  1. előadás

ELTEELTE

Szlávi-Zsakó: Programozási alapismeretek 1.Szlávi-Zsakó: Programozási alapismeretek 1. 2828/41/4123.04.21.23.04.21.

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

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

Page 29: Programozási alapismeretek  1. előadás

ELTEELTE

Szlávi-Zsakó: Programozási alapismeretek 1.Szlávi-Zsakó: Programozási alapismeretek 1. 2929/41/4123.04.21.23.04.21.

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)

Page 30: Programozási alapismeretek  1. előadás

ELTEELTE

Szlávi-Zsakó: Programozási alapismeretek 1.Szlávi-Zsakó: Programozási alapismeretek 1. 3030/41/4123.04.21.23.04.21.

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

diszkenprojektnév

projekt szü-

lőkönyvtár

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

Page 31: Programozási alapismeretek  1. előadás

ELTEELTE

Szlávi-Zsakó: Programozási alapismeretek 1.Szlávi-Zsakó: Programozási alapismeretek 1. 3131/41/4123.04.21.23.04.21.

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

diszkenprojektnév

projekt szü-

lőkönyvtárprojektfájl

-név

projektfájl-név

útvonallal

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

Page 32: Programozási alapismeretek  1. előadás

ELTEELTE

Szlávi-Zsakó: Programozási alapismeretek 1.Szlávi-Zsakó: Programozási alapismeretek 1. 3232/41/4123.04.21.23.04.21.

Használat további lépései: fordítóválasztás a munkakörnyezet kialakítás

befejezésefordító

fejlesztendő?a

fejlesztendő környezetevégleges?

a végleges környezete

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

Page 33: Programozási alapismeretek  1. előadás

ELTEELTE

Szlávi-Zsakó: Programozási alapismeretek 1.Szlávi-Zsakó: Programozási alapismeretek 1. 3333/41/4123.04.21.23.04.21.

A kialakult munkakörnyezet: a diszken:

a keretrendszerben:

a program „kibontása

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

Page 34: Programozási alapismeretek  1. előadás

ELTEELTE

Szlávi-Zsakó: Programozási alapismeretek 1.Szlávi-Zsakó: Programozási alapismeretek 1. 3434/41/4123.04.21.23.04.21.

A kialakult munkakörnyezet: a diszken:

a keretrendszerben:

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

Page 35: Programozási alapismeretek  1. előadás

ELTEELTE

Szlávi-Zsakó: Programozási alapismeretek 1.Szlávi-Zsakó: Programozási alapismeretek 1. 3535/41/4123.04.21.23.04.21.

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

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

Page 36: Programozási alapismeretek  1. előadás

ELTEELTE

Szlávi-Zsakó: Programozási alapismeretek 1.Szlávi-Zsakó: Programozási alapismeretek 1. 3636/41/4123.04.21.23.04.21.

A kialakult munkakörnyezet: a diszken:

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

Page 37: Programozási alapismeretek  1. előadás

ELTEELTE

Szlávi-Zsakó: Programozási alapismeretek 1.Szlávi-Zsakó: Programozási alapismeretek 1. 3737/41/4123.04.21.23.04.21.

A kialakult munkakörnyezet: a diszken:

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

Page 38: Programozási alapismeretek  1. előadás

ELTEELTE

Szlávi-Zsakó: Programozási alapismeretek 1.Szlávi-Zsakó: Programozási alapismeretek 1. 3838/41/4123.04.21.23.04.21.

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)

Page 39: Programozási alapismeretek  1. előadás

ELTEELTE

Szlávi-Zsakó: Programozási alapismeretek 1.Szlávi-Zsakó: Programozási alapismeretek 1. 3939/41/4123.04.21.23.04.21.

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

(xml):

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

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

Page 40: Programozási alapismeretek  1. előadás

ELTEELTE

Szlávi-Zsakó: Programozási alapismeretek 1.Szlávi-Zsakó: Programozási alapismeretek 1. 4040/41/4123.04.21.23.04.21.

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 Érdemes elindítani az exe-t! exe-t!

Mit tapasztalt? Mit tapasztalt? Magyarázat?Magyarázat?

visszaadott érték

futási idő

a futás eredmén

ye

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

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

Programozási alapismeretek

1. előadás vége