2. EELLTTEE
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
1144--1100--0066 HHoorrvváátthh--SSzzlláávvii--ZZssaakkóó:: PPrrooggrraammoozzáássii aallaappiissmmeerreetteekk 11.. 22//4411
3. EELLTTEE
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, ...)
1144--1100--0066 HHoorrvváátthh--SSzzlláávvii--ZZssaakkóó:: PPrrooggrraammoozzáássii aallaappiissmmeerreetteekk 11.. 33//4411
4. EELLTTEE
A programkészítés
folyamata
1. 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
9. Használat, karbantartás (még mindig jó?) ® évelő
(időtálló) program
1144--1100--0066 HHoorrvváátthh--SSzzlláávvii--ZZssaakkóó:: PPrrooggrraammoozzáássii aallaappiissmmeerreetteekk 11.. 44//4411
5. EELLTTEE
Nyelvi szintek
Élőnyelv = pl. magyar
ß
Specifikációs
ß
Algoritmusleíró
ß
Programozási
Ý
Gépi
A nyelvek (élő Û gépi) közelítése
1144--1100--0066 HHoorrvváátthh--SSzzlláávvii--ZZssaakkóó:: PPrrooggrraammoozzáássii aallaappiissmmeerreetteekk 11.. 55//4411
6. EELLTTEE
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!
1144--1100--0066 HHoorrvváátthh--SSzzlláávvii--ZZssaakkóó:: PPrrooggrraammoozzáássii aallaappiissmmeerreetteekk 11.. 66//4411
7. EELLTTEE
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
1144--1100--0066 HHoorrvváátthh--SSzzlláávvii--ZZssaakkóó:: PPrrooggrraammoozzáássii aallaappiissmmeerreetteekk 11.. 77//4411
8. EELLTTEE
Az algoritmus fogalma
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!
1144--1100--0066 HHoorrvváátthh--SSzzlláávvii--ZZssaakkóó:: PPrrooggrraammoozzáássii aallaappiissmmeerreetteekk 11.. 88//4411
9. EELLTTEE
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
1144--1100--0066 HHoorrvváátthh--SSzzlláávvii--ZZssaakkóó:: PPrrooggrraammoozzáássii aallaappiissmmeerreetteekk 11.. 99//4411
10. EELLTTEE
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
1144--1100--0066 HHoorrvváátthh--SSzzlláávvii--ZZssaakkóó:: PPrrooggrraammoozzáássii aallaappiissmmeerreetteekk 11.. 1100//4411
11. EELLTTEE
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
1144--1100--0066 HHoorrvváátthh--SSzzlláávvii--ZZssaakkóó:: PPrrooggrraammoozzáássii aallaappiissmmeerreetteekk 11.. 1111//4411
12. EELLTTEE
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ó)
1144--1100--0066 HHoorrvváátthh--SSzzlláávvii--ZZssaakkóó:: PPrrooggrraammoozzáássii aallaappiissmmeerreetteekk 11.. 1122//4411
13. EELLTTEE
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ények
6. Korlátozó tényezők
7. A használt fogalmak definíciói
1144--1100--0066 HHoorrvváátthh--SSzzlláávvii--ZZssaakkóó:: PPrrooggrraammoozzáássii aallaappiissmmeerreetteekk 11.. 1133//4411
14. EELLTTEE
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
1144--1100--0066 HHoorrvváátthh--SSzzlláávvii--ZZssaakkóó:: PPrrooggrraammoozzáássii aallaappiissmmeerreetteekk 11.. 1144//4411
15. EELLTTEE
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:VVaallóóss
Kimenet: lehet:LLooggiikkaaii
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!
1144--1100--0066 HHoorrvváátthh--SSzzlláávvii--ZZssaakkóó:: PPrrooggrraammoozzáássii aallaappiissmmeerreetteekk 11.. 1155//4411
16. EELLTTEE
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, az
eredmény kiírása:
Be: x,y,z [x>0 és y>0 és z>0]
lehet:=(x2+y2=z2)
Ki: lehet
Az „elemi” utasításokat egy-egy „dobozba”
írjuk.
Később a be- és kimenetet nem algoritmizáljuk!
1144--1100--0066 HHoorrvváátthh--SSzzlláávvii--ZZssaakkóó:: PPrrooggrraammoozzáássii aallaappiissmmeerreetteekk 11.. 1166//4411
17. EELLTTEE
Példa: háromszög
(algoritmus)
Egy másik algoritmus a lényegi részre:
xx:=x2
yy:=y2
zz:=z2
lehet:=(xx+yy=zz)
Bevezethetők/-endők segéd (belső, saját)
változók.
1144--1100--0066 HHoorrvváátthh--SSzzlláávvii--ZZssaakkóó:: PPrrooggrraammoozzáássii aallaappiissmmeerreetteekk 11.. 1177//4411
18. EELLTTEE
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
1144--1100--0066 HHoorrvváátthh--SSzzlláávvii--ZZssaakkóó:: PPrrooggrraammoozzáássii aallaappiissmmeerreetteekk 11.. 1188//4411
19. EELLTTEE
Példa: másodfokú egyenlet
(specifikáció)
Specifikáció1:
Bemenet: a,b,c:VVaallóóss
Kimenet: x:VVaallóóss
Előfeltétel: –
Utófeltétel: ax2+bx+c=0
1Megjegyzés: az uf. nem ad algoritmizálható
információt. Nem baj, de … próbálkozzunk
még!
= - ± 2
- * *
Megoldóképlet:
x b b 4 a c
1,2 *
2 a
1144--1100--0066 HHoorrvváátthh--SSzzlláávvii--ZZssaakkóó:: PPrrooggrraammoozzáássii aallaappiissmmeerreetteekk 11.. 1199//4411
20. EELLTTEE
Példa: másodfokú egyenlet
(specifikáció)
Specifikáció2:
Bemenet: a,b,c:VVaallóóss
Kimenet: x:VVaallóóss
Előfeltétel: a¹0
Mi lenne, ha megengednénk?
2
*
= - + - * *
x b b 4 a c
Utófeltétel2:
Nyitott kérdések:
Mindig van megoldás?
Egy megoldás van?
2 a
1144--1100--0066 HHoorrvváátthh--SSzzlláávvii--ZZssaakkóó:: PPrrooggrraammoozzáássii aallaappiissmmeerreetteekk 11.. 2200//4411
21. EELLTTEE
Példa: másodfokú egyenlet
(specifikáció)
Kimenet bővítés:
Kimenet: x:VVaallóóss,, van:LLooggiikkaaii
Utófeltétel: van=(b2³4*a*c) és
van ®
Nyitott kérdés:
2
*
= - + - * *
x b b 4 a c
Egy megoldás van? – hf .
2 a
1144--1100--0066 HHoorrvváátthh--SSzzlláávvii--ZZssaakkóó:: PPrrooggrraammoozzáássii aallaappiissmmeerreetteekk 11.. 2211//4411
22. EELLTTEE
Példa: másodfokú egyenlet
(algoritmus)
d:=b2-4*a*c
van:=d³0
van?
II NN
= - +
x : b d
*
2 a
IIggaazz--áágg
HHaammiiss--áágg
Algoritmus:
A feltételes utasítás „3-dobozos” struktúra.
1144--1100--0066 HHoorrvváátthh--SSzzlláávvii--ZZssaakkóó:: PPrrooggrraammoozzáássii aallaappiissmmeerreetteekk 11.. 2222//4411
23. EELLTTEE
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.
= - +
b d
2 a
x:
*
1144--1100--0066 HHoorrvváátthh--SSzzlláávvii--ZZssaakkóó:: PPrrooggrraammoozzáássii aallaappiissmmeerreetteekk 11.. 2233//4411
29. EELLTTEE
Kódolás
(fejlesztői környezet)
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
1144--1100--0066 HHoorrvváátthh--SSzzlláávvii--ZZssaakkóó:: PPrrooggrraammoozzáássii aallaappiissmmeerreetteekk 11.. 2299//4411
30. EELLTTEE
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)
1144--1100--0066 HHoorrvváátthh--SSzzlláávvii--ZZssaakkóó:: PPrrooggrraammoozzáássii aallaappiissmmeerreetteekk 11.. 3300//4411
31. EELLTTEE
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)
1144--1100--0066 HHoorrvváátthh--SSzzlláávvii--ZZssaakkóó:: PPrrooggrraammoozzáássii aallaappiissmmeerreetteekk 11.. 3311//4411
32. EELLTTEE
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ó
fejlesztendő?
a fejlesztendő
környezete
végleges?
a végleges
környezete
1144--1100--0066 HHoorrvváátthh--SSzzlláávvii--ZZssaakkóó:: PPrrooggrraammoozzáássii aallaappiissmmeerreetteekk 11.. 3322//4411
33. EELLTTEE
Kódolás
(fejlesztői környezet)
A kialakult munkakörnyezet:
a diszken:
a keretrendszerben:
a program
„kibontása”
1144--1100--0066 HHoorrvváátthh--SSzzlláávvii--ZZssaakkóó:: PPrrooggrraammoozzáássii aallaappiissmmeerreetteekk 11.. 3333//4411
34. EELLTTEE
Kódolás
(fejlesztői környezet)
A kialakult munkakörnyezet:
a diszken:
a keretrendszerben:
1144--1100--0066 HHoorrvváátthh--SSzzlláávvii--ZZssaakkóó:: PPrrooggrraammoozzáássii aallaappiissmmeerreetteekk 11.. 3344//4411
40. EELLTTEE
A futó konzolalkalmazás:
„fordítás” –
(az utolsó lefordított) futtatás(a) –
fordítás+futtatás –
és a konzolablak tartalma:
ÉÉrrddeemmeess eelliinnddííttaannii aazz eexxee--tt!!
MMiitt ttaappaasszzttaalltt?? MMaaggyyaarráázzaatt??
visszaadott
érték
futási idő
a futás
eredménye
Kódolás
(fejlesztői környezet)
1144--1100--0066 HHoorrvváátthh--SSzzlláávvii--ZZssaakkóó:: PPrrooggrraammoozzáássii aallaappiissmmeerreetteekk 11.. 4400//4411