programozási alapismeretek 1. előadás
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 PresentationTRANSCRIPT
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
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, ...)
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
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
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!
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
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
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
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
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
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)
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
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
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!
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
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)
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
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!
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
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
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:
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
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
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
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
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
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
Programozási alapismeretek
1. előadás vége