Szablony, wybrane elementy biblioteki STL
|
|
- Włodzimierz Krzemiński
- 7 lat temu
- Przeglądów:
Transkrypt
1 Bogdan Kreczmer Katedra Cybernetyki i Robotyki Wydziału Elektroniki Politechnika Wrocławska Kurs: Copyright c 2016 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu dotyczącego programowania obiektowego. Jest on udostępniony pod warunkiem wykorzystania wyłącznie do własnych prywatnych potrzeb i może on być kopiowany wyłącznie w całości, razem z niniejszą stroną tytułową.
2 Niniejsza prezentacja została wykonana przy użyciu systemu składu L A TEX oraz stylu beamer, którego autorem jest Till Tantau. Strona domowa projektu Beamer:
3 Plan prezentacji 1 Konstruktory i operatory domyślne Klasy z polami referencyjnymi Klasa std::string 2 funkcji Podstawowa idea klas 3 o dostępie sekwencyjnym Szablon std::vector<> Jak przeglądać kolekcje idea iteratora
4 Plan prezentacji Klasy z polami referencyjnymi Klasa std::string 1 Konstruktory i operatory domyślne Klasy z polami referencyjnymi Klasa std::string 2 funkcji Podstawowa idea klas 3 o dostępie sekwencyjnym Szablon std::vector<> Jak przeglądać kolekcje idea iteratora
5 Klasy z polami referencyjnymi Klasy z polami referencyjnymi Klasa std::string class Wektor2 // public : int &x, &y; int Tab[2]; ; //
6 Klasy z polami referencyjnymi Klasy z polami referencyjnymi Klasa std::string class Wektor2 // public : int &x, &y; int Tab[2]; ; // int main( ) Wektor2 W1;
7 Klasy z polami referencyjnymi Klasy z polami referencyjnymi Klasa std::string class Wektor2 // public : int &x, &y; int Tab[2]; ; // int main( ) Wektor2 W1;
8 Klasy z polami referencyjnymi Klasy z polami referencyjnymi Klasa std::string class Wektor2 // public : int &x, &y; int Tab[2]; Wektor2( ): x(tab[0]), y(tab[1]) ; // int main( ) Wektor2 W1;
9 Klasy z polami referencyjnymi Klasy z polami referencyjnymi Klasa std::string class Wektor2 // public : int &x, &y; int Tab[2]; Wektor2( ): x(tab[0]), y(tab[1]) ; // int main( ) Wektor2 W1; Wektor2 W2(W1);
10 Klasy z polami referencyjnymi Klasy z polami referencyjnymi Klasa std::string class Wektor2 // public : int &x, &y; int Tab[2]; Wektor2( ): x(tab[0]), y(tab[1]) ; // int main( ) Wektor2 W1; Wektor2 W2(W1);
11 Klasy z polami referencyjnymi Klasy z polami referencyjnymi Klasa std::string class Wektor2 // public : int &x, &y; int Tab[2]; Wektor2( ): x(tab[0]), y(tab[1]) Wektor2(const Wektor2 &W)... ; // int main( ) Wektor2 W1; Wektor2 W2(W1);
12 Klasy z polami referencyjnymi Klasy z polami referencyjnymi Klasa std::string class Wektor2 // public : int &x, &y; int Tab[2]; Wektor2( ): x(tab[0]), y(tab[1]) Wektor2(const Wektor2 &W): x(tab[0]), y(tab[1]) x = W.x; y = W.y; ; // int main( ) Wektor2 W1; Wektor2 W2(W1);
13 Klasy z polami referencyjnymi Klasy z polami referencyjnymi Klasa std::string class Wektor2 // public : int &x, &y; int Tab[2]; Wektor2( ): x(tab[0]), y(tab[1]) Wektor2(const Wektor2 &W): x(tab[0]), y(tab[1]) x = W.x; y = W.y; ; // int main( ) Wektor2 W1; Wektor2 W2(W1); W1 = W2;
14 Klasy z polami referencyjnymi Klasy z polami referencyjnymi Klasa std::string class Wektor2 // public : int &x, &y; int Tab[2]; Wektor2( ): x(tab[0]), y(tab[1]) Wektor2(const Wektor2 &W): x(tab[0]), y(tab[1]) x = W.x; y = W.y; ; // int main( ) Wektor2 W1; Wektor2 W2(W1); W1 = W2;
15 Klasy z polami referencyjnymi Klasy z polami referencyjnymi Klasa std::string class Wektor2 // public : int &x, &y; int Tab[2]; Wektor2( ): x(tab[0]), y(tab[1]) Wektor2(const Wektor2 &W): x(tab[0]), y(tab[1]) x = W.x; y = W.y; Wektor2& operator = ( const Wektor2& W )... ; // int main( ) Wektor2 W1; Wektor2 W2(W1); W1 = W2;
16 Klasy z polami referencyjnymi Klasy z polami referencyjnymi Klasa std::string class Wektor2 // public : int &x, &y; int Tab[2]; Wektor2( ): x(tab[0]), y(tab[1]) Wektor2(const Wektor2 &W): x(tab[0]), y(tab[1]) x = W.x; y = W.y; Wektor2& operator = ( const Wektor2& W ) x = W.x; y = W.y; ; // int main( ) Wektor2 W1; Wektor2 W2(W1); W1 = W2;
17 Podsumowanie (1) Klasy z polami referencyjnymi Klasa std::string W przypadku klas, w których zdefiniowane są pola wskaźnikowe, może koniecznym okazać się zdefiniowanie konstruktora kopiującego oraz przeciążenie operatora przypisania. Jest to niezbędne wtedy, gdy obiekty tej klasy stowarzyszone są ze strukturami tworzonymi dynamicznie i usuwanymi w destruktorze. Jeżeli stowarzyszone z danym obiektem struktury danych nie są usuwane w destruktorze, to na ogół można ograniczyć się do domyślnej implementacji konstruktora kopiującego i operatora przypisania.
18 Podsumowanie (1) Klasy z polami referencyjnymi Klasa std::string W przypadku klas, w których zdefiniowane są pola wskaźnikowe, może koniecznym okazać się zdefiniowanie konstruktora kopiującego oraz przeciążenie operatora przypisania. Jest to niezbędne wtedy, gdy obiekty tej klasy stowarzyszone są ze strukturami tworzonymi dynamicznie i usuwanymi w destruktorze. Jeżeli stowarzyszone z danym obiektem struktury danych nie są usuwane w destruktorze, to na ogół można ograniczyć się do domyślnej implementacji konstruktora kopiującego i operatora przypisania.
19 Podsumowanie (1) Klasy z polami referencyjnymi Klasa std::string W przypadku klas, w których zdefiniowane są pola wskaźnikowe, może koniecznym okazać się zdefiniowanie konstruktora kopiującego oraz przeciążenie operatora przypisania. Jest to niezbędne wtedy, gdy obiekty tej klasy stowarzyszone są ze strukturami tworzonymi dynamicznie i usuwanymi w destruktorze. Jeżeli stowarzyszone z danym obiektem struktury danych nie są usuwane w destruktorze, to na ogół można ograniczyć się do domyślnej implementacji konstruktora kopiującego i operatora przypisania.
20 Podsumowanie (2) Klasy z polami referencyjnymi Klasa std::string W klasach, w których definiowane są pola referencyjne nie istnieje domyślna implementacja konstruktora kopiującego i operatora przypisania. Wynika to z fakty, że zwykłe przepisanie bajt po bajcie zawartości obiektów zmieniałoby referencje. Z definicji zaś referencji wynika, że w trakcie swojego istnienia nie może ona ulegać zmianom. Jeżeli obiekty klasy zawierającej pola referencyjne mają być przekazywane jako parametr wywołania funkcji/metody lub przez nie zwracane lub też w sposób jawny ma być wywoływany konstruktor kopiujący, to jego zdefiniowanie jest bezwzględnie konieczne. W przypadku, gdy ma być wykonywana operacja przypisania, konieczne jest wówczas zdefiniowanie operatora przypisania. Jeżeli wyżej wymienione operacje nie będą wykonywane, to nie ma potrzeby definiowania zarówno konstruktora kopiującego, jak też operatora przypisania.
21 Podsumowanie (2) Klasy z polami referencyjnymi Klasa std::string W klasach, w których definiowane są pola referencyjne nie istnieje domyślna implementacja konstruktora kopiującego i operatora przypisania. Wynika to z fakty, że zwykłe przepisanie bajt po bajcie zawartości obiektów zmieniałoby referencje. Z definicji zaś referencji wynika, że w trakcie swojego istnienia nie może ona ulegać zmianom. Jeżeli obiekty klasy zawierającej pola referencyjne mają być przekazywane jako parametr wywołania funkcji/metody lub przez nie zwracane lub też w sposób jawny ma być wywoływany konstruktor kopiujący, to jego zdefiniowanie jest bezwzględnie konieczne. W przypadku, gdy ma być wykonywana operacja przypisania, konieczne jest wówczas zdefiniowanie operatora przypisania. Jeżeli wyżej wymienione operacje nie będą wykonywane, to nie ma potrzeby definiowania zarówno konstruktora kopiującego, jak też operatora przypisania.
22 Podsumowanie (2) Klasy z polami referencyjnymi Klasa std::string W klasach, w których definiowane są pola referencyjne nie istnieje domyślna implementacja konstruktora kopiującego i operatora przypisania. Wynika to z fakty, że zwykłe przepisanie bajt po bajcie zawartości obiektów zmieniałoby referencje. Z definicji zaś referencji wynika, że w trakcie swojego istnienia nie może ona ulegać zmianom. Jeżeli obiekty klasy zawierającej pola referencyjne mają być przekazywane jako parametr wywołania funkcji/metody lub przez nie zwracane lub też w sposób jawny ma być wywoływany konstruktor kopiujący, to jego zdefiniowanie jest bezwzględnie konieczne. W przypadku, gdy ma być wykonywana operacja przypisania, konieczne jest wówczas zdefiniowanie operatora przypisania. Jeżeli wyżej wymienione operacje nie będą wykonywane, to nie ma potrzeby definiowania zarówno konstruktora kopiującego, jak też operatora przypisania.
23 Podsumowanie (2) Klasy z polami referencyjnymi Klasa std::string W klasach, w których definiowane są pola referencyjne nie istnieje domyślna implementacja konstruktora kopiującego i operatora przypisania. Wynika to z fakty, że zwykłe przepisanie bajt po bajcie zawartości obiektów zmieniałoby referencje. Z definicji zaś referencji wynika, że w trakcie swojego istnienia nie może ona ulegać zmianom. Jeżeli obiekty klasy zawierającej pola referencyjne mają być przekazywane jako parametr wywołania funkcji/metody lub przez nie zwracane lub też w sposób jawny ma być wywoływany konstruktor kopiujący, to jego zdefiniowanie jest bezwzględnie konieczne. W przypadku, gdy ma być wykonywana operacja przypisania, konieczne jest wówczas zdefiniowanie operatora przypisania. Jeżeli wyżej wymienione operacje nie będą wykonywane, to nie ma potrzeby definiowania zarówno konstruktora kopiującego, jak też operatora przypisania.
24 Podsumowanie (2) Klasy z polami referencyjnymi Klasa std::string W klasach, w których definiowane są pola referencyjne nie istnieje domyślna implementacja konstruktora kopiującego i operatora przypisania. Wynika to z fakty, że zwykłe przepisanie bajt po bajcie zawartości obiektów zmieniałoby referencje. Z definicji zaś referencji wynika, że w trakcie swojego istnienia nie może ona ulegać zmianom. Jeżeli obiekty klasy zawierającej pola referencyjne mają być przekazywane jako parametr wywołania funkcji/metody lub przez nie zwracane lub też w sposób jawny ma być wywoływany konstruktor kopiujący, to jego zdefiniowanie jest bezwzględnie konieczne. W przypadku, gdy ma być wykonywana operacja przypisania, konieczne jest wówczas zdefiniowanie operatora przypisania. Jeżeli wyżej wymienione operacje nie będą wykonywane, to nie ma potrzeby definiowania zarówno konstruktora kopiującego, jak też operatora przypisania.
25 Plan prezentacji Klasy z polami referencyjnymi Klasa std::string 1 Konstruktory i operatory domyślne Klasy z polami referencyjnymi Klasa std::string 2 funkcji Podstawowa idea klas 3 o dostępie sekwencyjnym Szablon std::vector<> Jak przeglądać kolekcje idea iteratora
26 Klasa std::string Klasy z polami referencyjnymi Klasa std::string Klasa łańcuchów napisowych została zaprojektowana, tak aby można ją było wykorzystywać jak normalny typ wbudowany. Pozwala to na ułatwienie przetwarzania tekstów Jedną z najważniejszych cech typu std::string jest to że jest zdefiniowana dla niego operacja kopiowania z wykorzystaniem zarówno konstruktora kopiującego jak też operatora podstawienie =. Rozwiązuje to problem dynamicznego przydziału i zwalniania pamięci, co na poziomie języka C jest zawsze kłopotliwe. Zdefiniowane są operacje porównywaniałańcuchów (operatory: ==, <, >, <=, >=,!=), oraz operacja konkatenacji (operatory: +, +=). Dostępnych jest wiele dodatkowych udogodnień pozwalających na wyszukiwaniu znaków lub podciągów, wstawianie sekwencji znaków, zamiany itp. Nie są zdefiniowane metody wyszukiwania w oparciu o wyrażenia regularne.
27 Przykład prostych operacji Klasy z polami referencyjnymi Klasa std::string int main( ) std::string Zyczenia;
28 Przykład prostych operacji Klasy z polami referencyjnymi Klasa std::string int main( ) std::string Zyczenia; std::string Naglowek = Z okazji spotkania Marsjan\n ;
29 Przykład prostych operacji Klasy z polami referencyjnymi Klasa std::string int main( ) std::string Zyczenia; std::string Naglowek = Z okazji spotkania Marsjan\n ; Zyczenia = Naglowek + wszystkiego najlepszego zyczy\n ;
30 Przykład prostych operacji Klasy z polami referencyjnymi Klasa std::string int main( ) std::string Zyczenia; std::string Naglowek = Z okazji spotkania Marsjan\n ; Zyczenia = Naglowek + wszystkiego najlepszego zyczy\n ; Zyczenia += Ziemianin ;
31 Przykład prostych operacji Klasy z polami referencyjnymi Klasa std::string int main( ) std::string Zyczenia; std::string Naglowek = Z okazji spotkania Marsjan\n ; Zyczenia = Naglowek + wszystkiego najlepszego zyczy\n ; Zyczenia += Ziemianin ; cout << Zyczenia << endl;
32 Przykład prostych operacji Klasy z polami referencyjnymi Klasa std::string string UniwersalneZyczenia( const char Naglowek, const char Zakonczenie ) string Zyczenia = Naglowek; Zyczenia += wszystkiego najlepszego zyczy\n ; Zyczenia += Zakonczenie; return Zyczenia; int main( )
33 Przykład prostych operacji Klasy z polami referencyjnymi Klasa std::string string UniwersalneZyczenia( const char Naglowek, const char Zakonczenie ) string Zyczenia = Naglowek; Zyczenia += wszystkiego najlepszego zyczy\n ; Zyczenia += Zakonczenie; return Zyczenia; int main( ) string Zyczenia = UniwersalneZyczenia( Z okazji spotkania Marsjan, Ziemianin ); cout << Zyczenia << endl;
34 Przykład prostych operacji Klasy z polami referencyjnymi Klasa std::string string UniwersalneZyczenia( const char Naglowek, const char Zakonczenie ) string Zyczenia = Naglowek; Zyczenia += wszystkiego najlepszego zyczy\n ; Zyczenia += Zakonczenie; return Zyczenia; int main( ) string Zyczenia = UniwersalneZyczenia( Z okazji spotkania Marsjan, Ziemianin ); cout << Zyczenia << endl; const char Zycz C = Zyczenia.c str( );
35 Przykład prostych operacji Klasy z polami referencyjnymi Klasa std::string string UniwersalneZyczenia( const char Naglowek, const char Zakonczenie ) string Zyczenia = Naglowek; Zyczenia += wszystkiego najlepszego zyczy\n ; Zyczenia += Zakonczenie; return Zyczenia; int main( ) string Zyczenia = UniwersalneZyczenia( Z okazji spotkania Marsjan, Ziemianin ); cout << Zyczenia << endl; const char Zycz C = Zyczenia.c str( ); Zyczenia = Z okazji pierwszej swiatowej inwazji Marsjan na supermarkety... ;
36 Przykład prostych operacji Klasy z polami referencyjnymi Klasa std::string string UniwersalneZyczenia( const char Naglowek, const char Zakonczenie ) string Zyczenia = Naglowek; Zyczenia += wszystkiego najlepszego zyczy\n ; Zyczenia += Zakonczenie; return Zyczenia; int main( ) string Zyczenia = UniwersalneZyczenia( Z okazji spotkania Marsjan, Ziemianin ); cout << Zyczenia << endl; const char Zycz C = Zyczenia.c str( ); Zyczenia = Z okazji pierwszej swiatowej inwazji Marsjan na supermarkety... ; cout << Zycz C << endl;
37 Przeciążone operatory Klasy z polami referencyjnymi Klasa std::string Przeciążenia w klasie string: < > <= >= ==!= porównania, = przypisanie, +, += konkatenacja, [ ] bezpośredni dostęp do znaku bez kontroli zakresu, Przeciążenia zewnętrzne dla klasy string: << zapis do strumień klasy ostream, >> cztanie ze strumienia klasy istream.
38 Przykład metod Klasy z polami referencyjnymi Klasa std::string Tworzenie tablic i łańcuchów znakowych w sensie języka C: c str zwraca łańcuch w sensie języka C, data copy zwraca łańcuch w postaci tablicy znakowej, przekopiowuje do tablicy znakowej zadana ilość znaków. Ekstrahowanie podłańcuchów: substr zwraca podciąg (obiekt klasy string), Dostęp do poszczególnych elementów łańcucha: at kontrolowany dostęp do danego znaku.
39 Przykład metod Klasy z polami referencyjnymi Klasa std::string Rozmiar i wielkość łańcucha: length podaje długość łańcucha w sensie języka C, size podaje rozmiar łańcucha, max size podaje maksymalny mo liwy rozmiar łańcucha, informuje czy dany łańcuch jest pusty. empty Pojemność łańcucha i jej zmiana: capacity reserve określenie pojemności, rezerwacja pamięci. Szukanie i porównywanie: find compare szukania znaków i ciągów znaków, porównuje dwa ciągi.
40 Przykład metod Klasy z polami referencyjnymi Klasa std::string string RdzenNazwyPliku( const string &NazwaPliku ) size t Ind = NazwaPliku.find(. ); if ( Ind == string::npos ) return NazwaPliku; return NazwaPliku.substr( 0, Ind ); int main( ) cout << RdzenNazwyPliku( rownanie liniowe.dane ) << endl;
41 Klasy z polami referencyjnymi Klasa std::string Przykład metod int main() cout << CzyNalezyDoGrupy( jk, cdrom:x:24:jk,installer,mythtv ) << endl;
42 Klasy z polami referencyjnymi Klasa std::string Przykład metod bool CzyJestWLiscie( string LoginUzyt, string ListaUzyt ) LoginUzyt =, + LoginUzyt +, ; ListaUzyt =, + ListaUzyt +, ; return ListaUzyt.find(LoginUzyt)!= string ::npos; int main() cout << CzyNalezyDoGrupy( jk, cdrom:x:24:jk,installer,mythtv ) << endl;
43 Przykład metod Klasy z polami referencyjnymi Klasa std::string bool CzyJestWLiscie( string LoginUzyt, string ListaUzyt ) LoginUzyt =, + LoginUzyt +, ; ListaUzyt =, + ListaUzyt +, ; return ListaUzyt.find(LoginUzyt)!= string ::npos; bool CzyNalezyDoGrupy( const char sloginuzyt, const char slistagrupy ) istringstream StrmWe(sListaGrupy); string ListaUzyt; for (int i = 0; i < 3; ++i) StrmWe.ignore(1000, : ); return CzyJestWLiscie(sLoginUzyt,ListaUzyt); int main() cout << CzyNalezyDoGrupy( jk, cdrom:x:24:jk,installer,mythtv ) << endl;
44 Plan prezentacji funkcji Podstawowa idea klas 1 Konstruktory i operatory domyślne Klasy z polami referencyjnymi Klasa std::string 2 funkcji Podstawowa idea klas 3 o dostępie sekwencyjnym Szablon std::vector<> Jak przeglądać kolekcje idea iteratora
45 Problemy z tłumaczeniem funkcji Podstawowa idea klas template wzorzec szablon
46 Problemy z tłumaczeniem funkcji Podstawowa idea klas template wzorzec szablon
47 Dlaczego szablony? funkcji Podstawowa idea klas W językach takich jak C i Pascal mamy do czynienia z separacją kodu i typu parametrów. Wartości z jakimi wywoływane są funkcje i procedury mogą parametryzować ich działanie. Jednak ich typy zostają ustalone raz na zawsze w momencie ich definicji. Problem: Należy zaimplementować algorytm sortowania dla obiektów różnych typów.
48 Dlaczego szablony? funkcji Podstawowa idea klas W językach takich jak C i Pascal mamy do czynienia z separacją kodu i typu parametrów. Wartości z jakimi wywoływane są funkcje i procedury mogą parametryzować ich działanie. Jednak ich typy zostają ustalone raz na zawsze w momencie ich definicji. Problem: Należy zaimplementować algorytm sortowania dla obiektów różnych typów.
49 Dlaczego szablony? Problem: Możliwe rozwiązania: funkcji Podstawowa idea klas Należy zaimplementować algorytm sortowania dla obiektów różnych typów. Implementacja algorytmu dla wszystkich typów, dla których przewidziane jest jego zastosowanie. Implementacja algorytmu dla typu podstawowego takiego jak void lub Object. Zdefiniowanie makr i wykorzystanie specjalnych preprocesorów (np. cpp dla C/C++).
50 Dlaczego szablony? Problem: Możliwe rozwiązania: funkcji Podstawowa idea klas Należy zaimplementować algorytm sortowania dla obiektów różnych typów. Implementacja algorytmu dla wszystkich typów, dla których przewidziane jest jego zastosowanie. Implementacja algorytmu dla typu podstawowego takiego jak void lub Object. Zdefiniowanie makr i wykorzystanie specjalnych preprocesorów (np. cpp dla C/C++).
51 Dlaczego szablony? Problem: Możliwe rozwiązania: funkcji Podstawowa idea klas Należy zaimplementować algorytm sortowania dla obiektów różnych typów. Implementacja algorytmu dla wszystkich typów, dla których przewidziane jest jego zastosowanie. Implementacja algorytmu dla typu podstawowego takiego jak void lub Object. Zdefiniowanie makr i wykorzystanie specjalnych preprocesorów (np. cpp dla C/C++).
52 Dlaczego szablony? Problem: Możliwe rozwiązania: funkcji Podstawowa idea klas Należy zaimplementować algorytm sortowania dla obiektów różnych typów. Implementacja algorytmu dla wszystkich typów, dla których przewidziane jest jego zastosowanie. Implementacja algorytmu dla typu podstawowego takiego jak void lub Object. Zdefiniowanie makr i wykorzystanie specjalnych preprocesorów (np. cpp dla C/C++). Najlepszym rozwiązaniem dla postawionego problemu jest koncepcja szablonów.
53 Dlaczego szablony? Problem: Możliwe rozwiązania: funkcji Podstawowa idea klas Należy zaimplementować algorytm sortowania dla obiektów różnych typów. Implementacja algorytmu dla wszystkich typów, dla których przewidziane jest jego zastosowanie. Implementacja algorytmu dla typu podstawowego takiego jak void lub Object. Zdefiniowanie makr i wykorzystanie specjalnych preprocesorów (np. cpp dla C/C++). Najlepszym rozwiązaniem dla postawionego problemu jest koncepcja szablonów.
54 Dlaczego szablony? Problem: Możliwe rozwiązania: funkcji Podstawowa idea klas Należy zaimplementować algorytm sortowania dla obiektów różnych typów. Implementacja algorytmu dla wszystkich typów, dla których przewidziane jest jego zastosowanie. Implementacja algorytmu dla typu podstawowego takiego jak void lub Object. Zdefiniowanie makr i wykorzystanie specjalnych preprocesorów (np. cpp dla C/C++). Najlepszym rozwiązaniem dla postawionego problemu jest koncepcja szablonów.
55 Podstawowe cechy funkcji Podstawowa idea klas pozwalają na definiowanie funkcji, których typy parametrów są także parametrami tych funkcji. Możliwe jest definiowanie klas, które parametryzowane mogą być typami pól występujących w tych klasach i/lub też typami parametrów metod. Programista definiuje tylko raz dany szablon. Kompilator dokonuje dedukcji typów parametrów danego szablonu i konkretyzuje go tworząc kod dla użytych typów w wywołaniu funkcji lub definicji obiektu danej klasy. Programista może też jawnie określić wartości parametrów szablonu.
56 Podstawowe cechy funkcji Podstawowa idea klas pozwalają na definiowanie funkcji, których typy parametrów są także parametrami tych funkcji. Możliwe jest definiowanie klas, które parametryzowane mogą być typami pól występujących w tych klasach i/lub też typami parametrów metod. Programista definiuje tylko raz dany szablon. Kompilator dokonuje dedukcji typów parametrów danego szablonu i konkretyzuje go tworząc kod dla użytych typów w wywołaniu funkcji lub definicji obiektu danej klasy. Programista może też jawnie określić wartości parametrów szablonu.
57 Podstawowe cechy funkcji Podstawowa idea klas pozwalają na definiowanie funkcji, których typy parametrów są także parametrami tych funkcji. Możliwe jest definiowanie klas, które parametryzowane mogą być typami pól występujących w tych klasach i/lub też typami parametrów metod. Programista definiuje tylko raz dany szablon. Kompilator dokonuje dedukcji typów parametrów danego szablonu i konkretyzuje go tworząc kod dla użytych typów w wywołaniu funkcji lub definicji obiektu danej klasy. Programista może też jawnie określić wartości parametrów szablonu.
58 Podstawowe cechy funkcji Podstawowa idea klas pozwalają na definiowanie funkcji, których typy parametrów są także parametrami tych funkcji. Możliwe jest definiowanie klas, które parametryzowane mogą być typami pól występujących w tych klasach i/lub też typami parametrów metod. Programista definiuje tylko raz dany szablon. Kompilator dokonuje dedukcji typów parametrów danego szablonu i konkretyzuje go tworząc kod dla użytych typów w wywołaniu funkcji lub definicji obiektu danej klasy. Programista może też jawnie określić wartości parametrów szablonu.
59 Wady i zalety funkcji Podstawowa idea klas Zalety: dają możliwość tworzenia uniwersalnych algorytmów i uniwersalnych struktur danych. W odróżnieniu od makr możliwe jest zachowanie przejrzystości kodu. W odróżnieniu od wykorzystywania typów bazowych pozwalają zachować ścisłą kontrolę typów w trakcie kompilacji. Wady: Brak możliwości tworzenia oddzielnych jednostek kompilacji (modułów) w postaci czystych szablonów.
60 funkcji Podstawowa idea klas funkcji przykład dla typów wbudowanych template <class Typ> Typ Max( Typ w1, Typ w2 ) return w1 < w2? w2 : w1; enum Symbole a=1, b, c ; int main( ) cout << Max(1,2) << endl; cout << Max(1.1, 2.2) << endl; cout << Max( A, B ) << endl; cout << Max( a, b ) << endl;
61 funkcji Podstawowa idea klas funkcji przykład dla typów wbudowanych template <class Typ> Typ Max( Typ w1, Typ w2 ) return w1 < w2? w2 : w1; enum Symbole a=1, b, c ; int main( ) cout << Max(1,2) << endl; cout << Max(1.1, 2.2) << endl; cout << Max( A, B ) << endl; cout << Max( a, b ) << endl;
62 funkcji Podstawowa idea klas funkcji przykład dla typów wbudowanych template <class Typ> Typ Max( Typ w1, Typ w2 ) return w1 < w2? w2 : w1; W tym przykładzie kompilator generuje kod funkcji Max dla czterech przypadków. Słowo kluczowe class może zostać zastąpione przez typename. enum Symbole a=1, b, c ; int main( ) cout << Max(1,2) << endl; cout << Max(1.1, 2.2) << endl; cout << Max( A, B ) << endl; cout << Max( a, b ) << endl;
63 funkcji własna klasa funkcji Podstawowa idea klas template <class Typ> Typ Max( Typ w1, Typ w2 ) return w1 < w2? w2 : w1; Czy szablon można stosować również dla własnych klas? int main( ) Wektor W1(1,1), W2(4,5), W3; W3 = Max(W1,W2);
64 funkcji własna klasa struct Wektor float x, y; ; funkcji Podstawowa idea klas template <class Typ> Typ Max( Typ w1, Typ w2 ) return w1 < w2? w2 : w1; int main( ) Wektor W1(1,1), W2(4,5), W3; W3 = Max(W1,W2);
65 funkcji własna klasa struct Wektor float x, y; ; funkcji Podstawowa idea klas template <class Typ> Typ Max( Typ w1, Typ w2 ) return w1 < w2? w2 : w1; W takiej postaci na pewno nie będzie dobrze. Dlaczego? int main( ) Wektor W1(1,1), W2(4,5), W3; W3 = Max(W1,W2);
66 funkcji własna klasa struct Wektor float x, y; ; funkcji Podstawowa idea klas template <class Typ> Typ Max( Typ w1, Typ w2 ) return w1 < w2? w2 : w1; Problemem jest operacja prównania dwóch wektorów. Dlaczego? int main( ) Wektor W1(1,1), W2(4,5), W3; W3 = Max(W1,W2);
67 funkcji własna klasa struct Wektor float x, y; ; funkcji Podstawowa idea klas bool operator < ( const Wektor& W ) const return x x+y y < W.x W.x+W.y W.y; template <class Typ> Typ Max( Typ w1, Typ w2 ) return w1 < w2? w2 : w1; Aby było dobrze, należy zdefiniować przeciążenie operatora porównania. int main( ) Wektor W1(1,1), W2(4,5), W3; W3 = Max(W1,W2);
68 Plan prezentacji funkcji Podstawowa idea klas 1 Konstruktory i operatory domyślne Klasy z polami referencyjnymi Klasa std::string 2 funkcji Podstawowa idea klas 3 o dostępie sekwencyjnym Szablon std::vector<> Jak przeglądać kolekcje idea iteratora
69 klas funkcji Podstawowa idea klas klas pozwalają na przedstawienie ogólnych pojęć i wzajemnych ich związków. Pozwalają na abstrahowanie od typu poszczególnych atrybutów związanych z danym pojęciem. Pozwalają programiście skoncentrować na ogólnych zależnościach i mechanizmach. pozwalają na generowanie i optymalizowania już na etapie kompilacji poprzez użycie specyficznych konstrukcji programistycznych. Umożliwiają realizację idei programowania uogólnionego.
70 klas funkcji Podstawowa idea klas klas pozwalają na przedstawienie ogólnych pojęć i wzajemnych ich związków. Pozwalają na abstrahowanie od typu poszczególnych atrybutów związanych z danym pojęciem. Pozwalają programiście skoncentrować na ogólnych zależnościach i mechanizmach. pozwalają na generowanie i optymalizowania już na etapie kompilacji poprzez użycie specyficznych konstrukcji programistycznych. Umożliwiają realizację idei programowania uogólnionego.
71 klas funkcji Podstawowa idea klas klas pozwalają na przedstawienie ogólnych pojęć i wzajemnych ich związków. Pozwalają na abstrahowanie od typu poszczególnych atrybutów związanych z danym pojęciem. Pozwalają programiście skoncentrować na ogólnych zależnościach i mechanizmach. pozwalają na generowanie i optymalizowania już na etapie kompilacji poprzez użycie specyficznych konstrukcji programistycznych. Umożliwiają realizację idei programowania uogólnionego.
72 klas funkcji Podstawowa idea klas klas pozwalają na przedstawienie ogólnych pojęć i wzajemnych ich związków. Pozwalają na abstrahowanie od typu poszczególnych atrybutów związanych z danym pojęciem. Pozwalają programiście skoncentrować na ogólnych zależnościach i mechanizmach. pozwalają na generowanie i optymalizowania już na etapie kompilacji poprzez użycie specyficznych konstrukcji programistycznych. Umożliwiają realizację idei programowania uogólnionego.
73 klas funkcji Podstawowa idea klas klas pozwalają na przedstawienie ogólnych pojęć i wzajemnych ich związków. Pozwalają na abstrahowanie od typu poszczególnych atrybutów związanych z danym pojęciem. Pozwalają programiście skoncentrować na ogólnych zależnościach i mechanizmach. pozwalają na generowanie i optymalizowania już na etapie kompilacji poprzez użycie specyficznych konstrukcji programistycznych. Umożliwiają realizację idei programowania uogólnionego.
74 Ogólna postać szablonu funkcji Podstawowa idea klas template < lista-parametrow-rozdzielonych-przecinkami > class Klasa ;...
75 Ogólna postać szablonu funkcji Podstawowa idea klas template < lista-parametrow-rozdzielonych-przecinkami > class Klasa ;... Dopuszczalne parametry: typ wbudowany lub zdefiniowany przez użytkownika, stała w czasie kompilacji (liczba, wskaźnik, znaki itp.), inny szablon.
76 Ogólna postać szablonu funkcji Podstawowa idea klas template < lista-parametrow-rozdzielonych-przecinkami > class Klasa ;... Dopuszczalne parametry: typ wbudowany lub zdefiniowany przez użytkownika, stała w czasie kompilacji (liczba, wskaźnik, znaki itp.), inny szablon.
77 Ogólna postać szablonu funkcji Podstawowa idea klas template < lista-parametrow-rozdzielonych-przecinkami > class Klasa ;... Dopuszczalne parametry: typ wbudowany lub zdefiniowany przez użytkownika, stała w czasie kompilacji (liczba, wskaźnik, znaki itp.), inny szablon.
78 Ogólna postać szablonu funkcji Podstawowa idea klas template < lista-parametrow-rozdzielonych-przecinkami > class Klasa ;... Dopuszczalne parametry: typ wbudowany lub zdefiniowany przez użytkownika, stała w czasie kompilacji (liczba, wskaźnik, znaki itp.), inny szablon.
79 Stos funkcji Podstawowa idea klas class Stos int Tab[ROZ STOSU]; int unsigned int Ilosc; public : Stos( ) Ilosc = 0; bool Pobierz(int& El) return! Ilosc? false : El = Tab[ Ilosc], true; ; bool Poloz(const int& El) return Ilosc >= ROZ STOSU? false : Tab[ Ilosc++] = El, true; int main( ) Stos St;
80 Przykład szablonu stosu template < typename TYP > class Stos TYP Tab[ROZ STOSU]; unsigned int Ilosc; public : Stos( ) Ilosc = 0; funkcji Podstawowa idea klas bool Pobierz(TYP& El) return! Ilosc? false : El = Tab[ Ilosc], true; ; bool Poloz(const TYP& El) return Ilosc >= ROZ STOSU? false : Tab[ Ilosc++] = El, true; Słowo kluczowe typename sygnalizuje, że parametr szablonu jest typem.
81 Przykład szablonu stosu template < class TYP > class Stos TYP Tab[ROZ STOSU]; unsigned int Ilosc; public : Stos( ) Ilosc = 0; funkcji Podstawowa idea klas bool Pobierz(TYP& El) return! Ilosc? false : El = Tab[ Ilosc], true; ; bool Poloz(const TYP& El) return Ilosc >= ROZ STOSU? false : Tab[ Ilosc++] = El, true;
82 Przykład szablonu stosu template < typename TYP > class Stos TYP Tab[ROZ STOSU]; unsigned int Ilosc; public : Stos( ) Ilosc = 0; funkcji Podstawowa idea klas bool Pobierz(TYP& El) return! Ilosc? false : El = Tab[ Ilosc], true; ; bool Poloz(const TYP& El) return Ilosc >= ROZ STOSU? false : Tab[ Ilosc++] = El, true;
83 Przykład szablonu stosu template < typename TYP > class Stos TYP Tab[ROZ STOSU]; unsigned int Ilosc; public : Stos( ) Ilosc = 0; funkcji Podstawowa idea klas bool Pobierz(TYP& El) return! Ilosc? false : El = Tab[ Ilosc], true; ; bool Poloz(const TYP& El) return Ilosc >= ROZ STOSU? false : Tab[ Ilosc++] = El, true; int main( ) Stos<float> St;
84 Przykład szablonu stosu template < typename TYP > class Stos TYP Tab[ROZ STOSU]; unsigned int Ilosc; public : Stos( ) Ilosc = 0; funkcji Podstawowa idea klas bool Pobierz(TYP& El) return! Ilosc? false : El = Tab[ Ilosc], true; ; bool Poloz(const TYP& El) return Ilosc >= ROZ STOSU? false : Tab[ Ilosc++] = El, true; int main( ) Stos<double[100]> St;
85 Przykład szablonu stosu template < typename TYP > class Stos TYP Tab[ROZ STOSU]; unsigned int Ilosc; public : Stos( ) Ilosc = 0; funkcji Podstawowa idea klas bool Pobierz(TYP& El) return! Ilosc? false : El = Tab[ Ilosc], true; ; bool Poloz(const TYP& El) return Ilosc >= ROZ STOSU? false : Tab[ Ilosc++] = El, true; int main( ) Stos<std::string> St;
86 Przykład szablonu stosu template < typename TYP > class Stos TYP Tab[ROZ STOSU]; unsigned int Ilosc; public : Stos( ) Ilosc = 0; funkcji Podstawowa idea klas bool Pobierz(TYP& El) return! Ilosc? false : El = Tab[ Ilosc], true; ; bool Poloz(const TYP& El) return Ilosc >= ROZ STOSU? false : Tab[ Ilosc++] = El, true; int main( ) Stos<std::istream> St;
87 Przykład szablonu stosu template < typename TYP > class Stos TYP Tab[ROZ STOSU]; unsigned int Ilosc; public : Stos( ) Ilosc = 0; funkcji Podstawowa idea klas bool Pobierz(TYP& El) return! Ilosc? false : El = Tab[ Ilosc], true; ; bool Poloz(const TYP& El) return Ilosc >= ROZ STOSU? false : Tab[ Ilosc++] = El, true; int main( ) Stos<std::istream> St;
88 Przykład szablonu stosu template < typename TYP > class Stos TYP Tab[ROZ STOSU]; unsigned int Ilosc; public : Stos( ) Ilosc = 0; funkcji Podstawowa idea klas bool Pobierz(TYP& El) return! Ilosc? false : El = Tab[ Ilosc], true; ; bool Poloz(const TYP& El) return Ilosc >= ROZ STOSU? false : Tab[ Ilosc++] = El, true; int main( ) Stos<std::istream> St;
89 Przykład szablonu stosu template < typename TYP > class Stos TYP Tab[ROZ STOSU]; unsigned int Ilosc; public : Stos( ) Ilosc = 0; funkcji Podstawowa idea klas bool Pobierz(TYP& El) return! Ilosc? false : El = Tab[ Ilosc], true; ; bool Poloz(const TYP& El) return Ilosc >= ROZ STOSU? false : Tab[ Ilosc++] = El, true; int main( ) Stos<std::istream > St;
90 Przykład szablonu stosu template < typename TYP > class Stos TYP Tab[ROZ STOSU]; unsigned int Ilosc; public : Stos( ) Ilosc = 0; funkcji Podstawowa idea klas bool Pobierz(TYP& El) return! Ilosc? false : El = Tab[ Ilosc], true; ; bool Poloz(const TYP& El) return Ilosc >= ROZ STOSU? false : Tab[ Ilosc++] = El, true; int main( ) Stos<std::istream&> St;
91 Przykład szablonu stosu template < typename TYP > class Stos TYP Tab[ROZ STOSU]; unsigned int Ilosc; public : Stos( ) Ilosc = 0; funkcji Podstawowa idea klas bool Pobierz(TYP& El) return! Ilosc? false : El = Tab[ Ilosc], true; ; bool Poloz(const TYP& El) return Ilosc >= ROZ STOSU? false : Tab[ Ilosc++] = El, true; int main( ) Stos<std::istream&> St;
92 Przykład szablonu stosu template < typename TYP > class Stos TYP Tab[ROZ STOSU]; unsigned int Ilosc; public : Stos( ) Ilosc = 0; funkcji Podstawowa idea klas bool Pobierz(TYP& El) return! Ilosc? false : El = Tab[ Ilosc], true; ; bool Poloz(const TYP& El) return Ilosc >= ROZ STOSU? false : Tab[ Ilosc++] = El, true; int main( ) Stos< Stos< Stos< char[20] > > > St;
93 Przykład szablonu stosu template < typename TYP > class Stos TYP Tab[ROZ STOSU]; unsigned int Ilosc; public : Stos( ) Ilosc = 0; funkcji Podstawowa idea klas bool Pobierz(TYP& El) return! Ilosc? false : El = Tab[ Ilosc], true; ; bool Poloz(const TYP& El) return Ilosc >= ROZ STOSU? false : Tab[ Ilosc++] = El, true;
94 Przykład szablonu stosu template < typename TYP, unsigned int Rozmiar > class Stos TYP Tab[Rozmiar]; unsigned int Ilosc; public : Stos( ) Ilosc = 0; funkcji Podstawowa idea klas bool Pobierz(TYP& El) return! Ilosc? false : El = Tab[ Ilosc], true; ; bool Poloz(const TYP& El) return Ilosc >= Rozmiar? false : Tab[ Ilosc++] = El, true;
95 Przykład szablonu stosu template < typename TYP, unsigned int Rozmiar > class Stos TYP Tab[Rozmiar]; unsigned int Ilosc; public : Stos( ) Ilosc = 0; funkcji Podstawowa idea klas bool Pobierz(TYP& El) return! Ilosc? false : El = Tab[ Ilosc], true; ; bool Poloz(const TYP& El) return Ilosc >= Rozmiar? false : Tab[ Ilosc++] = El, true; int main( ) Stos<float, 100> St;
96 Przykład szablonu stosu funkcji Podstawowa idea klas template < typename TYP, unsigned int Rozmiar= 100 > class Stos TYP Tab[Rozmiar]; unsigned int Ilosc; public : Stos( ) Ilosc = 0; bool Pobierz(TYP& El) return! Ilosc? false : El = Tab[ Ilosc], true; ; bool Poloz(const TYP& El) return Ilosc >= Rozmiar? false : Tab[ Ilosc++] = El, true; int main( ) Stos<float, 100> St;
97 Przykład szablonu stosu funkcji Podstawowa idea klas template < typename TYP, unsigned int Rozmiar= 100 > class Stos TYP Tab[Rozmiar]; unsigned int Ilosc; public : Stos( ) Ilosc = 0; bool Pobierz(TYP& El) return! Ilosc? false : El = Tab[ Ilosc], true; ; bool Poloz(const TYP& El) return Ilosc >= Rozmiar? false : Tab[ Ilosc++] = El, true; int main( ) Stos<float> St;
98 Plan prezentacji funkcji Podstawowa idea klas 1 Konstruktory i operatory domyślne Klasy z polami referencyjnymi Klasa std::string 2 funkcji Podstawowa idea klas 3 o dostępie sekwencyjnym Szablon std::vector<> Jak przeglądać kolekcje idea iteratora
99 funkcji Podstawowa idea klas Klasa wektor plik nagłówkowy: wektor.hh #ifndef WEKTOR HH #define WEKTOR HH #include <iostream> #define ROZMIAR 3 #define TYP double class Wektor TYP Wsp[ ROZMIAR ]; public : Wektor( ); TYP operator [ ] (int Ind) const return Wsp[Ind]; TYP& operator [ ] (int Ind) return Wsp[Ind]; ; std::ostream & operator << (std::ostream & StrmWy, const Wektor & Wek); std::istream & operator >> (std::istream & StrmWe, Wektor & Wek); #endif
100 funkcji Podstawowa idea klas Klasa wektor plik modułu: wektor.cpp #include wektor.hh using namespace std; Wektor::Wektor( ) for (int Ind = 0; Ind < ROZMIAR; ++Ind) Tab[Ind] = 0; ostream & operator << (ostream & StrmWy, const Wektor & Wek)... istream & operator >> (istream & StrmWe, Wektor & Wek)...
101 funkcji Podstawowa idea klas Klasa wektor plik nagłówkowy: wektor.hh #ifndef WEKTOR HH #define WEKTOR HH #include <iostream> template <typename Typ, int Rozmiar> class Wektor private : Typ Wsp[ Rozmiar ]; public : Wektor(); Typ operator [ ] (unsigned int Ind) const return Wsp[Ind]; Typ& operator [ ] (unsigned int Ind) return Wsp[Ind]; ; #endif
102 funkcji Podstawowa idea klas Klasa wektor plik nagłówkowy: wektor.hh... template <typename Typ, int Rozmiar> class Wektor private : Typ Wsp[ Rozmiar ]; public : Wektor(); Typ operator [ ] (unsigned int Ind) const return Wsp[Ind]; Typ& operator [ ] (unsigned int Ind) return Wsp[Ind]; ; template <typename Typ, int Rozmiar> std::ostream & operator << (std::ostream & StrmWy, Wektor<Typ,Rozmiar>& Wek)... template <typename Typ, int Rozmiar> std::istream & operator >> (std::istream & StrmWe, Wektor<Typ,Rozmiar>& Wek)...
103 funkcji Podstawowa idea klas Klasa wektor plik nagłówkowy: wektor.hh... template <typename Typ, int Rozmiar> class Wektor... public : Wektor();... ; template <typename Typ, int Rozmiar> Wektor<Typ,Rozmiar>::Wektor() for (int Ind = 0; Ind < Rozmiar; ++Ind) Wsp[Ind] = 0;... template <typename Typ, int Rozmiar> std::istream & operator >> (std::istream & StrmWe, Wektor<Typ,Rozmiar>& Wek)...
104 funkcji Podstawowa idea klas Klasa wektor plik nagłówkowy: wektor.hh... inline bool Wczytaj OkreslonyZnak(std::istream &StrmWe, const char Wzorzec)... template <typename Typ> bool Wczytaj Liczbe OkreslonyZnak(std::istream & StrmWe, Typ & Liczba, const char Wzorzec)... template <typename Typ, int Rozmiar> std::istream & operator >> (std::istream & StrmWe, Wektor<Typ,Rozmiar>& Wek)......
105 Plan prezentacji funkcji Podstawowa idea klas 1 Konstruktory i operatory domyślne Klasy z polami referencyjnymi Klasa std::string 2 funkcji Podstawowa idea klas 3 o dostępie sekwencyjnym Szablon std::vector<> Jak przeglądać kolekcje idea iteratora
106 Szablon klasy Wektor w UML funkcji Podstawowa idea klas template <typename Typ, int Rozmiar> class Wektor private : Typ Wsp[ Rozmiar ]; public : Wektor(); Typ operator [ ] (unsigned int Ind) const return Wsp[Ind]; Typ& operator [ ] (unsigned int Ind) return Wsp[Ind]; ;
107 Klasa będąca instancją szablonu funkcji Podstawowa idea klas template <typename Typ, int Rozmiar> class Wektor private : Typ Wsp[ Rozmiar ]; public : Wektor(); Typ operator [ ] (unsigned int Ind) const return Wsp[Ind]; Typ& operator [ ] (unsigned int Ind) return Wsp[Ind]; ; Wektor<double, 3> W;
108 Plan prezentacji o dostępie sekwencyjnym Szablon std::vector<> Jak przeglądać kolekcje idea iteratora 1 Konstruktory i operatory domyślne Klasy z polami referencyjnymi Klasa std::string 2 funkcji Podstawowa idea klas 3 o dostępie sekwencyjnym Szablon std::vector<> Jak przeglądać kolekcje idea iteratora
109 Klasa będąca instancją szablonu o dostępie sekwencyjnym Szablon std::vector<> Jak przeglądać kolekcje idea iteratora vector dynamiczna tablica, deque kolejka wspierająca swobodny dostęp do dowolnego elementu, list lita dwukierukowa, forward list lista jednokierunkowa, array tablica o stałym rozmiarze, string kontener znakowy
110 Plan prezentacji o dostępie sekwencyjnym Szablon std::vector<> Jak przeglądać kolekcje idea iteratora 1 Konstruktory i operatory domyślne Klasy z polami referencyjnymi Klasa std::string 2 funkcji Podstawowa idea klas 3 o dostępie sekwencyjnym Szablon std::vector<> Jak przeglądać kolekcje idea iteratora
111 Klasa będąca instancją szablonu o dostępie sekwencyjnym Szablon std::vector<> Jak przeglądać kolekcje idea iteratora vec.front( ) zwraca pierwszy element, vec.back( ) zwraca ostatni element, vec[ i ] zwraca i-ty element (zakres nie jest sprawdzany), vec.at( i ) zwraca i-ty element (zakres jest sprawdzany, w przypadku błędu zgłaszany jest wyjątek out of range), vec.push back(e) dodaje na koniec kopie elementu e (może powodowaæ realokację pamięci), vec.pop back( ) usuwa ostatni element i nie zwraca go (może powodowaæ realokację pamięci), vec.size( ) zwraca aktualną liczbę elementów, vec.max size( ) zwraca największą możliwą ilość elementów jaką można zaalokować,
112 o dostępie sekwencyjnym Szablon std::vector<> Jak przeglądać kolekcje idea iteratora Klasa będąca instancją szablonu vec.begin( ) zwraca iterator wskazujący na pierwszy element, vec.end( ) zwraca iterator wskazujący na pozycję za ostatnim elementem, vec.rbegin( ) zwraca iterator dla iteracji odwrotnej wskazujący na ostatni element, vec.rend( ) zwraca iterator dla iteracji odwrotnej wskazujący na pozycję przed pierwszym elementem, std::vector<float> V1(6); float zm; for (int i=0; i < V1.size(); i++) V1[i] = 13; for (std::vector<float>::iterator iter = V1.begin(); iter!= V1.end(); ++iter) iter = 13
113 Plan prezentacji o dostępie sekwencyjnym Szablon std::vector<> Jak przeglądać kolekcje idea iteratora 1 Konstruktory i operatory domyślne Klasy z polami referencyjnymi Klasa std::string 2 funkcji Podstawowa idea klas 3 o dostępie sekwencyjnym Szablon std::vector<> Jak przeglądać kolekcje idea iteratora
114 Zbiór punktów struct Wektor int x, y; ; o dostępie sekwencyjnym Szablon std::vector<> Jak przeglądać kolekcje idea iteratora class ZbiorPunktow public :... private : unsigned int Rozmiar; Wektor wpunkty; ;......
115 o dostępie sekwencyjnym Szablon std::vector<> Jak przeglądać kolekcje idea iteratora Obiekt z dynamiczną tablicą elementów
116 Przeglądanie tablicy o dostępie sekwencyjnym Szablon std::vector<> Jak przeglądać kolekcje idea iteratora
117 Przeglądanie tablicy o dostępie sekwencyjnym Szablon std::vector<> Jak przeglądać kolekcje idea iteratora
118 Przeglądanie tablicy o dostępie sekwencyjnym Szablon std::vector<> Jak przeglądać kolekcje idea iteratora
119 Przeglądanie tablicy o dostępie sekwencyjnym Szablon std::vector<> Jak przeglądać kolekcje idea iteratora
120 Przeglądanie tablicy o dostępie sekwencyjnym Szablon std::vector<> Jak przeglądać kolekcje idea iteratora
121 Przeglądanie tablicy o dostępie sekwencyjnym Szablon std::vector<> Jak przeglądać kolekcje idea iteratora
122 Przeglądanie tablicy o dostępie sekwencyjnym Szablon std::vector<> Jak przeglądać kolekcje idea iteratora
123 Przeglądanie tablicy o dostępie sekwencyjnym Szablon std::vector<> Jak przeglądać kolekcje idea iteratora
124 Przeglądanie tablicy o dostępie sekwencyjnym Szablon std::vector<> Jak przeglądać kolekcje idea iteratora
125 Przeglądanie tablicy o dostępie sekwencyjnym Szablon std::vector<> Jak przeglądać kolekcje idea iteratora
126 Przeglądanie tablicy o dostępie sekwencyjnym Szablon std::vector<> Jak przeglądać kolekcje idea iteratora
127 Przeglądanie tablicy o dostępie sekwencyjnym Szablon std::vector<> Jak przeglądać kolekcje idea iteratora
128 Przeglądanie tablicy o dostępie sekwencyjnym Szablon std::vector<> Jak przeglądać kolekcje idea iteratora
129 Kontentery o różnej organizacji o dostępie sekwencyjnym Szablon std::vector<> Jak przeglądać kolekcje idea iteratora
130 Kontentery o różnej organizacji o dostępie sekwencyjnym Szablon std::vector<> Jak przeglądać kolekcje idea iteratora
131 Kontentery o różnej organizacji o dostępie sekwencyjnym Szablon std::vector<> Jak przeglądać kolekcje idea iteratora
132 o dostępie sekwencyjnym Szablon std::vector<> Jak przeglądać kolekcje idea iteratora Iterator zunifikowane przeglądanie kolekcji elementów
133 o dostępie sekwencyjnym Szablon std::vector<> Jak przeglądać kolekcje idea iteratora Iterator zunifikowane przeglądanie kolekcji elementów
134 o dostępie sekwencyjnym Szablon std::vector<> Jak przeglądać kolekcje idea iteratora Iterator zunifikowane przeglądanie kolekcji elementów
135 o dostępie sekwencyjnym Szablon std::vector<> Jak przeglądać kolekcje idea iteratora Iterator zunifikowane przeglądanie kolekcji elementów
136 Koniec prezentacji Dziękuję za uwagę
Wartości domyślne, szablony funkcji i klas
Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2012 Bogdan Kreczmer Niniejszy dokument
Bardziej szczegółowoSzablony funkcji i szablony klas
Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2011 Bogdan Kreczmer Niniejszy dokument
Bardziej szczegółowoWprowadzenie do szablonów szablony funkcji
Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2006 2010 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu na temat programowania obiektowego.
Bardziej szczegółowoWprowadzenie do szablonów szablony funkcji
Wprowadzenie do szablonów szablony funkcji Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2006 2010 Bogdan Kreczmer Niniejszy dokument zawiera materiały do
Bardziej szczegółowoWprowadzenie do szablonów klas
Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2008-2010 Bogdan Kreczmer Niniejszy
Bardziej szczegółowoQt po polsku. Bogdan Kreczmer.
Qt po polsku Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2013 Bogdan Kreczmer
Bardziej szczegółowoSzablon klasy std::vector
Szablon klasy std::vector Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2006 2010 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu na temat
Bardziej szczegółowoWykład 4 Wybrane zagadnienia programowania w C++
Wykład 4 Wybrane zagadnienia programowania w C++ Przykład programu obiektowego Dziedziczenie polimorfizm i metody wirtualne Wzorce (szablony) funkcji Wzorce klas 2016-01-03 Bazy danych-1 W4 1 Dziedziczenie
Bardziej szczegółowoDziedziczenie : Dziedziczenie to nic innego jak definiowanie nowych klas w oparciu o już istniejące.
Programowanie II prowadzący: Adam Dudek Lista nr 8 Dziedziczenie : Dziedziczenie to nic innego jak definiowanie nowych klas w oparciu o już istniejące. Jest to najważniejsza cecha świadcząca o sile programowania
Bardziej szczegółowoĆwiczenia IV - Kontenery (pojemniki)
Ćwiczenia IV - Kontenery (pojemniki) 28 października 2010 Kontener Kontener jest to obiekt który zawiera w sobie obiekty innej klasy i ma zdefiniowane metody nimi zarządzające. Jednym z najprostszych przykładów
Bardziej szczegółowoProgramowanie obiektowe w C++ Wykład 11
Programowanie obiektowe w C++ Wykład 11 dr Lidia Stępień Akademia im. Jana Długosza w Częstochowie L. Stępień (AJD) Programowanie obiektowe w C++ 1 / 34 STL - rys historyczny utworzona została w 1994 r.
Bardziej szczegółowoAlgorytmy i Struktury Danych.
Algorytmy i Struktury Danych. Standard Template Library. Część 1. Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 6 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych.
Bardziej szczegółowoPrzykład implementacji przeciażeń operatorów problem kolizji
Przykład implementacji przeciażeń operatorów problem kolizji Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2005 2008 Bogdan Kreczmer Niniejszy dokument zawiera
Bardziej szczegółowoProgramowanie 2. Język C++. Wykład 2.
2.1 Definicja, deklaracja, wywołanie funkcji.... 1 2.2 Funkcje inline... 4 2.3 Przekazanie do argumentu funkcji wartości, adresu zmiennej.... 5 2.4 Wskaźniki do funkcji... 8 2.5 Przeładowanie funkcji...
Bardziej szczegółowoFunkcje składowe (metody)
Funkcje składowe (metody) class Punkt int x, y; void Rysuj() /* rysowanie */ ; class Punkt int x, y; void Rysuj(); ; void Punkt::Rysuj() /* rysowanie */ definicja funkcji wewnątrz ciała klasy funkcja otwarta
Bardziej szczegółowoProjektowanie i programowanie obiektowe (materiały do wykładu cz. VI)
Projektowanie i programowanie obiektowe (materiały do wykładu cz. VI) Jacek Cichosz www.zssk.pwr.wroc.pl Katedra Systemów i Sieci Komputerowych Politechnika Wrocławska Dziedziczenie 221 Dziedziczenie Dziedziczenie
Bardziej szczegółowoKompozycja i dziedziczenie klas
Programowanie obiektowe Kompozycja i dziedziczenie klas Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski pwr.wroc.pl Kompozycja i dziedziczenie klas
Bardziej szczegółowoPROE wykład 7 kontenery tablicowe, listy. dr inż. Jacek Naruniec
PROE wykład 7 kontenery tablicowe, listy dr inż. Jacek Naruniec Prosty kontener oparty na tablicach Funkcja dodawanie pojedynczego słonia do kontenera: 1 2 3 4 5 6 7 11 12 13 14 15 16 17 21 22 23 24 25
Bardziej szczegółowo3-4. 5-7. 8-10. 11-12 15-18. 19-22
1. 2. 3-4. 5-7. 8-10. 11-12 13-14. 15-18. 19-22 23-28. 29-30. Programowanie strukturalne i obiektowe Typ wyliczeniowy, lista wyliczeniowa. Rzutowanie w C++. Wskaźniki i referencje. Działania na wskaźnikach.
Bardziej szczegółowoSpis treści 1. Wstęp 2. Projektowanie systemów informatycznych
Spis treści 1. Wstęp... 9 1.1. Inżynieria oprogramowania jako proces... 10 1.1.1. Algorytm... 11 1.2. Programowanie w językach wysokiego poziomu... 11 1.3. Obiektowe podejście do programowania... 12 1.3.1.
Bardziej szczegółowoKontenery. Wykład 12. Programowanie (język C++) Rodzaje kontenerów. Przegląd kontenerów
Programowanie (język C) Kontenery Wykład 12. Tomasz Marks - Wydział MiNI PW -1- Tomasz Marks - Wydział MiNI PW -2- Rodzaje kontenerów Kontenery sekwencyjne kolekcje uporządkowane, w których kaŝdy element
Bardziej szczegółowoQt sygnały i sloty. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Wydział Elektroniki Politechnika Wrocławska
Qt sygnały i sloty Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Katedra Cybernetyki i Robotyki Wydział Elektroniki Politechnika Wrocławska Kurs: Copyright c 2018 Bogdan Kreczmer Niniejszy dokument zawiera
Bardziej szczegółowo0.1 Hierarchia klas. 0.1.1 Diagram. 0.1.2 Krótkie wyjaśnienie
0.1 Hierarchia klas 0.1.1 Diagram 0.1.2 Krótkie wyjaśnienie Po pierwsze to jest tylko przykładowe rozwiązanie. Zarówno na wtorkowych i czwartkowych ćwiczeniach odbiegaliśmy od niego, ale nie wiele. Na
Bardziej szczegółowoPreprocesor języka C
języka C Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2012 Bogdan Kreczmer Niniejszy
Bardziej szczegółowoZaawansowane programowanie w C++ (PCP)
Zaawansowane programowanie w C++ (PCP) Wykład 6 - szablony. dr inż. Robert Nowak - p. 1/15 Kolekcje i algorytmy» Deklaracja szablonu y Pojęcia niezależne od typu: kolekcje (np. listy) algorytmy (np. znajdowania
Bardziej szczegółowoKurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016
Wykład 9 28 kwiecień 2016 Java Collections Framework (w C++ Standard Template Library) Kolekcja (kontener) Obiekt grupujacy/przechowuj acy jakieś elementy (obiekty lub wartości). Przykładami kolekcji sa
Bardziej szczegółowoDariusz 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ółowoKlasa std::string. Bogdan Kreczmer. ZPCiR IIAiR PWr pokój 307 budynek C3.
Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2006 2008 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu na temat programowania obiektowego.
Bardziej szczegółowoWstęp do programowania
Wieczorowe Studia Licencjackie Wrocław, 4..2006 Wstęp do programowania Wykład nr 7 (w oparciu o notatki K. Lorysia, z modyfikacjami) Obliczanie współczynnika dwumianowego Newtona. Definicja. n = m n! m!(
Bardziej szczegółowoPraca na wielu bazach danych część 2. (Wersja 8.1)
Praca na wielu bazach danych część 2 (Wersja 8.1) 1 Spis treści 1 Analizy baz danych... 3 1.1 Lista analityczna i okno szczegółów podstawowe informacje dla każdej bazy... 3 1.2 Raporty wykonywane jako
Bardziej szczegółowonp. tu - na pierwszej formatce kreatora zaznaczamy opcję nr 3
UŜytkowanie bazy danych polega na wstawianiu, filtrowaniu, usuwaniu, edycji, wyszukiwaniu i sortowaniu danych. MoŜna zaprojektować realizację powyŝszych czynności przy uŝyciu standardowych formantów. Oto
Bardziej szczegółowoSzablon klasy std::list
Szablon klasy std::list Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2006 2010 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu na temat programowania
Bardziej szczegółowoKonfiguracja historii plików
Wielu producentów oprogramowania oferuje zaawansowane rozwiązania do wykonywania kopii zapasowych plików użytkownika czy to na dyskach lokalnych czy w chmurze. Warto jednak zastanowić się czy instalacja
Bardziej szczegółowoProjektowanie klas c.d. Projektowanie klas przykład
Projektowanie klas c.d. ogólne wskazówki dotyczące projektowania klas: o wyodrębnienie klasy odpowiedź na potrzeby życia (obsługa rozwiązania konkretnego problemu) o zwykle nie uda się utworzyć idealnej
Bardziej szczegółowoParadygmaty programowania
Paradygmaty programowania Programowanie generyczne w C++ Dr inż. Andrzej Grosser Cz estochowa, 2016 2 Spis treści 1. Zadanie 3 5 1.1. Wprowadzenie.................................. 5 1.2. Obiekty funkcyjne................................
Bardziej szczegółowoclass A { public: A(): i(5), s("abc") { } int i; string s; };
UWAGA! PoniŜej są pytania z egzaminu, z zaznaczonymi poprawnymi odpowiedziami. Przy niektórych z nich napisałem jakieś słowo komentarza (czemu tak, a nie inaczej...). Przypominam, Ŝe zasada punktacji była
Bardziej szczegółowoPROGRAMOWANIE OBIEKTOWE W C++ cz. 2. Dziedziczenie, operacje wej cia-wyj cia, przeładowanie operatorów.
PROGRAMOWANIE OBIEKTOWE W C++ cz. 2 Dziedziczenie, operacje wej cia-wyj cia, przeładowanie operatorów. Dziedziczenie Dziedziczenie jest to technika pozwalaj c na definiowanie nowej klasy przy wykorzystaniu
Bardziej szczegółowoOprogramowanie klawiatury matrycowej i alfanumerycznego wyświetlacza LCD
Oprogramowanie klawiatury matrycowej i alfanumerycznego wyświetlacza LCD 1. Wprowadzenie DuŜa grupa sterowników mikroprocesorowych wymaga obsługi przycisków, które umoŝliwiają uŝytkownikowi uruchamianie
Bardziej szczegółowoOperatory 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ółowoJę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ółowoPrzykłady wybranych fragmentów prac egzaminacyjnych z komentarzami Technik ochrony fizycznej osób i mienia 515[01]
Przykłady wybranych fragmentów prac egzaminacyjnych z komentarzami Technik ochrony fizycznej osób i mienia 515[01] 1 2 3 4 5 6 Efektem rozwiązania zadania egzaminacyjnego przez zdającego była praca 7 egzaminacyjna,
Bardziej szczegółowoProgramowanie 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ółowoArchitektura Systemów Komputerowych. Sterowanie programem skoki Przerwania
Architektura Systemów Komputerowych Sterowanie programem skoki Przerwania 1 Sterowanie programem - skoki Kolejność wykonywania instrukcji programu jest zazwyczaj zgodna z kolejnością ich umiejscowienia
Bardziej szczegółowoWYKŁAD 8. Postacie obrazów na różnych etapach procesu przetwarzania
WYKŁAD 8 Reprezentacja obrazu Elementy edycji (tworzenia) obrazu Postacie obrazów na różnych etapach procesu przetwarzania Klasy obrazów Klasa 1: Obrazy o pełnej skali stopni jasności, typowe parametry:
Bardziej szczegółowoWstęp do programowania obiektowego. WYKŁAD 3 Dziedziczenie Pola i funkcje statyczne Funkcje zaprzyjaźnione, this
Wstęp do programowania obiektowego WYKŁAD 3 Dziedziczenie Pola i funkcje statyczne Funkcje zaprzyjaźnione, this 1 Nazwa typu Rozmiar Zakres Uwagi bool 1 bit wartości true albo false stdbool.h TYPY ZNAKOWE
Bardziej szczegółowoTematyka i rozwiązania metodyczne kolejnych zajęć lekcyjnych wraz z ćwiczeniami.
Tematyka i rozwiązania metodyczne kolejnych zajęć lekcyjnych wraz z ćwiczeniami. Zagadnienie tematyczne (blok tematyczny): Bazy danych (Podr.cz. II, str.109-138) Podstawa programowa: Rozwiązywanie problemów
Bardziej szczegółowoKonstruktor kopiujacy
Konstruktor kopiujacy Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Niniejszy dokument zawiera materiały do wykładu na temat programowania obiektowego. Jest on udostępniony
Bardziej szczegółowoPodstawy programowania
Podstawy programowania Elementy algorytmiki C w środowisku.e (C#) dr inŝ. Grzegorz Zych Copernicanum, pok. 104 lub 206a 1 Minimum programowe reści kształcenia: Pojęcie algorytmu. Podstawowe konstrukcje
Bardziej szczegółowoGEO-SYSTEM Sp. z o.o. GEO-RCiWN Rejestr Cen i Wartości Nieruchomości Podręcznik dla uŝytkowników modułu wyszukiwania danych Warszawa 2007
GEO-SYSTEM Sp. z o.o. 02-732 Warszawa, ul. Podbipięty 34 m. 7, tel./fax 847-35-80, 853-31-15 http:\\www.geo-system.com.pl e-mail:geo-system@geo-system.com.pl GEO-RCiWN Rejestr Cen i Wartości Nieruchomości
Bardziej szczegółowoWszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli.
Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną, fotograficzną,
Bardziej szczegółowoZaawansowane programowanie w języku C++ Biblioteka standardowa
Zaawansowane programowanie w języku C++ Biblioteka standardowa Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka
Bardziej szczegółowoSTA T T A YSTYKA Korelacja
STATYSTYKA Korelacja Pojęcie korelacji Korelacja (współzależność cech) określa wzajemne powiązania pomiędzy wybranymi zmiennymi. Charakteryzując korelację dwóch cech podajemy dwa czynniki: kierunek oraz
Bardziej szczegółowoJak usprawnić procesy controllingowe w Firmie? Jak nadać im szerszy kontekst? Nowe zastosowania naszych rozwiązań na przykładach.
Jak usprawnić procesy controllingowe w Firmie? Jak nadać im szerszy kontekst? Nowe zastosowania naszych rozwiązań na przykładach. 1 PROJEKTY KOSZTOWE 2 PROJEKTY PRZYCHODOWE 3 PODZIAŁ PROJEKTÓW ZE WZGLĘDU
Bardziej szczegółowoProgramowanie obiektowe, wykład nr 10. Metaprogramowanie cz.2: szablony struktur i klas
Dr hab. inż. Lucyna Leniowska, prof. UR, Zakład Mechatroniki, Automatyki i Optoelektroniki, IT Programowanie obiektowe, wykład nr 10 Metaprogramowanie cz.2: szablony struktur i klas Definiowanie szablonów
Bardziej szczegółowoAkademickie Centrum Informatyki PS. Wydział Informatyki PS
Akademickie Centrum Informatyki PS Wydział Informatyki PS Wydział Informatyki Sieci komputerowe i Telekomunikacyjne ROUTING Krzysztof Bogusławski tel. 4 333 950 kbogu@man.szczecin.pl 1. Wstęp 2. Tablica
Bardziej szczegółowoBazy danych II. Andrzej Grzybowski. Instytut Fizyki, Uniwersytet Śląski
Bazy danych II Andrzej Grzybowski Instytut Fizyki, Uniwersytet Śląski Wykład 11 Zastosowanie PHP do programowania aplikacji baz danych Oracle Wsparcie programowania w PHP baz danych Oracle Oprócz możliwego
Bardziej szczegółowoG PROGRAMMING. Part #4
G PROGRAMMING Part #4 Tablice, wykresy, klastry Tablice Zbiór elementów danych tego samego typu Zastosowanie gromadzenie danych z powtarzalnych operacji odczytu, obliczeń (magazynowanie danych przebiegów
Bardziej szczegółowoElementy animacji sterowanie manipulatorem
Elementy animacji sterowanie manipulatorem 1 Cel zadania Wykształcenie umiejętności korzystania z zapisu modelu aplikacji w UML oraz definiowania właściwego interfejsu klasy. 2 Opis zadania Należy napisać
Bardziej szczegółowoI. LOGICZNE STRUKTURY DRZEWIASTE
I LOGICZNE STRUKTURY DRZEWIASTE Analizując dany problem uzyskuje się zadanie projektowe w postaci pewnego zbioru danych Metoda morfologiczna, która została opracowana w latach 1938-1948 przez amerykańskiego
Bardziej szczegółowoSTL: Lekcja 1&2. Filozofia STL
STL: Lekcja 1&2 Tematy: Filozofia STL Po co nam STL? Podstawowa zawartość STL Co warto znać zanim zaczniemy pracę z STL?: wskaźniki Praca na tekstach: klasa String Vector: nowy wymiar standardowych tablic.
Bardziej szczegółowoParadygmaty programowania. Paradygmaty programowania
Paradygmaty programowania Paradygmaty programowania Dr inż. Andrzej Grosser Cz estochowa, 2013 2 Spis treści 1. Zadanie 2 5 1.1. Wprowadzenie.................................. 5 1.2. Wskazówki do zadania..............................
Bardziej szczegółowoWdrożenie modułu płatności eservice dla systemu Virtuemart 2.0.x
Wdrożenie modułu płatności eservice dla systemu Virtuemart 2.0.x Wersja 02 Styczeń 2016 Centrum Elektronicznych Usług Płatniczych eservice Sp. z o.o. Spis treści 1. Wstęp... 3 1.1. Przeznaczenie dokumentu...
Bardziej szczegółowoSpis treści. Rozdział 1 ewyniki. mmedica - INSTR UKC JA UŻYTKO W NIKA
Wersja 5.1.9 Spis treści Rozdział 1 1.1 1.1.1 1.1.2 1.2 1.3 1.4 1.5 I Konfiguracja... 1-1 OID świadczeniodawcy... 1-2 Dodanie... instytucji zewnętrznej 1-4 Dodanie... zlecenia 1-11 Pobranie... materiału
Bardziej szczegółowoKLAUZULE ARBITRAŻOWE
KLAUZULE ARBITRAŻOWE KLAUZULE arbitrażowe ICC Zalecane jest, aby strony chcące w swych kontraktach zawrzeć odniesienie do arbitrażu ICC, skorzystały ze standardowych klauzul, wskazanych poniżej. Standardowa
Bardziej szczegółowo2. Klasy cz. 2 - Konstruktor kopiujący. Pola tworzone statycznie i dynamicznie - Funkcje zaprzyjaźnione - Składowe statyczne
Tematyka wykładów 1. Wprowadzenie. Klasy cz. 1 - Język C++. Programowanie obiektowe - Klasy i obiekty - Budowa i deklaracja klasy. Prawa dostępu - Pola i funkcje składowe - Konstruktor i destruktor - Tworzenie
Bardziej szczegółowoLaboratorium Podstawy Przetwarzania Rozproszonego SPRAWOZDANIE z zadania SERWIS KOMPUTEROWY
Laboratorium Podstawy Przetwarzania Rozproszonego SPRAWOZDANIE z zadania SERWIS KOMPUTEROWY Nazwisko Imię album termin zajęć Marek Lewandowski 59817 Maciej Mietliński 59832 poniedziałek 18:30 tydzień nieparzysty
Bardziej szczegółowoOperacje 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ółowo1. Podstawy budowania wyra e regularnych (Regex)
Dla wi kszo ci prostych gramatyk mo na w atwy sposób napisa wyra enie regularne które b dzie s u y o do sprawdzania poprawno ci zda z t gramatyk. Celem niniejszego laboratorium b dzie zapoznanie si z wyra
Bardziej szczegółowoWstę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 4 Funkcje przeciażone - Idea Przeciażanie funkcji (polimorfizm funkcji), to kolejna nowość w języku
Bardziej szczegółowoRozliczenia z NFZ. Ogólne założenia. Spis treści
Rozliczenia z NFZ Spis treści 1 Ogólne założenia 2 Generacja raportu statystycznego 3 Wczytywanie raportu zwrotnego 4 Szablony rachunków 4.1 Wczytanie szablonów 4.2 Wygenerowanie dokumentów rozliczenia
Bardziej szczegółowoAbstrakcyjny typ danych
Abstrakcyjny typ danych Abstrakcyjny Typ Danych (abstract data type-adt): zbiór wartości wraz z powiązanymi z nimi operacjami; operacje są zdefiniowane w sposób niezależny od implementacji; operacje są
Bardziej szczegółowoKurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016
Wykład 2 17 marca 2016 Dziedziczenie Klasy bazowe i potomne Dziedziczenie jest łatwym sposobem rozwijania oprogramowania. Majac klasę bazowa możemy ja uszczegółowić (dodać nowe pola i metody) nie przepisujac
Bardziej szczegółowoOpis programu do wizualizacji algorytmów z zakresu arytmetyki komputerowej
Opis programu do wizualizacji algorytmów z zakresu arytmetyki komputerowej 3.1 Informacje ogólne Program WAAK 1.0 służy do wizualizacji algorytmów arytmetyki komputerowej. Oczywiście istnieje wiele narzędzi
Bardziej szczegółowoPROGRAMOWANIE OBIEKTOWE W C++ - cz 1. Definicja klasy, składniki klasy, prawa dost pu, definiowanie funkcji składowych, konstruktory i destruktory.
PROGRAMOWANIE OBIEKTOWE W C++ - cz 1 Definicja klasy, składniki klasy, prawa dost pu, definiowanie funkcji składowych, konstruktory i destruktory. Program komputerowy opisuje w pewien sposób rzeczywisto.
Bardziej szczegółowoInformacje o omawianym programie. Założenia programu omawianego w przykładzie
1 Komunikacja człowiek - komputer Przedmiot: Komunikacja człowiek - komputer Ćwiczenie: 3 Temat dwiczenia: Projektowanie interfejsu programu typu bazodanowego dr Artur Bartoszewski CZĘŚD I analiza przykładowego
Bardziej szczegółowoSystem do kontroli i analizy wydawanych posiłków
System do kontroli i analizy wydawanych posiłków K jak KORZYŚCI C jak CEL W odpowiedzi na liczne pytania odnośnie rozwiązania umożliwiającego elektroniczną ewidencję wydawanych posiłków firma PControl
Bardziej szczegółowoPodstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.
M. Trzebiński C++ 1/14 Podstawy języka C++ Maciej Trzebiński Instytut Fizyki Jądrowej Polskiej Akademii Nauk Praktyki studenckie na LHC IVedycja,2016r. IFJ PAN Przygotowanie środowiska pracy Niniejsza
Bardziej szczegółowoAlgorytmy i Struktury Danych. Anna Paszyńska
Algorytmy i Struktury Danych Anna Paszyńska Tablica dynamiczna szablon Array Zbiory Zbiory template class Container {public: virtual ~Container() { }; virtual int Count() const = 0;
Bardziej szczegółowoAPI transakcyjne BitMarket.pl
API transakcyjne BitMarket.pl Wersja 20140314 1. Sposób łączenia się z API... 2 1.1. Klucze API... 2 1.2. Podpisywanie wiadomości... 2 1.3. Parametr tonce... 2 1.4. Odpowiedzi serwera... 3 1.5. Przykładowy
Bardziej szczegółowoKurs programowania. Wykład 9. Wojciech Macyna
Wykład 9 Java Collections Framework (w C++ Standard Template Library) Kolekcja (kontener) Obiekt grupujacy/przechowuj acy jakieś elementy (obiekty lub wartości). Przykładami kolekcji sa zbiór, lista czy
Bardziej szczegółowoProgramowanie obiektowe - Przykładowe zadania egzaminacyjne (2005/2006)
Programowanie obiektowe - Przykładowe zadania egzaminacyjne (2005/2006) Część 1. Teoria Wyjaśnij pojęcia, podaj przykład: klasa obiekt konstruktor destruktor kapsułkowanie (hermetyzacja) wskaźnik this
Bardziej szczegółowoStrategia rozwoju kariery zawodowej - Twój scenariusz (program nagrania).
Strategia rozwoju kariery zawodowej - Twój scenariusz (program nagrania). W momencie gdy jesteś studentem lub świeżym absolwentem to znajdujesz się w dobrym momencie, aby rozpocząć planowanie swojej ścieżki
Bardziej szczegółowoCharakterystyka systemów plików
Charakterystyka systemów plików Systemy plików są rozwijane wraz z systemami operacyjnymi. Windows wspiera systemy FAT oraz system NTFS. Różnią się one sposobem przechowywania informacji o plikach, ale
Bardziej szczegółowoProgramowanie w C++ Wykład 6. Katarzyna Grzelak. kwiecień K.Grzelak (Wykład 6) Programowanie w C++ 1 / 40
Programowanie w C++ Wykład 6 Katarzyna Grzelak kwiecień 2019 K.Grzelak (Wykład 6) Programowanie w C++ 1 / 40 STL - powtórzenie STL Standard Template Libarary standardowa biblioteka szablonów Składowe biblioteki:
Bardziej szczegółowoZaawansowane programowanie w języku C++ Funkcje uogólnione - wzorce
Zaawansowane programowanie w języku C++ Funkcje uogólnione - wzorce Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka
Bardziej szczegółowoV. Wymagania dla wsparcia projektu oraz nadzoru eksploatacyjnego... 6
ZAŁĄCZNIK NR 5 Postępowania nr EU/12/ZI/ZZ/2011o udzielenie zamówienia w trybie przetargu nieograniczonego na: Opracowanie, wykonanie i wdrożenie SYSTEMU BOOKINGÓW DLA LINII ŻEGLUGOWYCH SPECYFIKACJA TECHNICZNA
Bardziej szczegółowoQt sygnały i designer
Qt sygnały i designer Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2015 Bogdan
Bardziej szczegółowoSpis treści OPERACJE NA TEKSTACH W JĘZYKU C++ Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF31
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ółowoNowe funkcjonalności
Nowe funkcjonalności 1 I. Aplikacja supermakler 1. Nowe notowania Dotychczasowe notowania koszykowe, z racji ograniczonej możliwości personalizacji, zostały zastąpione nowymi tabelami z notowaniami bieżącymi.
Bardziej szczegółowoPOLITYKA PRYWATNOŚCI SKLEPU INTERNETOWEGO
POLITYKA PRYWATNOŚCI SKLEPU INTERNETOWEGO www.tokyotey.pl 1. Zagadnienia wstępne. 1. Pod pojęciem Serwisu rozumie się stronę internetową znajdującą się pod adresem www.tokyotey.pl wraz z wszelkimi podstronami
Bardziej szczegółowoWskaznik. Przekazywanie wyniku funkcji przez return. Typy i zmienne wskaznikowe. Zmienna wskazywana. typ * nazwa_wkaznika
Wyklad 6 Typy i zmienne: wskaznikowe, referencyjne Funkcje deklaracja, definicja. Zasieg deklaracji i widocznosc zmiennych Przekazywanie parametrów przez wartosc, referencje i wskaznik Przekazywanie wyniku
Bardziej szczegółowoWzorce funkcji (szablony)
Wzorce funkcji (szablony) Wzorce funkcji (ang. function template) dają możliwość wielokrotnego wykorzystywania tego samego kodu funkcji dla różnych typów danych. Załóżmy, że chcemy zdefiniować funkcję
Bardziej szczegółowoKATEDRA INFORMATYKI STOSOWANEJ PŁ ANALIZA I PROJEKTOWANIE SYSTEMÓW INFORMATYCZNYCH
KATEDRA INFORMATYKI STOSOWANEJ PŁ ANALIZA I PROJEKTOWANIE SYSTEMÓW INFORMATYCZNYCH Przygotował: mgr inż. Radosław Adamus 1 1 Na podstawie: Subieta K., Język UML, V Konferencja PLOUG, Zakopane, 1999. Wprowadzenie
Bardziej szczegółowoKurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016
Wykład 1 3 marca 2016 Słowa kluczowe języka Java abstract, break, case, catch, class, const, continue, default, do, else, enum, extends, final, finally, for, goto, if, implements, import, instanceof, interface,
Bardziej szczegółowoIMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi
IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi EGZAMIN PIERWSZY (25 CZERWCA 2013) JĘZYK C++ poprawiam ocenę pozytywną z egzaminu 0 (zakreśl poniżej x) 1. Wśród poniższych wskaż poprawną formę definicji
Bardziej szczegółowoobiekty funkcyjne - funktory
#include #include #include #include #include #include #include #include #include #include using namespace
Bardziej szczegółowoWytyczne dla środków masowego przekazu
Wytyczne dla środków masowego przekazu ZASADY korzystania ze znaków PZPN przez środki masowego przekazu Nowe znaki PZPN są jedynie obowiązującymi. Dotychczasowych logotypów można używać wyłącznie do celów
Bardziej szczegółowoInformatyka, I stopień. Programowanie (PRO300.1)
Uniwersytet Śląski w Katowicach str. 1 Kierunek i poziom studiów: Informatyka, I stopień Sylabus modułu: Programowanie (PRO0.1) Nazwa wariantu modułu (opcjonalnie): 1. Informacje ogólne koordynator modułu
Bardziej szczegółowoSystem zarządzania bazą danych (SZBD) Proces przechodzenia od świata rzeczywistego do jego informacyjnej reprezentacji w komputerze nazywać będziemy
System zarządzania bazą danych (SZBD) Proces przechodzenia od świata rzeczywistego do jego informacyjnej reprezentacji w komputerze nazywać będziemy modelowaniem, a pewien dobrze zdefiniowany sposób jego
Bardziej szczegółowo