klasy strumieniowe uzupełnienie Języki Programowania (język C++) Klasy strumieniowe Pliki nagłówkowe Klasy strumieniowe Obiekty globalne

Wielkość: px
Rozpocząć pokaz od strony:

Download "klasy strumieniowe uzupełnienie Języki Programowania (język C++) Klasy strumieniowe Pliki nagłówkowe Klasy strumieniowe Obiekty globalne"

Transkrypt

1 Języki Programowania (język C++) uzupełnienie klasy strumieniowe Tomasz Marks - Wydział MiNI PW -1- Tomasz Marks - Wydział MiNI PW -2- Klasy strumieniowe Pliki nagłówkowe Definicje związane z klasami strumieniowymi zawarte są w kilku plikach nagłówkowych: <iosfwd> - deklaracje zapowiadające klas strumieniowych. Niezbędny, bo niedozwolone jest uŝycie prostych deklaracji zapowiadających n.p. w postaci class ostream. <streambuf> - definicje dla klasy bazowej bufora strumienia ( basic_streambuf<> ). <istream> - definicje dla klas obsługujących jedynie dane wejściowe ( basic_istream<> ) oraz dla klas obsługujących zarówno operacje wejścia, jak i wyjścia ( basic_iostream<> ). <ostream> - definicje klas strumieni wyjściowych ( basic_ostream<> ). <iostream> - deklaracje globalnych obiektów strumieni (.p. cin, cout ). <iomanip> - parametryzowalne manipulatory. <fstream> - strumienie plikowe. <sstream>, <strstream> - strumienie wykorzystujące łańcuchy znakowe. Tomasz Marks - Wydział MiNI PW -3- Klasy strumieniowe Obiekty globalne Globalne obiekty strumieni standardowych zebrane są w poniŝszej tabeli: Obiekt cin cout cerr clog Typ istream ostream ostream ostream Przeznaczenie odczyt danych ze standardowego kanału wejściowego zapis danych do standardowego kanału wyjściowego zapis komunikatów o błędach do standardowego kanału błędów zapis komunikatów "logów" do standardowego kanału logów. Tomasz Marks - Wydział MiNI PW -4-

2 Klasy strumieniowe Stan strumienia (1) KaŜdy strumień posiada swój stan określający w szczególności, czy operacja we/wy zakończyła się powodzeniem, a w przypadku niepowodzenia równieŝ jego przyczynę. Standard określa typ iostate i 4 stałe tego typu, które mogą być wykorzystywane w charakterze znaczników. Typ iostate jest składową klasy ios_base. Stała (znacznik) goodbit eofbit failbit badbit Znaczenie Operacja zakończona poprawnie. śaden inny bit nie jest ustawiony. Napotkano koniec pliku. Błąd: operacja we/wy zakończona niepowodzeniem. Błąd krytyczny: stan niezdefiniowany. Klasy strumieniowe Stan strumienia (2) Metody badania i ustawiania stanu strumieni: Metoda good( ) eof( ) fail( ) bad( ) rdstate( ) clear( ) clear( state ) setstate( state ) Zwraca true, gdy ustawiony znacznik goodbit. Zwraca true, gdy ustawiony znacznik eofbit. Zwraca true, gdy ustawiony znacznik failbit lub badbit. Zwraca true, gdy ustawiony znacznik badbit. Zwraca bieŝący zestaw znaczników. Czyści wszystkie znaczniki. Czyści wszystkie znaczniki i nadaje in wartość określoną przez argument state. Ustawia dodatkowe znaczniki określone przez argument state. Tomasz Marks - Wydział MiNI PW -5- Tomasz Marks - Wydział MiNI PW -6- Klasy strumieniowe Stan strumienia (3) Biblioteka standardowa zawiera definicje dwóch metod, które mogą być uŝyte do testowania stanu strumieni w wyraŝeniach logicznych: operator void* ( ) Zwraca wartość określającą, czy strumień nie jest w stanie błędu odpowiednik:! fail( ). ( przeciąŝenie konwertera (void*) ) operator! ( ) Zwraca wartość określającą, czy strumień jest w stanie błędu odpowiednik: fail( ). ( przeciąŝenie operatora negacji! ) N.p. Klasy strumieniowe Stan strumienia (4) // dopóki strumień cin jest w poprawnym stanie while ( cin ). Jedna z alternatyw: // dopóki strumień cin jest w poprawnym stanie while ( cin.good() ). N.p. if (! (cin >> x) ) // odczyt x zakończył się niepowodzeniem.. Jedna z alternatyw: if ( (cin >> x).fail() ) // odczyt x zakończył się niepowodzeniem.. Tomasz Marks - Wydział MiNI PW -7- Tomasz Marks - Wydział MiNI PW -8-

3 Klasy strumieniowe Wyjątki Strumienie domyślnie nie generują wyjątków. W przypadku strumieni standardowych jest moŝliwość określenia dla kaŝdego znacznika stanu, czy jego ustawienie ma generować wyjątek. SłuŜy do tego metoda exceptions(): exceptions ( flags ) argument flags określa znaczniki stanu strumienia powodujące generowanie wyjątków. JeŜeli flags ma wartość 0 lub goodbit, to Ŝadne wyjątki nie będą generowane. Klasy strumieniowe Operatory we/wy Podstawowymi "narzędziami" dla strumieniowego wprowadzania/wyprowadzania danych są przeciąŝenia operatorów: dla wprowadzania istream& operator >> ( istream&, typ_drugiego_parametru ); dla wyprowadzania ostream& operator << ( ostream&, typ_drugiego_parametru ); exceptions ( ) Zwraca bieŝący zestaw znaczników stanu strumienia powodujących generowanie wyjątków. JeŜeli zwracaną wartością jest goodbit, to oznacza, Ŝe Ŝadne wyjątki nie będą generowane. Oprócz nich przewidziano cały szereg dodatkowych metod realizujących szczególne funkcje. Tomasz Marks - Wydział MiNI PW -9- Tomasz Marks - Wydział MiNI PW -10- Klasy strumieniowe Metody odczytu (1) Metody odczytu danych (opisy uproszczone): int get( ) Odczytuje następny znak. Zwraca kod znaku lob EOF. istream& get( char& c ) - Odczytuje następny znak do argumentu c. istream& get( char* s, streamsize n, char delim='\n' ) Odczytuje do n-1 znaków o ile wcześniej nie napotka znaku delim. Znak delim nie jest odczytywany. Odczytywana sekwencja kończona jest znakiem kończącym łańcuchy znakowe (zwykle '\0' ). istream& getline( char* s, streamsize n, char delim='\n' ) Jak wyŝej: odczytuje do n-1 znaków o ile wcześniej nie napotka znaku delim. Znak delim jest odczytywany, ale nie jest umieszczany w s. Jeśli wiersz jest dłŝszy niŝ n-1 znaków, to ustawiony zostanie znacznik failbit. istream& read( char* s, streamsize n ) Odczytuje n znaków. Znak kończący łańcuchy znakowe nie jest dodawany. Odczytanie EOF uznaje za błąd i w takim przypadku ustawia znacznik failbit. streamsize readsome( char* s, streamsize n ) Odczytuje do n znaków dostępnych w buforze strumienia. Znak kończący łańcuchy znakowe nie jest dodawany. Odczytania EOF nie uznaje za błąd. Klasy strumieniowe Metody odczytu (2) Metody odczytu danych (opisy uproszczone) c.d.: streamsize gcount ( ) const Zwraca liczbę znaków odczytaną przez ostatnią operację odczytu w trybie niesformatowanym. istream& ignore( streamsize n=1) Pobiera ze strumienia i odrzuca do n znaków. istream& ignore( streamsize n, int delim) Pobiera ze strumienia i odrzuca do n znaków o ile wcześniej nie napotka znaku delim. int peek( ) Zwraca kod kolejnego znaku (lub EOF) ze strumienia bez jego pobierania. istream& unget( ) Umieszcza ostatnio odczytany znak ponownie w strumieniu. istream& putback( char c ) Umieszcza ostatnio odczytany znak ponownie w strumieniu. Sprawdza,czy c faktycznie było ostatnim znakiem. Tomasz Marks - Wydział MiNI PW -11- Tomasz Marks - Wydział MiNI PW -12-

4 Klasy strumieniowe Metody zapisu Metody zapisu danych (opisy uproszczone): ostream& put( char c ) Zapisuje argument c do strumienia. ostream& write( const char* s, streamsize n ) Zapisuje n znaków. Znak kończący łańcuchy znakowe nie jest dopisywany. istream& get( char* s, streamsize n, char delim='\n' ) Odczytuje do n-1 znaków o ile wcześniej nie napotka znaku delim. Znak delim nie jest odczytywany. Odczytywana sekwencja kończona jest znakiem kończącym łańcuchy znakowe ( zwykle '\0' ). ostream& flush( ) OpróŜnia bufor strumienia (wymusza zapisanie wszystkich buforowanych danych do urządzenia lub kanału we/wy, z którym skojarzony jest strumień). Klasy strumieniowe Uwaga UWAGA: Podane wyŝej opisy uproszczone mogą być niewystarczające w praktycznych zastosowaniach, dlatego naleŝy sięgnąć do pełnych (pełniejszych) opisów zawartych w literaturze, n.p.: ostream& ostream::write( const char* s, streamsize n ) Zapisuje n znaków z łańcucha s do strumienia. Zwraca strumień. Stan strumienia określa, czy operacja zapisu została zakończona powodzeniem. Znak końca łańcucha znakowego nie jest dodawany automatycznie i dlatego teŝ powinien zostać zapisany ręcznie. Funkcja wywołująca musi zapewnić, aby łańcuch s w rzeczywistości zawierał przynajmniej n znaków. W innym przypadku zachowanie funkcji jest niezdefiniowane. Patrz: Nicolai M. Josuttis ( str. 566 ). Te opisy mogą teŝ zawierać błędy i często zachodzi potrzeba wykonania paru własnych eksperymentów w celu ustalenia właściwej interpretacji zobacz opis metody peek() tamŝe. Tomasz Marks - Wydział MiNI PW -13- Tomasz Marks - Wydział MiNI PW -14- Klasy strumieniowe Manipulatory (1) Manipulatory są narzędziami modyfikującymi strumień w przypadku ich zastosowania wraz ze standardowymi operatorami we/wy. klasy strumieniowe c.d. Najprostrze manipulatory dostępne są w plikach <istream>, <ostream>. Manipulator flush endl ends we/wy wy wy wy Znaczenie OpróŜnia bufor danych wyjściowych do urządzenia. Wstawia znak nowego wiersza i opróŝnia bufor danych wyjściowych do urządzenia. Wstawia znak zakończenia łańcucha znakowego do bufora. ws we Odczytuje i pomija białe znaki. Tomasz Marks - Wydział MiNI PW -15- Tomasz Marks - Wydział MiNI PW -16-

5 Klasy strumieniowe Manipulatory (2) Manipulatory powyŝej opisane bazują na przeciąŝeniach odpowiednich operatorów we/wy, n.p: ostream& ostream::operator << ( ostream& (*op) (ostream& ) ) // wywołaj funkcję przekazaną jak argument return (*op) ( *this ); (to przeciąŝenie realizowane jest jako metoda) a sam manipulator realizowany jest jako funkcja: ostream& endl ( ostream& strm ) strm.put( '\n' ); strm.flush( ); return strm; Tomasz Marks - Wydział MiNI PW -17- Klasy strumieniowe Formatowanie Formatowanie operacji we/wy związane jest z dwoma aspektami - określenie szczegółów postaci danych (n.p. precyzja, znak wypełnienia, podstawa numeryczna); - spełnienie określonych aspektów narodowych. Tym drugim aspektem nie będzięmy się tu zajmowali. Pierwszy aspekt związany jest z kilkoma polami składowymi określonymi i uŝywanymi w klasie ios_base w celu określenia róŝnych formatów we/wy. W szczególności moŝna tu wymienić: - minimalna szerokość pola, - precyzja liczb rzeczywistych, - znak wypełnienia, - znaczniki konfiguracji formatu (typ ios_base::fmtflags). Klasa ios_base udostępnia funkcje składowe (metody) pozwalające kontrolować (tzn. ustawiać i sprawdzać) wartości wymienionych pól. Do ustalania wartości pól związanych z formatowaniem przewidziano równieŝ szereg manipulatorów, z których moŝna korzystać w połączeniu z operatorami << i >>. Tomasz Marks - Wydział MiNI PW -18- Klasy strumieniowe Znaczniki formatu (1) Znaczniki formatu są danymi binarnymi (1-0, tak-nie, ON-OFF); Klasy strumieniowe Znaczniki formatu (2) Znaczniki formatu c.d.: Maska adjustfield adjustfield adjustfield adjustfield basefield basefield basefield basefield Znacznik boolalpha left right internal brak showpos uppercase oct dec hex brak JeŜeli ustawiony, to... bool reprezentowany tekstowo (jeśli nie - numerycznie) wyrównuje wartość do lewej wyrównuje wartość do prawej wyrównuje znak do lewej, a wartość do prawej wyrównuje wartość do prawej (domyślne) zapisuje znak plus dla wartości dodatnich uŝywa wielkich liter zapisuje i odczytuje liczby w systemie ósemkowym zapisuje i odczytuje liczby w systemie dziesiętnym zapisuje i odczytuje liczby w systemie szesnastkowym zapis dzies.; odczyt w zaleŝności od znaków poprz. Maska floatfield floatfield floatfield Znacznik showbase fixed scientific brak showpoint skipws unitbuf JeŜeli ustawiony, to... wskazuje na podstawę numeryczną uŝywa notacji dziesiętnej uŝywa notacji naukowej uŝywa "lepszej" notacji (domyślne) zapisuje zawsze separator dziesiętny przy odczycie pomija początkowe białe znaki opróŝnia bufor wyjściowy po kaŝdej operacji zapisu Tomasz Marks - Wydział MiNI PW -19- Tomasz Marks - Wydział MiNI PW -20-

6 Klasy strumieniowe Metody formatowania (1) Dostępne są następujące metody formatowania: Klasy strumieniowe Metody formatowania (2) Dostępne są metody formatowania c.d.: Metoda Metoda setf(flags) setf(flags,mask) unsetf(flags) flags() flags(flags) copyfmt(strm) ustawia znaczniki określone przez flags i zwraca poprzedni stan wszystkich znaczników ustawia znaczniki w grupie mask określone przez flags i zwraca poprzedni stan wszystkich znaczników czyści znaczniki określone przez flags zwraca aktualny stan wszystkich znaczników ustawia wszystkie znaczniki według flags i zwraca poprzedni stan wszystkich znaczników kopiuje wszystkie definicje formatu ze strumienia strm width( ) width(val) fill( ) fill(c) precision( ) precision(val) zwraca aktualną szerokość pola ustawia szerokość pola według val i zwraca poprzednią wartość zwraca aktualny znak wypełnienia określa znak c jako znak wypełnienia i zwraca poprzednią wartość znaku wypełnienia zwraca aktualną dokładność wartości zmiennopozycyjnych ustawia wartość val, jako dokładność wartości zmiennopozycyjnych i zwraca jej dotychczasową wartość Tomasz Marks - Wydział MiNI PW -21- Tomasz Marks - Wydział MiNI PW -22- Klasy strumieniowe Manipulatory (3) Dostępne są następujące manipulatory: Klasy strumieniowe Manipulatory (4) Dostępne manipulatory c.d.: Manipulator Manipulator setiosflags(flags) resetiosflags(mask) boolalpha noboolalpha setw(val) setfill(c) left right internal ustawia dla strumienia znaczniki określone przez flags czyści znaczniki strumienia w grupie mask wybiera reprezentację tekstową dla wartości logicznych wybiera reprezentację numeryczną dla wartości logicznych ustawia szerokość pola dla danych we/wy na wartość val wybiera znak c jako znak wypełnienia wybiera lewostronne wyrównanie wartości wybiera prawostronne wyrównanie wartości wybiera prawostronne wyrównanie wartości i lewostronne wyrównanie dla znaku showpos noshowpos uppercase nouppercase oct dec hex showbase noshowbase showpoint noshowpoint wyprowadzenie znaku plus dla wartości dodatnich znak plus nie będzie wyprowadzany dla wartości dodatnich uŝywanie wielkich liter do zapisu wartości uŝywanie małych liter do zapisu wartości zapis / odczyt liczb w systemie ósemkowym zapis / odczyt liczb w systemie dziesiętnym zapis / odczyt liczb w systemie szesnastkowym określa podstawę numeryczną nie określa podstawy numerycznej zawsze zapisuje znak separatora dziesiętnego nie wymaga uŝycia znaku separatora dziesiętnego Tomasz Marks - Wydział MiNI PW -23- Tomasz Marks - Wydział MiNI PW -24-

7 Klasy strumieniowe Manipulatory (5) Dostępne manipulatory c.d.: Manipulator setprecision(val) fixed scientific skipws noskipws unitbuf nounitbuf ustawia nową wartość dokładności uŝywa notacji dziesiętnej uŝywa notacji naukowej dla wejścia: pomija poprzedzające białe znaki dla wejścia: nie pomija poprzedzających białych znaków opróŝnia bufor danych wyjściowych po kaŝdym zapisie nie opróŝnia bufora danych wyjściowych po kaŝdym zapisie Klasy strumieniowe Dostęp do plików (1) Dostęp do plików za pośrednictwem strumieni opisany jest w bibliotece standardowej przez 4 wzorce klas: basic_ifstream<> odczyt danych basic_ofstream<> zapis danych basic_fstream<> basic_filebuf<> odczyt i zapis danych uzywana przez inne klasy stumieni plikowych w celu wykonywania rzeczywistych operacji odczytu i zapisu danych UWAGA: Korzystanie z manipulatorów sparametryzowanych wymaga włączenia pliku nagłówkowego <iomanip>. Tomasz Marks - Wydział MiNI PW -25- Tomasz Marks - Wydział MiNI PW -26- Klasy strumieniowe Dostęp do plików (2) Deklaracje tych klas udostępniane są przez włączenie nagłówka <fstream> namespace std template < class chart, class traits = char_traits<chart> > class basic_ifstream; typedef basic_ifstream<char> ifstream; typedef basic_ifstream<wchar_t> wifstream; template < class chart, class traits = char_traits<chart> > class basic_ofstream; typedef basic_ofstream<char> ofstream; typedef basic_ofstream<wchar_t> wofstream; template < class chart, class traits = char_traits<chart> > class basic_fstream; typedef basic_fstream<char> fstream; typedef basic_fstream<wchar_t> wfstream; template < class chart, class traits = char_traits<chart> > class basic_filebuf; typedef basic_filebuf<char> filebuf; typedef basic_filebuf<wchar_t> wfilebuf; Tomasz Marks - Wydział MiNI PW -27- Klasy strumieniowe Dostęp do plików (3a) // pliki1.cpp #include <iostream> #include <fstream> #include <iomanip> #include <cstdlib> using namespace std; int main ( ) ofstream file( "charset.txt" ); if (! file ) cout << "Nie mozna otworzyc pliku do zapisu!" << endl; exit( EXIT_FAILURE ); for ( int i=32; i<256; i++ ) file << "kod: " << setw( 3 ) << i << " " << "znak: " << static_cast<char>( i ) << endl; // plik będzie zamknięty automatycznie Tomasz Marks - Wydział MiNI PW -28-

8 Klasy strumieniowe Dostęp do plików (3b) ifstream file( "charset.txt" ); if (! file ) cout << "Nie mozna otworzyc pliku do odczytu!" << endl; exit( EXIT_FAILURE ); char c; while ( file.get( c ) ) cout.put( c ); // plik będzie zamknięty automatycznie Tomasz Marks - Wydział MiNI PW -29- Klasy strumieniowe Dostęp do plików (3c) kod: 32 znak: kod: 33 znak:! kod: 34 znak: " kod: 35 znak: # kod: 36 znak: $ kod: 37 znak: % kod: 38 znak: & kod: 97 znak: a kod: 98 znak: b kod: 99 znak: c kod: 100 znak: d kod: 101 znak: e kod: 102 znak: f kod: 103 znak: g Tomasz Marks - Wydział MiNI PW -30- Klasy strumieniowe Dostęp do plików (4) Do kontroli trybu przetwarzania plików słuŝą znaczniki typu openmode zdefiniowane w klasie ios_base: Klasy strumieniowe Dostęp do plików (5) Dopuszczalne są jedynie wymienione niŝej kombinacje znaczników: Znacznik in out app ate trunc binary Znaczenie znacznika otwórz plik do odczytu (domyślne dla ifstream) otwórz plik do zapisu (domyślne dla ofstream) przy zapisie dołączaj znaki zawsze na koniec pliku po otwarciu pliku ustaw się na jego końcu usuwa oryginalną zawartość pliku zapisuj w trybie binarnym (nie zastępuj znaków specjalnych) Znaczniki in out out trunc out app in out in out trunc odp. w jęz. C "r" "w" "a" "r+" "w+" Znaczenie tylko odczyt (plik musi istnieć) tylko zapis (wyczyść plik, gdy istnieje, w przeciwnym przypadku utwórz) tylko zapis (dopisuj na końcu, gdy istnieje, w przeciwnym przypadku utwórz) zapis i odczyt (plik musi istnieć, po otwarciu ustaw się na początku pliku) zapis i odczyt (wyczyść plik, gdy istnieje, w przeciwnym przypadku utwórz) Tomasz Marks - Wydział MiNI PW -31- Tomasz Marks - Wydział MiNI PW -32-

9 Klasy strumieniowe Dostęp do plików (6) Metody niezaleŝnego od utworzenia strumienia otwierania pliku i niezaleŝnego od destruktora zamykania pliku zebrano w poniŝej: Klasy strumieniowe Dostęp do plików (7) Swobodny dostęp do danych zawartych w pliku wymaga metod odczytu i zmiany pozycji bieŝącej: Metoda Metoda open(name) otwiera dla strumienia plik name w trybie domyślnym tellg( ) seekg(pos) seekg(offset,rpos) tellp( ) zwraca bezwzględną pozycję odczytu ustawia bezwzględną pozycję odczytu ustawia względną pozycję odczytu zwraca bezwzględną pozycję zapisu g get p put open(name,mode) otwiera dla strumienia plik name w trybie mode seekp(pos) ustawia bezwzględną pozycję zapisu close( ) zamyka strumień plikowy seekp(offset,rpos) ustawia względną pozycję zapisu is_open( ) określa, czy strumień reprezentuje otwarty plik pos pozycja bezwzględna jest typu pos_type; offset przesunięcie jest typu off_type; rpos połoŝenie, względem którego liczone jest przesunięcie, jest typu seekdir i mogą mieć wartości: beg, cur, end. Tomasz Marks - Wydział MiNI PW -33- Tomasz Marks - Wydział MiNI PW -34- Klasy strumieniowe Dostęp do plików (8a) // pliki2.cpp #include <iostream> #include <fstream> #include <iomanip> #include <cstdlib> using namespace std; int main ( ) fstream file; file.open( "charset.txt", ios::out ); if (! file ) cout << "Nie mozna otworzyc pliku do zapisu!" << endl; exit( EXIT_FAILURE ); for ( int i=32; i<256; i++ ) file << "kod: " << setw( 3 ) << i << " " << "znak: " << static_cast<char>( i ) << endl; file.close( ); // plik będzie zamknięty "na Ŝyczenie" Tomasz Marks - Wydział MiNI PW -35- Klasy strumieniowe Dostęp do plików (8b) file.open( "charset.txt", ios::in ); if (! file ) cout << "Nie mozna otworzyc pliku do odczytu!" << endl; exit( EXIT_FAILURE ); char c; while ( file.get( c ) ) cout.put( c ); // plik będzie zamknięty automatycznie Tomasz Marks - Wydział MiNI PW -36-

10 Klasy strumieniowe Dostęp do plików (8c) UWAGA: Wszystkie znaczniki związane z obsługą strumieni zdefiniowane są w klasie ios_base, z której z kolei dziedziczą wszystkie interesujące nas klasy n.p. ifstream, ofstream, fstream. W starszych wersjach C++ były one zdefiniowane w klasie ios. Obecnie klasa ios teŝ jest dostępna (ze względu na zgodność ze starszymi wersjami) i dziedziczy z ios_base, co umoŝliwia skrócenie zapisu: zamiast ios_base::out moŝemy napisać ios::out Klasy strumieniowe Dostęp do plików (9a) // pliki3.cpp #include <iostream> #include <fstream> #include <iomanip> #include <cstdlib> using namespace std; int main ( ) fstream file; file.open( "charset.txt", ios::out ios::in ios::trunc ); if (! file ) cout << "Nie mozna otworzyc pliku!" << endl; exit( EXIT_FAILURE ); for ( int i=32; i<256; i++ ) file << "kod: " << setw( 3 ) << i << " " << "znak: " << static_cast<char>( i ) << endl; Tomasz Marks - Wydział MiNI PW -37- Tomasz Marks - Wydział MiNI PW -38- Klasy strumieniowe Dostęp do plików (9b) file.seekg(0); char c; while ( file.get( c ) ) cout.put( c ); // plik będzie zamknięty automatycznie Koniec uzupełnienia. Tomasz Marks - Wydział MiNI PW -39- Tomasz Marks - Wydział MiNI PW -40-

Wejście wyjście strumieniowe

Wejście wyjście strumieniowe PARADYGMATY PROGRAMOWANIA Wykład 6 Wejście wyjście strumieniowe stdin standardowy strumień wejściowy stdout standardowy strumień wyjściowy stderr standardowy strumień komunikatów o błędach pliki - inne

Bardziej szczegółowo

Programowanie w językach

Programowanie w językach Programowanie w językach wysokiego poziomu Obsługa plików za pomocą strumieni Elektronika i Telekomunikacja, semestr III rok akademicki 2013/2014 dr inż. Paweł Myszkowski Plan zajęć a) otwieranie i zamykanie

Bardziej szczegółowo

Operacje wejścia/wyjścia (odsłona druga) - pliki

Operacje wejścia/wyjścia (odsłona druga) - pliki Operacje wejścia/wyjścia (odsłona druga) - pliki Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2005 2008 Bogdan Kreczmer Niniejszy dokument zawiera materiały

Bardziej szczegółowo

C++ - [3-5] Pliki i strumienie w C++

C++ - [3-5] Pliki i strumienie w C++ Slajd 1 z 13 C++ - [3-5] Pliki i strumienie w C++ Nysa 2004-2013. Autor: Wojciech Galiński. wersja dnia 19 maja 2013 r. Slajd 2 z 13 Klasy i obiekty do obsługi plików Aby korzystać z obiektów do obsługi

Bardziej szczegółowo

Wykład 2 Operacje wejściawyjścia. Ewa Gajda

Wykład 2 Operacje wejściawyjścia. Ewa Gajda Wykład 2 Operacje wejściawyjścia w C++ Ewa Gajda Strumienie Operacje wejścia-wyjścia w C++ realizowane są przy pomocy tak zwanych strumieni. Strumieo można sobie wyobrażad jako ciąg znaków bądź bajtów

Bardziej szczegółowo

Programowanie i struktury danych

Programowanie i struktury danych Programowanie i struktury danych Wykªad 3 1 / 37 tekstowe binarne Wyró»niamy dwa rodzaje plików: pliki binarne pliki tekstowe 2 / 37 binarne tekstowe binarne Plik binarny to ci g bajtów zapami tanych w

Bardziej szczegółowo

Pliki i manipulatory. - Łańcuchowe funkcje wejścia - getline(string) Dorota Pylak - Tryby otwarcia pliku - Formatowanie manipulatory

Pliki i manipulatory. - Łańcuchowe funkcje wejścia - getline(string) Dorota Pylak - Tryby otwarcia pliku - Formatowanie manipulatory Pliki i manipulatory - Łańcuchowe funkcje wejścia - getline(string) Dorota Pylak - Tryby otwarcia pliku - Formatowanie manipulatory 2 Łańcuchowe funkcje wejścia - getline(string) Wprowadzanie danych do

Bardziej szczegółowo

Program dopisujący gwiazdkę na końcu pliku tekstowego o nazwie podanej przez uŝytkownika oraz wypisujący zawartość tego pliku.

Program dopisujący gwiazdkę na końcu pliku tekstowego o nazwie podanej przez uŝytkownika oraz wypisujący zawartość tego pliku. Program 7 Program dopisujący gwiazdkę na końcu pliku tekstowego o nazwie podanej przez uŝytkownika oraz wypisujący zawartość tego pliku. #include #include using namespace std; int main()

Bardziej szczegółowo

Spis treści OBSŁUGA PLIKÓW W JĘZYKU C++ Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF32

Spis treści OBSŁUGA PLIKÓW W JĘZYKU C++ Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF32 Politechnika Białostocka Wydział Elektryczny Katedra Elektrotechniki Teoretycznej i Metrologii Instrukcja do pracowni specjalistycznej z przedmiotu Informatyka 2 Kod przedmiotu: ES1C300 016 (studia stacjonarne)

Bardziej szczegółowo

Operacje na plikach. Informatyka. Standardowe strumienie wejścia i wyjścia

Operacje na plikach. Informatyka. Standardowe strumienie wejścia i wyjścia Materiały Operacje na plikach Informatyka Operacje wejścia-wyjścia w C/C++: Podejście proceduralne Podejście obiektowe Standardowe strumienie wejścia i wyjścia stdin - strumień wejściowy (klawiatura) cin

Bardziej szczegółowo

Język C++ wykład VIII

Język C++ wykład VIII Programowanie uzupełnienie notatek: dr Jerzy Białkowski 1 2 3 4 Obiektowość języka C++ ˆ Klasa (rozszerzenie struktury), obiekt instancją klasy, konstruktory i destruktory ˆ Enkapsulacja - kapsułkowanie,

Bardziej szczegółowo

C++ - strumienie. C++ - strumienie. C++ - strumienie. C++ - strumienie. C++ - strumienie STRUMIENIE

C++ - strumienie. C++ - strumienie. C++ - strumienie. C++ - strumienie. C++ - strumienie STRUMIENIE STRUMIENIE Motywacja wprowadzenia nowej biblioteki strumieni: W języku C istnieje intepreter odpowiedzialny za analizę łańcucha formatującego podczas wykonywania programu oraz pobierający zmienną liczbę

Bardziej szczegółowo

Wstęp do informatyki- wykład 8 Pętla while, do while,for -pętla w pętli- przykłady Operator rzutowania Manipulatory

Wstęp do informatyki- wykład 8 Pętla while, do while,for -pętla w pętli- przykłady Operator rzutowania Manipulatory 1 Wstęp do informatyki- wykład 8 Pętla while, do while,for -pętla w pętli- przykłady Operator rzutowania Manipulatory Treści prezentowane w wykładzie zostały oparte o: S. Prata, Język C++. Szkoła programowania.

Bardziej szczegółowo

Wejście-wyjście w C++ Podstawy operacji

Wejście-wyjście w C++ Podstawy operacji Wejście-wyjście w C++ Podstawy operacji C++ wspiera dwie kompletne systemy We/Wy: o We\Wy języka C o We\Wy obiektowy C++ Główną zaletą We\Wy C++ : jest możliwe przeciążenie enie dla tworzonych klas. Nadaje

Bardziej szczegółowo

C++ - strumienie. C++ - strumienie. C++ - strumienie. C++ - strumienie. C++ - strumienie STRUMIENIE

C++ - strumienie. C++ - strumienie. C++ - strumienie. C++ - strumienie. C++ - strumienie STRUMIENIE STRUMIENIE Motywacja wprowadzenia nowej biblioteki strumieni: W języku C istnieje intepreter odpowiedzialny za analizę łańcucha formatującego podczas wykonywania programu oraz pobierający zmienną liczbę

Bardziej szczegółowo

Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p. Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni Wykład 6 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Wskaźnik do pliku Dostęp do pliku: zapis, odczyt,

Bardziej szczegółowo

Pliki wykład 2. Dorota Pylak

Pliki wykład 2. Dorota Pylak Pliki wykład 2 Dorota Pylak Struktura programu działającego na plikach 1) Dyrektywa preprocesora #include //zapewnia dostęp do strumieni ifstream i ofstream 2) deklaracja zmiennej (strumienia)

Bardziej szczegółowo

jest mocny, skoro da się w nim wyrazić nowe pojęcia; łatwiej przenieść go na nową platformę jest mniejszy.

jest mocny, skoro da się w nim wyrazić nowe pojęcia; łatwiej przenieść go na nową platformę jest mniejszy. Wejście-wyjście Nie jest elementem języka C++ Niezbyt istotne dla użytkownika, ważne dla języka: jest mocny, skoro da się w nim wyrazić nowe pojęcia; łatwiej przenieść go na nową platformę jest mniejszy.

Bardziej szczegółowo

Operacje na plikach (niskiego poziomu) < IO.H >

Operacje na plikach (niskiego poziomu) < IO.H > OPERACJE WEJŚCIA WYJŚCIA (część b) Operacje wejścia / wyjścia odczyt i zapis danych do róŝnych zewnętrznych urządzeń lub nośników pamięciowych komputera: np. klawiatury, ekranu monitora, dyskietki, czytnika

Bardziej szczegółowo

Podstawy programowania. Wykład: 9. Łańcuchy znaków. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Podstawy programowania. Wykład: 9. Łańcuchy znaków. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD Podstawy programowania Wykład: 9 Łańcuchy znaków 1 dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD Rodzaje plików Dane przechowywane w pliku mogą mieć reprezentację binarną (taką samą, jak

Bardziej szczegółowo

C++ - szablony. C++ - szablony. C++ - strumienie. C++ - strumienie. C++ - strumienie STRUMIENIE

C++ - szablony. C++ - szablony. C++ - strumienie. C++ - strumienie. C++ - strumienie STRUMIENIE C++ - szablony C++ - szablony class Pierwsza { public: void f() {} }; class Druga { public: void g() {} }; template class Trzecia { T t; public: void a() { t.f(); } void b() { t.g(); } }; int

Bardziej szczegółowo

Biblioteka standardowa - operacje wejścia/wyjścia

Biblioteka standardowa - operacje wejścia/wyjścia Biblioteka standardowa - operacje wejścia/wyjścia Przemysław Gawroński D-10, p. 234 Wykład 6 15 stycznia 2019 (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 1 / 14 Outline

Bardziej szczegółowo

Pliki wykład. Dorota Pylak

Pliki wykład. Dorota Pylak Pliki wykład Dorota Pylak Pliki 2 Większość programów komputerowych korzysta z plików, np. w edytorach tekstów tworzymy pliki dokumentów. Plik (ang. file) jest porcją danych zapisanych na jakimś nośniku.

Bardziej szczegółowo

Programowanie Obiektowe i C++

Programowanie Obiektowe i C++ Programowanie Obiektowe i C++ Marcin Benke Instytut Informatyki UW 13.11.2006 Marcin Benke (IIUW) Programowanie Obiektowe i C++ 13.11.2006 157 / 201 Wejście-wyjście Nie jest elementem języka C++ Niezbyt

Bardziej szczegółowo

Techniki programowania INP001002Wl rok akademicki 2017/18 semestr letni. Wykład 5. Karol Tarnowski A-1 p.

Techniki programowania INP001002Wl rok akademicki 2017/18 semestr letni. Wykład 5. Karol Tarnowski A-1 p. Techniki programowania INP001002Wl rok akademicki 2017/18 semestr letni Wykład 5 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Standardowa biblioteka szablonów (Standard Template

Bardziej szczegółowo

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 12. Karol Tarnowski A-1 p.

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 12. Karol Tarnowski A-1 p. Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy Wykład 12 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji (1) Obsługa łańcuchów znakowych getchar(), putchar()

Bardziej szczegółowo

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 5. Karol Tarnowski A-1 p.

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 5. Karol Tarnowski A-1 p. Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni Wykład 5 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Przestrzenie nazw Standardowa biblioteka szablonów

Bardziej szczegółowo

Operacje wejścia/wyjścia odsłona pierwsza

Operacje wejścia/wyjścia odsłona pierwsza Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2005 2008 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu na temat programowania obiektowego.

Bardziej szczegółowo

Programowanie w C++ Wykład 11. Katarzyna Grzelak. 21 maja K.Grzelak (Wykład 11) Programowanie w C++ 1 / 24

Programowanie w C++ Wykład 11. Katarzyna Grzelak. 21 maja K.Grzelak (Wykład 11) Programowanie w C++ 1 / 24 Programowanie w C++ Wykład 11 Katarzyna Grzelak 21 maja 2018 K.Grzelak (Wykład 11) Programowanie w C++ 1 / 24 Strumienie Strumień bajtów płynacy od źródła do ujścia: 1 standardowe strumienie wejściowe

Bardziej szczegółowo

Pliki wykład. Dorota Pylak

Pliki wykład. Dorota Pylak Pliki wykład Dorota Pylak Pliki 2 Większość programów komputerowych korzysta z plików, np. w edytorach tekstów tworzymy pliki dokumentów. Plik (ang. file) jest porcją danych zapisanych na jakimś nośniku.

Bardziej szczegółowo

C++ - strumienie. Strumienie. C++ - strumienie. C++ - strumienie. C++ - strumienie. C++ - strumienie. Formatowanie strumieni wyjściowych

C++ - strumienie. Strumienie. C++ - strumienie. C++ - strumienie. C++ - strumienie. C++ - strumienie. Formatowanie strumieni wyjściowych Formatowanie strumieni wyjściowych Każda klasa reprezentująca strumień ma tzw. flagi, opisujące stan strumienia. W szczególności sposób działania operatorów we/wy określony jest aktualnym stanem flag stanu

Bardziej szczegółowo

Klasa iostream... 1 Klasy ofstream, ifstream Struktura FILE... 8

Klasa iostream... 1 Klasy ofstream, ifstream Struktura FILE... 8 12.1 12.2 Klasa iostream... 1 Klasy ofstream, ifstream... 3 12.3 Struktura FILE... 8 12.1 Klasa iostream Obiekty klasy stream tworzone automatycznie: istream& cin, standardowe wejście konsoli (klawiatura).

Bardziej szczegółowo

1 Pierwsze kroki w C++ cz.3 2 Obsługa plików

1 Pierwsze kroki w C++ cz.3 2 Obsługa plików 1 Pierwsze kroki w C++ cz.3 2 Obsługa plików Do pracy z plikami zewnętrznymi niezbędna będzie biblioteka fstream. Udostępnia ona programiście narzędzia do zapisu i odczytu plików. 2.1 Typ zmiennej fstream.

Bardziej szczegółowo

Wykład II. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Wykład II. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej Wykład II - semestr II Kierunek Informatyka Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2015 c Copyright 2015 Janusz Słupik Operacje dyskowe - zapis do pliku #include #include

Bardziej szczegółowo

Strumienie standardowe C

Strumienie standardowe C Strumienie standardowe C Lista standardowych strumieni w języku C składa się z trzech elementów: stdin (strumień wejściowy), stdout (strumień wyjściowy) oraz stderr (standardowe wyjście błędów). W niektórych

Bardziej szczegółowo

4. Wyrzuć wyjątek jeśli zmienna ist nie istnieje bloki: try, catch i wyrzucanie wyjątku

4. Wyrzuć wyjątek jeśli zmienna ist nie istnieje bloki: try, catch i wyrzucanie wyjątku Lista 7 Zad. 1 Pierwsza wersja programu 1. Przygotuj plik do w: plik tekstowy z pojedynczą liczbą. Umieść go w tym samym folderze, co projekt (*.cpp). 2. Nazwa pliku name nazwa zmiennej może być dowolna

Bardziej szczegółowo

Referencje. Zasady zaliczeń. Zasady zaliczeń. Zasady zaliczeń. Zasady zaliczeń. Zaawansowane Programowanie Obiektowe. Informacje organizacyjne:

Referencje. Zasady zaliczeń. Zasady zaliczeń. Zasady zaliczeń. Zasady zaliczeń. Zaawansowane Programowanie Obiektowe. Informacje organizacyjne: Referencje Informacje organizacyjne: Wykład: środy, 13:15 14:45 Strona główna www z komunikatami dla ZPO: http://troja.uksw.edu.pl/category/zpo2017/ Zaawansowane Programowanie Obiektowe E-mail: k.trojanowski@uksw.edu.pl

Bardziej szczegółowo

Pliki wykład 2. Dorota Pylak

Pliki wykład 2. Dorota Pylak Pliki wykład 2 Dorota Pylak Struktura programu działającego na plikach 1) Dyrektywa preprocesora #include //zapewnia dostęp do strumieni ifstream i ofstream 2) deklaracja zmiennej (strumienia)

Bardziej szczegółowo

Podstawy Programowania

Podstawy Programowania Podstawy Programowania dr Elżbieta Gawrońska gawronska@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej dr Elżbieta Gawrońska (ICIS) Podstawy Programowania 05 1 / 15 Plan wykładu 1 Biblioteka

Bardziej szczegółowo

INFORMATYKA Studia Niestacjonarne Elektrotechnika

INFORMATYKA Studia Niestacjonarne Elektrotechnika INFORMATYKA Studia Niestacjonarne Elektrotechnika Wydział Elektrotechniki i Informatyki dr inż. Michał Łanczont Wydział Elektrotechniki i Informatyki p. E419 tel. 81-538-42-93 m.lanczont@pollub.pl http://lanczont.pollub.pl

Bardziej szczegółowo

Pliki wykład 2 -przekazywanie strumieni do funkcji -funkcje get(char &) i getline(string)

Pliki wykład 2 -przekazywanie strumieni do funkcji -funkcje get(char &) i getline(string) Pliki wykład 2 -przekazywanie strumieni do funkcji -funkcje get(char &) i getline(string) Dorota Pylak Struktura programu działającego na plikach 2 1) Dyrektywa preprocesora #include //zapewnia

Bardziej szczegółowo

Wykład 9 2014-06-20 09:37 PP2_W9

Wykład 9 2014-06-20 09:37 PP2_W9 Wykład 9 Przykłady programów z wykorzystaniem klas - przykład funkcji operatorowych - obiektowa implementacja listy jednokierunkowej kopiowanie obiektów - klasa "latający napis" Pozycjonowanie w plikach

Bardziej szczegółowo

Wstęp do programowania obiektowego

Wstęp do programowania obiektowego Wstęp do programowania obiektowego KLASA ISTREAM KLASA OSTREAM MANIPULATORY STRUMIENIOWE STRUKTURY W C++ DOMYŚLNE WARTOŚCI PARAMETRÓW KONSTRUKTORY I DESTRUKTORY KLAS POCHODNYCH KONSTRUKTOR KOPIUJĄCY POLIMORFIZM

Bardziej szczegółowo

1 Strumienie. 2 Pliki. 2.1 Zapis do pliku tekstowego. Programowanie w j zyku C - Adam Krechowicz, Daniel Kaczmarski

1 Strumienie. 2 Pliki. 2.1 Zapis do pliku tekstowego. Programowanie w j zyku C - Adam Krechowicz, Daniel Kaczmarski Programowanie w j zyku C - Adam Krechowicz, Daniel Kaczmarski 1 Strumienie W j zyku C++ pliki obsªugiwane s za pomoc strumieni. Strumie«pozwala na sekwencyjny dost p do pliku. Elementy, które jako pierwsze

Bardziej szczegółowo

Referencje. Zasady zaliczeń. Zasady zaliczeń. Zasady zaliczeń. Zasady zaliczeń. Zaawansowane Programowanie Obiektowe. Informacje organizacyjne:

Referencje. Zasady zaliczeń. Zasady zaliczeń. Zasady zaliczeń. Zasady zaliczeń. Zaawansowane Programowanie Obiektowe. Informacje organizacyjne: Referencje Informacje organizacyjne: Wykład: wtorki, 15:00 16:30 Strona główna www z komunikatami dla ZPO: http://troja.uksw.edu.pl/category/zpo2016/ Zaawansowane Programowanie Obiektowe E-mail: k.trojanowski@uksw.edu.pl

Bardziej szczegółowo

Wskaźniki do funkcji. Wykład 11. Podstawy programowania ( język C ) Wskaźniki do funkcji (1) Wskaźniki do funkcji (2)

Wskaźniki do funkcji. Wykład 11. Podstawy programowania ( język C ) Wskaźniki do funkcji (1) Wskaźniki do funkcji (2) Podstawy programowania ( język C ) Wskaźniki do funkcji Wykład 11. Tomasz Marks - Wydział MiNI PW -1- Tomasz Marks - Wydział MiNI PW -2- Wskaźniki do funkcji (1) W języku C funkcje nie są zmiennymi, ale

Bardziej szczegółowo

Podstawy programowania w C++

Podstawy programowania w C++ Podstawy programowania w C++ Strumienie wejścia cin>> i wyjścia cout

Bardziej szczegółowo

C++ - szablony. C++ - szablony. C++ - szablony. C++ - szablony. C++ - szablony. C++ - szablony

C++ - szablony. C++ - szablony. C++ - szablony. C++ - szablony. C++ - szablony. C++ - szablony Słowo kluczowe class w linii: template nie oznacza, że T1 i T2 mogą być tylko klasami (jak widać na przykładzie); mogą to być dowolne typy (wbudowane lub definiowane przez użytkownika)

Bardziej szczegółowo

BIBLIOTEKA STANDARDOWA C++

BIBLIOTEKA STANDARDOWA C++ Programowanie Obiektowe (język C++) Wykład 11. BIBLIOTEKA STANDARDOWA C++ Tomasz Marks - Wydział MiNI PW -1- Tomasz Marks - Wydział MiNI PW -2- Biblioteka standardowa C++ - Wprowadzenie Główne elementy

Bardziej szczegółowo

Wykład 1. Program przedmiotu. Programowanie (język C++) Literatura. Program przedmiotu c.d.:

Wykład 1. Program przedmiotu. Programowanie (język C++) Literatura. Program przedmiotu c.d.: Program przedmiotu Programowanie (język C++) Wykład 1. Język C a C++. Definiowanie prostych klas. Typy referencyjne. Domyślne wartości argumentów. PrzeciąŜanie funkcji. Konstruktory, destruktory. Definiowanie

Bardziej szczegółowo

Programowanie Procedurale. Pliki w języku C++

Programowanie Procedurale. Pliki w języku C++ Programowanie Procedurale. Pliki w języku C++ Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 10 Bożena Woźna-Szcześniak (AJD) Programowanie Procedurale. Pliki w języku C++

Bardziej szczegółowo

ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2015

ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2015 POLITECHNIKA WARSZAWSKA Instytut Automatyki i Robotyki ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2015 Język programowania: Środowisko programistyczne: C/C++ Qt Wykład 4 : Napisy. Tablice dwuwymiarowe. Formaty

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe 10.04.2017 W slajdach są materiały zapożyczone z https://www.ii.uni.wroc.pl/~prz/2012lato/cpp/slajdy/cpp5.ppt Przykład wykorzystania obiektu Obiekt X jest instancją klasy Y Obiekt

Bardziej szczegółowo

Zajęcia nr 5 Algorytmy i wskaźniki. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

Zajęcia nr 5 Algorytmy i wskaźniki. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej Zajęcia nr 5 Algorytmy i wskaźniki dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej Plan Zapis i odczyt z plików tekstowych O tablicach ciąg dalszy Referencje

Bardziej szczegółowo

Język C++ zajęcia nr 1

Język C++ zajęcia nr 1 I. Programowanie obiektowe Język C++ zajęcia nr 1 Zasadniczą cechą programowania obiektowego jest łączne rozpatrywanie zagadnień dotyczących algorytmów i struktur danych. Wyrazem tego jest zmiana w sposobie

Bardziej szczegółowo

Wstęp do programowania obiektowego. Przekazywanie parametrów do funkcji w C++ Metody i funkcje operatorowe Strumienie: standardowe, plikowe, napisowe

Wstęp do programowania obiektowego. Przekazywanie parametrów do funkcji w C++ Metody i funkcje operatorowe Strumienie: standardowe, plikowe, napisowe Wstęp do programowania obiektowego Przekazywanie parametrów do funkcji w C++ Metody i funkcje operatorowe Strumienie: standardowe, plikowe, napisowe 1 PRZEKAZYWANIE PARAMETRÓW DO FUNKCJI W C++ 2 W C++

Bardziej szczegółowo

PROE wykład 3 klasa string, przeciążanie funkcji, operatory. dr inż. Jacek Naruniec

PROE wykład 3 klasa string, przeciążanie funkcji, operatory. dr inż. Jacek Naruniec PROE wykład 3 klasa string, przeciążanie funkcji, operatory dr inż. Jacek Naruniec Przypomnienie z ostatnich wykładów Konstruktory/destruktory i kolejność ich wywołania w złożonej klasie. Referencja Obiekty

Bardziej szczegółowo

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk. Wydział Inżynierii Metali i Informatyki Przemysłowej

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk. Wydział Inżynierii Metali i Informatyki Przemysłowej Podstawy informatyki Informatyka stosowana - studia niestacjonarne Grzegorz Smyk Wydział Inżynierii Metali i Informatyki Przemysłowej Akademia Górniczo Hutnicza im. Stanisława Staszica w Krakowie, rok

Bardziej szczegółowo

Wykład 1. Program przedmiotu. Programowanie Obiektowe (język C++) Literatura. Program przedmiotu c.d.:

Wykład 1. Program przedmiotu. Programowanie Obiektowe (język C++) Literatura. Program przedmiotu c.d.: Program przedmiotu Programowanie Obiektowe (język C++) Wykład 1. Definiowanie prostych klas. Przykłady. Przypomnienie: typy referencyjne, domyślne wartości argumentów, przeciąŝanie funkcji. Konstruktory,

Bardziej szczegółowo

Dziedziczenie & W slajdach są materiały zapożyczone z https://www.ii.uni.wroc.pl/~prz/2012lato/cpp/slajdy/cpp5.

Dziedziczenie & W slajdach są materiały zapożyczone z https://www.ii.uni.wroc.pl/~prz/2012lato/cpp/slajdy/cpp5. Dziedziczenie 27.04.2016 & 04.05.2016 W slajdach są materiały zapożyczone z https://www.ii.uni.wroc.pl/~prz/2012lato/cpp/slajdy/cpp5.ppt class A{ private: int x, y; public: void setvaluex(); void setvaluey();

Bardziej szczegółowo

Programowanie i struktury danych

Programowanie i struktury danych Programowanie i struktury danych 1 / 30 STL Standard Template Library, STL (ang. = Standardowa Biblioteka Wzorców) biblioteka C++ zawierająca szablony (wzorce), które umożliwiają wielokrotne użycie. Główne

Bardziej szczegółowo

referencje Wykład 2. Programowanie (język C++) Referencje (1) int Num = 50; zdefiniowano zmienną Num (typu int) nadając jej wartość początkową 50.

referencje Wykład 2. Programowanie (język C++) Referencje (1) int Num = 50; zdefiniowano zmienną Num (typu int) nadając jej wartość początkową 50. Programowanie (język C++) referencje Wykład 2. Referencje (1) Referencja (odnośnik) jest zmienną identyfikującą inną zmienną. Wykonanie operacji na referencji ma taki sam skutek, jak wykonanie tejŝe operacji

Bardziej szczegółowo

Spis treści OPERACJE WEJŚCIA-WYJŚCIA W JĘZYKU C++. STEROWANIE FORMATEM, MANIPULATORY. Informatyka 2

Spis treści OPERACJE WEJŚCIA-WYJŚCIA W JĘZYKU C++. STEROWANIE FORMATEM, MANIPULATORY. Informatyka 2 Politechnika Białostocka Wydział Elektryczny Katedra Elektrotechniki Teoretycznej i Metrologii Instrukcja do pracowni specjalistycznej z przedmiotu Informatyka 2 Kod przedmiotu: ES1C300 016 (studia stacjonarne)

Bardziej szczegółowo

I znowu można jak w C, za pomocą starych struktur i metod:

I znowu można jak w C, za pomocą starych struktur i metod: Obsługa plików I znowu można jak w C, za pomocą starych struktur i metod: Odczyt (ifstream) Zapis (ofstream) Czego tu wszędzie brakuje? plik.close(); Wynik Plik testowy.txt app jak append http://www.cplusplus.com/reference/iostream/ifstream/

Bardziej szczegółowo

dr inż. Paweł Myszkowski Wykład nr 8 (22.04.2015)

dr inż. Paweł Myszkowski Wykład nr 8 (22.04.2015) dr inż. Paweł Myszkowski Politechnika Białostocka Wydział Elektryczny Elektronika i Telekomunikacja, semestr II, studia stacjonarne I stopnia Rok akademicki 2014/2015 Wykład nr 8 (22.04.2015) Plan prezentacji:

Bardziej szczegółowo

Podstawy programowania skrót z wykładów:

Podstawy programowania skrót z wykładów: Podstawy programowania skrót z wykładów: // komentarz jednowierszowy. /* */ komentarz wielowierszowy. # include dyrektywa preprocesora, załączająca biblioteki (pliki nagłówkowe). using namespace

Bardziej szczegółowo

Języki programowania obiektowego Nieobiektowe elementy języka C++

Języki programowania obiektowego Nieobiektowe elementy języka C++ Języki programowania obiektowego Nieobiektowe elementy języka C++ Roman Simiński roman.siminski@us.edu.pl www.programowanie.siminskionline.pl Przetwarzanie tablic znaków Łańcuchy znakowe jako tablice znaków

Bardziej szczegółowo

Funkcje zawarte w bibliotece < io.h >

Funkcje zawarte w bibliotece < io.h > PLIKOWE OPERACJE WEJŚCIA - WYJŚCIA Język C/C++ nie ma wbudowanych żadnych instrukcji umożliwiających wykonywanie operacji wejścia-wyjścia! Służą do tego funkcje biblioteczne. Funkcje zawarte w bibliotece

Bardziej szczegółowo

Języki programowania. Przetwarzanie plików amorficznych Konwencja języka C. Część siódma. Autorzy Tomasz Xięski Roman Simiński

Języki programowania. Przetwarzanie plików amorficznych Konwencja języka C. Część siódma. Autorzy Tomasz Xięski Roman Simiński Języki programowania Część siódma Przetwarzanie plików amorficznych Konwencja języka C Autorzy Tomasz Xięski Roman Simiński Niniejsze opracowanie zawiera skrót treści wykładu, lektura tych materiałów nie

Bardziej szczegółowo

Funkcje zawarte w bibliotece < io.h >

Funkcje zawarte w bibliotece < io.h > PLIKOWE OPERACJE WEJŚCIA - WYJŚCIA Język C/C++ nie ma wbudowanych żadnych instrukcji umożliwiających wykonywanie operacji wejścia-wyjścia! Służą do tego funkcje biblioteczne. Funkcje zawarte w bibliotece

Bardziej szczegółowo

Część 4 życie programu

Część 4 życie programu 1. Struktura programu c++ Ogólna struktura programu w C++ składa się z kilku części: część 1 część 2 część 3 część 4 #include int main(int argc, char *argv[]) /* instrukcje funkcji main */ Część

Bardziej szczegółowo

Wprowadzenie do programowania i programowanie obiektowe

Wprowadzenie do programowania i programowanie obiektowe Wprowadzenie do programowania i programowanie obiektowe Wirtotechnologia Zajęcia nr 10 autor: Grzegorz Smyk Wydział Odlewnictwa Wydział Inżynierii Metali i Informatyki Przemysłowej Akademia Górniczo Hutnicza

Bardziej szczegółowo

Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane

Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane Stałe Oprócz zmiennych w programie mamy też stałe, które jak sama nazwa mówi, zachowują swoją wartość przez cały czas działania programu. Można

Bardziej szczegółowo

Programowanie w C++ Wykład 8. Katarzyna Grzelak. 15 kwietnia K.Grzelak (Wykład 8) Programowanie w C++ 1 / 33

Programowanie w C++ Wykład 8. Katarzyna Grzelak. 15 kwietnia K.Grzelak (Wykład 8) Programowanie w C++ 1 / 33 Programowanie w C++ Wykład 8 Katarzyna Grzelak 15 kwietnia 2019 K.Grzelak (Wykład 8) Programowanie w C++ 1 / 33 Klasy - powtórzenie Klasy typy definiowane przez użytkownika Klasy zawieraja dane składowe

Bardziej szczegółowo

Programowanie w C++ Wykład 9. Katarzyna Grzelak. 14 maja K.Grzelak (Wykład 9) Programowanie w C++ 1 / 30

Programowanie w C++ Wykład 9. Katarzyna Grzelak. 14 maja K.Grzelak (Wykład 9) Programowanie w C++ 1 / 30 Programowanie w C++ Wykład 9 Katarzyna Grzelak 14 maja 2018 K.Grzelak (Wykład 9) Programowanie w C++ 1 / 30 Klasy - powtórzenie Klasy typy definiowane przez użytkownika Klasy zawieraja dane składowe plus

Bardziej szczegółowo

Wykład PASCAL - Pliki tekstowe

Wykład PASCAL - Pliki tekstowe Podstawy programowania Wykład PASCAL - Pliki tekstowe 1 dr Artur Bartoszewski - Podstawy prograowania, sem. 1- WYKŁAD Rodzaje plików Dane przechowywane w pliku mogą mieć reprezentację binarną (taką samą,

Bardziej szczegółowo

C++ - szablony. C++ - szablony. C++ - szablony. C++ - szablony SZABLONY SZABLONY FUNKCJI

C++ - szablony. C++ - szablony. C++ - szablony. C++ - szablony SZABLONY SZABLONY FUNKCJI SZABLONY Szablony, nazywane też wzorcami, pozwalają na abstrakcyjne definiowanie funkcji i klas w terminach parametrów, którymi są typy danych Na podstawie szablonu kompilator sam może wygenerować wiele

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania wykład 2 Agata Półrola Wydział Matematyki i Informatyki UŁ sem. zimowy 2016/2017 Liczby Korzystanie z liczn C++ zna różne rodzaje liczb (różne typy liczbowe) i potrafi wykonywać na nich różne operacje

Bardziej szczegółowo

Wyjątki (exceptions)

Wyjątki (exceptions) Instrukcja laboratoryjna nr 6 Programowanie w języku C 2 (C++ poziom zaawansowany) Wyjątki (exceptions) dr inż. Jacek Wilk-Jakubowski mgr inż. Maciej Lasota dr inż. Tomasz Kaczmarek Wstęp Wyjątki (ang.

Bardziej szczegółowo

Referencje. Zasady zaliczeń. Zasady zaliczeń. Zasady zaliczeń. Zasady zaliczeń. Zaawansowane Programowanie Obiektowe. Informacje organizacyjne:

Referencje. Zasady zaliczeń. Zasady zaliczeń. Zasady zaliczeń. Zasady zaliczeń. Zaawansowane Programowanie Obiektowe. Informacje organizacyjne: Referencje Informacje organizacyjne: Wykład: środy, 15:00 16:30 Strona główna www z komunikatami dla ZPO: http://t roja.u ksw.ed u.pl/c ategor y/zpo2 018/ Zaawansowane Programowanie Obiektowe E-mail: k.trojanowski@uksw.edu.pl

Bardziej szczegółowo

Języki programowania. Przetwarzanie tablic znaków. Część druga. Autorzy Tomasz Xięski Roman Simiński

Języki programowania. Przetwarzanie tablic znaków. Część druga. Autorzy Tomasz Xięski Roman Simiński Języki programowania Część druga Przetwarzanie tablic znaków Autorzy Tomasz Xięski Roman Simiński Niniejsze opracowanie zawiera skrót treści wykładu, lektura tych materiałów nie zastąpi uważnego w nim

Bardziej szczegółowo

Operatory na rzecz typu TString

Operatory na rzecz typu TString Operatory na rzecz typu TString Dopiszmy w definicji klasy operator[], dzięki któremu potraktujemy obiekt jak tablicę class TString { public: char& operator[]( size_t n ); const char& operator[]( size_t

Bardziej szczegółowo

dr inż. Jarosław Forenc

dr inż. Jarosław Forenc Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia niestacjonarne I stopnia Rok akademicki 2011/2012 Pracownia nr 9 (20.01.2012) dr inż. Jarosław Forenc Rok

Bardziej szczegółowo

Podstawy programowania w języku C++

Podstawy programowania w języku C++ Podstawy programowania w języku C++ Część siódma Przetwarzanie tablic znaków Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu,

Bardziej szczegółowo

Język C++ Różnice między C a C++

Język C++ Różnice między C a C++ Język C++ Różnice między C a C++ Plan wykładu C a C++ Różnice ogólne Typy Deklaracje zmiennych C++ jako rozszerzenie C Domyślne argumenty funkcji Przeciążanie funkcji Referencje Dynamiczny przydział pamięci

Bardziej szczegółowo

Konwersje. Programowanie obiektowe (2005/2006) Wykład 4

Konwersje. Programowanie obiektowe (2005/2006) Wykład 4 Konwersje Konwersja typu ma miejsce wtedy, kiedy wspólnie korzysta się ze zmiennych lub obiektów różnych typów, na przykład w instrukcjach przypisania, w wyrażeniach, podczas przekazywania argumentów aktualnych

Bardziej szczegółowo

I - Microsoft Visual Studio C++

I - Microsoft Visual Studio C++ I - Microsoft Visual Studio C++ 1. Nowy projekt z Menu wybieramy File -> New -> Projekt -> Win32 Console Application w okienku Name: podajemy nazwę projektu w polu Location: wybieramy miejsce zapisu i

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania wykład 2 Agata Półrola Wydział Matematyki i Informatyki UŁ sem. zimowy 2017/2018 Inicjalizacja zmiennych Zmiennej możemy nadać wartość już w momencie jej definiowania (inicjalizacja zmiennej). Przypisywana

Bardziej szczegółowo

Wykład nr 4. Temat: Dynamiczny przydział pamięci, zastosowania wskaźników, praca z plikami.

Wykład nr 4. Temat: Dynamiczny przydział pamięci, zastosowania wskaźników, praca z plikami. Wykład nr 4 Temat: Dynamiczny przydział pamięci, zastosowania wskaźników, praca z plikami. Cytaty: Zamiast dzielić ludzi na kobiety i mężczyzn, powinniśmy dzielić ich na statycznych i dynamicznych. Charles

Bardziej szczegółowo

Programowanie komputerowe. Zajęcia 1

Programowanie komputerowe. Zajęcia 1 Programowanie komputerowe Zajęcia 1 Code::Blocks - tworzenie projektu Create New Project Console Application -> C++ Wybierz nazwę projektu Stworzy się nowy projekt z wpisaną funkcją main Wpisz swój program

Bardziej szczegółowo

Podstawy programowania

Podstawy programowania Podstawy programowania Część siódma Przetwarzanie tablic znaków Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.programowanie.siminskionline.pl Niniejsze opracowanie zawiera skrót treści wykładu,

Bardziej szczegółowo

Wykład 9 Pliki cz.3 (getline(string)) Typ wyliczeniowy enum

Wykład 9 Pliki cz.3 (getline(string)) Typ wyliczeniowy enum Wykład 9 Pliki cz.3 (getline(string)) Typ wyliczeniowy enum Dorota Pylak Przykład 4 funkcja get(char &) 2 Napisz funkcję, która dla pliku o nazwie podanej przez pierwszy parametr funkcji oblicza prawdopodobieństwo

Bardziej szczegółowo

Pliki. Operacje na plikach w Pascalu

Pliki. Operacje na plikach w Pascalu Pliki. Operacje na plikach w Pascalu ścieżka zapisu, pliki elementowe, tekstowe, operacja plikowa, etapy, assign, zmienna plikowa, skojarzenie, tryby otwarcia, reset, rewrite, append, read, write, buforowanie

Bardziej szczegółowo

Programowanie w językach wysokiego poziomu

Programowanie w językach wysokiego poziomu Programowanie w językach wysokiego poziomu zajęcia nr 2 Elektronika i Telekomunikacja, semestr III rok akademicki 2014/2015 Plan dzisiejszych zajęć Pliki tekstowe 1. Operacje na plikach - wprowadzenie

Bardziej szczegółowo

FUNKCJE WZORCOWE. Wykład 10. Programowanie Obiektowe (język C++) Funkcje wzorcowe wprowadzenie (2) Funkcje wzorcowe wprowadzenie (1)

FUNKCJE WZORCOWE. Wykład 10. Programowanie Obiektowe (język C++) Funkcje wzorcowe wprowadzenie (2) Funkcje wzorcowe wprowadzenie (1) Programowanie Obiektowe (język C++) Wykład 10. FUNKCJE WZORCOWE Funkcje wzorcowe wprowadzenie (1) Funkcje wzorcowe wprowadzenie (2) int max ( int a, int b ) return a>b? a : b; Aby mieć analogiczną funkcję

Bardziej szczegółowo

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki int getmax (int a, int b) { return (a > b? a : b); float getmax (float a, float b) { return (a > b? a : b); long getmax (long a, long b)

Bardziej szczegółowo

Programowanie w C++ Wykład 12. Katarzyna Grzelak. 20 maja K.Grzelak (Wykład 12) Programowanie w C++ 1 / 32

Programowanie w C++ Wykład 12. Katarzyna Grzelak. 20 maja K.Grzelak (Wykład 12) Programowanie w C++ 1 / 32 Programowanie w C++ Wykład 12 Katarzyna Grzelak 20 maja 2019 K.Grzelak (Wykład 12) Programowanie w C++ 1 / 32 Klasy - powtórzenie Klasy typy definiowane przez użytkownika Klasy zawieraja dane składowe

Bardziej szczegółowo

Programowanie C++ Wykład 2 - podstawy języka C++ dr inż. Jakub Możaryn. Warszawa, Instytut Automatyki i Robotyki

Programowanie C++ Wykład 2 - podstawy języka C++ dr inż. Jakub Możaryn. Warszawa, Instytut Automatyki i Robotyki Wykład 2 - podstawy języka C++ Instytut Automatyki i Robotyki Warszawa, 2014 Wstęp Plan wykładu Struktura programu. Zmienne i ich nazwy, podstawowe typy: całkowite, rzeczywiste, znakowe i napisowe. Instrukcje:

Bardziej szczegółowo

Wstęp do Programowania 2

Wstęp do Programowania 2 Wstęp do Programowania 2 dr Bożena Woźna-Szcześniak bwozna@gmail.com Akademia im. Jana Długosza Wykład 2 Stałe całkowite inne niż dziesiętne Stałe ósemkowe Stałe szesnastkowe Aby wskazać czy dane maj a

Bardziej szczegółowo