Operátorok, házi feladat adatszerkezetek

Hasonló dokumentumok
Kifejezések. A programozás alapjai előadás. Operátorok. Kifejezések. Operátorok precedenciája. Operátorok precedenciája

Programozás alapjai C nyelv 4. gyakorlat. Mit tudunk már? Feltételes operátor (?:) Típus fogalma char, int, float, double

Mit tudunk már? Programozás alapjai C nyelv 4. gyakorlat. Legnagyobb elem keresése. Feltételes operátor (?:) Legnagyobb elem keresése (3)

Készítette: Nagy Tibor István

Programozás I gyakorlat

A C programozási nyelv I. Bevezetés

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós augusztus 29. Széchenyi István Egyetem, Gy r

A C programozási nyelv I. Bevezetés

Programozás BMEKOKAA146. Dr. Bécsi Tamás 2. előadás

Járműfedélzeti rendszerek II. 1. előadás Dr. Bécsi Tamás

Kifejezések. Kozsik Tamás. December 11, 2016

A C programozási nyelv III. Pointerek és tömbök.

Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606. Dr. Bécsi Tamás 2. előadás

Keresés és rendezés. A programozás alapjai I. Hálózati Rendszerek és Szolgáltatások Tanszék Farkas Balázs, Fiala Péter, Vitéz András, Zsóka Zoltán

A C programozási nyelv III. Pointerek és tömbök.

Tartalom Keresés és rendezés. Vektoralgoritmusok. 1. fejezet. Keresés adatvektorban. A programozás alapjai I.

Függvények. Házi feladat.

Programozás I. 3. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Függvények. Programozás I. Hatwágner F. Miklós november 16. Széchenyi István Egyetem, Gy r

Adminisztrációs feladatok Strukturált programok A C programnyelv elemei

A programozás alapjai előadás. A C nyelv típusai. Egész típusok. C típusok. Előjeles egészek kettes komplemens kódú ábrázolása

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós február 18. Széchenyi István Egyetem, Gy r

Adatszerkezetek és algoritmusok

M veletek és kifejezések

Kifejezések. Kozsik Tamás. December 11, 2016

Programozás alapjai gyakorlat. 4. gyakorlat Konstansok, tömbök, stringek

Mutatók és címek (ism.) Programozás alapjai C nyelv 8. gyakorlat. Indirekció (ism) Néhány dolog érthetőbb (ism.) Változók a memóriában

Szoftvertervezés és -fejlesztés I.

Megoldott programozási feladatok standard C-ben

Programozás alapjai C nyelv 8. gyakorlat. Mutatók és címek (ism.) Indirekció (ism)

Aritmetikai kifejezések lengyelformára hozása

Programozás I gyakorlat

Függvények. Programozás alapjai C nyelv 7. gyakorlat. LNKO függvény. Függvények(2) LNKO függvény (2) LNKO függvény (3)

Programozás alapjai C nyelv 7. gyakorlat. Függvények. Függvények(2)

Programozás 3. Dr. Iványi Péter

Mintavételes szabályozás mikrovezérlő segítségével

Járműfedélzeti rendszerek II. 3. előadás Dr. Bécsi Tamás

Vezérlési szerkezetek. Szelekció Ciklusok

Pénzügyi algoritmusok

Algoritmizálás + kódolás C++ nyelven és Pascalban

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós október 11. Széchenyi István Egyetem, Gy r

Java II. I A Java programozási nyelv alapelemei

C programozás. { Márton Gyöngyvér, 2009 } { Sapientia, Erdélyi Magyar Tudományegyetem }

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós március 3. Széchenyi István Egyetem, Gy r

Á ú ú ű ű ú ú Í ú ú Ö ű Ö ű Ö Ö ű ű ú ÍÍ Í ú Í Í Í Í Í ú ú

Operációs rendszerek. 11. gyakorlat. AWK - szintaxis, vezérlési szerkezetek UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

2.3. A C nyelv utasításai

C programozás. { Márton Gyöngyvér, 2009 } { Sapientia, Erdélyi Magyar Tudományegyetem }

1. Bevezetés szeptember 9. BME Fizika Intézet. Szám. szim. labor ea. Tőke Csaba. Tudnivalók. feladat. Tematika. Moodle Házi feladatok

Járműfedélzeti rendszerek II. 4. előadás Dr. Bécsi Tamás

BASH script programozás II. Vezérlési szerkezetek

Programozás II. 2. Dr. Iványi Péter

OOP I. Egyszerő algoritmusok és leírásuk. Készítette: Dr. Kotsis Domokos

6. gyakorlat Egydimenziós numerikus tömbök kezelése, tömbi algoritmusok

értékel függvény: rátermettségi függvény (tness function)

Bevezetés a programozásba I.

Informatika terméktervezőknek

Programozás alapjai gyakorlat. 2. gyakorlat C alapok

ó Ó ú ó ó ó Á ó ó ó Á ó ó ó ó Á ó ú ó ó ó

Ó Ó ó ö ó

Á ű ó ó

ű Ö ű Ú ű ű ű Á ű

ű ű ű Ú Ú Á ű Ö ű ű Ú Ő É

Á Ó ű ű Á É ű ű ű ű Ú Ú

Ú ű É ű ű Ü Ü ű ű Ú É ű ű Ü ű ű ű ű ű ű ű Ú ű ű

ü ü Ü ü ü ü ü ü ü ü ü ü ü ü ü ü ü ü ü ü ü É ü ü

É Á Á Ö Á

Á Á ő ő Ö ő ő ö É ö ő ö ő ő ö ő ő ö ő ő ü ö

ű Ú ű ű É Ú ű ű

Ó é é Ó Ó ő ű Ó Ö ü Ó é Ó ő Ó Á Ö é Ö Ó Ó é Ó Ó Ó Ó ú Ó Ó Ó Ó ű Ö Ó Ó Ó é Ó Ó ö Ö Ó Ö Ö Ó Ó Ó é ö Ö é é Ü Ó Ö Ó é Ó é ö Ó Ú Ó ő Ö Ó é é Ö ú Ó Ö ö ű ő

Á Ü É Ü Ú Ü É

Á Ö Ö Ö Ö ú ú Ö Ö Ó Ó ú ú Ü ú Ó Ö Ö Ü Ó Ö Ö Á Ó ú ú ú ű Ö Ö Ö Ö Á Ó Ö Ó ú ú Ö

ó ő ő ó ő ö ő ő ó ó ó ö ő ó ó ó ö ő ó ő ő ö Ö ő ö ó ő ö ő ő ú ö ö ü ö ó ö ö ö ő ö ö Ö ú ü ó ü ő ő ő ő ó ő ü ó ü ö ő ö ó ő ö ő ö ü ö ü ő ö ö ó ö ő ő ö

Ó Ó ö ú ö ö ö ö ü ú ú ö ö ö ú ú ö ö ö ú ú ú ű ö ö ú ö ü ö ö ö ö ü ú Á ö ü Á ö ö ö ö ö ö

ö ö Á Á Ó Á ö ö ö ö ö ú ű ö ö Á Á ű ű ö ö ö ö ű

ú Ó ú ú ú ú ú ú ú É Á

É É Ö

ű ő ő ő

Á ó ó ó Ü Ü ó ó Ü ó ó ú ú ó ó Ü ó ó ó Ü ó ó

ö ő ü ö ő ő ü ü ő ő ő ü ö ü ü ő ú ő ő ő ü ő ő ő ő ő ú ő ő ü ő ő ő ü ö ü ú ő ő ő ő ü ü ő ő ú

é ü ó ö é Ö é ü é é ó ö é ü ü é é ó ó ó é Á é é ü ó é ó ó é ö ö ö é é ü é ü é é ö ü ü é ó é é é é é é ö é é é é é é ö é ó ö ü é é é ü é é ó é ü ó ö é

ú ö ö ö ö ö ö Á ö ö ö á á á ű Ü ű ö ö Á á Á

ü ú ú ü ú ú ú ú

Java II. I A Java programozási nyelv alapelemei

Adatbázis és szoftverfejlesztés elmélet

Programozás I gyakorlat

A C# programozási nyelv alapjai

Alapok. tisztán funkcionális nyelv, minden függvény (a konstansok is) nincsenek hagyományos változók, az első értékadás után nem módosíthatók

2019, Funkcionális programozás. 5. el adás. MÁRTON Gyöngyvér

Komputeralgebra Rendszerek

1. Egyszerű (primitív) típusok. 2. Referencia típusok

Programozási nyelvek (ADA)

Programozás I gyakorlat

Programozás C- és Matlab nyelven C programozás kurzus BMEKOKAM603 Mutatók. Dr. Bécsi Tamás 7. Előadás

A C programozási nyelv II. Utasítások. A függvény.

Programozási segédlet

Bevezetés a C programozási nyelvbe. Az Általános Informatikai Tanszék C nyelvi kódolási szabványa

Forráskód formázási szabályok

Szoftvertechnológia alapjai Java előadások

C programozási nyelv Pointerek, tömbök, pointer aritmetika

Átírás:

Operátorok Típuskonverzió Nagy házifeladat Operátorok, házi feladat adatszerkezetek A programozás alapjai I. Hálózati Rendszerek és Szolgáltatások Tanszék Farkas Balázs, Fiala Péter, Vitéz András, Zsóka Zoltán 2016. október 24. c Farkas B., Fiala P., Vitéz A., Zsóka Z. Operátorok, házi 2016. október 24. 1 / 40

Operátorok Típuskonverzió Nagy házifeladat Tartalom 1 Operátorok Deníciók Operátorok Precedencia Szinkronizálás 2 Típuskonverzió 3 Nagy házifeladat Adatszerkezetek Algoritmusok c Farkas B., Fiala P., Vitéz A., Zsóka Z. Operátorok, házi 2016. október 24. 2 / 40

1. fejezet Operátorok c Farkas B., Fiala P., Vitéz A., Zsóka Z. Operátorok, házi 2016. október 24. 3 / 40

Operációk (m veletek) M veleti jellel jelöljük ket Operandusokon dolgoznak Típusos adatot hoznak létre Többalakúak: eltér típusú operandusokra eltér m ködés 2.0 3.0 2 3 / / 0. 6 0 c Farkas B., Fiala P., Vitéz A., Zsóka Z. Operátorok, házi 2016. október 24. 4 / 40

Kifejezések és operátorok Kifejezések pl. 8 + 5 < -a - 2 Konstansokból, változóhivatkozásokból és m veletekb l épülnek fel a (3) 8 5 + 13 < - -3 - -5 2 HAMIS kiértékelésük során egy típusos adatot kapunk eredményként. c Farkas B., Fiala P., Vitéz A., Zsóka Z. Operátorok, házi 2016. október 24. 5 / 40

Az operátorok fajtái Az operandusok száma alapján unáris egyoperandusú -a bináris kétoperandusú 1+2 Az operandus értelmezése alapján aritmetikai összehasonlító, rendez logikai bitszint egyéb c Farkas B., Fiala P., Vitéz A., Zsóka Z. Operátorok, házi 2016. október 24. 6 / 40

Aritmetikai operátorok m velet egyoperandusú plusz egyoperandusú mínusz összeadás kivonás szorzás szintaxis +<kifejezés> -<kifejezés> <kifejezés> + <kifejezés> <kifejezés> - <kifejezés> <kifejezés> * <kifejezés> bennfoglalás vagy osztás <kifejezés> / <kifejezés> az eredmény típusa az operandusok típusától függ, ha mindkett egész, akkor egész osztás maradékképzés <kifejezés> % <kifejezés> c Farkas B., Fiala P., Vitéz A., Zsóka Z. Operátorok, házi 2016. október 24. 7 / 40

Igazságérték (részben ismétlés) Egy érték igazságértékként értelmezve hamis, ha értéke csupa 0 bittel van ábrázolva igaz, ha értéke nem csupa 0 bittel van ábrázolva 1 while (1) { /* vé gtelen ciklus */ } 2 while ( -3.0) { /* vé gtelen ciklus */ } 3 while (0) { /* ide egyszer sem lépü nk be */ } Minden igazságérték jelleg eredmény int típusú, és értéke 0, ha hamis 1, ha igaz 1 printf ("%d\t%d", 2 <3, 2==3); 1 0 c Farkas B., Fiala P., Vitéz A., Zsóka Z. Operátorok, házi 2016. október 24. 8 / 40

Rendez és összehasonlító operátorok m velet szintaxis <kifejezés> < <kifejezés> relációs operátorok <kifejezés> <= <kifejezés> <kifejezés> > <kifejezés> <kifejezés> >= <kifejezés> egyenl ség-vizsgálat nem-egyenl operátor <kifejezés> == <kifejezés> <kifejezés>!= <kifejezés> Logikai (int, 0 vagy 1) értéket adnak eredményként c Farkas B., Fiala P., Vitéz A., Zsóka Z. Operátorok, házi 2016. október 24. 9 / 40

Logikai operátorok m velet tagadás szintaxis!<kifejezés> 1 int a = 0 x5c ; /* 0101 1100, igaz */ 2 int b =! a; /* 0000 0000, hamis */ 3 int c =! b; /* 0000 0001, igaz */ Tanulság:!!a a, csak igazságérték szempontjából. 1 int vege = 0; 2 while (! vege ) { 3 int b; 4 scanf ("%d", &b ); 5 if (b == 0) 6 vege = 1; 7 } c Farkas B., Fiala P., Vitéz A., Zsóka Z. Operátorok, házi 2016. október 24. 10 / 40

Logikai operátorok m velet logikai és logikai vagy szintaxis <kifejezés> && <kifejezés> <kifejezés> <kifejezés> Logikai rövidzár: Az operandusokat balról jobbra értékeljük ki. Csak addig, míg az eredmény nem egyértelm. Ezt gyakran ki is használjuk 1 int a [5] = {1, 2, 3, 4, 5}; 2 int i = 0; 3 while ( i < 5 && a[ i] < 20) 4 i = i +1; /* nincs tú lindexel és */ c Farkas B., Fiala P., Vitéz A., Zsóka Z. Operátorok, házi 2016. október 24. 11 / 40

További operátorok Már használtunk ilyeneket, csak nem mondtuk ki, hogy operátorok m velet függvényhívás tömbhivatkozás struktúratag-hivatkozás szintaxis <függvény>(<aktuális paraméterek>) <tömb>[<index>] <struktúra>.<tag> 1 c = sin (3.2); /* () */ 2 a [28] = 3; /* [] */ 3 v.x = 2.0; /*. */ c Farkas B., Fiala P., Vitéz A., Zsóka Z. Operátorok, házi 2016. október 24. 12 / 40

Operátorok mellékhatással Bizonyos operátoroknak mellékhatásuk is van f hatás: a kiértékelés során kapott eredmény kiszámítása mellékhatás: operandus értéke változik Az értékadás operátor = C-ben az értékadás kifejezés! mellékhatása az értékadás (a megváltozik) f hatása a új értéke a 2 = 2 1 int a; A f hatás miatt ez is értelmes: 2 int b = a = 2; b-t az a=2 mellékhatásos kifejezés értékével inicializáljuk, melynek mellékhatásaként a is megváltozik. c Farkas B., Fiala P., Vitéz A., Zsóka Z. Operátorok, házi 2016. október 24. 13 / 40

Balérték Az értékadás operátor megváltoztatja a bal operandus értékét. A bal oldalon csak változtatható dolog állhat Balérték (lvalue) Olyan kifejezés, amely értékadás bal oldalán állhat balérték lehet változóhivatkozás a = 2 tömbelem array[3] = 2 dereferált mutató *p = 2 struktúratag v.x = 2 Nem balérték kifejezések (példák) konstans 3 = 2 hiba aritmetikai kifejezés a+4 = 2 hiba logikai kifejezés a>3 = 2 hiba függvényérték sin(2.0) = 2 hiba c Farkas B., Fiala P., Vitéz A., Zsóka Z. Operátorok, házi 2016. október 24. 14 / 40

Kifejezés vagy utasítás? Mellékhatásos kifejezés utasításként is szerepelhet a programban Kifejezésutasítás <Kifejezés>; A kifejezést kiértékeljük, és értékét eldobjuk. 1 a = 2 /* kifejez és, az é rt é ke 2, mell é khat á sos */ 1 a = 2; /* utas ítás, nincs é rt é ke */ 2 /* a mell é khat á st hajtja vé gre */ Mivel a f hatást elnyomjuk, csak mellékhatásos kifejezésekb l van értelme kifejezésutasítást alkotnunk. 1 2 + 3; /* helyes utas ítás, semmit nem hajt vé gre */ c Farkas B., Fiala P., Vitéz A., Zsóka Z. Operátorok, házi 2016. október 24. 15 / 40

Értékadó operátorok m velet szintaxis <balérték> += <kifejezés> <balérték> -= <kifejezés> viszonyított értékadás <balérték> *= <kifejezés> <balérték> /= <kifejezés> <balérték> %= <kifejezés> Körülbelül: <balérték>=<balérték><op><kifejezés> 1 a += 2; /* a = a + 2; */ 2 t[ rand ()] += 2; /* NEM t[ rand ()] = t[ rand ()] + 2; */ A balértéket csak egyszer értékeljük ki. c Farkas B., Fiala P., Vitéz A., Zsóka Z. Operátorok, házi 2016. október 24. 16 / 40

Egyéb mellékhatásos operátorok m velet szintaxis utótagos inkrementálás <balérték> ++ utótagos dekrementálás <balérték> -- kiértékelés után növeljük/csökkentjük eggyel el tagos inkrementálás el tagos dekrementálás ++<balérték> --<balérték> kiértékelés el tt növeljük/csökkentjük eggyel 1 b = a ++; /* b = a; a += 1; */ 2 b = ++ a; /* a += 1; b = a; */ 1 for (i = 0; i < 5; ++ i) { /* ö tsz ör */ } c Farkas B., Fiala P., Vitéz A., Zsóka Z. Operátorok, házi 2016. október 24. 17 / 40

Mutatókhoz kapcsolódó operátorok m velet dereferencia címképzés dereferencia és struktúratag-hivatkozás szintaxis *<mutató> &<balérték> <mutató> -> <tag> Dereferencia esetén operandusként egy mutatót eredményül adó kifejezés kell álljon. 1 c = *( t +3); /* * */ 2 p = &c; /* & */ 3 sp ->a = 2.0; /* -> */ c Farkas B., Fiala P., Vitéz A., Zsóka Z. Operátorok, házi 2016. október 24. 18 / 40

További operátorok m velet kényszerített típusmódosítás (casting) tárolás helyigénye (bájtokban) szintaxis (<típus>)<kifejezés> sizeof <kifejezés> a kifejezést nem értékeljük ki 1 int a1 =2, a2 =3, meret ; 2 double b; 3 b = a1 /( double ) a2 ; 4 meret = sizeof 3/ a1 ; 5 meret = sizeof ( double ) a1 ; 6 meret = sizeof ( double ); c Farkas B., Fiala P., Vitéz A., Zsóka Z. Operátorok, házi 2016. október 24. 19 / 40

További operátorok m velet vessz szintaxis <kifejezés>, <kifejezés> Az operandusokat balról jobbra értékeli ki Az els kifejezés értékét eldobjuk. A teljes kifejezés értéke és típusa a második kifejezés értéke illetve típusa lesz. 1 int step, j; 2 /* A ketjegy ek nö vekv lépé sk ö zzel */ 3 for ( step =1, j =10 ; j <100; j += step, step ++) 4 printf ("%d\n", j ); c Farkas B., Fiala P., Vitéz A., Zsóka Z. Operátorok, házi 2016. október 24. 20 / 40

További operátorok m velet szintaxis feltételes kifejezés <felt.>? <kif.1> : <kif.2> ha <felt> igaz, akkor <kif.1>, egyébként <kif.2> <kif.1> és <kif.2> közül csak az egyiket értékeljük ki Nem helyettesíti az if utasítást 1 a = a < 0? -a : a; /* abszol út é rt ék ké pz é se */ c Farkas B., Fiala P., Vitéz A., Zsóka Z. Operátorok, házi 2016. október 24. 21 / 40

Adatokkal végzett operációk (m veletek) jellemz i Precedencia eltér m veletek közül melyiket hajtjuk el ször végre? 1 int a = 2 + 3 * 4; /* 2 + (3 * 4) */ Asszociativitás azonos m veletek közül melyiket hajtjuk el ször végre? (Balról jobbra vagy jobbról balra köt?) 1 int b = 11-8 - 2; /* (11-8) - 2 */ 2 int a = b = 3; /* a = (b = 3) */ A szabályok megjegyzése helyett inkább zárójelezzünk! c Farkas B., Fiala P., Vitéz A., Zsóka Z. Operátorok, házi 2016. október 24. 22 / 40

A C nyelv operátorainak listája A precedencia sorrend szerint rendezve (az azonos precedenciájúak egy sorban) 1 () []. -> /* leger sebb */ 2! ~ ++ -- + - * & (< type >) sizeof 3 * / % 4 + - 5 << >> 6 < <= > >= 7 ==!= /* tilos precedenci át tanulni! */ 8 & /* tess ék záró jelezni! */ 9 ^ 10 11 && 12 13?: 14 = += -= *= /= %= &= ^= = <<= >>= 15, /* leggyeng é bb */ c Farkas B., Fiala P., Vitéz A., Zsóka Z. Operátorok, házi 2016. október 24. 23 / 40

A C nyelv operátorai Összefoglalva Sok, hatékony operátor Egyes operátoroknál a kiértékelés során mellékhatások is fellépnek Mindig igyekezzünk szétválasztani a f - és mellékhatást ehelyett: 1 t [++ i] = func (c -=2); írjuk inkább ezt: 1 c -= 2; /* ugyanazt jelenti */ 2 ++ i; /* ugyanolyan hat é kony */ 3 t[ i] = func ( c ); /* holnap is é rteni fogom */ c Farkas B., Fiala P., Vitéz A., Zsóka Z. Operátorok, házi 2016. október 24. 24 / 40

Mellékhatások szinkronizálása A kifejezések kiértékelési sorrendje sokszor deniálatlan. 1 int i = 0, array [8]; 2 array [++ i] = i ++; /* array [2] = 0;? array [1] = 1;? */ Deniálatlan m ködés, véletlen program. Sorrend-határ pont (sequence point) A program végrehajtásának azon pontja, ahol minden el z leg végrehajtott tevékenység mellékhatásának be kell fejez dnie. egyetlen kés bbi végrehajtandó tevékenység mellékhatása sem kezd dhet el. Ha normális programokat írunk, és nem keverjük a f - és mellékhatásokat, nem kell foglalkoznunk vele. c Farkas B., Fiala P., Vitéz A., Zsóka Z. Operátorok, házi 2016. október 24. 25 / 40

Operátorok Típuskonverzió Nagy házifeladat 2. fejezet Típuskonverzió c Farkas B., Fiala P., Vitéz A., Zsóka Z. Operátorok, házi 2016. október 24. 26 / 40

Operátorok Típuskonverzió Nagy házifeladat Mi az? Bizonyos esetekben a C-programnak konvertálnia kell kifejezéseink típusát. 1 long func ( float f) { 2 return f; 3 } 4 5 int main ( void ) { 6 int i = 2; 7 short s = func ( i ); 8 return 0; 9 } A példában: int float long short int float kerekítés, ha a szám nagy float long túlcsordulhat, egészre kerekítés long short túlcsordulhat c Farkas B., Fiala P., Vitéz A., Zsóka Z. Operátorok, házi 2016. október 24. 27 / 40

Operátorok Típuskonverzió Nagy házifeladat Típusok konverziója Alapelv érték meg rzése, ha lehet Túlcsordulás esetén a kapott érték elvileg deniálatlan Egyoperandusú konverzió (ezt láttuk) értékadáskor függvény hívásakor (a formális paraméterek aktualizálásakor) Kétoperandusú konverzió (pl. 2/3.4 ) m veletvégzéskor c Farkas B., Fiala P., Vitéz A., Zsóka Z. Operátorok, házi 2016. október 24. 28 / 40

Operátorok Típuskonverzió Nagy házifeladat Kétoperandusú konverzió A két operandus azonos típussá alakítása az alábbi szabályoknak megfelel en egyik operandus másik operandus közös, új típus long double bármi long double double bármi double float bármi float unsigned long bármi unsigned long long bármi (int, unsigned) long unsigned bármi (int) unsigned int bármi (int) int c Farkas B., Fiala P., Vitéz A., Zsóka Z. Operátorok, házi 2016. október 24. 29 / 40

Operátorok Típuskonverzió Nagy házifeladat Típuskonverziók Példa a konverzióra 1 int a = 3; 2 double b = 2.4; 3 a = a* b; 1 3 3.0 2 3.0 2.4 7.2 3 7.2 7 c Farkas B., Fiala P., Vitéz A., Zsóka Z. Operátorok, házi 2016. október 24. 30 / 40

Operátorok Típuskonverzió Nagy házifeladat Adatszerk Algo 3. fejezet Nagy házifeladat c Farkas B., Fiala P., Vitéz A., Zsóka Z. Operátorok, házi 2016. október 24. 31 / 40

Operátorok Típuskonverzió Nagy házifeladat Adatszerk Algo Helyzet Mostanra mindenki egyeztette és beadta a házi feladat specikációját. Megismertük a megoldáshoz szükséges nyelvi elemeket és módszereket. Ami most következik: Pontosan milyen típusú adatként fogom tárolni az egyes információkat Hogyan fogja számolni a program a megoldást És aztán hamarosan: Hogy fogják hívni a forrásfájlt, és mi lesz benne Milyen adatokkal fogom kipróbálni, hogy jól m ködik-e c Farkas B., Fiala P., Vitéz A., Zsóka Z. Operátorok, házi 2016. október 24. 32 / 40

Operátorok Típuskonverzió Nagy házifeladat Adatszerk Algo Adatszerkezet választás A feladat bemen adataiból és a kérdés(ek) alapján kell megfelel adatszerkezetet választani. A különböz adatsorok (a két fájl) egymásra hivatkozásait az adatszerkezetben legalább az egyik irányban meg kell oldani. Hatékonyság szempontjából az sem mindegy, hogy melyik irányban. A mi feladatunkban például egy versenyz t a Rajtszáma azonosít az id eredménynél a Rajtszám segítségével hivatkozunk a versenyz re Az adatszerkezetben az így felismert kapcsolatokat közvetlenül hivatkozó adatként is tárolhatjuk. Egy mutató hatékonyabb lehet, mint mindig azonosítók alapján keresgélni. Összetartozó adatok csoportjai is köthet k egy másik adathoz. c Farkas B., Fiala P., Vitéz A., Zsóka Z. Operátorok, házi 2016. október 24. 33 / 40

Operátorok Típuskonverzió Nagy házifeladat Adatszerk Algo Adatszerkezet a példához Egy kis gondolkodás után... A versenyz ket tároljuk el Minden versenyz höz tároljuk el az id adatokat Valahogy így: Monaco VET 1 WEB 2 ROS 8 85.128 87.128 K7.222 K B 86.787 85.544 K90.054 K K 86.554 86.111 K K Ezt milyen tanult adatszerkezetként lehet leprogramozni? c Farkas B., Fiala P., Vitéz A., Zsóka Z. Operátorok, házi 2016. október 24. 34 / 40

Operátorok Típuskonverzió Nagy házifeladat Adatszerk Algo Fájlok feldolgozása A feldolgozás sorrendje illeszkedjen az adatszerkezethez El ször olvassuk be a verseny adatait, aztán a versenyz k adatait, építgetve az ket tartalmazó listát, végül az egyes id adatokat, felvéve ket a megfelel versenyz khöz. A fájlok végigolvasásának tanult sémáját használjuk fel! A számításoknál mindenképpen a memóriába beolvasott adatokon dolgozzunk, nem a fájlokban keresgélünk újra meg újra! c Farkas B., Fiala P., Vitéz A., Zsóka Z. Operátorok, házi 2016. október 24. 35 / 40

Operátorok Típuskonverzió Nagy házifeladat Adatszerk Algo Felépítés példa Monaco 78 3340 1 1 VET 2 2 WEB 3 8 ROS 4 4 HAM 5 1 GRO 6 5 ALO 7 6 MAS 8 9 RAI 9 18 MAL 1 85.128 K 2 86.554 K 8 86.787 K 4 87.888 K... 18 8.665 B 8 85.544 K 1 87.128 K 2 86.111 K 4 86.808 K... 18 97.565 K 1 7.222 B 8 90.054 K Monaco VET 1 WEB 2 ROS 8 85.128 87.128 K7.222 K B 86.787 85.544 K90.054 K K 86.554 86.111 K K c Farkas B., Fiala P., Vitéz A., Zsóka Z. Operátorok, házi 2016. október 24. 36 / 40

Operátorok Típuskonverzió Nagy házifeladat Adatszerk Algo Kiszámítási algoritmus Mennyi volt az átlagos körideje annak a versenyz nek, aki a leglassabb körid t futotta? El ször számoljuk ki a versenyz khöz az átlagokat AM ÍG vé gig nem é rt él a versenyz k list áján, ISM É TELD v a kö vetkez versenyz ; AM ÍG vé gig nem é rt él a v - hez tartoz ó id kön, ISM É TELD ia a kö vetkez id adat ; sum 0; n 0; HA ia egy kö rid sum sum + az ia - ban tá rolt é rt ék; n n + 1; v á tlagos kö rideje sum / n c Farkas B., Fiala P., Vitéz A., Zsóka Z. Operátorok, házi 2016. október 24. 37 / 40

Operátorok Típuskonverzió Nagy házifeladat Adatszerk Algo Kiszámítási algoritmus Aztán pedig a leglassabb körid höz tartozó versenyz t lassu az els versenyz ; max lass ú els kö rideje ; // ez tö bb lépés... AM ÍG vé gig nem é rt él a versenyz k list áján, ISM É TELD v a kö vetkez versenyz ; AM ÍG vé gig nem é rt él a v - hez tartoz ó id kön, ISM É TELD ia a kö vetkez id adat ; HA ia egy kö rid ÉS az ia - ban tá rolt é rt ék > max max az ia - ban tá rolt é rt ék; lassu v; A vá lasz : lassu á tlagos kö rideje c Farkas B., Fiala P., Vitéz A., Zsóka Z. Operátorok, házi 2016. október 24. 38 / 40

Operátorok Típuskonverzió Nagy házifeladat Adatszerk Algo És ami még hátra van Leprogramozás (Megvalósítás, Implementálás) Néhány kisebb, átlátható eredmény teszteset kidolgozása Nem kell, hogy valóságos adatok legyenek IMSc pontokat ér, ha részletesen megtervezett és indokolt teszteket készítünk és dokumentálunk Tesztelés és hibajavítás, ha nem az jön ki, mint amit várunk Dokumentáció befejezése és id ben való leadása c Farkas B., Fiala P., Vitéz A., Zsóka Z. Operátorok, házi 2016. október 24. 39 / 40

Operátorok Típuskonverzió Nagy házifeladat Adatszerk Algo Köszönöm a gyelmet. c Farkas B., Fiala P., Vitéz A., Zsóka Z. Operátorok, házi 2016. október 24. 40 / 40