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

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

Wartości domyślne, przeciażenia funkcji

Wartości domyślne, przeciażenia funkcji

Wprowadzenie do szablonów szablony funkcji

Pola i metody statyczne

Wprowadzenie do szablonów szablony funkcji

Klasa, metody, rozwijanie w linii

Wyliczanie wyrażenia obiekty tymczasowe

Klasa, metody, rozwijanie w linii

Geneza C++, manipulatory

Szablon klasy std::vector

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

Referencje do zmiennych i obiektów

Konstruktor kopiujacy

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

Przesłanianie nazw, przestrzenie nazw

Rzutowanie i konwersje

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

Programowanie - wykład 4

Szablony funkcji i szablony klas

Szablon klasy std::list

Język C++ zajęcia nr 1

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

tablica: dane_liczbowe

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

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

1. Pierwszy program. Kompilator ignoruje komentarze; zadaniem komentarza jest bowiem wyjaśnienie programu człowiekowi.

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

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

2 Przygotował: mgr inż. Maciej Lasota

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

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 10 Kurs C++

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

Wstęp do Programowania 2

Lista dwukierunkowa - przykład implementacji destruktorów

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 9. Katarzyna Grzelak. 14 maja K.Grzelak (Wykład 9) Programowanie w C++ 1 / 30

Część 4 życie programu

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

#include <stdio.h> int main( ) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); }

Obiekty i metody stałe

OPERACJE WEJŚCIA / WYJŚCIA. wysyła sformatowane dane do standardowego strumienia wyjściowego (stdout)

Globalne / Lokalne. Wykład 15. Podstawy programowania (język C) Zmienne globalne / lokalne (1) Zmienne globalne / lokalne (2)

Wejście wyjście strumieniowe

Prof. Danuta Makowiec Instytut Fizyki Teoretycznej i Astrofizyki pok. 353, tel danuta.makowiec at gmail.com

main( ) main( void ) main( int argc, char argv[ ] ) int MAX ( int liczba_1, liczba_2, liczba_3 ) źle!

Programowanie komputerowe. Zajęcia 1

Podstawy programowania w C++

Język C++ wykład VIII

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

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.

I - Microsoft Visual Studio C++

Podstawy algorytmiki i programowania - wykład 4 C-struktury

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

Laboratorium 1. Programowanie II - Kierunek Informatyka. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej

Wykład :37 PP2_W9

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

Przestrzenie nazw. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Politechnika Wrocławska

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

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

Pojęcie klasy, zwracanie przez referencję, przeciążanie operatorów strumieniowych

Programowanie Obiektowo Zorientowane w języku c++ Przestrzenie nazw

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

Co nie powinno być umieszczane w plikach nagłówkowych:

1 Wskaźniki. 1.1 Główne zastosowania wskaźników

Programowanie w C++ Wykład 1. Katarzyna Grzelak. 26 luty K.Grzelak (Wykład 1) Programowanie w C++ 1 / 28

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

TEMAT : KLASY POLIMORFIZM

Paostwowa Wyższa Szkoła Zawodowa w Płocku Dariusz Wardowski

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 16 kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 27

Biblioteka standardowa - operacje wejścia/wyjścia

Programowanie w C++ Wykład 3. Katarzyna Grzelak. 12 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 35

wykład IV uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C, a C++. wykład IV dr Jarosław Mederski Spis Język C++ - wstęp

C-struktury wykład. Dorota Pylak

Pliki wykład 2. Dorota Pylak

Tablice i struktury. czyli złożone typy danych. Programowanie Proceduralne 1

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

Bibliografia 1. B. Stroustrup. Jezyk C++. Wydawnictwo Naukowo-Techniczne, Warszawa,

Podstawy informatyki. Elektrotechnika I rok. Język C++ Operacje na danych - wskaźniki Instrukcja do ćwiczenia

Programowanie w językach

Organizacja kursu, paradygmaty, ogólnie o C i C++

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

Języki i metodyka programowania. Typy, operatory, wyrażenia. Wejście i wyjście.

Programowanie Obiektowe i C++

Programowanie i struktury danych

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

Bogdan Kreczmer. Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska

Wprowadzenie do programowania i programowanie obiektowe

#include <stdio.h> void main(void) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); }

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Podstawy algorytmiki i programowania - wykład 5 C-struktury cd.

Języki programowania - podstawy

TEMAT : KLASY DZIEDZICZENIE

Wykład 4 Delegat (delegate), właściwości indeksowane, zdarzenie (event) Zofia Kruczkiewicz

Wstęp do programowania. Wykład 1

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Programowanie Obiektowew języku C++ Zadania L4

Projektowanie klas c.d. Projektowanie klas przykład

Wstęp do Programowania 2

Transkrypt:

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. Jest on udostępiony pod warunkiem wykorzystania wyłacznie do własnych prywatnych potrzeb i może on być kopiowany wyłacznie w całości, razem z niniejsza strona tytułowa.

Operacje wyjścia - porównanie C i C++ 1 Język C #include <stdio.h> printf( Hello World!!!\n ); return 0; Język C++ #include <iostream> using namespace std; cout << Hello World!!! << endl; Funkcja main w języku C++ domyślnie zwraca wartość 0. Operacje wyjścia sa realizowane na obiekcie cout z wykorzystaniem przeciażenia operatora lewostronnego przesunięcia bitowego <<.

Operacje wyjścia - porównanie C i C++ 2 Język C Język C++ printf( Napis ); printf( Napis\n ); cout << Napis ; cout << Napis\n ; cout << Napis << endl; char wnap = Napis ; char wnap = Napis ; printf( %s, wnap); cout << wnap; printf( %c, a ); char Znak = a ; printf( %c, Znak); printf( \n ); cout << a ; char Znak = a ; cout << Znak; cout << \n ; cout << \n ;

Operacje wyjścia - porównanie C i C++ 3 Język C Język C++ printf( %i,13); cout << 13; printf( %x,13); cout << hex << 13; printf( %f, 13.0); cout << 13.0; double Zm = 13.0; double Zm = 13.0; printf( %f, Zm); cout << Zm; printf( %9f, 7.0); cout << setw(9) << 7.0; printf( %9.3f, 7.0); cout << setw(9) << precision(3) << 7.0; printf( Napis%f%c,7.0, z ); cout << Napis << 7.0 << z ;

Operacje wejścia - porównanie C i C++ 4 Język C Język C++ int ZmInt; int ZmInt; scanf( %i, &ZmInt); cin >> ZmInt; float ZmFloat; float ZmFloat; scanf( %f, &ZmFloat); cin >> ZmFloat; double ZmDouble; double ZmDouble; scanf( %lf, &ZmDouble); cin >> ZmDouble; int ZmInt; int ZmInt; float ZmFloat; float ZmFloat; scanf( %i%f, &ZmInt, &ZmFloat); cin >> ZmInt >> ZmFloat;

Operacje wejścia - porównanie C i C++ 5 Język C Język C++ char Znak; int Znak; scanf( %c, &Znak); cin >> Znak; char Tab[10000]; char Tab[10000]; scanf( %s, Tab); cin >> Tab; Tak można, ale mimo to nie należy robić!!! (niebezpieczeństwo niekontrolowanego przepełnienia) char Tab[10]; char Tab[10]; scanf( %10s, Tab); cin >> setw(sizeof(tab)) >> Tab; char Znak, Tab[10]; char Znak, Tab[10]; scanf( %c%10s, &Znak, Tab); cin >> Znak >> setw(sizeof(tab)) >> Tab;

Operacje wejścia - porównanie C i C++ 6 Język C Wczytywanie bez pomijania znaków białych Język C++ int KodZnaku; char Znak; scanf( %c, &Znak); cin >> noskipws >> Znak; Wymuszenie pomijania znaków białych char Znak; char Znak; scanf( %c, &Znak); cin >> skipws >> Znak; Odrzucenie znaku int KodZnaku; char Znak; KodZanku = getchar( ); cin >> Znak; // Zakładamy, że strumień jest ungetc(kodznaku, stdin); cin.unget( ); // we właściwym stanie.

Operacje wejścia - porównanie C i C++ 7 Język C Język C++ fprintf(stderr, Komunikat o błędzie... ); cerr << Komunikat o błędzie... ; Predefiniowane strumienie wejścia/wyjścia FILE stdin istream cin FILE stdout ostream cout FILE stderr ostream cerr ostream clog Deklaracje plików nagłówkowych dla operacji wejścia/wyjścia #include <stdio.h> #include <iostream> #include <iomanip> using namespace std;

8 Operacje wyjścia - definiowanie przeciażeń... enum Element a, b, e ; void Wyswietl( Element x) char Nazwa = abe ; ostrm << Nazwa[x]; Element x = a; cout << Wartosc zmiennej x: ; Wyswietl( x ); cout << endl; Tworzenie specjalizowanej funkcji do wyświetlania wartości zmiennej danego typu jest podejściem właściwym dla języka C (gdyż nie ma tam innej możliwości). Oczywista wada takiego podejścia jest brak elastyczności.

Operacje wyjścia - operator << 9 cout << Napis ; cout.operator << ( Napis ); cout << Napis << endl; (cout.operator << ( Napis ) ).operator << (endl); Operacje wejścia/wyjścia sa zdefiniowane w oparciu o standardowe mechanizmy dostępne na poziomie języka C++. W tym sensie biblioteka standardowa nie wykorzystuje żadnych dodatkowych mechanizmów, które byłyby spoza definicji jęzka, tak jak to ma miejsce np. w Pascalu.

Operacje wyjścia - definiowanie przeciażeń 10 enum Element a, b, e ; ostream & operator << ( ostream & ostrm, Element x ) ostrm << abe [x]; return ostrm; Element z = a; cout << Wartosc zmiennej z: << z << endl; Przy definiowaniu przeciażenia musza być spełnione dwa warunki: 1. Pierwszy parametr musi być klasy ostream i musi on być przekazywany przez referencję. 2. Przeciażenie operatora musi zwracać referencję do pierwszego parametru klasy ostream.

Operacje wyjścia - definiowanie przeciażeń 11 enum Element a, b, e ; ostream & operator << ( ostream & ostrm, Element x ) return ostrm << abe [x]; Element z = a; cout << Wartosc zmiennej z: << z << endl; Dzięki temu, że przeciażęnie operatora << zwraca zawsze referencję do obiektu ostream, możliwy jest znacznie bardziej zwarty zapis.

Operacje wyjścia - definiowanie przeciażeń 12 enum Stan Uspienie, Czuwanie, Aktywny ; ostream & operator << ( ostream & ostrm, Stan x ) char Nazwa[ ] = Uspienie, Czuwanie, Aktywny ; return ostrm << Nazwa[x]; Stan z = Czuwanie; cout << Aktualny stan: << z << endl; Tłumaczenie wartości stanu na nazwę można łatwo zrealizować wykorzystujac tablicę napisów.

Operacje wyjścia - definiowanie przeciażeń 13 struct LiczbaZespolona float re, im; ; ostream & operator << ( ostream & ostrm, LiczbaZespolona lz ) return ostrm << lz.re << showpos << lz.im << noshowpos << i ; LiczbaZespolona LZesp; LZesp.re = 2; LZesp.im = 5; cout << Liczba zespolona: << LZesp << endl;

Operacje wyjścia - definiowanie przeciażeń 13 struct LiczbaZespolona float re, im; ; ostream & operator << ( ostream & ostrm, LiczbaZespolona lz ) return ostrm << lz.re << showpos << lz.im << noshowpos << i ; LiczbaZespolona LZesp; LZesp.re = 2; LZesp.im = 5; cout << Liczba zespolona: << LZesp << endl; Wyświetlona wartość: 2+5i Dla części urojonej wymuszone zostaje uwidocznienie znaku liczby.

Operacje wyjścia - definiowanie przeciażeń 14 struct LiczbaZespolona float re, im; ; ostream & operator << ( ostream & ostrm, const LiczbaZespolona& lz ) return ostrm << lz.re << showpos << lz.im << noshowpos << i ; LiczbaZespolona LZesp; LZesp.re = 2; LZesp.im = 5; cout << Liczba zespolona: << LZesp << endl; Przekazywanie parametru wywołania przez referencję jest bardziej właściwe dla tego przypadku.

15 Operacje wejścia - definiowanie przeciażeń struct LiczbaZespolona float re, im; ; istream & operator >> ( istream & istrm, LiczbaZespolona& lz ) return (istrm >> lz.re >> lz.im).ignore( ); LiczbaZespolona LZesp; cin >> LZesp; Przekazywanie parametru wywołania przez referencję jest dla tego przypadku konieczne. Implementacja wczytania liczby urojonej jest bardzo uproszczona (brak reakcji na błędy). Realizacja czytania: wczytane zostaja dwie kolejne liczby, następnie zostaje pominięty pierwszy znak znajdujacy się za druga liczba.

Pytania i ćwiczenia 16 1. Czy operacja: cout << Napis ; spowoduje pojawienie się tekstu napis na ekranie monitora? Zakładamy, że ekran monitora jest wyjściem standardowym dla danej aplikacji. 2. Czy zbiór operacji: cout << \n ; cout << \n ; cout << endl; jest zbiorem operacji równoważnych pod względem wyniku działania? 3. Jeżeli powyżej przedstawione operacje sa równoważne, to czy sa one wykonywane przez tę sama metodę? Jeżeli zaś nie, to jakie sa najistotniejsze różnice?