Prog EA Elõadás1

Download Report

Transcript Prog EA Elõadás1

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
2015.04.09.
Szlávi-Zsakó: Programozási alapismeretek 1.
2/41
A problémamegoldás
lépései
ELTE
2015.04.09.
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, ...)
Szlávi-Zsakó: Programozási alapismeretek 1.
3/41
A programkészítés
folyamata
1.
2.
3.
ELTE
4.
5.
6.
7.
8.
9.
2015.04.09.
Specifikálás (miből?, mit?)  specifikáció
Tervezés (mivel?, hogyan?)  adat- + algoritmusleírás
Kódolás (a gép hogyan?)  kód (reprezentáció +
implementáció)
Tesztelés (hibás-e?)  hibalista (diagnózis)
Hibakeresés (hol a hiba?)  hibahely, -ok
Hibajavítás (hogyan jó?)  helyes program
Minőségvizsgálat, hatékonyság (jobbítható-e?,
hogyan?)  jó program
Dokumentálás (hogyan működik, használható?) 
használható program
Használat, karbantartás (még mindig jó?)  évelő
(időtálló) program
Szlávi-Zsakó: Programozási alapismeretek 1.
4/41
Nyelvi szintek
ELTE
Élőnyelv = Magyar

Specifikáció

Algoritmusleíró

Programozási

Gépi
A nyelvek (magyar  gépi) közelítése
2015.04.09.
Szlávi-Zsakó: Programozási alapismeretek 1.
5/41
Az algoritmus fogalma
ELTE
2015.04.09.
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!
Szlávi-Zsakó: Programozási alapismeretek 1.
6/41
Az algoritmus fogalma
 végrehajtható
ELTE
2015.04.09.
(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
Szlávi-Zsakó: Programozási alapismeretek 1.
7/41
Az algoritmus fogalma
ELTE
2015.04.09.
Az alapalgoritmus elemei:
 egymásutáni végrehajtás
 nem-determinisztikusság
 párhuzamosság
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
2015.04.09.
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 öt 20 Ft-ost
3. …
Új algoritmikus elem: választás két tevékenység közül, esetleg nem-determinisztikus választás
2015.04.09.
Szlávi-Zsakó: Programozási alapismeretek 1.
10/41
Az algoritmus fogalma
Dobj be öt 20 Ft-ost:
1. Ismételd 5-ször:
Dobj be egy 20 Ft-ost!
ELTE
Új algoritmikus elem: ismétlés adott darabszámszor
2015.04.09.
Szlávi-Zsakó: Programozási alapismeretek 1.
11/41
Az algoritmus fogalma
ELTE
2015.04.09.
Az algoritmusok összeállítási módjai:
 Szekvencia (egymás utáni végrehajtá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)
Szlávi-Zsakó: Programozási alapismeretek 1.
12/41
A specifikáció
1.
2.
3.
ELTE
4.
5.
6.
7.
2015.04.09.
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
Szlávi-Zsakó: Programozási alapismeretek 1.
13/41
A specifikáció
ELTE
2015.04.09.
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
Szlávi-Zsakó: Programozási alapismeretek 1.
14/41
Példa: háromszög
(specifikáció)
ELTE
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=(x2+y2=z2)
Megjegyzés: a 3 szám sorrendjét ezek szerint rögzítettük – z az átfogó hossza!
2015.04.09.
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:=(x2+y2=z2)
Ki: lehet
Megjegyzés: később eltekintünk a be- és kimenet algoritmizálásától!
2015.04.09.
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:=x2
ELTE
yy:=y2
zz:=z2
lehet:=(xx+yy=zz)
Bevezethetők/-endők segéd (belső, saját)
változók.
2015.04.09.
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 megoldá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

2015.04.09.
Szlávi-Zsakó: Programozási alapismeretek 1.
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étel1: ax2+bx+c=0
Megjegyzés: az uf. nem ad algoritmizálható
információt. Nem baj, de … próbálkozzunk
még!
2015.04.09.
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étel2: x 
b
2
b 4ac
2a
Nyitott kérdések:


2015.04.09.
Mindig van megoldás?
Egy megoldás van?
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=(b24*a*c) és
ELTE
van  x 
b
2
b 4ac
2a
Nyitott kérdés:

2015.04.09.
Egy megoldás van? – hf .
Szlávi-Zsakó: Programozási alapismeretek 1.
21/41
Példa: másodfokú egyenlet
(algoritmus)
Algoritmus:
ELTE
d:=b2-4*a*c
van:=d0
van?
I
Igaz-ág
x :
2015.04.09.
b
N
Hamis-ág
d
2a
Szlávi-Zsakó: Programozási alapismeretek 1.
22/41
Példa: másodfokú egyenlet
(algoritmus)
Algoritmus másképpen:
ELTE
2015.04.09.
Program MásodfokúEgyenlet:
d:=b2-4*a*c
van:=d≥0
b d
Ha van akkor x :
2a
Program vége.
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

2015.04.09.
Szlávi-Zsakó: Programozási alapismeretek 1.
24/41
Struktogram
(és pszeudokód)
 Szekvencia:
Utasítás1
Utasítás2
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étel1 esetén
Feltétel2 esetén
…
egyéb esetekben
Elágazás vége
2015.04.09.
Szlávi-Zsakó: Programozási alapismeretek 1.
Utasítások1
Utasítások2
…
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:


2015.04.09.
Táblázatkezelővel/szövegszerkesztővel
Célprogramokkal (pl. NSD)
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
2015.04.09.
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
2015.04.09.
Szlávi-Zsakó: Programozási alapismeretek 1.
28/41
Kódolás
(fejlesztői környezet)
 Használat
1.
ELTE
2.
2015.04.09.
lépései:
projekt létrehozása, azaz milyen platformra készül a majdani alkalmazás:
Create a new project
sablon (template) választása:
Console application
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
2015.04.09.
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
projektfájlnév útvonallal
2015.04.09.
Szlávi-Zsakó: Programozási alapismeretek 1.
31/41
Kódolás
(fejlesztői környezet)
 Használat


ELTE
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
2015.04.09.
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”
2015.04.09.
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
2015.04.09.
Szlávi-Zsakó: Programozási alapismeretek 1.
34/41
Kódolás
(fejlesztői környezet)
A
„keletkezett 0. program” fordítása
ELTE
2015.04.09.
Szlávi-Zsakó: Programozási alapismeretek 1.
35/41
Kódolás
(fejlesztői környezet)
A
kialakult munkakörnyezet:

a diszken:
ELTE
2015.04.09.
Szlávi-Zsakó: Programozási alapismeretek 1.
36/41
Kódolás
(fejlesztői környezet)
A
kialakult munkakörnyezet:

a diszken:
ELTE
2015.04.09.
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?)
2015.04.09.
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ő!)
2015.04.09.
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
2015.04.09.
Érdemes elindítani az exe-t!
Mit tapasztalt? Magyarázat?
Szlávi-Zsakó: Programozási alapismeretek 1.
40/41
Programozási alapismeretek
1. előadás vége