Pénzügyi algoritmusok

Hasonló dokumentumok
Fejlett programozási nyelvek C++ Sablonok és adatfolyamok

Objektumorientált programozás Pál László. Sapientia EMTE, Csíkszereda, 2014/2015

A C++ nyelvben a függvény nevek túlterhelésével biztonságosabbá tehetnénk az adatok kiírását és beolvasását.

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

Bevezetés Kiíratás Beolvasás Formázás Fájlkezelés Gyakorló feladatok C++ I/O. Bevezetés. Izsó Tamás február 20. Izsó Tamás C++ I/O / 1

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

Bevezetés a programozásba I.

8. Gyakorlat. Rövid elméleti összefoglaló: Fájlkezelés

Globális operátor overloading

Bevezetés a programozásba I 8. gyakorlat. C++: szövegfolyamok, intelligens tömbök. Adatfolyamok Hibalehetőségek

Bevezetés a programozásba I 8. gyakorlat. C++: szövegfolyamok, intelligens tömbök

Programozás C és C++ -ban

Programozás C++ -ban 2007/1

Pénzügyi algoritmusok

Programozási nyelvek I. 5. előadás (Gregorics Tibor anyagának felhasználásával)

Bevezetés a programozásba. 8. Előadás: Függvények 2.

1. Alapok. Programozás II

Alkalmazott modul: Programozás 2. előadás. Procedurális programozás: adatfolyamok, adatsorok kezelése

Programozás II. 2. gyakorlat Áttérés C-ről C++-ra

Programozási alapismeretek :: beadandó feladat. Felhasználói dokumentáció. Molnár Tamás MOTIABT.ELTE

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 6.ELŐADÁS. Fájlkezelés PHP-ben

Szövegek C++ -ban, a string osztály

500. AA Megoldó Alfréd AA 500.

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

Bevezetés a programozásba I 10. gyakorlat. C++: alprogramok deklarációja és paraméterátadása

0.1. Mi az a standard be- és kimenet? A két mintafeladat leírása

Miről lesz ma szó? A PROGAMOZÁS ALAPJAI 1. Dinamikus változók. Dinamikus változók. Dinamikus változók. Dinamikus változók. 7.

STL gyakorlat C++ Izsó Tamás május 9. Izsó Tamás STL gyakorlat/ 1

Programozási nyelvek Java

osztályok kapcsolata Származtatatás C++ Izsó Tamás március 19. Izsó Tamás Származtatatás/ 1

Pénzügyi algoritmusok

Bevezetés a C++ programozásba

Kivételek kezelése (exception handling) Hibakezelés old style. Kivételkezelés

Programozás C++ -ban

- 1 - Konstansok használata. Döntsük el, van-e fordítási idejű hiba az alábbi programrészletekben! a) const char * str="zh"; str[0]++;

1. Bevezetés A C++ nem objektumorientált újdonságai 3

Programozás alapjai II. (4. ea) C++

Bevezetés a programozásba. 6. Előadás: C++ bevezető

Alkalmazott modul: Programozás 2. előadás. Procedurális programozás: adatfolyamok, adatsorok kezelése. Adatfolyamok kezelése. Adatfolyamok kezelése

C++ programozási nyelv

Bevezetés a programozásba Előadás: Objektumszintű és osztályszintű elemek, hibakezelés

The modular mitmót system. DPY kijelző kártya C API

C++ programozási nyelv Konstruktorok-destruktorok

Bevezetés a programozásba I 7. gyakorlat. C++: szövegkezelés, szekvenciális fájlkezelés. Szövegkezelés Karakterkezelés

Programozás alapjai II. (9. ea) C++ többszörös öröklés, cast, perzisztencia

ELTE SAP Excellence Center Oktatóanyag 1

Az iskolai rendszerű képzésben az összefüggő szakmai gyakorlat időtartama. 10. évfolyam Adatbázis- és szoftverfejlesztés gyakorlat 50 óra

Bevezetés a programozásba I.

Bevezetés a programozásba II. 5. Előadás: Másoló konstruktor, túlterhelés, operátorok

Programozási alapismeretek 2009/2010

Fejlett programozási nyelvek C++ Iterátorok

Programozás alapjai 6. előadás. Wagner György Általános Informatikai Tanszék

Bánsághi Anna 2014 Bánsághi Anna 1 of 35

Bevezetés a programozásba Előadás: Tagfüggvények, osztály, objektum

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport

Kivételek, kivételkezelés a C++ nyelvben

Kinek szól a könyv? A könyv témája A könyv felépítése Mire van szükség a könyv használatához? A könyvben használt jelölések. 1. Mi a programozás?

INFORMATIKA tétel 2018

S z á m í t ó g é p e s a l a p i s m e r e t e k

Programozás(A szakirány) II. beadandó feladat Farkas András HP6S15 1. csoport Veszprémi Anna / Hudoba Péter

7. gyakorlat Sorozatok, Fájlkezelés

SQL*Plus. Felhasználók: SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók

1.AA MEGOLDÓ BERCI AA 1.

Tartalomjegyzék. Általános Információ! 2. Felhasználói dokumentáció! 3. Feladat! 3. Környezet! 3. Használat! 3. Bemenet! 3. Példa!

C++ programozási nyelv Struktúrák a C++ nyelvben Gyakorlat

Elemi alkalmazások fejlesztése I. Olvassunk be egy fájlból egész számokat egy tömbbe. Keressük meg a tömb valamely

Programozás Minta programterv a 2. házi feladathoz 1.

500. CC Megoldó Alfréd CC 500.

SZÁMÍTÓGÉPES PROBLÉMAMEGOLDÁS

A feladat lényege egy felhasználói típusnak a zsák típusnak a megvalósítása.

Programozási Nyelvek: C++

Informatika terméktervezőknek

Bevezetés a programozásba II 1. gyakorlat. A grafikus könyvtár használata, alakzatok rajzolása

Programozás II gyakorlat. 8. Operátor túlterhelés

Programozás C nyelven (3. ELŐADÁS) Sapientia EMTE

3. Osztályok II. Programozás II

Programozás C++ -ban 2007/7

5. Gyakorlat. struct diak {

Programozási alapismeretek beadandó feladat: ProgAlap beadandó feladatok téma 99. feladat 1

Programozási nyelvek Java

Maximum kiválasztás tömbben

A C++ szigorúbban kezeli a típuseltéréseket, mint a C nyelv Lehetséges típuskonverziók:

A C programozási nyelv I. Bevezetés

Input Output Műveletek

Bevezetés a programozásba. 11. Előadás: Esettanulmány

MATLAB. 9. gyakorlat. Cellatömbök, struktúrák, fájlműveletek

A C programozási nyelv VI. Parancssori argumentumok File kezelés

Programozás. C++ típusok, operátorok. Fodor Attila

Listák, szótárak, fájlok Listák, szótárak, fájlok

Bevezetés a programozásba I.

Adatbázisrendszerek I. File-szintű adattárolás C-ben. 1. gyakorlat

Programozás alapjai 2. (2. ea) C++

Az SQL*Plus használata

Programozás C++ -ban

Operációs rendszerek. 2. gyakorlat. Munka állományokkal UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Programozás alapjai II. (4. ea) C++

Programozás alapjai II. (4. ea) C++

Objektum elvű alkalmazások fejlesztése Kifejezés lengyel formára hozása és kiértékelése

503.AA Megoldo Arisztid 503.A

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

Átírás:

Pénzügyi algoritmusok A C++ programozás alapjai Folyamok kezelése Fájlok írása/olvasása

Folyamok kezelése Szabvány folyamok

Eddig Kiírás a szöveges konzolra: << operátor Szöveggé alakítás Az ostream osztály példánya cout Beolvasás a szövegeskonzolról: cin >> operátor Különböző adattípusok beolvasása Az istream osztály példánya A cout és a cin mind ún. adatfolyamok

Folyamok Folyam (stream): Adatsor, ami írható és/vagy olvasható Többféle forrás/cél lehetséges Szöveges konzol, fájl, hálózati kapcsolat, stb. Szabvány folyamok: cin: cout: cerr: clog: szöveges konzolos bemenet szöveges konzolos kimenet hibajelzésekre naplózásra

String Stream A string osztály példányaiból is készíthető folyam Olvasáskor a sztring elejéről indulva olvasunk Íráskor az aktuális írási pozíciótól kezdve felülírunk Tipikus használata: Olvasás Teljes sor feldolgozása típushelyesen (pl. "5 a 7" [5; 'a'; 7]) Szöveg számmá alakítása (pl. "1.2" 1.2) Írás Változók sztringgé alakítása (pl. 1.2 "1.2") Adatelemek összefűzése sztringgé (pl. [5; 'a'; 7] "5 a 7") Az <sstream> könyvtárban található

String Stream példa string s = "3.14"; float f; int i=5; stringstream(s) >> f; cout << "float: " << f << endl; Új stringstream objektum s-ből, majd float kiolvasása stringstream ss(s); ss << i; f értéke 3.14 cout << "string: " << ss.str() << endl;

String Stream példa string s = "3.14"; float f; Új stringstream objektum s-ből int i=5; (s lemásolódik) stringstream(s) >> f; cout << "float: " << f << endl; stringstream ss(s); ss << i; i beírása a folyamba cout << "string: " << ss.str() << endl; A kiírt érték "5.14" A folyam belsejében lévő sztring kiolvasása

Hibakezelés A folyamok kiértékelhetők bool-ként Igaznak számítanak, ha készen állnak további műveletekre Hamisnak, ha vége a bemenetnek vagy hiba történt Állapotlekérdező függvények bad(): igaz, ha nem sikerült egy írás vagy olvasás fail(): mint a bad() + ha beolvasáskor nem jó a formátum Pl. karaktert olvasunk szám helyett eof(): nincs több olvasható adat good(): igaz, ha egyik előző sem igaz Az állapot a clear() függvénnyel törölhető

Hibakezelés kivételekkel cin.exceptions( ios::failbit ios::badbit ); int i; try Bitmaszk jelöli azokat a { hibákat, amikre kivételt cin >> i; szeretnénk kapni } catch (ios::failure e) { std::cout << "Error!" << endl; }

Hibakezelés kivételekkel cin.exceptions( ios::failbit ios::badbit ); int i; try { cin >> i; } catch (ios::failure e) { std::cout << "Error!" << endl; } A kivétel típusa failure, ami (többek között) az ios osztályban definiált

Fájlok írása/olvasása Fájl folyamok

Fájl folyamok Folyamok készíthetők fájlokból is A folyam forrása/célja ilyenkor egy fájl Háromféle fájl folyam van (<fstream>) ofstream: kimeneti fájl folyam, fájlok írására ifstream: bemeneti fájl folyam, fájlok olvasására fstream: kétirányú fájl folyam, fájlok írására/olvasására

<iostream> Folyamok áttekintés ios <sstream> <fstream> istream ostream ifstream iostream ofstream fstream stringstream

Fájlok megnyitása Az open( "filename", mode ) tagfüggvénnyel vagy konstruktorban A fájl neve lehet abszolút vagy relatív elérési út is Módok (szabadon kombinálhatók a operátorral): ios::in ios::out ios::binary ios::ate ios::app ios::trunc Megnyitás olvasásra Megnyitás írásra Megnyitás bináris módban Kezdőpozíció a fájl végén Írás a fájl végére illeszt (append) Ha létező fájl, akkor tartalma felülíródik Sikeresség ellenőrizhető: is_open() tagfüggvény

Fájl bezárása A fájl közös erőforrás Amíg a fájl nyitva van, más nem fér hozzá Lehetőleg mihamarabb szabadítsuk fel Fájl bezárása: close() tagfüggvény Minden módosítást kiír a fájlba és bezárja A destruktor is meghívja DE: akkor már nehéz hibát kezelni Célszerű mindig bezárni a fájlt használat után Bezárás után az objektum újra használható

Szöveges fájlok Alapértelmezés szerint a fájlok szövegesek Szöveges adatok írhatók bele/olvashatók ki belőle A karakterkódolás problémákat okozhat! Íráskor minden adatot szövegesen kell reprezentálni (serializing) Olvasáskor minden adatot szöveges formából kell visszaállítani (parsing) Olvasásra és írásra >> és << operátorok Teljes sor kiolvasására: getline( stream, buffer) A buffer egy string objektum

Kurzorpozíció A folyamok belül nyilvántartanak Írási pozíciót és/vagy Olvasási pozíciót Pozíciók lekérdezése (streampos típust ad vissza): tellg() tellp() Pozíciók beállítása seekg( pos ) seekp( pos ) olvasási ( get ) pozíció írási ( put ) pozíció olvasási ( get ) pozíció írási ( put ) pozíció

Kurzorpozíció A folyamok belül nyilvántartanak Írási pozíciót és/vagy olvasási pozíciót Pozíciók lekérdezése/beállítása: tellg() / seekg( pos ) olvasási ( get ) pozíció tellp() / seekp( pos ) írási ( put ) pozíció ios::streampos típussal seekg( offset, dir ) seekp( offset, dir ) offset: ios::streamoff típusú eltolás dir: eltolás viszonyítási pontja (ios::beg, ios::cur vagy ios::end)

Bináris fájlok használata Bináris módban az adatok a memóriabeli képük szerint, bit szinten íródnak a fájlba Ehhez nem a >> és << operátorok használatosak Írás: write( memory_block, size ) Olvasás: read( memory_block, size ) A memory_block egy char* pointer az adat elejére Tetszőleges változóra: (char*)&variable A size az adat mérete

Bufferek, szinkronizáció Az írás (olvasás) nem mindig közvetlenül történik Különösen fájloknál nem Célszerű több műveletet összegyűjteni egy bufferben A buffer kiírása (feltöltése) a szinkronizáció Szinkronizáció történik: A fájl (vagy más célpont/forrás) bezárásakor (close fv.) Ha megtelik a buffer (automatikus) endl és flush beillesztésekor a << operátorral sync() függvény meghívásával Hiba esetén a visszatérési érték -1

Fájlrendszer kezelése A C++ szabvány nem definiál olyan módszert, amivel fájlokat és mappákat lehetne kezelni Adott fájl tartalmának kezelésére valók a folyamok Fájl létrehozása is lehetséges folyamokkal (lásd open) Nem támogatott: Fájlok felsorolása egy mappában Fájl törlése, áthelyezése Mappa létrehozása, törlése, áthelyezése Ezekre a műveletekre platformspecifikus megoldások vagy külső, nem szabványos könyvtárak használhatók. http://stackoverflow.com/questions/612097/how-can-i-get-the-list-of-files-in-a-directory-using-c-or-c

Köszönöm a figyelmet!