Wartości domyślne, szablony funkcji i klas

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

Download "Wartości domyślne, szablony funkcji i klas"

Transkrypt

1 Bogdan Kreczmer Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2012 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 1 Wartości domyślne 2 Podstawowa idea Własności szablonów w praktyce 3 Najważniejsze cechy Proste szablony 4 Ogólna idea

4 Plan prezentacji Wartości domyślne 1 Wartości domyślne 2 Podstawowa idea Własności szablonów w praktyce 3 Najważniejsze cechy Proste szablony 4 Ogólna idea

5 Cel Wartości domyślne Zbudujmy program, który umożliwi wyliczanie współrzędnych punktów dla rodziny parabol:

6 Cel Wartości domyślne Zbudujmy program, który umożliwi wyliczanie współrzędnych punktów dla rodziny parabol:

7 Cel Wartości domyślne Zbudujmy program, który umożliwi wyliczanie współrzędnych punktów dla rodziny parabol:

8 Cel Wartości domyślne Zbudujmy program, który umożliwi wyliczanie współrzędnych punktów dla rodziny parabol: Ogólna postać równania: y = ax 2 + b

9 Implementacja Wartości domyślne float Parabola(float x, float a, float b) return a x x+b;

10 Implementacja Wartości domyślne float Parabola(float x, float a, float b) return a x x+b; int main() float y, x=5; y = Parabola(x,1,0);

11 Definiowanie wartości domyślnych float Parabola(float x, float a, float b = 0) return a x x+b; int main() float y, x=5; y = Parabola(x,1,0);

12 Korzystanie z wartości domyślnych float Parabola(float x, float a, float b = 0) return a x x+b; int main() float y, x=5; y = Parabola(x,1);

13 Korzystanie z wartości domyślnych float Parabola(float x, float a, float b= 0) return a x x+b; int main() float y, x=5; y = Parabola(x,1); // Parabola(x,1,0)

14 Korzystanie z wartości domyślnych float Parabola(float x, float a = 1, float b= 0) return a x x+b; int main() float y, x=5; y = Parabola(x,1);

15 Korzystanie z wartości domyślnych float Parabola(float x, float a = 1, float b= 0) return a x x+b; int main() float y, x=5; y = Parabola(x);

16 Korzystanie z wartości domyślnych float Parabola(float x, float a = 1, float b= 0) return a x x+b; int main() float y, x=5; y = Parabola(x); // Parabola(x,1,0)

17 Korzystanie z wartości domyślnych float Parabola(float x, float a = 1, float b= 0) return a x x+b; int main() float y, x=5; y = Parabola(x); Co zrobić jeśli chcemy aby a = 2?

18 Korzystanie z wartości domyślnych float Parabola(float x, float a = 1, float b= 0) return a x x+b; int main() float y, x=5; y = Parabola(x,2);

19 Korzystanie z wartości domyślnych float Parabola(float x, float a = 1, float b= 0) return a x x+b; int main() float y, x=5; y = Parabola(x,2); // Parabola(x,2,0)

20 Korzystanie z wartości domyślnych float Parabola(float x, float a = 1, float b= 0) return a x x+b; int main() float y, x=5; y = Parabola(x,2); A jeśli ma być b = 5?

21 Korzystanie z wartości domyślnych float Parabola(float x, float a = 1, float b= 0) return a x x+b; int main() float y, x=5; y = Parabola(x,2,5);

22 Korzystanie z wartości domyślnych float Parabola(float x, float a = 1, float b= 0) return a x x+b; int main() float y, x=5; y = Parabola(x,2,5); A jeśli chcemy aby a = 1 i b = 5?

23 Korzystanie z wartości domyślnych float Parabola(float x, float a = 1, float b= 0) return a x x+b; int main() float y, x=5; y = Parabola(x,5); A jeśli chcemy aby a = 1 i b = 5? Czy można tak?

24 Korzystanie z wartości domyślnych float Parabola(float x, float a = 1, float b= 0) return a x x+b; int main() float y, x=5; y = Parabola(x,,5); A jeśli chcemy aby a = 1 i b = 5? A może tak?

25 Korzystanie z wartości domyślnych float Parabola(float x, float a = 1, float b= 0) return a x x+b; int main() float y, x=5; y = Parabola(x,1,5); Jeśli chcemy zmodyfikować wartość jednego z parametrów domyślnych, to musimy podać wartości wszystkich parametrów, aż do miejsca, na którym występuje zmodyfikowana wartość.

26 Korzystanie z wartości domyślnych void PokazOdleglosc( float t, float a = 9.81, const char Jedn = m )

27 Korzystanie z wartości domyślnych void PokazOdleglosc( float t, float a = 9.81, const char Jedn = m ) cout << a pow(t,2)/2 << Jedn << endl;

28 Korzystanie z wartości domyślnych void PokazOdleglosc( float t, float a = 9.81, const char Jedn = m ) cout << a pow(t,2)/2 << Jedn << endl; PokazOdleglosc(1, 9.81, cm );

29 Korzystanie z wartości domyślnych void PokazOdleglosc( float t, float a = 9.81, const char Jedn = m ) cout << a pow(t,2)/2 << Jedn << endl; PokazOdleglosc(1, cm ); Czy można to skrócić korzystając z tego, że zadeklarowane wartości domyślne dla a i Jedn są różne od Jedn?

30 Korzystanie z wartości domyślnych void PokazOdleglosc( float t, float a = 9.81, const char Jedn = m ) cout << a pow(t,2)/2 << Jedn << endl; PokazOdleglosc(1, cm ); Tego typu wywołanie jest niepoprawne. To że parametry są różnego typu nie ma żadnego znaczenia.

31 Korzystanie z wartości domyślnych void PokazOdleglosc( float t, float a = 9.81, const char Jedn = m ) cout << a pow(t,2)/2 << Jedn << endl; PokazOdleglosc(1, 9.81, cm ); Jedyną poprawną formą jest wypisanie wszystkich wartości parametrów pośrednich, niezależnie od tego czy są one zgodne z wartościami domyślnymi, czy też nie.

32 Korzystanie z wartości domyślnych void PokazOdleglosc( float t, float a = 9.81, const char Jedn = m ) cout << a pow(t,2)/2 << Jedn << endl; PokazOdleglosc(1); Powróćmy do wywołania funkcji korzystającego z wartości domyślnych

33 Zapowiedź definicji funkcji PokazOdleglosc(1); void PokazOdleglosc( float t, float a = 9.81, const char Jedn = m ) cout << a pow(t,2)/2 << Jedn << endl;

34 Zapowiedź definicji funkcji PokazOdleglosc(1); void PokazOdleglosc( float t, float a = 9.81, const char Jedn = m ) cout << a pow(t,2)/2 << Jedn << endl;

35 Zapowiedź definicji funkcji PokazOdleglosc(1); void PokazOdleglosc( float t, float a = 9.81, const char Jedn = m ) cout << a pow(t,2)/2 << Jedn << endl; Wywołanie funkcji przed jej definicją jest możliwe wtedy i tylko wtedy, gdy wcześniej wystąpi nagłówek zapowiedzi definicji.

36 Zapowiedź definicji funkcji void PokazOdleglosc( float t, float a = 9.81, const char Jedn = m ); PokazOdleglosc(1); void PokazOdleglosc( float t, float a = 9.81, const char Jedn = m ) cout << a pow(t,2)/2 << Jedn << endl; To też nie jest dobrze.

37 Zapowiedź definicji funkcji void PokazOdleglosc( float t, float a = 9.81, const char Jedn = m ); PokazOdleglosc(1); void PokazOdleglosc( float t, float a = 9.81, const char Jedn = m ) cout << a pow(t,2)/2 << Jedn << endl; Jeżeli w jednostce translacyjnej występuje zapowiedź definicji z parametrami domyślnymi oraz sama definicja, to wartości tych parametrów mogą być zadeklarowane tylko raz w nagłówku jej zapowiedzi.

38 Zapowiedź definicji funkcji void PokazOdleglosc( float t, float a = 9.81, const char Jedn = m ); PokazOdleglosc(1); void PokazOdleglosc( float t, float a, const char Jedn ) cout << a pow(t,2)/2 << Jedn << endl; Teraz jest już dobrze.

39 Zapowiedź definicji funkcji void PokazOdleglosc( float t, float a = 9.81, const char Jedn = m ); PokazOdleglosc(1); void PokazOdleglosc( float t, float a, const char Jedn ) cout << a pow(t,2)/2 << Jedn << endl;

40 Zapowiedź definicji funkcji prog.cpp void PokazOdleglosc( float t, float a = 9.81, const char Jedn = m ); PokazOdleglosc(1); void PokazOdleglosc( float t, float a, const char Jedn ) cout << a pow(t,2)/2 << Jedn << endl; modul.cpp

41 Zapowiedź definicji funkcji prog.cpp void PokazOdleglosc( float t, float a = 9.81, const char Jedn = m ); PokazOdleglosc(1); void PokazOdleglosc( float t, float a, const char Jedn ) cout << a pow(t,2)/2 << Jedn << endl; modul.cpp Jeżeli występuje więcej jednostek translacyjnych, to ta sama funkcja może być różnie traktowana w każdej z nich.

42 Zapowiedź definicji funkcji prog.cpp void PokazOdleglosc( float t, float a = 9.81, const char Jedn = m ); PokazOdleglosc(1); void PokazOdleglosc( float t, float a = 981, const char Jedn = cm ) cout << a pow(t,2)/2 << Jedn << endl; modul.cpp Wartości parametrów domyślnych mogą być różne w każdej z nich lub w ogóle mogą nie występować. To nie jest jednak dobre rozwiązanie.

43 Zapowiedź definicji funkcji prog.cpp void PokazOdleglosc( float t, float a = 9.81, const char Jedn = m ); PokazOdleglosc(1); void PokazOdleglosc( float t, float a = 981, const char Jedn = cm ) cout << a pow(t,2)/2 << Jedn << endl; modul.cpp Wartości parametrów domyślnych mogą być różne w każdej z nich lub w ogóle mogą nie występować. To nie jest jednak dobre rozwiązanie.

44 Zapowiedź definicji funkcji void PokazOdleglosc( float t, float a = 9.81, const char Jedn = m ); PokazOdleglosc(1); void PokazOdleglosc( float t, float a = 981, const char Jedn = cm ) cout << a pow(t,2)/2 << Jedn << endl; modul.hpp prog.cpp modul.cpp Lepszym rozwiązaniem jest wydzielenie pliku nagłówkowe.

45 Zapowiedź definicji funkcji void PokazOdleglosc( float t, float a = 9.81, const char Jedn = m ); #include modul.hpp PokazOdleglosc(1); void PokazOdleglosc( float t, float a = 981, const char Jedn = cm ) cout << a pow(t,2)/2 << Jedn << endl; modul.hpp prog.cpp modul.cpp

46 Zapowiedź definicji funkcji void PokazOdleglosc( float t, float a = 9.81, const char Jedn = m ); #include modul.hpp PokazOdleglosc(1); modul.hpp prog.cpp #include modul.hpp void PokazOdleglosc( float t, float a, const char Jedn ) cout << a pow(t,2)/2 << Jedn << endl; modul.cpp Dodanie pliku nagłówkowego zapobiega niejednoznacznemu traktowania parametrów domyślnych.

47 Zapowiedź definicji funkcji void PokazOdleglosc( float t, float a = 9.81, const char Jedn = m ); #include modul.hpp PokazOdleglosc(1); modul.hpp prog.cpp #include modul.hpp void PokazOdleglosc( float t, float a, const char Jedn ) cout << a pow(t,2)/2 << Jedn << endl; modul.cpp Nie jest to jednak jedyny niezbędny plik nagłówkowy.

48 Zapowiedź definicji funkcji void PokazOdleglosc( float t, float a = 9.81, const char Jedn = m ); #include modul.hpp PokazOdleglosc(1); modul.hpp prog.cpp #include modul.hpp #include <cmath> void PokazOdleglosc( float t, float a, const char Jedn ) cout << a pow(t,2)/2 << Jedn << endl; modul.cpp

49 Plan prezentacji Wartości domyślne 1 Wartości domyślne 2 Podstawowa idea Własności szablonów w praktyce 3 Najważniejsze cechy Proste szablony 4 Ogólna idea

50 Domyślne wartości parametrów dla metod class LZespolona public : float re, im; ; void Zmien(float r, float i) re = r; im = i; LZespolona Z; Z.re = 2.1; Z.im = 0;

51 Domyślne wartości parametrów dla metod class LZespolona public : float re, im; ; void Zmien(float r, float i) re = r; im = i; LZespolona Z; Z.Zmien(2.1, 0);

52 Domyślne wartości parametrów dla metod class LZespolona public : float re, im; ; void Zmien(float r, float i) re = r; im = i; LZespolona Z; Z.Zmien(2.1);

53 Domyślne wartości parametrów dla metod class LZespolona public : float re, im; ; void Zmien(float r, float i = 0) re = r; im = i; LZespolona Z; Z.Zmien(2.1);

54 Definiowanie metody poza ciałem klasy class LZespolona public : float re, im; ; void Zmien(float r, float i = 0); void LZespolona::Zmien(float r, float i) re = r; im = i; LZespolona Z; Z.Zmien(2.1);

55 Wartości domyślne versus przeciążenie class LZespolona public : float re, im; ; void Zmien(float r, float i = 0) re = r; im = i; LZespolona Z; Z.Zmien(2.1);

56 Wartości domyślne versus przeciążenie class LZespolona public : float re, im; ; void Zmien(float r, float i) re = r; im = i; void Zmien(float r) re = r; LZespolona Z; Z.Zmien(2.1);

57 Plan prezentacji Wartości domyślne 1 Wartości domyślne 2 Podstawowa idea Własności szablonów w praktyce 3 Najważniejsze cechy Proste szablony 4 Ogólna idea

58 Konstruktor bezparametryczny class LZespolona public : float re, im; ; LZespolona Z1;

59 Konsekwencje wartości domyślnych class LZespolona public : float re, im; ; LZespolona( ) re = im = 0; LZespolona Z1;

60 Konsekwencje wartości domyślnych class LZespolona public : float re, im; ; LZespolona( ) re = im = 0; LZespolona Z1; LZespolona Z2(4,6);

61 Konsekwencje wartości domyślnych class LZespolona public : float re, im; ; LZespolona(float r,float i) re = r; im = i; LZespolona( ) re = im = 0; LZespolona Z1; LZespolona Z2(4,6);

62 Konsekwencje wartości domyślnych class LZespolona public : float re, im; ; LZespolona(float r = 0, float i = 0) re = r; im = i; LZespolona Z1; LZespolona Z2(4,6);

63 Konsekwencje wartości domyślnych class LZespolona public : float re, im; ; LZespolona(float r = 0, float i = 0) re = r; im = i; LZespolona Z1; LZespolona Z2(4,6); LZespolona Z3(4);

64 Konsekwencje wartości domyślnych class LZespolona public : float re, im; ; LZespolona( ) re = im = 0; LZespolona(float r) re = r; im = 0; LZespolona(float r, float i) re = r; im = i; LZespolona Z1; LZespolona Z2(4,6); LZespolona Z3(4);

65 Konsekwencje wartości domyślnych class LZespolona public : float re, im; ; LZespolona( ) re = im = 0; LZespolona(float r) re = r; im = 0; LZespolona(float r, float i) re = r; im = i; LZespolona Z1; LZespolona Z2(4,6); LZespolona Z3(4);

66 Konsekwencje wartości domyślnych class LZespolona public : float re, im; ; LZespolona( ) re = im = 0; LZespolona(float r) re = r; im = 0; LZespolona(float r, float i) re = r; im = i; LZespolona Z; Z = 9;

67 Konsekwencje wartości domyślnych class LZespolona public : float re, im; bool operator == (const LZespolona Z2) const... ; LZespolona( ) re = im = 0; LZespolona(float r) re = r; im = 0; LZespolona(float r, float i) re = r; im = i; LZespolona Z; if ( Z == 7 )...

68 Konsekwencje wartości domyślnych class LZespolona public : float re, im; ; LZespolona( ) re = im = 0; LZespolona(float r) re = r; im = 0; LZespolona(float r, float i) re = r; im = i; LZespolona FunkcjaZ(LZespolona Z)... double LiczbaD; FunkcjaZ(LiczbaD);

69 Konsekwencje wartości domyślnych class LZespolona public : float re, im; ; LZespolona( ) re = im = 0; explicit LZespolona(float r) re = r; im = 0; LZespolona(float r, float i) re = r; im = i; LZespolona FunkcjaZ(LZespolona Z)... double LiczbaD; FunkcjaZ(LiczbaD);

70 Konsekwencje wartości domyślnych class LZespolona public : float re, im; ; LZespolona(float r = 0, float i = 0) re = r; im = i; LZespolona FunkcjaZ(LZespolona Z)... double LiczbaD; FunkcjaZ(LZespolona(LiczbaD));

71 Konsekwencje wartości domyślnych class LZespolona public : float re, im; ; explicit LZespolona(float r = 0, float i = 0)... LZespolona FunkcjaZ(LZespolona Z)... double LiczbaD; FunkcjaZ(LZespolona(LiczbaD));

72 Konsekwencje wartości domyślnych class LZespolona public : float re, im; ; explicit LZespolona( ) re = im = 0; explicit LZespolona(float r) re = r; im = 0; explicit LZespolona(float r, float i) re = r; im = i; LZespolona FunkcjaZ(LZespolona Z)... double LiczbaD; FunkcjaZ(LZespolona(LiczbaD));

73 Konsekwencje wartości domyślnych class LZespolona public : float re, im; ; explicit LZespolona(float r = 0, float i = 0)... LZespolona FunkcjaZ(LZespolona Z)... double LiczbaD; FunkcjaZ(LZespolona(LiczbaD));

74 Problemy... Wartości domyślne class Wektor public : float x, y; bool operator == (const Wektor W2) const... ; Wektor(float x nowa = 0, float y nowa = 0)... Wektor W; if ( W == 7 )...

75 Problemy... Wartości domyślne class Wektor public : float x, y; bool operator == (const Wektor W2) const... ; explicit Wektor(float x nowa = 0, float y nowa = 0)... Wektor W; if ( W == 7 )...

76 Plan prezentacji Wartości domyślne Podstawowa idea Własności szablonów w praktyce 1 Wartości domyślne 2 Podstawowa idea Własności szablonów w praktyce 3 Najważniejsze cechy Proste szablony 4 Ogólna idea

77 Problemy z tłumaczeniem Podstawowa idea Własności szablonów w praktyce template wzorzec szablon

78 Problemy z tłumaczeniem Podstawowa idea Własności szablonów w praktyce template wzorzec szablon

79 Dlaczego szablony? Wartości domyślne Podstawowa idea Własności szablonów w praktyce 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.

80 Dlaczego szablony? Wartości domyślne Podstawowa idea Własności szablonów w praktyce 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.

81 Dlaczego szablony? Wartości domyślne Podstawowa idea Własności szablonów w praktyce Problem: Należy zaimplementować algorytm sortowania dla obiektów różnych typów. Możliwe rozwiązania: 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++).

82 Dlaczego szablony? Wartości domyślne Podstawowa idea Własności szablonów w praktyce Problem: Należy zaimplementować algorytm sortowania dla obiektów różnych typów. Możliwe rozwiązania: 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++).

83 Dlaczego szablony? Wartości domyślne Podstawowa idea Własności szablonów w praktyce Problem: Należy zaimplementować algorytm sortowania dla obiektów różnych typów. Możliwe rozwiązania: 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++).

84 Dlaczego szablony? Wartości domyślne Podstawowa idea Własności szablonów w praktyce Problem: Należy zaimplementować algorytm sortowania dla obiektów różnych typów. Możliwe rozwiązania: 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.

85 Dlaczego szablony? Wartości domyślne Podstawowa idea Własności szablonów w praktyce Problem: Należy zaimplementować algorytm sortowania dla obiektów różnych typów. Możliwe rozwiązania: 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.

86 Dlaczego szablony? Wartości domyślne Podstawowa idea Własności szablonów w praktyce Problem: Należy zaimplementować algorytm sortowania dla obiektów różnych typów. Możliwe rozwiązania: 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.

87 Plan prezentacji Wartości domyślne Podstawowa idea Własności szablonów w praktyce 1 Wartości domyślne 2 Podstawowa idea Własności szablonów w praktyce 3 Najważniejsze cechy Proste szablony 4 Ogólna idea

88 Podstawowe cechy Wartości domyślne Podstawowa idea Własności szablonów w praktyce Szablony 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.

89 Podstawowe cechy Wartości domyślne Podstawowa idea Własności szablonów w praktyce Szablony 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.

90 Podstawowe cechy Wartości domyślne Podstawowa idea Własności szablonów w praktyce Szablony 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.

91 Podstawowe cechy Wartości domyślne Podstawowa idea Własności szablonów w praktyce Szablony 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.

92 Wady i zalety Wartości domyślne Podstawowa idea Własności szablonów w praktyce Zalety: Szablony 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.

93 Plan prezentacji Wartości domyślne Podstawowa idea Własności szablonów w praktyce 1 Wartości domyślne 2 Podstawowa idea Własności szablonów w praktyce 3 Najważniejsze cechy Proste szablony 4 Ogólna idea

94 Podstawowa idea Własności szablonów w praktyce 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 ; cout << Max(1,2) << endl; cout << Max(1.1, 2.2) << endl; cout << Max( A, B ) << endl; cout << Max( a, b ) << endl;

95 Podstawowa idea Własności szablonów w praktyce 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 ; cout << Max(1,2) << endl; cout << Max(1.1, 2.2) << endl; cout << Max( A, B ) << endl; cout << Max( a, b ) << endl;

96 Podstawowa idea Własności szablonów w praktyce 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 ; cout << Max(1,2) << endl; cout << Max(1.1, 2.2) << endl; cout << Max( A, B ) << endl; cout << Max( a, b ) << endl;

97 własna klasa Podstawowa idea Własności szablonów w praktyce 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? Wektor W1(1,1), W2(4,5), W3; W3 = Max(W1,W2);

98 własna klasa struct Wektor float x, y; ; Podstawowa idea Własności szablonów w praktyce template <class Typ> Typ Max( Typ w1, Typ w2 ) return w1 < w2? w2 : w1; Wektor W1(1,1), W2(4,5), W3; W3 = Max(W1,W2);

99 własna klasa struct Wektor float x, y; ; Podstawowa idea Własności szablonów w praktyce template <class Typ> Typ Max( Typ w1, Typ w2 ) return w1 < w2? w2 : w1; W takiej postaci na pewno nie będzie dobrze. Dlaczego? Wektor W1(1,1), W2(4,5), W3; W3 = Max(W1,W2);

100 własna klasa struct Wektor float x, y; ; Podstawowa idea Własności szablonów w praktyce template <class Typ> Typ Max( Typ w1, Typ w2 ) return w1 < w2? w2 : w1; Problemem jest operacja prównania dwóch wektorów. Dlaczego? Wektor W1(1,1), W2(4,5), W3; W3 = Max(W1,W2);

101 własna klasa struct Wektor float x, y; ; Podstawowa idea Własności szablonów w praktyce 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. Wektor W1(1,1), W2(4,5), W3; W3 = Max(W1,W2);

102 Podstawowa idea Własności szablonów w praktyce porównywanie napisów template <class Typ> Typ Max( Typ w1, Typ w2 ) return w1 < w2? w2 : w1; Czy funkcja Max w przypadku napisów będzie działać zgodnie z naszymi oczekiwaniami? cout << Max( Kowalski, Abacki ) << endl;

103 Podstawowa idea Własności szablonów w praktyce porównywanie napisów template <class Typ> Typ Max( Typ w1, Typ w2 ) return w1 < w2? w2 : w1; Aby mieć porównywanie napisów zamiast wskaźników należy zdefiniować wariant tej funkcji dla przypadku napisów. const char Max( const char s1, const char s2 ) return strcmp(s1,s2) < 0? s2 : s1; cout << Max( Kowalski, Abacki ) << endl;

104 Podstawowa idea Własności szablonów w praktyce porównywanie napisów template <class Typ> Typ Max( Typ w1, Typ w2 ) return w1 < w2? w2 : w1; Wciąż jednak jest możliwe wywoływanie szablonów poprzez jawną specyfikację jego parametrów. const char Max( const char s1, const char s2 ) return strcmp(s1,s2) < 0? s2 : s1; cout << Max( Kowalski, Abacki ) << endl; cout << Max<const char >( Kowalski, Abacki ) << endl;

105 Podstawowa idea Własności szablonów w praktyce porównywanie napisów template <class Typ> Typ Max( Typ w1, Typ w2 ) return w1 < w2? w2 : w1; Można jednak pominąć specyfikację parametrów. Wówczas odpowiednie parametry zostaną wydedukowane na podstawie parametrów funkcji. const char Max( const char s1, const char s2 ) return strcmp(s1,s2) < 0? s2 : s1; cout << Max( Kowalski, Abacki ) << endl; cout << Max<const char >( Kowalski, Abacki ) << endl; cout << Max< >( Kowalski, Abacki ) << endl;

106 Podstawowa idea Własności szablonów w praktyce porównywanie napisów template <class Typ> Typ Max( Typ w1, Typ w2 ) return w1 < w2? w2 : w1; Czy jakoś poprawić szablony, aby nie trzeba było pisać oddzielnej funkcji. const char Max( const char s1, const char s2 ) return strcmp(s1,s2) < 0? s2 : s1; cout << Max( Kowalski, Abacki ) << endl; cout << Max<const char >( Kowalski, Abacki ) << endl; cout << Max< >( Kowalski, Abacki ) << endl;

107 Podstawowa idea Własności szablonów w praktyce porównywanie napisów template <class Typ> Typ Max( Typ w1, Typ w2 ) return w1 < w2? w2 : w1; Dodatkową funkcję trzeba napisać, ale można ujednolicić podejście i zrobić to w ramach danego szablonu tworząc jego specjalizację. template <> const char Max<const char >( const char s1, const char s2 ) return strcmp(s1,s2) < 0? s2 : s1; cout << Max( Kowalski, Abacki ) << endl; cout << Max<const char >( Kowalski, Abacki ) << endl; cout << Max< >( Kowalski, Abacki ) << endl;

108 Plan prezentacji Wartości domyślne Najważniejsze cechy Proste szablony 1 Wartości domyślne 2 Podstawowa idea Własności szablonów w praktyce 3 Najważniejsze cechy Proste szablony 4 Ogólna idea

109 Szablony klas Wartości domyślne Najważniejsze cechy Proste szablony Szablony 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. Szablony pozwalają na generowanie i optymalizowania już na etapie kompilacji poprzez użycie specyficznych konstrukcji programistycznych. Umożliwiają realizację idei programowania uogólnionego.

110 Szablony klas Wartości domyślne Najważniejsze cechy Proste szablony Szablony 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. Szablony pozwalają na generowanie i optymalizowania już na etapie kompilacji poprzez użycie specyficznych konstrukcji programistycznych. Umożliwiają realizację idei programowania uogólnionego.

111 Szablony klas Wartości domyślne Najważniejsze cechy Proste szablony Szablony 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. Szablony pozwalają na generowanie i optymalizowania już na etapie kompilacji poprzez użycie specyficznych konstrukcji programistycznych. Umożliwiają realizację idei programowania uogólnionego.

112 Szablony klas Wartości domyślne Najważniejsze cechy Proste szablony Szablony 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. Szablony pozwalają na generowanie i optymalizowania już na etapie kompilacji poprzez użycie specyficznych konstrukcji programistycznych. Umożliwiają realizację idei programowania uogólnionego.

113 Szablony klas Wartości domyślne Najważniejsze cechy Proste szablony Szablony 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. Szablony pozwalają na generowanie i optymalizowania już na etapie kompilacji poprzez użycie specyficznych konstrukcji programistycznych. Umożliwiają realizację idei programowania uogólnionego.

114 Ogólna postać szablonu Najważniejsze cechy Proste szablony template < lista-parametrow-rozdzielonych-przecinkami > class Klasa ;...

115 Ogólna postać szablonu Najważniejsze cechy Proste szablony 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.

116 Ogólna postać szablonu Najważniejsze cechy Proste szablony 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.

117 Ogólna postać szablonu Najważniejsze cechy Proste szablony 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.

118 Ogólna postać szablonu Najważniejsze cechy Proste szablony 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.

119 Plan prezentacji Wartości domyślne Najważniejsze cechy Proste szablony 1 Wartości domyślne 2 Podstawowa idea Własności szablonów w praktyce 3 Najważniejsze cechy Proste szablony 4 Ogólna idea

120 Stos Wartości domyślne Najważniejsze cechy Proste szablony 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; Stos St;

121 Przykład szablonu stosu template < typename TYP > class Stos TYP Tab[ROZ STOSU]; unsigned int Ilosc; public : Stos( ) Ilosc = 0; Najważniejsze cechy Proste szablony 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.

122 Przykład szablonu stosu template < class TYP > class Stos TYP Tab[ROZ STOSU]; unsigned int Ilosc; public : Stos( ) Ilosc = 0; Najważniejsze cechy Proste szablony 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;

123 Przykład szablonu stosu template < typename TYP > class Stos TYP Tab[ROZ STOSU]; unsigned int Ilosc; public : Stos( ) Ilosc = 0; Najważniejsze cechy Proste szablony 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;

124 Przykład szablonu stosu template < typename TYP > class Stos TYP Tab[ROZ STOSU]; unsigned int Ilosc; public : Stos( ) Ilosc = 0; Najważniejsze cechy Proste szablony 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; Stos<float> St;

125 Przykład szablonu stosu template < typename TYP > class Stos TYP Tab[ROZ STOSU]; unsigned int Ilosc; public : Stos( ) Ilosc = 0; Najważniejsze cechy Proste szablony 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; Stos<double[100]> St;

126 Przykład szablonu stosu template < typename TYP > class Stos TYP Tab[ROZ STOSU]; unsigned int Ilosc; public : Stos( ) Ilosc = 0; Najważniejsze cechy Proste szablony 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; Stos<std::string> St;

127 Przykład szablonu stosu template < typename TYP > class Stos TYP Tab[ROZ STOSU]; unsigned int Ilosc; public : Stos( ) Ilosc = 0; Najważniejsze cechy Proste szablony 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; Stos<std::istream> St;

128 Przykład szablonu stosu template < typename TYP > class Stos TYP Tab[ROZ STOSU]; unsigned int Ilosc; public : Stos( ) Ilosc = 0; Najważniejsze cechy Proste szablony 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; Stos<std::istream> St;

129 Przykład szablonu stosu template < typename TYP > class Stos TYP Tab[ROZ STOSU]; unsigned int Ilosc; public : Stos( ) Ilosc = 0; Najważniejsze cechy Proste szablony 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; Stos<std::istream> St;

130 Przykład szablonu stosu template < typename TYP > class Stos TYP Tab[ROZ STOSU]; unsigned int Ilosc; public : Stos( ) Ilosc = 0; Najważniejsze cechy Proste szablony 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; Stos<std::istream > St;

131 Przykład szablonu stosu template < typename TYP > class Stos TYP Tab[ROZ STOSU]; unsigned int Ilosc; public : Stos( ) Ilosc = 0; Najważniejsze cechy Proste szablony 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; Stos<std::istream&> St;

132 Przykład szablonu stosu template < typename TYP > class Stos TYP Tab[ROZ STOSU]; unsigned int Ilosc; public : Stos( ) Ilosc = 0; Najważniejsze cechy Proste szablony 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; Stos<std::istream&> St;

133 Przykład szablonu stosu template < typename TYP > class Stos TYP Tab[ROZ STOSU]; unsigned int Ilosc; public : Stos( ) Ilosc = 0; Najważniejsze cechy Proste szablony 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; Stos< Stos< Stos< char[20] > > > St;

134 Przykład szablonu stosu template < typename TYP > class Stos TYP Tab[ROZ STOSU]; unsigned int Ilosc; public : Stos( ) Ilosc = 0; Najważniejsze cechy Proste szablony 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;

135 Przykład szablonu stosu Najważniejsze cechy Proste szablony template < typename TYP, unsigned int Rozmiar > 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;

136 Przykład szablonu stosu Najważniejsze cechy Proste szablony template < typename TYP, unsigned int Rozmiar > 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; Stos<float, 100> St;

137 Przykład szablonu stosu Najważniejsze cechy Proste szablony 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; Stos<float, 100> St;

138 Przykład szablonu stosu Najważniejsze cechy Proste szablony 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; Stos<float> St;

139 Plan prezentacji Wartości domyślne Ogólna idea 1 Wartości domyślne 2 Podstawowa idea Własności szablonów w praktyce 3 Najważniejsze cechy Proste szablony 4 Ogólna idea

140 Geneza Wartości domyślne Ogólna idea STL Standard Template Library Twórcą biblioteki jest Alexander Stepanov. Początek prac sięga roku 1979, gdy zaczął wcielać w życie swoją ideę programowania uogólnionego.

141 Ogólna idea Koniec prezentacji

Szablony funkcji i szablony klas

Szablony 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ółowo

Wprowadzenie 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 wykładu na temat programowania obiektowego.

Bardziej szczegółowo

Wprowadzenie do szablonów szablony funkcji

Wprowadzenie 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ółowo

Wprowadzenie do szablonów klas

Wprowadzenie 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ółowo

Przykład implementacji przeciażeń operatorów problem kolizji

Przykł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ółowo

Dziedziczenie : Dziedziczenie to nic innego jak definiowanie nowych klas w oparciu o już istniejące.

Dziedziczenie : 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

Projektowanie i programowanie obiektowe (materiały do wykładu cz. VI)

Projektowanie 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ółowo

Programowanie obiektowe w C++ Wykład 11

Programowanie 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ółowo

Szablony, wybrane elementy biblioteki STL

Szablony, wybrane elementy biblioteki STL Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Katedra Cybernetyki i Robotyki Wydziału Elektroniki Politechnika Wrocławska Kurs: Copyright c 2016 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu

Bardziej szczegółowo

Programowanie 2. Język C++. Wykład 2.

Programowanie 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ółowo

Ćwiczenia IV - Kontenery (pojemniki)

Ć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ółowo

Preprocesor języka C

Preprocesor 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ółowo

Kompozycja i dziedziczenie klas

Kompozycja 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ółowo

0.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 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ółowo

3-4. 5-7. 8-10. 11-12 15-18. 19-22

3-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ółowo

PAKIET MathCad - Część III

PAKIET MathCad - Część III Opracowanie: Anna Kluźniak / Jadwiga Matla Ćw3.mcd 1/12 Katedra Informatyki Stosowanej - Studium Podstaw Informatyki PAKIET MathCad - Część III RÓWNANIA I UKŁADY RÓWNAŃ 1. Równania z jedną niewiadomą MathCad

Bardziej szczegółowo

Temat: Funkcje. Własności ogólne. A n n a R a j f u r a, M a t e m a t y k a s e m e s t r 1, W S Z i M w S o c h a c z e w i e 1

Temat: Funkcje. Własności ogólne. A n n a R a j f u r a, M a t e m a t y k a s e m e s t r 1, W S Z i M w S o c h a c z e w i e 1 Temat: Funkcje. Własności ogólne A n n a R a j f u r a, M a t e m a t y k a s e m e s t r 1, W S Z i M w S o c h a c z e w i e 1 Kody kolorów: pojęcie zwraca uwagę * materiał nieobowiązkowy A n n a R a

Bardziej szczegółowo

Qt po polsku. Bogdan Kreczmer.

Qt 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ółowo

Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych ul. Koszykowa 75, 00-662 Warszawa

Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych ul. Koszykowa 75, 00-662 Warszawa Zamawiający: Wydział Matematyki i Nauk Informacyjnych Politechniki Warszawskiej 00-662 Warszawa, ul. Koszykowa 75 Przedmiot zamówienia: Produkcja Interaktywnej gry matematycznej Nr postępowania: WMiNI-39/44/AM/13

Bardziej szczegółowo

PROE wykład 7 kontenery tablicowe, listy. dr inż. Jacek Naruniec

PROE 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ółowo

KLAUZULE ARBITRAŻOWE

KLAUZULE 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ółowo

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

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

Bardziej szczegółowo

Twierdzenie Bayesa. Indukowane Reguły Decyzyjne Jakub Kuliński Nr albumu: 53623

Twierdzenie Bayesa. Indukowane Reguły Decyzyjne Jakub Kuliński Nr albumu: 53623 Twierdzenie Bayesa Indukowane Reguły Decyzyjne Jakub Kuliński Nr albumu: 53623 Niniejszy skrypt ma na celu usystematyzowanie i uporządkowanie podstawowej wiedzy na temat twierdzenia Bayesa i jego zastosowaniu

Bardziej szczegółowo

Stanowisko Rzecznika Finansowego i Prezesa Urzędu Ochrony Konkurencji i Konsumentów w sprawie interpretacji art. 49 ustawy o kredycie konsumenckim

Stanowisko Rzecznika Finansowego i Prezesa Urzędu Ochrony Konkurencji i Konsumentów w sprawie interpretacji art. 49 ustawy o kredycie konsumenckim Prezes Urzędu Ochrony Konkurencji i Konsumentów Warszawa, 16 maja 2016 r. Stanowisko Rzecznika Finansowego i Prezesa Urzędu Ochrony Konkurencji i Konsumentów w sprawie interpretacji art. 49 ustawy o kredycie

Bardziej szczegółowo

DE-WZP.261.11.2015.JJ.3 Warszawa, 2015-06-15

DE-WZP.261.11.2015.JJ.3 Warszawa, 2015-06-15 DE-WZP.261.11.2015.JJ.3 Warszawa, 2015-06-15 Wykonawcy ubiegający się o udzielenie zamówienia Dotyczy: postępowania prowadzonego w trybie przetargu nieograniczonego na Usługę druku książek, nr postępowania

Bardziej szczegółowo

PROGRAMOWANIE 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. 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ółowo

Praca na wielu bazach danych część 2. (Wersja 8.1)

Praca 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ółowo

Akademickie Centrum Informatyki PS. Wydział Informatyki PS

Akademickie 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ółowo

KATEDRA INFORMATYKI STOSOWANEJ PŁ ANALIZA I PROJEKTOWANIE SYSTEMÓW INFORMATYCZNYCH

KATEDRA 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ółowo

Oprogramowanie klawiatury matrycowej i alfanumerycznego wyświetlacza LCD

Oprogramowanie 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ółowo

Ogólna charakterystyka kontraktów terminowych

Ogólna charakterystyka kontraktów terminowych Jesteś tu: Bossa.pl Kurs giełdowy - Część 10 Ogólna charakterystyka kontraktów terminowych Kontrakt terminowy jest umową pomiędzy dwiema stronami, z których jedna zobowiązuje się do nabycia a druga do

Bardziej szczegółowo

Konfiguracja historii plików

Konfiguracja 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ółowo

Qt sygnały i sloty. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Wydział Elektroniki Politechnika Wrocławska

Qt 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ółowo

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016

Kurs 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ółowo

PERSON Kraków 2002.11.27

PERSON Kraków 2002.11.27 PERSON Kraków 2002.11.27 SPIS TREŚCI 1 INSTALACJA...2 2 PRACA Z PROGRAMEM...3 3. ZAKOŃCZENIE PRACY...4 1 1 Instalacja Aplikacja Person pracuje w połączeniu z czytnikiem personalizacyjnym Mifare firmy ASEC

Bardziej szczegółowo

PROGRAMOWANIE 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. 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ółowo

Instalacja. Zawartość. Wyszukiwarka. Instalacja... 1. Konfiguracja... 2. Uruchomienie i praca z raportem... 4. Metody wyszukiwania...

Instalacja. Zawartość. Wyszukiwarka. Instalacja... 1. Konfiguracja... 2. Uruchomienie i praca z raportem... 4. Metody wyszukiwania... Zawartość Instalacja... 1 Konfiguracja... 2 Uruchomienie i praca z raportem... 4 Metody wyszukiwania... 6 Prezentacja wyników... 7 Wycenianie... 9 Wstęp Narzędzie ściśle współpracujące z raportem: Moduł

Bardziej szczegółowo

Rozdział 6. Pakowanie plecaka. 6.1 Postawienie problemu

Rozdział 6. Pakowanie plecaka. 6.1 Postawienie problemu Rozdział 6 Pakowanie plecaka 6.1 Postawienie problemu Jak zauważyliśmy, szyfry oparte na rachunku macierzowym nie są przerażająco trudne do złamania. Zdecydowanie trudniejszy jest kryptosystem oparty na

Bardziej szczegółowo

Wtedy wystarczy wybrać właściwego Taga z listy.

Wtedy wystarczy wybrać właściwego Taga z listy. Po wejściu na stronę pucharino.slask.pl musisz się zalogować (Nazwa użytkownika to Twój redakcyjny pseudonim, hasło sam sobie ustalisz podczas procedury rejestracji). Po zalogowaniu pojawi się kilka istotnych

Bardziej szczegółowo

Wdroż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 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ółowo

MATEMATYKA 4 INSTYTUT MEDICUS FUNKCJA KWADRATOWA. Kurs przygotowawczy na studia medyczne. Rok szkolny 2010/2011. tel. 0501 38 39 55 www.medicus.edu.

MATEMATYKA 4 INSTYTUT MEDICUS FUNKCJA KWADRATOWA. Kurs przygotowawczy na studia medyczne. Rok szkolny 2010/2011. tel. 0501 38 39 55 www.medicus.edu. INSTYTUT MEDICUS Kurs przygotowawczy na studia medyczne Rok szkolny 00/0 tel. 050 38 39 55 www.medicus.edu.pl MATEMATYKA 4 FUNKCJA KWADRATOWA Funkcją kwadratową lub trójmianem kwadratowym nazywamy funkcję

Bardziej szczegółowo

Harmonogramowanie projektów Zarządzanie czasem

Harmonogramowanie projektów Zarządzanie czasem Harmonogramowanie projektów Zarządzanie czasem Zarządzanie czasem TOMASZ ŁUKASZEWSKI INSTYTUT INFORMATYKI W ZARZĄDZANIU Zarządzanie czasem w projekcie /49 Czas w zarządzaniu projektami 1. Pojęcie zarządzania

Bardziej szczegółowo

EGZAMIN MATURALNY Z INFORMATYKI CZERWIEC 2011 POZIOM ROZSZERZONY WYBRANE: CZĘŚĆ I. Czas pracy: 90 minut. Liczba punktów do uzyskania: 20

EGZAMIN MATURALNY Z INFORMATYKI CZERWIEC 2011 POZIOM ROZSZERZONY WYBRANE: CZĘŚĆ I. Czas pracy: 90 minut. Liczba punktów do uzyskania: 20 Centralna Komisja Egzaminacyjna Arkusz zawiera informacje prawnie chronione do momentu rozpoczęcia egzaminu. Układ graficzny CKE 2010 KOD WISUJE ZDAJĄCY ESEL Miejsce na naklejkę z kodem EGZAMIN MATURALNY

Bardziej szczegółowo

Umowa o pracę zawarta na czas nieokreślony

Umowa o pracę zawarta na czas nieokreślony Umowa o pracę zawarta na czas nieokreślony Uwagi ogólne Definicja umowy Umowa o pracę stanowi dokument stwierdzający zatrudnienie w ramach stosunku pracy. Według ustawowej definicji jest to zgodne oświadczenie

Bardziej szczegółowo

WYKŁAD 8. Postacie obrazów na różnych etapach procesu przetwarzania

WYKŁ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ółowo

GEO-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. 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ółowo

Integracja systemów, integracja procesów

Integracja systemów, integracja procesów Nowe rozwiązania informatyczne w zmieniającej się rzeczywistości akademickiej Integracja systemów, integracja procesów... Janina Mincer-Daszkiewicz Uniwersytet Warszawski, MUCI jmd@mimuw.edu.pl Warszawa,

Bardziej szczegółowo

Regu g l u a l min i n w s w pó p ł ó p ł r p acy O ow o iązuje od dnia 08.07.2011

Regu g l u a l min i n w s w pó p ł ó p ł r p acy O ow o iązuje od dnia 08.07.2011 Regulamin współpracy Obowiązuje od dnia 08.07.2011 1 1. Wstęp Regulamin określa warunki współpracy z firmą Hubert Joachimiak HubiSoft. W przypadku niejasności, prosimy o kontakt. Dane kontaktowe znajdują

Bardziej szczegółowo

Hermetyzacja oraz pola i metody statyczne

Hermetyzacja oraz pola i metody statyczne Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2010 Bogdan Kreczmer Niniejszy dokument

Bardziej szczegółowo

class A { public: A(): i(5), s("abc") { } int i; string s; };

class 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ółowo

Firma Informatyczna JazzBIT

Firma Informatyczna JazzBIT Artykuły i obrazy Autor: Stefan Wajda [zwiastun] 10.02.2006. Dodawanie i publikowanie artykułów to najczęstsze zadanie. I chociaż nie jest skomplikowane, może początkujacych wprawiać w zakłopotanie. Trzeba

Bardziej szczegółowo

Rekompensowanie pracy w godzinach nadliczbowych

Rekompensowanie pracy w godzinach nadliczbowych Rekompensowanie pracy w godzinach nadliczbowych PRACA W GODZINACH NADLICZBOWYCH ART. 151 1 K.P. Praca wykonywana ponad obowiązujące pracownika normy czasu pracy, a także praca wykonywana ponad przedłużony

Bardziej szczegółowo

Kontenery. Wykład 12. Programowanie (język C++) Rodzaje kontenerów. Przegląd kontenerów

Kontenery. 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ółowo

II. WNIOSKI I UZASADNIENIA: 1. Proponujemy wprowadzić w Rekomendacji nr 6 także rozwiązania dotyczące sytuacji, w których:

II. WNIOSKI I UZASADNIENIA: 1. Proponujemy wprowadzić w Rekomendacji nr 6 także rozwiązania dotyczące sytuacji, w których: Warszawa, dnia 25 stycznia 2013 r. Szanowny Pan Wojciech Kwaśniak Zastępca Przewodniczącego Komisji Nadzoru Finansowego Pl. Powstańców Warszawy 1 00-950 Warszawa Wasz znak: DRB/DRB_I/078/247/11/12/MM W

Bardziej szczegółowo

*** Przeczytaj najpierw, ponieważ to WAŻNE: ***

*** Przeczytaj najpierw, ponieważ to WAŻNE: *** *** Przeczytaj najpierw, ponieważ to WAŻNE: Niniejszy materiał możesz dowolnie wykorzystywać. Możesz rozdawać go na swoim blogu, liście adresowej, gdzie tylko chcesz za darmo lub możesz go dołączyć, jako

Bardziej szczegółowo

VinCent Office. Moduł Drukarki Fiskalnej

VinCent Office. Moduł Drukarki Fiskalnej VinCent Office Moduł Drukarki Fiskalnej Wystawienie paragonu. Dla paragonów definiujemy nowy dokument sprzedaży. Ustawiamy dla niego parametry jak podano na poniższym rysunku. W opcjach mamy możliwość

Bardziej szczegółowo

Procedura nadawania uprawnień do potwierdzania Profili Zaufanych w Urzędzie Gminy w Ryjewie

Procedura nadawania uprawnień do potwierdzania Profili Zaufanych w Urzędzie Gminy w Ryjewie WÓJT GMINY RYJEWO Załącznik Nr 2 do Zarządzenia Nr 13/15 Wójta Gminy Ryjewo z dnia 20 lutego 2015 roku w sprawie zmiany treści zarządzenia Nr 45/14 Wójta Gminy Ryjewo z dnia 30 czerwca 2014 roku w sprawie

Bardziej szczegółowo

Numer obszaru: 13. Jak pracować z uczniem uzdolnionym informatycznie? Od grafiki i multimediów do poważnych algorytmów w środowisku Logomocja-Imagine

Numer obszaru: 13. Jak pracować z uczniem uzdolnionym informatycznie? Od grafiki i multimediów do poważnych algorytmów w środowisku Logomocja-Imagine Numer obszaru: 13 Jak pracować z uczniem uzdolnionym informatycznie? Temat szkolenia Od grafiki i multimediów do poważnych algorytmów w środowisku Logomocja-Imagine Symbol szkolenia: PUZIMG SZCZEGÓŁOWY

Bardziej szczegółowo

UCHWAŁA NR III/21/15 RADY GMINY W KUNICACH. z dnia 23 stycznia 2015 r.

UCHWAŁA NR III/21/15 RADY GMINY W KUNICACH. z dnia 23 stycznia 2015 r. UCHWAŁA NR III/21/15 RADY GMINY W KUNICACH z dnia 23 stycznia 2015 r. w sprawie przyjęcia regulaminu dofinansowania zadań z zakresu usuwania, transportu i utylizacji wyrobów zawierających azbest z terenu

Bardziej szczegółowo

Co nowego w systemie Kancelaris 3.31 STD/3.41 PLUS

Co nowego w systemie Kancelaris 3.31 STD/3.41 PLUS Ten dokument zawiera informacje o zmianach w wersjach: 3.33, 3.32, 3.31 STD w stosunku do wersji 3.30 STD 3.43, 3.42, 3.41 PLUS w stosunku do wersji 3.40 PLUS 1. Kancelaria Co nowego w systemie Kancelaris

Bardziej szczegółowo

Konferencja Sądu Arbitrażowego przy SIDiR WARUNKI KONTRAKTOWE FIDIC KLAUZULA 13 JAKO ODMIENNY SPOSÓB WYKONANIA ROBÓT A NIE ZMIANA UMOWY

Konferencja Sądu Arbitrażowego przy SIDiR WARUNKI KONTRAKTOWE FIDIC KLAUZULA 13 JAKO ODMIENNY SPOSÓB WYKONANIA ROBÓT A NIE ZMIANA UMOWY Konferencja Sądu Arbitrażowego przy SIDiR Zbigniew J. Boczek WARUNKI KONTRAKTOWE FIDIC KLAUZULA 13 JAKO ODMIENNY SPOSÓB WYKONANIA ROBÓT A NIE ZMIANA UMOWY 13 Variations and Adjustments!! 13 Zmiany i korekty

Bardziej szczegółowo

OFERTA WYKŁADÓW, WARSZTATÓW I LABORATORIÓW DLA UCZNIÓW KLAS IV- VI SZKÓŁ PODSTAWOWYCH, GIMNAZJALNYCH I ŚREDNICH

OFERTA WYKŁADÓW, WARSZTATÓW I LABORATORIÓW DLA UCZNIÓW KLAS IV- VI SZKÓŁ PODSTAWOWYCH, GIMNAZJALNYCH I ŚREDNICH OFERTA WYKŁADÓW, WARSZTATÓW I LABORATORIÓW DLA UCZNIÓW KLAS IV- VI SZKÓŁ PODSTAWOWYCH, GIMNAZJALNYCH I ŚREDNICH Strona 1 z 9 SPIS ZAJĘĆ WRAZ Z NAZWISKAMI WYKŁADOWCÓW dr hab. Mieczysław Kula Poznaj swój

Bardziej szczegółowo

Procedura nadawania uprawnień do potwierdzania, przedłuŝania waŝności i uniewaŝniania profili zaufanych epuap. Załącznik nr 1

Procedura nadawania uprawnień do potwierdzania, przedłuŝania waŝności i uniewaŝniania profili zaufanych epuap. Załącznik nr 1 Załącznik nr 1 do zarządzenia Nr 204/2014 Burmistrza Miasta Kudowa-Zdrój z dnia 5 sierpnia 2014 r. Procedura nadawania uprawnień do potwierdzania, przedłuŝania waŝności i uniewaŝniania profili zaufanych

Bardziej szczegółowo

Edycja geometrii w Solid Edge ST

Edycja geometrii w Solid Edge ST Edycja geometrii w Solid Edge ST Artykuł pt.: " Czym jest Technologia Synchroniczna a czym nie jest?" zwracał kilkukrotnie uwagę na fakt, że nie należy mylić pojęć modelowania bezpośredniego i edycji bezpośredniej.

Bardziej szczegółowo

OSZACOWANIE WARTOŚCI ZAMÓWIENIA z dnia... 2004 roku Dz. U. z dnia 12 marca 2004 r. Nr 40 poz.356

OSZACOWANIE WARTOŚCI ZAMÓWIENIA z dnia... 2004 roku Dz. U. z dnia 12 marca 2004 r. Nr 40 poz.356 OSZACOWANIE WARTOŚCI ZAMÓWIENIA z dnia... 2004 roku Dz. U. z dnia 12 marca 2004 r. Nr 40 poz.356 w celu wszczęcia postępowania i zawarcia umowy opłacanej ze środków publicznych 1. Przedmiot zamówienia:

Bardziej szczegółowo

ZAGADNIENIA PODATKOWE W BRANŻY ENERGETYCZNEJ - VAT

ZAGADNIENIA PODATKOWE W BRANŻY ENERGETYCZNEJ - VAT ZAGADNIENIA PODATKOWE W BRANŻY ENERGETYCZNEJ - VAT Szanowni Państwo! Prowadzenie działalności w branży energetycznej wiąże się ze specyficznymi problemami podatkowymi, występującymi w tym sektorze gospodarki.

Bardziej szczegółowo

INSTRUKCJA DLA INSPEKTORÓW DS. REJESTRACJI

INSTRUKCJA DLA INSPEKTORÓW DS. REJESTRACJI Katowice, dnia 13 sierpnia 2008r. INSTRUKCJA DLA INSPEKTORÓW DS. REJESTRACJI Wskazane dokumenty w kaŝdym punkcie uwzględniają pełnomocnictwo udzielone przez upowaŝnione osoby. NaleŜy zaznaczyć, Ŝe będzie

Bardziej szczegółowo

Warszawska Giełda Towarowa S.A.

Warszawska Giełda Towarowa S.A. KONTRAKT FUTURES Poprzez kontrakt futures rozumiemy umowę zawartą pomiędzy dwoma stronami transakcji. Jedna z nich zobowiązuje się do kupna, a przeciwna do sprzedaży, w ściśle określonym terminie w przyszłości

Bardziej szczegółowo

Strategia rozwoju kariery zawodowej - Twój scenariusz (program nagrania).

Strategia 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ółowo

epuap Ogólna instrukcja organizacyjna kroków dla realizacji integracji

epuap Ogólna instrukcja organizacyjna kroków dla realizacji integracji epuap Ogólna instrukcja organizacyjna kroków dla realizacji integracji Projekt współfinansowany ze środków Europejskiego Funduszu Rozwoju Regionalnego w ramach Programu Operacyjnego Innowacyjna Gospodarka

Bardziej szczegółowo

Podstawy programowania

Podstawy 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ółowo

Warunki Oferty PrOmOcyjnej usługi z ulgą

Warunki Oferty PrOmOcyjnej usługi z ulgą Warunki Oferty PrOmOcyjnej usługi z ulgą 1. 1. Opis Oferty 1.1. Oferta Usługi z ulgą (dalej Oferta ), dostępna będzie w okresie od 16.12.2015 r. do odwołania, jednak nie dłużej niż do dnia 31.03.2016 r.

Bardziej szczegółowo

Algorytmy i Struktury Danych.

Algorytmy 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ółowo

Rozliczenia z NFZ. Ogólne założenia. Spis treści

Rozliczenia 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ółowo

Bioinformatyka Laboratorium, 30h. Michał Bereta mbereta@pk.edu.pl www.michalbereta.pl

Bioinformatyka Laboratorium, 30h. Michał Bereta mbereta@pk.edu.pl www.michalbereta.pl Bioinformatyka Laboratorium, 30h Michał Bereta mbereta@pk.edu.pl www.michalbereta.pl 1 Filogenetyka molekularna wykorzystuje informację zawartą w sekwencjach aminokwasów lub nukleotydów do kontrukcji drzew

Bardziej szczegółowo

Spis treści 1. Wstęp 2. Projektowanie systemów informatycznych

Spis 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ółowo

Rzutowanie i konwersje

Rzutowanie i konwersje Rzutowanie i konwersje Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2005 2013 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu na temat programowania

Bardziej szczegółowo

zgubił całą naszą korespondencję Można by tak wymieniać bez bezpieczeństwa, gdyby była wykonana dnia poprzedniego rozwiązałaby niejeden problem.

zgubił całą naszą korespondencję Można by tak wymieniać bez bezpieczeństwa, gdyby była wykonana dnia poprzedniego rozwiązałaby niejeden problem. Zasada działania usługi Business Safe jest prosta. Zainstalowany na Twoim komputerze progra Dlaczego backupować? Któż z nas nie zna smaku tego okropnego uczucia, gdy włączając kompuuter, który jeszcze

Bardziej szczegółowo

PROCEDURA OCENY RYZYKA ZAWODOWEGO. w Urzędzie Gminy Mściwojów

PROCEDURA OCENY RYZYKA ZAWODOWEGO. w Urzędzie Gminy Mściwojów I. Postanowienia ogólne 1.Cel PROCEDURA OCENY RYZYKA ZAWODOWEGO w Urzędzie Gminy Mściwojów Przeprowadzenie oceny ryzyka zawodowego ma na celu: Załącznik A Zarządzenia oceny ryzyka zawodowego monitorowanie

Bardziej szczegółowo

Regulamin reklamy produktów leczniczych na terenie Samodzielnego Publicznego Zakładu Opieki Zdrowotnej Ministerstwa Spraw Wewnętrznych w Białymstoku

Regulamin reklamy produktów leczniczych na terenie Samodzielnego Publicznego Zakładu Opieki Zdrowotnej Ministerstwa Spraw Wewnętrznych w Białymstoku Regulamin reklamy produktów leczniczych na terenie Samodzielnego Publicznego Zakładu Opieki Zdrowotnej Ministerstwa Spraw Wewnętrznych w Białymstoku 1 1. Niniejszy Regulamin określa zasady prowadzenia

Bardziej szczegółowo

Bazy danych II. Andrzej Grzybowski. Instytut Fizyki, Uniwersytet Śląski

Bazy 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ółowo

Wstęp do Programowania 2

Wstęp do Programowania 2 Wstęp do Programowania 2 dr Bożena Woźna-Szcześniak bwozna@gmail.com Akademia im. Jana Długosza Wykład 4 Funkcje przeciażone - Idea Przeciażanie funkcji (polimorfizm funkcji), to kolejna nowość w języku

Bardziej szczegółowo

Matematyka dla liceum/funkcja liniowa

Matematyka dla liceum/funkcja liniowa Matematyka dla liceum/funkcja liniowa 1 Matematyka dla liceum/funkcja liniowa Funkcja liniowa Wstęp Co zawiera dział Czytelnik pozna następujące informacje: co to jest i jakie ma własności funkcja liniowa

Bardziej szczegółowo

Materiał pomocniczy dla nauczycieli kształcących w zawodzie:

Materiał pomocniczy dla nauczycieli kształcących w zawodzie: Materiał pomocniczy dla nauczycieli kształcących w zawodzie: TECHNIK MASAŻYSTA przygotowany w ramach projektu Praktyczne kształcenie nauczycieli zawodów branży hotelarsko-turystycznej Priorytet III. Wysoka

Bardziej szczegółowo

Elementy cyfrowe i układy logiczne

Elementy cyfrowe i układy logiczne Elementy cyfrowe i układy logiczne Wykład Legenda Zezwolenie Dekoder, koder Demultiplekser, multiplekser 2 Operacja zezwolenia Przykład: zamodelować podsystem elektroniczny samochodu do sterowania urządzeniami:

Bardziej szczegółowo

Załącznik nr 4 UMOWA O REALIZACJI PRAKTYKI STUDENCKIEJ

Załącznik nr 4 UMOWA O REALIZACJI PRAKTYKI STUDENCKIEJ Załącznik nr 4 UMOWA O REALIZACJI PRAKTYKI STUDENCKIEJ W dniu 200.. roku, w Płocku pomiędzy: 1. Szkołą Wyższą im. Pawła Włodkowica w Płocku Filia w Wyszkowie, z siedzibą w Wyszkowie przy ul. Geodetów 45a,

Bardziej szczegółowo

Adres strony internetowej, na której Zamawiający udostępnia Specyfikację Istotnych Warunków Zamówienia: www.wup.pl/index.php?

Adres strony internetowej, na której Zamawiający udostępnia Specyfikację Istotnych Warunków Zamówienia: www.wup.pl/index.php? 1 z 6 2013-10-03 14:58 Adres strony internetowej, na której Zamawiający udostępnia Specyfikację Istotnych Warunków Zamówienia: www.wup.pl/index.php?id=221 Szczecin: Usługa zorganizowania szkolenia specjalistycznego

Bardziej szczegółowo

Funkcje składowe (metody)

Funkcje 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ółowo

KONKURS NA NAJLEPSZE LOGO

KONKURS NA NAJLEPSZE LOGO KONKURS NA NAJLEPSZE LOGO Stowarzyszenie Unia Nadwarciańska ogłasza konkurs na logo. Regulamin konkursu: I. POSTANOWIENIA WSTĘPNE 1. Regulamin określa: cele konkursu, warunki uczestnictwa w konkursie,

Bardziej szczegółowo

Przypomnienie najważniejszych pojęć z baz danych. Co to jest baza danych?

Przypomnienie najważniejszych pojęć z baz danych. Co to jest baza danych? Przypomnienie najważniejszych pojęć z baz danych. Co to jest baza danych? 1 Podstawowe pojęcia: 2 3 4 5 Dana (ang.data) najmniejsza, elementarna jednostka informacji o obiekcie będąca przedmiotem przetwarzania

Bardziej szczegółowo

Komputer i urządzenia z nim współpracujące

Komputer i urządzenia z nim współpracujące Temat 1. Komputer i urządzenia z nim współpracujące Realizacja podstawy programowej 1. 1) opisuje modułową budowę komputera, jego podstawowe elementy i ich funkcje, jak również budowę i działanie urządzeń

Bardziej szczegółowo

Wykład 4 Wybrane zagadnienia programowania w C++

Wykł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ółowo

Regulamin Zarządu Pogórzańskiego Stowarzyszenia Rozwoju

Regulamin Zarządu Pogórzańskiego Stowarzyszenia Rozwoju Regulamin Zarządu Pogórzańskiego Stowarzyszenia Rozwoju Art.1. 1. Zarząd Pogórzańskiego Stowarzyszenia Rozwoju, zwanego dalej Stowarzyszeniem, składa się z Prezesa, dwóch Wiceprezesów, Skarbnika, Sekretarza

Bardziej szczegółowo

Specyfikacja techniczna banerów Flash

Specyfikacja techniczna banerów Flash Specyfikacja techniczna banerów Flash Po stworzeniu własnego banera reklamowego należy dodać kilka elementów umożliwiających integrację z systemem wyświetlającym i śledzącym reklamy na stronie www. Specyfikacje

Bardziej szczegółowo

Podstawy Informatyki Gramatyki formalne

Podstawy Informatyki Gramatyki formalne Podstawy Informatyki alina.momot@polsl.pl http://zti.polsl.pl/amomot/pi Plan wykładu 1 Języki i gramatyki Analiza syntaktyczna Semantyka 2 Podstawowe pojęcia Gramatyki wg Chomsky ego Notacja Backusa-Naura

Bardziej szczegółowo

Na podstawie art.4 ust.1 i art.20 lit. l) Statutu Walne Zebranie Stowarzyszenia uchwala niniejszy Regulamin Zarządu.

Na podstawie art.4 ust.1 i art.20 lit. l) Statutu Walne Zebranie Stowarzyszenia uchwala niniejszy Regulamin Zarządu. Na podstawie art.4 ust.1 i art.20 lit. l) Statutu Walne Zebranie Stowarzyszenia uchwala niniejszy Regulamin Zarządu Regulamin Zarządu Stowarzyszenia Przyjazna Dolina Raby Art.1. 1. Zarząd Stowarzyszenia

Bardziej szczegółowo

Automatyka. Etymologicznie automatyka pochodzi od grec.

Automatyka. Etymologicznie automatyka pochodzi od grec. Automatyka Etymologicznie automatyka pochodzi od grec. : samoczynny. Automatyka to: dyscyplina naukowa zajmująca się podstawami teoretycznymi, dział techniki zajmujący się praktyczną realizacją urządzeń

Bardziej szczegółowo

POWIATOWY URZĄD PRACY

POWIATOWY URZĄD PRACY POWIATOWY URZĄD PRACY ul. Piłsudskiego 33, 33-200 Dąbrowa Tarnowska tel. (0-14 ) 642-31-78 Fax. (0-14) 642-24-78, e-mail: krda@praca.gov.pl Załącznik Nr 3 do Uchwały Nr 5/2015 Powiatowej Rady Rynku Pracy

Bardziej szczegółowo

Logowanie do systemu Faktura elektroniczna

Logowanie do systemu Faktura elektroniczna Logowanie do systemu Faktura elektroniczna Dostęp do Systemu Faktury Elektronicznej możliwy jest poprzez kliknięcie odnośnika Moja faktura w prawym górnym rogu strony www.wist.com.pl, a następnie przycisku

Bardziej szczegółowo