Podstawy informatyki Operacje we/wy

Slides:



Advertisements
Podobne prezentacje
Wstęp do strumieni danych
Advertisements

C++ wykład 2 ( ) Klasy i obiekty.
C++ wykład 4 ( ) Przeciążanie operatorów.
Programowanie wizualne PW – LAB6 Wojciech Pieprzyca.
Programowanie obiektowe PO PO - LAB 6 Wojciech Pieprzyca.
Tablice.
Programowanie w C Wykład 3
Język ANSI C Operacje we/wy

Podstawy informatyki 2013/2014
Podstawy programowania II
Podstawy programowania II Wykład 2: Biblioteka stdio.h Zachodniopomorska Szkoła Biznesu.
Podstawy informatyki 2013/2014
Podstawy informatyki 2013/2014 Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Podstawy informatyki 2013/2014
Podstawy informatyki 2013/2014
Podstawy informatyki 2013/2014 Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Podstawy informatyki 2012/2013
Pliki tekstowe. Operacje na plikach. mgr inż. Agata Pacek.
Pliki Pojęcie i rodzaje plików Definicja typu plikowego Operacje wykonywane na plikach elementowych.
Systemy wejścia i wyjścia Michał Wrona. Co to jest system wejścia i wyjścia? Pobierania informacji ze źródeł danych, zdolnych przesyłać sekwencje bajtów,
Programowanie obiektowe Wykład 3 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/21 Dariusz Wardowski.
Podstawy informatyki 2013/2014
Podstawy informatyki 2013/2014 Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Programowanie obiektowe 2013/2014 Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Programowanie obiektowe 2013/2014
Programowanie obiektowe 2013/2014
1 Strumienie Hierarchie klas strumieniowych, strumienie bajtowe - klasy InputStream i OutputStream i ich metody, klasa File, strumienie plikowe, strumienie.
Kurs języka C++ – wykład 4 ( )
Pliki tekstowe – odczyt i zapis Zajęcia 11. Zapis do pliku tekstowego Prosty program pokazujący sposób zapisu do pliku tekstowego: // writing on a text.
Przestrzenie nazw, strumienie. Przestrzenie nazw Przestrzeń nazw – co to takiego? Przestrzeń nazw – co to takiego?namespace Kiedy potrzebujemy przestrzeni.
Wykład 2 Klasa Zesp i jej hermetyzacja 1.Przykład definicji klasy Zesp 2.Zmiana definicji klasy 3.Zmienne i funkcje statyczne PO2-1 / 28.
Wykład 8 Polimorfizm 1.Funkcje polimorficzne 2.Czyste funkcje wirtualne i klasy abstrakcyjne PO8-1 / 38.
Pakiety numeryczne Optymalizacja
Podstawy informatyki Tablice Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Pakiety numeryczne Graphical User Interface Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania.
Pakiety numeryczne Tablice: tworzenie, indeksowanie, wymiary Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania.
Pakiety numeryczne Interpolacja i aproksymacja
Podstawy informatyki Zmienne, stałe Instrukcje sterujące Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu.
Pakiety numeryczne Wielomiany Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania.
Wstęp do programowania Wykład 8 Łańcuchy, struktury i pliki Metoda dziel i zwyciężaj Metoda zachłanna.
Wstęp do programowania Wykład 2 Dane, instrukcje, program.
Podstawy informatyki Preprocesor Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Podstawy informatyki Funkcje Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego Matuszyka Podstawy.
Podstawy informatyki Operacje we/wy Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty.
Pakiety numeryczne Skrypty, funkcje Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania.
Podstawy informatyki Struktury Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Podstawy informatyki Szablony funkcji Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty.
Podstawy informatyki Operatory rzutowania Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały.
Podstawy informatyki Mechanizm obsługi sytuacji wyjątkowych Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu.
Podstawy informatyki Operacje we/wy Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty.
Pakiety numeryczne Operatory, instrukcje sterujące, operacje bitowe Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania.
K URS JĘZYKA C++ – WYKŁAD 1 ( ) Łagodne wprowadzenie do języka C++
Strumienie w języku Java Bartosz Walter InMoST Wielkopolska sieć współpracy w zakresie innowacyjnych metod wytwarzania oprogramowania Termin realizacji:
C++ mgr inż. Tomasz Turba Politechnika Opolska 2016.
Piotr Kawałek , Mateusz Śliwowski
Strumienie, Wczytywanie, Zapisywanie, Operacje na plikach
KURS JĘZYKA C++ – WYKŁAD 11 ( )
Programowanie Obiektowe – Wykład 2
Obliczenia w Matlabie Tablice
Obliczenia inżynierskie w Matlabie
Operacje na plikach w C++
Operacje na plikach w C++
Język C++ Typy Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego.
Język C++ Operatory Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła.
Język C++ Tablice Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego.
Język C++ Operacje we/wy
Obliczenia w Matlabie Analiza statystyczna
Zapis prezentacji:

Podstawy informatyki Operacje we/wy Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego Matuszyka

Strumienie Wyprowadzanie i wprowadzanie informacji ze standardowych urządzeń we/wy (klawiatura/ekran) Biblioteka iostream Wyprowadzanie i wprowadzanie informacji z plików Biblioteka fstream Wyprowadzanie i wprowadzanie informacji z obiektów klasy string Biblioteka sstream

Operacje we/wy Przepływ informacji może odbywać się na dwa sposoby: Operacje we/wy bitowe Polega na tym, że określone bajty przesyłane są od źródła do ujścia, a strumień nie interesuje się znaczeniem tych bajtów. Stosujemy, gdy program ma komunikować się nie z człowiekiem, ale z innym programem albo urządzeniem.

Operacje we/wy Operacje we/wy tekstowe Polega na tym, że określone bajty przesyłane są od źródła do ujścia oraz ma jeszcze je interpretować (formatować). Stosujemy, gdy program ma komunikować się z człowiekiem. Wszystkie operacje we/wy wykonywane do tej pory były typu tekstowego.

Posługiwanie się strumieniem Definiujemy w pamięci obiekt sterowania strumieniem. Wskazujemy jakim urządzeniem ma się zajmować. Przeprowadzamy wczytania (wypisania) informacji. Likwidujemy strumień.

Strumienie zdefiniowane standardowo cout – standardowe urządzenie wyjścia cin – standardowe urządzenie wejścia cerr – standardowe urządzenie wyjścia, na które wypisujemy komunikaty o błędach (strumień niebuforowany) clog – standardowe urządzenie wyjścia, na które wypisujemy komunikaty o błędach (strumień buforowany) wcout wcin wcerr wclog

Operatory przesunięcia bitowego Operatory << oraz >> zostały przeładowane w ten sposób, że odpowiadają za wstawianie i wyjmowanie ze strumienia. int a; cin>>a; cout<<a; bool a = true, b = false; cout << a && b; cout << (a && b); cout << a && b; jest równoznaczne ((cout << a) && b); cout << (a && b); jest równoznaczne (cout << (a && b)); 1

Nieformatowane operacje we/wy Funkcje wyjmujące ze strumienia: istream &get(char &); int get(); istream &get(char *, streamsize, char=‘\n’); istream & getline(char *, streamsize, char=‘\n’); istream & read(char *, streamsize); streamsize readsome (char *, streamsize); istream & ignore(int, int);

Nieformatowane operacje we/wy Dodatkowe funkcje: streamsize gcount(); int peek(); istream &putback(char); istream &unget();

Nieformatowane operacje we/wy Funkcje wkładające do strumienia: ostream &put(char); ostream &write(const char *, streamsize);

istream &get(char &znak) Funkcja wyjmuje ze strumienia jeden bajt i umieszcza go w zmiennej znak. char z; cin.get(z); cout << static_cast<int>(z) << endl; //---------------------------------------------- cin.get(a).get(b).get(c); A 65 10

int get() Funkcja wyjmuje ze strumienia jeden bajt i umieszcza go w zmiennej a. int a; a=cin.get(); cout << static_cast<char>(a) << endl; cout << a << endl; A A 65

istream &get(char *, streamsize, char=‘\n’) Funkcja wyjmuje ze strumienia nie jeden ale wiele znaków. Jej parametry oznaczają: char * - adres tablicy streamsize – maksymalna liczba odczytanych znaków char – ogranicznik char t[10],z; cin.get(t,10,'b'); cout << t << endl; cin.get(z); cout << z << endl; Funkcja pozostawia ogranicznik w strumieniu. aaabccc aaa b

istream &get(char *, streamsize, char=‘\n’) abcdef char t[10],z; cin.get(t,3); cout << t << endl; cin.get(z); cout << z << endl; Funkcja automatycznie dodaje znak null. ab c

istream &getline(char *, streamsize, char=‘\n’) Funkcja wyjmuje ze strumienia wiele znaków. Parametry jak poprzednio. char t[10]={"........."},z; cin.getline(t,10,'3'); cout << t << endl; for (int i=0; i<10; i++) cout<<t[i]; cout<<endl; cin.get(z); cout << z << endl; Funkcja wyjmuje i wyrzuca ogranicznik. 12345 12 12 …… 4

istream &getline(char *, streamsize, char=‘\n’) char t[5]={"...."},z; cin.getline(t,5); if (cin.fail()) { cout<<"BLAD"<<endl; cin.clear(); } cout << t << endl; cout<<endl; cin.get(z); cout << z << endl; W przypadku przekroczenia maksymalnej liczby znaków ustawiana jest flaga fail. 123456 BLAD 1234 5

istream &getline(istream, string, char=‘\n’) string a; getline(cin,a); cout<<a<<endl; Nie musimy martwić się o liczbę znaków.

istream & read(char *, streamsize) Funkcja podobna do get, ale w przypadku read na koniec C-stringu nie zostanie dodany znak NULL! Do wykorzystywania przy operacjach z plikami (operacje binarne). streamsize & readsome(char *, streamsize) Funkcja zwraca ile bajtów zostało wczytanych.

istream &ignore(int=1, int=EOF) Funkcja wyjmuje ze strumienia określoną liczbę bajtów ale nigdzie ich nie zapisuje. char t1[10],t2[10]; cin.get(t1,3).ignore(3).get(t2,3); cout << t1 << endl; cout << t2 << endl; 0123456789 01 56

istream &ignore(int, int) char t1[10],t2[10]; cin.get(t1,3).ignore(3,static_cast<int>('3')).get(t2,3); cout << t1 << endl; cout << t2 << endl; 0123456789 01 45

abc.def abc 3 streamsize gcount() Zwraca informację ile znaków zostało wyjętych ze strumienia podczas ostatniego nieformatowanego wczytywania. char t[10]; cin.get(t,10,'.'); cout<<t<<endl; cout<<cin.gcount()<<endl; abc.def abc 3

abc.def abc 4 streamsize gcount() char t[10]; cin.getline(t,10,'.'); cout<<t<<endl; cout<<cin.gcount()<<endl; abc.def abc 4

int peek() Jest to funkcja, która pozwala nam zajrzeć do strumienia. char t[10]; char a=static_cast<char>(cin.peek()); cin>>t; cout << a <<endl; cout << t << endl; abc a abc

istream &putback(char) Zwraca znak do strumienia. char a,b; cin>>a; cout<<a<<endl; cin.putback(a); cin>>b; cout<<b<<endl; a a a

istream &unget() Zwraca ostatnio odczytany znak do strumienia. char a,b; cin>>a; cout<<a<<endl; cin.unget(); cin>>b; cout<<b<<endl; a a a

A-G-H- - A-G-H- ostream &put(char) Służy do wstawienia do strumienia jednego znaku. char a[]="AGH"; for (int i=0;i<sizeof(a); i++) cout.put(a[i]).put('-'); string a="AGH"; for (int i=0;i<a.size(); i++) A-G-H- - A-G-H-

ostream &write(const char *, streamsize) Funkcja wstawia do strumienia określoną liczbę bajtów. char a[]="AGH WIMiIP"; cout.write(a+4,6); cout << endl; A czy można tak: cout.write(a+4,6)<<endl; ???? WIMiIP WIMiIP

ostream &write(const char *, streamsize) double pi=3.14; cout.write(reinterpret_cast<char*>(&pi),sizeof(pi)); cout << endl; int i=0x41414141; cout.write(reinterpret_cast<char*>(&i),sizeof(i));

Strumienie płynące do i z plików Biblioteka: <fstream> Klasy: ofstream ifstream fstream ifstream plik; tworzenie strumienia do odczytu ofstream plik; tworzenie strumienia do zapisu fstream plik; tworzenie strumienia do odczytu i zapisu

void open(char *, ios_base=…) Otwarcia można dokonać za pomocą funkcji open lub konstruktora. ifstream plik; plik.open("dane.txt”); ifstream plik("dane.txt”);

void open(char *, ios_base=…) Drugi argument określa tryb pracy: in otwórz do czytania out otwórz do pisania ate otwórz i ustaw się na końcu app otwórz do dopisywania na końcu trunc otwórz, a jeśli plik istnieje skasuj jego zawartość Domniemania: ifstream in ofstream out fstream brak domniemania

Flagi stanu błędu strumienia Istnieją cztery flagi: goodbit – ustawiana gdy pozostałe flagi nie są ustawione, czyli jest OK eofbit – ustawiana, gdy podczas czytania napotkamy koniec pliku failbit – ustawiana, gdy jakaś operacja we/wy się nie powiodła badbit – ustawiana, gdy wystąpi poważny błąd dotyczący strumienia

Funkcje do pracy na flagach bool good() bool eof() bool fail() bool bad()

bool good() ifstream plik; plik.open("dane.txt"); if (plik.good()) cout << "Plik zostal otwarty\n"; else cout << "Plik nie zostal otwarty\n"; plik.close();

bool eof() char litera; ifstream plik; plik.open("napis.txt"); for(;;) { plik.get(litera); if(plik.eof()) break; cout << litera; } cout << endl; plik.close();

bool fail() int liczba; cin >> liczba; if (cin.fail()) cout<<"Nie liczba"<<endl;

const char* c_str() Funkcja składowa klasy string. string nazwa; getline(cin,nazwa); ifstream plik(nazwa.c_str());

Ustawianie i kasowani flag błędu io_state rdstate(); void clear(io_state = goodbit); void setstate(io_state); enum io_state { goodbit=0; eofbit=1; failbit=2; badbit=4; };

Wybór miejsca czytania i pisania pos_type tellg(); pos_type tellp(); istream &seekg(off_type, seek_dir=ios::beg); ostream &seekp(off_type, seek_dir=ios::beg); enum seek_dir { beg; cur; end; };

Zastosowanie seekg i tellg ifstream plik; plik.open("dane.txt"); plik.seekg(0,ios::end); cout << plik.tellg() << endl; plik.close(); 11

Zastosowanie seekp ofstream plik; plik.open("napis.txt"); plik.write("Ala ma kota", 11); plik.seekp(0); plik << "Ela"; plik.close();

Strumienie płynące do i z obiektów klasy string Biblioteka: <sstream> Klasy: ostringstream istringstream stringstream istringstream s; tworzenie strumienia do odczytu ostringstream s; tworzenie strumienia do zapisu stringstream s; tworzenie strumienia do odczytu i zapisu

Strumień czytający z obiektu klasy string Konstruktory: istringstream(const string & tekst); istringstream(); Funkcje składowe: void str(const string & tekst) const; string str() const;

Strumień czytający z obiektu klasy string string t="12 ala 13.5 X"; istringstream s; s.str(t); cout << s.str() << endl; int a; string b; double c; char d; s>>a>>b>>c>>d; cout<<a<<endl<<b<<endl<<c<<endl<<d<<endl; 12 ala 13.5 X 12 ala 13.5 X

Strumień piszący do obiektu klasy string Konstruktory: ostringstream(); ostringstream(const string & tekst); Funkcje składowe: void str(const string & tekst) const; string str() const;

Strumień piszący do obiektu klasy string string t; int a=12; string b="ala"; double c=13.5; char d='X'; cout<<a<<endl<<b<<endl<<c<<endl<<d<<endl; ostringstream s; s<<a<<" "<<b<<" "<<c<<" "<<d; t=s.str(); cout<<t<<endl; 12 ala 13.5 X 12 ala 13.5 X

Prezentacja udostępniona na licencji Creative Commons: Uznanie autorstwa, Na tych samych warunkach 3.0. Pewne prawa zastrzeżone na rzecz autorów. Zezwala się na dowolne wykorzystywanie treści pod warunkiem wskazania autorów jako właścicieli praw do prezentacji oraz zachowania niniejszej informacji licencyjnej tak długo, jak tylko na utwory zależne będzie udzielana taka sama licencja. Tekst licencji dostępny jest na stronie: http://creativecommons.org/licenses/by-sa/3.0/deed.pl