C++ programozási nyelv Struktúrák a C++ nyelvben Gyakorlat Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2004. szeptember A C++ programozási nyelv Soós Sándor 1/12
Input-output C++ -ban C++ -ban is használható minden C-beli megoldás Újítás: Streamek Mi az a stream? adatfolyam egy olyan osztálycsomag (package), ami nagyon hatékony és kényelmes input-output kezelést tesz lehetővé. egységes módon kezelhetjük a kiírást és beolvasást console-ra (képernyő, billentyűzet), file-okba, vagy bármilyen más I/O eszközre. A C++ programozási nyelv Soós Sándor 2/12
A streamek használata Létrehozzuk és megnyitjuk a streamet, amivel adatcserét akarunk folytatni. A rendszer automatikus létrehozza és megnyitja a cin, cout, cerr streameket: cin: standard input (pl. billentyűzet) cout: standard output (pl. monitor) cerr: standard hibakimenet (pl. monitor) mindhárom átirányítható az operációs rendszerben Írás, olvasás, vezérlés Bezárjuk a streamet A rendszer automatikus bezárja a cin, cout, cerr streameket. Egyelőre csak a standard I/O-val foglalkozunk, a többi streammel később Ehhez az iostream.h-t kell "includálni" A C++ programozási nyelv Soós Sándor 3/12
Hogyan írunk, olvasunk a streamekkel? Minden streammel és minden típussal ugyanazt az operátort használjuk: streamre írás: <<, pl. cout << "Hello Világ"; stream-ről olvasás: >>, pl. cin >> str; A stream operátorok láncolhatók: cout << "Az x értéke: " << x << endl; A kiírás formátuma ugyanilyen módon vezérelhető az iomanip műveleteivel Lásd a következő dián! A C++ programozási nyelv Soós Sándor 4/12
A kiírás módosítása: iomanip.h "Includáljuk" az iomanip.h header file-t #include <iomanip.h> A következő manipulátorokat használhatjuk: setw(int): beállítja a kiírás szélességét setfill(int): beállítja a kitöltő karaktert setprecision(int): beállítja a lebegőpontos számok pontosságát hex: bekapcsolja a hexa kiírást dec: bekapcsolja a decimális kiírást Hasonlóképpen használhatjuk az endl-t soremelésre A C++ programozási nyelv Soós Sándor 5/12
Példaprogram streamekre #include <iostream.h> #include <iomanip.h> int main(int argc, char* argv[]) { int number = 901; cout << setw(10) << setfill('#') << number << endl; cout << dec << number << endl; cout << hex << number << endl; cout << setw(12) << number << endl; cout << setw(16) << setfill('@') << number << endl; cout << "Text" << endl; cout << 123 << endl; cout << setw(8) << setfill('*') << "Text" << endl; double d1 = 3.141592; double d2 = 45.9876; double d3 = 123.9577; cout << "d1 is " << d1 << endl; cout << "setting precision 3 " << setprecision(3) << d1 << endl; cout << d2 << endl; cout << d3 << endl; cout << 4214.8968 << endl; return 0; } A C++ programozási nyelv Soós Sándor 6/12
A program kimenete #######901 901 385 #########385 @@@@@@@@@@@@@385 Text 7b ****Text d1 is 3.14159 setting precision 3 3.14 46 124 4.21e+003 Press any key to continue A C++ programozási nyelv Soós Sándor 7/12
Emlékeztető az előadásról Az objektum orientált programozás alapfogalmai A struktúra, record fogalma Különbségek a C és a C++ között tagfüggvények automatikusan lefutó függvények konstruktorok destruktorok hozzáférési hatáskörök szabályozása öröklés A C++ programozási nyelv Soós Sándor 8/12
Tervezzük meg a következő programot! Autókat fogunk nyilvántartani a következő adatokkal: rendszám átlagfogyasztás típus súly ajtószám a kilométeróra állása hengerűrtartalom gyártási év A következő információkat szeretnénk megtudni egy autóról: Hány éves az autó? Mennyibe kerül egy út ezzel az autóval? Mennyi az éves súlyadó erre az autóra? Hány liter üzemanyagot használt el eddig az autó? Melyik a legfiatalabb, legöregebb autó a flottában? Ellenőrizzük, hogy csak helyes értékeket lehessen megadni az autóról! A C++ programozási nyelv Soós Sándor 9/12
Tervezzük meg a programot hagyományos módon! Egy struktúra Különböző függvények a válaszok előállítására Különböző függvények a mezők ellenőrzött beállítására A C++ programozási nyelv Soós Sándor 10/12
Tervezzük meg a programot objektum-orientált módon! Egy struktúra Tagfüggvények a válaszok előállítására Tagfüggvények a mezők ellenőrzött beállítására Konstruktorok Hozzáférési jogosultságok beállítása A C++ programozási nyelv Soós Sándor 11/12
Összefoglalás C++ programozási nyelv Struktúrák a C++ nyelvben Gyakorlat Input-output C++ -ban A streamek használata Hogyan írunk, olvasunk a streamekkel? A kiírás módosítása: iomanip.h Példaprogram streamekre A program kimenete Emlékeztető az előadásról Tervezzük meg a következő programot! Tervezzük meg a programot hagyományos módon! Tervezzük meg a programot objektum-orientált módon! A C++ programozási nyelv Soós Sándor 12/12