Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Programozási alapismeretek * A Zh-írás módszertana.

Hasonló előadás


Az előadások a következő témára: "Programozási alapismeretek * A Zh-írás módszertana."— Előadás másolata:

1 Programozási alapismeretek * A Zh-írás módszertana

2 ELTE Elvárások 1. Feladatmegértés 2. Specifikáció-megértés (mi mit fejez ki?) + fel- használás (mi mit határoz meg a későbbi lépések- ben?) 3. Algoritmizálási / algoritmusértelmezési készség (hogyan építhető föl elemibb lépésekből? / struktogramolvasás: mi mit ír le?) 4. Kódolási rutin (mi hogyan valósítható meg C++- ban; milyen kódolási sémák vannak? Mikor, melyik séma alkalmazható?) 2/18 Szlávi-Zsakó: Programozási alapismeretek * a Zh-írás módszertana

3 ELTE Programozási folyamat  Kapcsolatok a programozási folyamat- ban: 3/18Feladatszöveg Specifikáció Uf  Lényegi algoritmus Kód Be,Ki  Típusok, deklarációk Ef  beolvasás Szlávi-Zsakó: Programozási alapismeretek * a Zh-írás módszertana

4 ELTE Példa  Egy példa:  Feladat: Ismerjük az elmúlt N napon dél- ben mért hőmérsékletet. Adjuk meg min- den 7-napos időszakra az átlaghőmérsék- letet! Feladat  Értelmezés:  N napon mért …  valamiből sok, alighanem valamilyen N-elemű tömb lesz  hőmérséklet  tömbelem: valós v. egész  7-napos időszakra  a tömbbeli 7 elemű részsorozattal kell valamit csinálni  minden 7-napos időszakra  sok részsoro- zat, az eredmény is tömb lesz  átlaghőmérséklet  összegzés (  tétel) 4/18 Szlávi-Zsakó: Programozási alapismeretek * a Zh-írás módszertana

5 ELTE Szlávi-Zsakó: Programozási alapismeretek * a Zh-írás módszertana Példa  Specifikáció-létrehozás:  Bemenet: N:Egész; H:Tömb[1..N:Egész]  Kimenet: A:Tömb[1..N–6:Valós]  Előfeltétel: N  7  Utófeltétel:  i(1  i  N–6):  Értelmezés:  Bemenet – deklarálandó + beolvasandó  Kimenet – deklarálandó + kiírandó  Előfeltétel – N ellenőrizendő, H-ra nincs előírás  legfeljebb szintaktikusan ellenő- rizhető 5/18  N napon mért …  valamiből sok, alighanem valamilyen N-elemű tömb lesz  hőmérséklet  tömbelem: valós v. egész  7-napos időszakra  a tömbbeli 7 elemű részsorozattal kell valamit csinálni  minden 7-napos időszakra  sok részsorozat, az eredmény is tömb lesz  átlaghőmérséklet  összegzés (  tétel)

6 ELTE Példa  Értelmezés (folytatás) :  Utófeltétel – meggondolandó:  i(1  i  N–6): A[i]=…  egy ciklus lesz az A[i]-k kiszámolására; A[i]:=(7*A[i–1]–H[i–1]+H[i+6])/7  A[2..N–6] egyszerűen számolható, de a rekurzió miatt a kiinduló A[1] másként: a sorozatszámítás (összegzés) tétel segítsé- gével 6/18  átlaghőmérséklet  összegzés (  tétel) Szlávi-Zsakó: Programozási alapismeretek * a Zh-írás módszertana

7 ELTE Példa  Algoritmuslétrehozás: 7/18  Utófeltétel – meggondolandó:  i(1  i  N–6): A[i]:=…  egy ciklus lesz az A[i]-k kiszámolására; A[i]:=(7*A[i–1]–H[i–1]+H[i+6])/7  A[2..N–6] egyszerűen számolható, de a rekurzió miatt a kiinduló A[1] másként: a sorozatszámítás (összegzés) tétel segítsé- gével S:=0 i=1..7 S:=S+H[i] A[1]:=S/7 i=2..N –6 S:=S–H[i–1]+H[i+6] A[i]:=S/7 Szlávi-Zsakó: Programozási alapismeretek * a Zh-írás módszertana

8 ELTE Példa  Algoritmusolvasás (ha a zh-n kéri) : 8/18 S:=0 i=1..7 S:=S+H[i] A[1]:=S/7 i=2..N –6 S:=S–H[i–1]+H[i+6] A[i]:=S/7 S-t H 1..7 elemeivel növeljük egy ciklus segítségével; majd az átlagot A[1]-be tesszük Egy (2..N-6) ciklussal S-et két, H-beli elem különbségével növeljük, majd az átlagot A[i]-be tesszük Szlávi-Zsakó: Programozási alapismeretek * a Zh-írás módszertana

9 ELTE Példa  Kódolás (minimum, de már így is lehet ötös) : 9/18 … a kód szokásos részei … int main() { … int N; int MaxN=100; int H[MaxN]; double A[MaxN-6]; … Szlávi-Zsakó: Programozási alapismeretek * a Zh-írás módszertana

10 ELTE Példa 10/18 … bool hiba; do{ cout > N; hiba=N MaxN; if (hiba) { cout << "Helytelen elemszám!" << endl; } }while (hiba); cout << "Kérem a hőmérsékletet!" << endl; for (int i=0;i H[i]; } … Szlávi-Zsakó: Programozási alapismeretek * a Zh-írás módszertana

11 ELTE Példa 11/18 int s=0; for (int i=0;i<7;++i) { s+=H[i]; } A[0]=s/7; for (int i=1;i

12 ELTE Példa 12/18 … cout << "A hetes átlagok:" << endl; for (int i=0;i

13 ELTE Példa Még szebb, ha függvényekből építkezünk: 13/18 int main() { … deklarációk … int_be("Elemszám:",N,7,MaxN); int_tomb_be("Kérem a hőmérsékletet!",H,N); mozgo_atlagok(H,N,A); int_tomb_ki(A,N-6); system("pause"); return 0; } Makroszerkezet: finomítás-hívások Szlávi-Zsakó: Programozási alapismeretek * a Zh-írás módszertana

14 ELTE Példa 14/18 int main() { … deklarációk … int_be("Elemszám:",N,7,MaxN); int_tomb_be("Kérem a hőmérsékletet!",H,N); mozgo_atlagok(H,N,A); int_tomb_ki(A,N-6); system("pause"); return 0; } void int_be(string kerd, int &_n, int _minN, int _maxN); void int_tomb_be(string kerd, int _h[], int _N); void mozgo_atlagok(const int _h[], int _n, double _a[]); void int_tomb_ki(const double_a[], int _n); Finomítás-fejsorok definíciói Szlávi-Zsakó: Programozási alapismeretek * a Zh-írás módszertana

15 ELTE Példa 15/18 … int main() { … deklarációk … int_be("Elemszám:",N,7,MaxN); int_tomb_be("Kérem a hőmérsékletet!",H,N); mozgo_atlagok(H,N,A); int_tomb_ki(A,N-6); system("pause"); return 0; } Finomítások definíciói; kifejtései void int_be(string kerd, int &_n, int _minN, int _maxN) { … a finomítás törzse … } … Szlávi-Zsakó: Programozási alapismeretek * a Zh-írás módszertana

16 ELTE Példa 16/18 Finomítások definíciói; kifejtései void int_tomb_be(string kerd, int _h[], int _N) { … a finomítás törzse … } void mozgo_atlagok(const int _h[], int _n, double _a[]) { … a finomítás törzse … } void int_tomb_ki(const double _a[], int _n) { … a finomítás törzse … } Szlávi-Zsakó: Programozási alapismeretek * a Zh-írás módszertana

17 ELTE A „nagy” elemszám okoz-e valami bajt (pl. túlcsordulást) MaxN+1 MaxN Példa Tesztelési terv:  N-hez – érvényes / érvénytelen / határeset  14 / 5, 101 / 6, 7, 100  N-hez – ekvivalencia-osztályok: 1-hét / több teljes hét / csonka hét is  7 / 14 / 10  N-hez – „volumenteszt”  100  H-hoz – ekvivalencia-osztályok: csupa azonos / szisztematikusan változó / véletlenszerű  {1,1,…} / {1,4,7,10,…} / {1,9,9,2,3,7,2,1,5…} 17/18 MaxN Szlávi-Zsakó: Programozási alapismeretek * a Zh-írás módszertana

18 ELTE 7 elemű, sziszte- matikusan (1, 1+3= 4, 4+3= 7,10,13,16,19) feltöltve Példa A tesztesetek  elvárt eredményekkel kiegészítése (teszteset=bemenet+kimenet)  összevonások (a különböző céllal létrehozottak egyesítése) Tesztfájlok létrehozása (célszerűen megvá- lasztva a fájlnevet, hogy a teszt céljára utaljon). Pl.: K1.14, S1_3.7 Tesztelés elvégzése (a bináris kód elindítása be- meneti és –esetleg– kimeneti fájl paraméterekkel). Pl.: mozgoatlag.exe _K /18 14 elemű, konstans sorozat (1-ekkel feltöltve) Bemeneti fájl Kimeneti fájl Szlávi-Zsakó: Programozási alapismeretek * a Zh-írás módszertana


Letölteni ppt "Programozási alapismeretek * A Zh-írás módszertana."

Hasonló előadás


Google Hirdetések