Wprowadzenie do szablonów klas

Save this PDF as:
 WORD  PNG  TXT  JPG

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

Download "Wprowadzenie do szablonów klas"

Transkrypt

1 Bogdan Kreczmer Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 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 Szablony klas Wprowadzenie 2 Klasy z definicją podtypu Szablon dla klasy z podtypem

4 Szablony klas Szablony klas Wprowadzenie 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.

5 Szablony klas Szablony klas Wprowadzenie 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.

6 Szablony klas Szablony klas Wprowadzenie 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.

7 Szablony klas Szablony klas Wprowadzenie 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.

8 Szablony klas Szablony klas Wprowadzenie 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.

9 Problemy z tłumaczeniem template wzorzec szablon

10 Problemy z tłumaczeniem template wzorzec szablon

11 Ogólna postać szablonu template < lista-parametrow-rozdzielonych-przecinkami > class Klasa {

12 Ogólna postać szablonu 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.

13 Ogólna postać szablonu 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.

14 Ogólna postać szablonu 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.

15 Ogólna postać szablonu 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.

16 Przykład szablonu stosu template < typename TYP > class Stos { TYP Tab[ROZ STOSU]; 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 >= ROZ STOSU? false : Tab[ Ilosc++] = El, true; } Słowo kluczowe typename sygnalizuje, że parametr szablonu jest typem.

17 Przykład szablonu stosu template < class TYP > class Stos { TYP Tab[ROZ STOSU]; 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 >= ROZ STOSU? false : Tab[ Ilosc++] = El, true; }

18 Przykład szablonu stosu template < typename TYP > class Stos { TYP Tab[ROZ STOSU]; 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 >= ROZ STOSU? false : Tab[ Ilosc++] = El, true; }

19 Przykład szablonu stosu template < typename TYP > class Stos { TYP Tab[ROZ STOSU]; 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 >= ROZ STOSU? false : Tab[ Ilosc++] = El, true; } int main( ) { Stos<float> } St;

20 Przykład szablonu stosu template < typename TYP > class Stos { TYP Tab[ROZ STOSU]; 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 >= ROZ STOSU? false : Tab[ Ilosc++] = El, true; } int main( ) { Stos<double[100]> } St;

21 Przykład szablonu stosu template < typename TYP > class Stos { TYP Tab[ROZ STOSU]; 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 >= ROZ STOSU? false : Tab[ Ilosc++] = El, true; } int main( ) { Stos<std::string> } St;

22 Przykład szablonu stosu template < typename TYP > class Stos { TYP Tab[ROZ STOSU]; 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 >= ROZ STOSU? false : Tab[ Ilosc++] = El, true; } int main( ) { Stos<std::istream> } St;

23 Przykład szablonu stosu template < typename TYP > class Stos { TYP Tab[ROZ STOSU]; 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 >= ROZ STOSU? false : Tab[ Ilosc++] = El, true; } int main( ) { Stos<std::istream> } St;

24 Przykład szablonu stosu template < typename TYP > class Stos { TYP Tab[ROZ STOSU]; 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 >= ROZ STOSU? false : Tab[ Ilosc++] = El, true; } int main( ) { Stos<std::istream> } St;

25 Przykład szablonu stosu template < typename TYP > class Stos { TYP Tab[ROZ STOSU]; 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 >= ROZ STOSU? false : Tab[ Ilosc++] = El, true; } int main( ) { Stos<std::istream > } St;

26 Przykład szablonu stosu template < typename TYP > class Stos { TYP Tab[ROZ STOSU]; 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 >= ROZ STOSU? false : Tab[ Ilosc++] = El, true; } int main( ) { Stos<std::istream&> } St;

27 Przykład szablonu stosu template < typename TYP > class Stos { TYP Tab[ROZ STOSU]; 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 >= ROZ STOSU? false : Tab[ Ilosc++] = El, true; } int main( ) { Stos<std::istream&> } St;

28 Przykład szablonu stosu template < typename TYP > class Stos { TYP Tab[ROZ STOSU]; 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 >= ROZ STOSU? false : Tab[ Ilosc++] = El, true; } int main( ) { Stos< Stos< Stos< char[20] > > > } St;

29 Przykład szablonu stosu template < typename TYP > class Stos { TYP Tab[ROZ STOSU]; 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 >= ROZ STOSU? false : Tab[ Ilosc++] = El, true; }

30 Przykład szablonu stosu 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; }

31 Przykład szablonu stosu 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; } int main( ) { Stos<float, 100> } St;

32 Przykład szablonu stosu 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;

33 Przykład szablonu stosu 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;

34 Klasa z typem wyliczeniowym class EnkoderRobota { int Stan; public: EnkoderRobota( ): Stan( ) {} int Wez( ) const { return Stan; } void Zmien(int Stan) { Stan = Stan; } Klasy z definicją podtypu Szablon dla klasy z podtypem

35 Klasa z typem wyliczeniowym class EnkoderRobota { int Stan; public: EnkoderRobota( ): Stan( ) {} int Wez( ) const { return Stan; } void Zmien(int Stan) { Stan = Stan; } enum Klasy z definicją podtypu Szablon dla klasy z podtypem Urzadzenie { Naped, Skret, Wiezyczka, Ilosc

36 Klasa z typem wyliczeniowym class EnkoderRobota { int Stan; public: EnkoderRobota( ): Stan( ) {} int Wez( ) const { return Stan; } void Zmien(int Stan) { Stan = Stan; } enum Klasy z definicją podtypu Szablon dla klasy z podtypem Urzadzenie { Naped, Skret, Wiezyczka, Ilosc int main( ) { EnkoderRobota Tab[EnkoderRobota::Ilosc]; Tab[EnkoderRobota::Naped].Zmien(2); }

37 Klasa z typem wyliczeniowym class EnkoderRobota { int Stan; public: EnkoderRobota( ): Stan( ) {} int Wez( ) const { return Stan; } void Zmien(int Stan) { Stan = Stan; } enum Klasy z definicją podtypu Szablon dla klasy z podtypem Urzadzenie { Naped, Skret, Wiezyczka, Ilosc int main( ) { EnkoderRobota Tab[EnkoderRobota::Ilosc]; Tab[EnkoderRobota::Naped].Zmien(2); Tab[10].Zmien(2); }

38 Klasa z typem wyliczeniowym class EnkoderRobota { int Stan; public: EnkoderRobota( ): Stan( ) {} int Wez( ) const { return Stan; } void Zmien(int Stan) { Stan = Stan; } enum Klasy z definicją podtypu Szablon dla klasy z podtypem Urzadzenie { Naped, Skret, Wiezyczka, Ilosc class PotencjometrRobota { int Stan; public: PotencjometrRobota( ): Stan( ) {} int Wez( ) const { return Stan; } void Zmien(int Stan) { Stan = Stan; } enum Urzadzenie { Noga1, Noga2, Noga3, Noga4, Ilosc

39 Synonimy dla nazw typów Klasy z definicją podtypu Szablon dla klasy z podtypem class EnkoderRobota { enum Urzadzenie { Naped, Skret, Wiezyczka, Ilosc class PotencjometrRobota { enum Urzadzenie { Noga1, Noga2, Noga3, Noga4, Ilosc

40 Synonimy dla nazw typów Klasy z definicją podtypu Szablon dla klasy z podtypem class EnkoderRobota { enum Urzadzenie { Naped, Skret, Wiezyczka, Ilosc class PotencjometrRobota { enum Urzadzenie { Noga1, Noga2, Noga3, Noga4, Ilosc int main( ) { StanEnkRob StanEnk; StanPotRob StanPot; } StanEnk.Wez(::Naped); StanPot.Wez(::Noga1);

41 Synonimy dla nazw typów Klasy z definicją podtypu Szablon dla klasy z podtypem class EnkoderRobota { enum Urzadzenie { Naped, Skret, Wiezyczka, Ilosc class PotencjometrRobota { enum Urzadzenie { Noga1, Noga2, Noga3, Noga4, Ilosc int main( ) { StanEnkRob StanEnk; StanPotRob StanPot; } StanEnk.Wez(::Naped); StanPot.Wez(::Noga1); StanPot.Wez(1);

42 Synonimy dla nazw typów Klasy z definicją podtypu Szablon dla klasy z podtypem class EnkoderRobota { enum Urzadzenie { Naped, Skret, Wiezyczka, Ilosc class PotencjometrRobota { enum Urzadzenie { Noga1, Noga2, Noga3, Noga4, Ilosc int main( ) { StanEnkRob StanEnk; StanPotRob StanPot; } StanEnk.Wez(::Naped); StanPot.Wez(::Noga1); StanPot.Wez(1); encoder.cpp: In function int main() : encoder.cpp:62: error: invalid conversion from int to PotencjometrRobota::Urzadzenie

43 Synonimy dla nazw typów Klasy z definicją podtypu Szablon dla klasy z podtypem class EnkoderRobota { enum Urzadzenie { Naped, Skret, Wiezyczka, Ilosc class PotencjometrRobota { enum Urzadzenie { Noga1, Noga2, Noga3, Noga4, Ilosc int main( ) { StanEnkRob StanEnk; StanPotRob StanPot; } StanEnk.Wez(EnkoderRobota::Naped); StanPot.Wez(PotencjometrRobota::Noga1);

44 Synonimy dla nazw typów Klasy z definicją podtypu Szablon dla klasy z podtypem class EnkoderRobota { enum Urzadzenie { Naped, Skret, Wiezyczka, Ilosc typedef PotencjometrRobota typedef EnkoderRobota PotRob; EnkRob; int main( ) { StanEnkRob StanEnk; StanPotRob StanPot; } StanEnk.Wez(EnkoderRobota::Naped); StanPot.Wez(PotencjometrRobota::Noga1);

45 Synonimy dla nazw typów Klasy z definicją podtypu Szablon dla klasy z podtypem class EnkoderRobota { enum Urzadzenie { Naped, Skret, Wiezyczka, Ilosc typedef PotencjometrRobota typedef EnkoderRobota PotRob; EnkRob; int main( ) { StanEnkRob StanEnk; StanPotRob StanPot; } StanEnk.Wez(EnkRob::Naped); StanPot.Wez(PotRob::Noga1);

46 Definicja szablonu Szablony klas Wprowadzenie Klasy z definicją podtypu Szablon dla klasy z podtypem class EnkoderRobota { enum Urzadzenie { Naped, Skret, Wiezyczka, Ilosc class PotencjometrRobota { enum Urzadzenie { Noga1, Noga2, Noga3, Noga4, Ilosc

47 Definicja szablonu Szablony klas Wprowadzenie Klasy z definicją podtypu Szablon dla klasy z podtypem class EnkoderRobota { enum Urzadzenie { Naped, Skret, Wiezyczka, Ilosc template <typename TYP> class Stan { TYP TabCzytn[TYP::Ilosc]; public: int Wez(typename TYP::Urzadzenie Urz) const { return TabCzytn[Urz].Wez( ); } void Zmien(typename TYP::Urzadzenie Urz, int Stan) { return TabCzytn[Urz].Zmien(Stan); }

48 Definicja szablonu Szablony klas Wprowadzenie Klasy z definicją podtypu Szablon dla klasy z podtypem class EnkoderRobota { enum Urzadzenie { Naped, Skret, Wiezyczka, Ilosc template <typename TYP> class Stan { TYP TabCzytn[TYP::Ilosc]; public: int Wez(typename TYP::Urzadzenie Urz) const { return TabCzytn[Urz].Wez( ); } void Zmien(typename TYP::Urzadzenie Urz, int Stan) { return TabCzytn[Urz].Zmien(Stan); }

49 Definicja szablonu Szablony klas Wprowadzenie Klasy z definicją podtypu Szablon dla klasy z podtypem class EnkoderRobota { enum Urzadzenie { Naped, Skret, Wiezyczka, Ilosc template <typename TYP> class Stan { TYP TabCzytn[TYP::Ilosc]; public: int Wez(typename TYP::Urzadzenie Urz) const { return TabCzytn[Urz].Wez( ); } void Zmien(typename TYP::Urzadzenie Urz, int Stan) { return TabCzytn[Urz].Zmien(Stan); }

50 Wykorzystanie szablonu Klasy z definicją podtypu Szablon dla klasy z podtypem class EnkoderRobota { enum Urzadzenie { Naped, Skret, Wiezyczka, Ilosc template <typename TYP> class Stan { TYP TabCzytn[TYP::Ilosc]; public: int Wez(typename TYP::Urzadzenie Urz) const int main() { Stan<EnkoderRobota> StanEnk; } StanEnk.Wez(EnkoderRobota::Naped);

51 Wykorzystanie szablonu Klasy z definicją podtypu Szablon dla klasy z podtypem class EnkoderRobota { enum Urzadzenie { Naped, Skret, Wiezyczka, Ilosc template <typename TYP> class Stan { TYP TabCzytn[TYP::Ilosc]; public: int Wez(typename TYP::Urzadzenie Urz) const int main() { Stan<EnkoderRobota> StanEnk; } StanEnk.Wez(EnkoderRobota::Naped); StanEnk.Wez(1);

52 Wykorzystanie szablonu Klasy z definicją podtypu Szablon dla klasy z podtypem class EnkoderRobota { enum Urzadzenie { Naped, Skret, Wiezyczka, Ilosc template <typename TYP> class Stan { TYP TabCzytn[TYP::Ilosc]; public: int Wez(typename TYP::Urzadzenie Urz) const int main() { Stan<EnkoderRobota> StanEnk; } StanEnk.Wez(EnkoderRobota::Naped); StanEnk.Wez(1); encoder.cpp: In function int main() : encoder.cpp:62: error: invalid conversion from int to PotencjometrRobota::Urzadzenie encoder.cpp:62: error: initializing argument 1 of int Stan<TYP>::Wez(typename TYP::Urzadzenie) const [with TYP = PotencjometrRobota]

53 Synonimy nazw typów po raz drugi Klasy z definicją podtypu Szablon dla klasy z podtypem class EnkoderRobota { enum Urzadzenie { Naped, Skret, Wiezyczka, Ilosc template <typename TYP> class Stan { public: int Wez(typename TYP::Urzadzenie Urz) const int main( ) { Stan<EnkoderRobota>StanEnkRob StanEnk; } StanEnk.Wez(EnkoderRobotaEnkRob::Naped);

54 Synonimy nazw typów po raz drugi Klasy z definicją podtypu Szablon dla klasy z podtypem class EnkoderRobota { enum Urzadzenie { Naped, Skret, Wiezyczka, Ilosc template <typename TYP> class Stan { public: int Wez(typename TYP::Urzadzenie Urz) const typedef Stan<EnkoderRobota> typedef EnkoderRobota StanEnkRob; EnkRob; int main( ) { Stan<EnkoderRobota>StanEnkRob StanEnk; } StanEnk.Wez(EnkoderRobotaEnkRob::Naped);

55 Synonimy nazw typów po raz drugi Klasy z definicją podtypu Szablon dla klasy z podtypem class EnkoderRobota { enum Urzadzenie { Naped, Skret, Wiezyczka, Ilosc template <typename TYP> class Stan { public: int Wez(typename TYP::Urzadzenie Urz) const typedef Stan<EnkoderRobota> typedef EnkoderRobota StanEnkRob; EnkRob; int main( ) { Stan<EnkoderRobota>StanEnkRob StanEnk; } StanEnk.Wez(EnkoderRobotaEnkRob::Naped);

56 Synonimy nazw typów po raz drugi Klasy z definicją podtypu Szablon dla klasy z podtypem class EnkoderRobota { enum Urzadzenie { Naped, Skret, Wiezyczka, Ilosc template <typename TYP> class Stan { public: int Wez(typename TYP::Urzadzenie Urz) const typedef Stan<EnkoderRobota> typedef EnkoderRobota int main( ) { StanEnkRob StanEnk; StanEnkRob; EnkRob; } StanEnk.Wez(EnkRob::Naped);

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

Wartości domyślne, szablony funkcji i klas

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

Praca z aplikacją designer

Praca z aplikacją 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 2014 Bogdan Kreczmer Niniejszy dokument

Bardziej szczegółowo

Wprowadzenie do UML, przykład użycia kolizja

Wprowadzenie do UML, przykład użycia kolizja 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ółowo

Dalmierze optyczne. Bogdan Kreczmer. bogdan.kreczmer@pwr.wroc.pl

Dalmierze optyczne. Bogdan Kreczmer. bogdan.kreczmer@pwr.wroc.pl Dalmierze optyczne 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

Diagramy UML, przykład problemu kolizji

Diagramy UML, przykład problemu kolizji Bogdan Kreczmer bogdan.kreczmer@pwr.edu.pl Katedra Cybernetyki i Robotyki Wydział Elektroniki Politechnika Wrocławska Kurs: Copyright c 2015 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu

Bardziej szczegółowo

Wykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, 2014. Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

Wykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, 2014. Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik Wykład VII Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2014 c Copyright 2014 Janusz Słupik Kompilacja Kompilator C program do tłumaczenia kodu źródłowego na język maszynowy. Preprocesor

Bardziej szczegółowo

Wstęp do wiadomości teoretycznych (nie, nie jest to masło maślane ani wstęp, wstępów proszę cierpliwie czytać)

Wstęp do wiadomości teoretycznych (nie, nie jest to masło maślane ani wstęp, wstępów proszę cierpliwie czytać) Języki i Paradygmaty Programowania Laboratorium 1 Obiekty i klasy C++ Wstęp do wiadomości teoretycznych (nie, nie jest to masło maślane ani wstęp, wstępów proszę cierpliwie czytać) UWAGA! Umiejętność tworzenia

Bardziej szczegółowo

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

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02 METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się

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

Projektowanie klas c.d. Projektowanie klas przykład

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

Abstrakcyjny typ danych

Abstrakcyjny 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ół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

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

Wykład I. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej Wykład I - semestr II Kierunek Informatyka Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2015 c Copyright 2015 Janusz Słupik Zaliczenie przedmiotu Do zaliczenia przedmiotu niezbędne jest

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

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

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

Bardziej szczegółowo

Dziedziczenie i poliformizm

Dziedziczenie i poliformizm 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

Efekty uboczne błędów

Efekty uboczne błędów Obsługa wyjątków Efekty uboczne błędów Fragment kodu programu jest bezpieczny (ang. exception-safe) jeżeli błędy, które wystąpią w trakcie przetwarzania tego kodu nie będą powodowały niepożądanych efektów

Bardziej szczegółowo

Modelowanie numeryczne w fizyce atmosfery Ćwiczenia 3

Modelowanie numeryczne w fizyce atmosfery Ćwiczenia 3 Modelowanie numeryczne w fizyce atmosfery Sylwester Arabas (ćwiczenia do wykładu dr. hab. inż. Lecha Łobockiego) Instytut Geofizyki, Wydział Fizyki Uniwersytetu Warszawskiego 3. listopada 2011 r. Schemat

Bardziej szczegółowo

Materiały. Języki programowania II (Java+AVR-GCC) Literatura

Materiały. Języki programowania II (Java+AVR-GCC) Literatura Języki programowania II (Java+AVR-GCC) http://abm.p.lodz.pl dr inż. Michał Ludwicki Literatura Materiały Mikrokontrolery AVR Język C Podstawy programowania Mirosław Kardaś, Atnel, Szczecin, 2011. Specyfikacja

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

Język ludzki kod maszynowy

Język ludzki kod maszynowy Język ludzki kod maszynowy poziom wysoki Język ludzki (mowa) Język programowania wysokiego poziomu Jeśli liczba punktów jest większa niż 50, test zostaje zaliczony; w przeciwnym razie testu nie zalicza

Bardziej szczegółowo

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej Programowanie obiektowe Interfejsy Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski pwr.wroc.pl Interfejsy Autor: Paweł Rogaliński Instytut Informatyki,

Bardziej szczegółowo

Zofia Kruczkiewicz, ETE8305_2 1

Zofia Kruczkiewicz, ETE8305_2 1 Wprowadzenie do programowania obiektowego w C++ 1. Główne zasady programowania obiektowego: hermetyzacja, dziedziczenie, polimorfizm 2. Pojęcie klasy: sposoby deklarowania i definiowania składowych klasy,

Bardziej szczegółowo

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

Programowanie 2. Język C++. Wykład 1. 1.1 Wstęp... 1 1.2 Obiekty stałe... 3 1.3 Obiekty statyczne... 4 1.4 Wskaźniki... 5 1.5 Referencje... 8 1.6 Wskaźniki do wskaźników... 11 1.7 Definiowanie własnych typów danych, polecenie typedef... 17

Bardziej szczegółowo

Techniki Programowania

Techniki Programowania Techniki Programowania Łukasz Madej Katedra Informatyki Stosowanej i Modelowania Wykłady opracowane we współpracy z Danutą Szeligą, Łukaszem Sztangretem Dr hab. inż. Łukasz Madej, prof. AGH Budynek B5,

Bardziej szczegółowo

Zaawansowane programowanie w języku C++ Zarządzanie pamięcią w C++

Zaawansowane programowanie w języku C++ Zarządzanie pamięcią w C++ Zaawansowane programowanie w języku C++ Zarządzanie pamięcią w C++ Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Nowe słowa kluczowe. Komentarze. Wskaźniki typu void. class, delete, new, friend,... /* Komentarz w C i C++ */ // Komentarz w C++ (do końca wiersza)

Nowe słowa kluczowe. Komentarze. Wskaźniki typu void. class, delete, new, friend,... /* Komentarz w C i C++ */ // Komentarz w C++ (do końca wiersza) Różnice między C i C++ (Rozszerzenia C++) Nowe słowa kluczowe class, delete, new, friend,... Komentarze /* Komentarz w C i C++ */ // Komentarz w C++ (do końca wiersza) Wskaźniki typu void W C wskaźniki

Bardziej szczegółowo

Klasy generyczne. ZbiórLiczb. ZbiórCzegokolwiek. Zbiór

Klasy generyczne. ZbiórLiczb. ZbiórCzegokolwiek. Zbiór Klasy generyczne Klasy generyczne Klasy generyczne są to klasy o parametryzowanych typach danych. Klasy generyczne posiadają kompletną implementację, jednak nie definiują typów danych wykorzystanych w

Bardziej szczegółowo

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta 16.09.2006. Strona 1 z 26. Powrót. Full Screen. Zamknij.

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta 16.09.2006. Strona 1 z 26. Powrót. Full Screen. Zamknij. Programowanie Sobera Jolanta 16.09.2006 Strona 1 z 26 1 Wprowadzenie do programowania 4 2 Pierwsza aplikacja 5 3 Typy danych 6 4 Operatory 9 Strona 2 z 26 5 Instrukcje sterujące 12 6 Podprogramy 15 7 Tablice

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

Wykład 4: Klasy i Metody

Wykład 4: Klasy i Metody Wykład 4: Klasy i Metody Klasa Podstawa języka. Każde pojęcie które chcemy opisać w języku musi być zawarte w definicji klasy. Klasa definiuje nowy typ danych, których wartościami są obiekty: klasa to

Bardziej szczegółowo

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

Organizacja kursu, paradygmaty, ogólnie o C i C++ Organizacja kursu, paradygmaty, ogólnie o C i C++ Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Katedra Cybernetyki i Robotyki Wydziału Elektroniki Politechniki Wrocławskiej Kurs: Copyright c 2015 Bogdan

Bardziej szczegółowo

Zadanie 04 Ktory z ponizszych typow danych w jezyku ANSI C jest typem zmiennoprzecinkowym pojedynczej precyzji?

Zadanie 04 Ktory z ponizszych typow danych w jezyku ANSI C jest typem zmiennoprzecinkowym pojedynczej precyzji? Zadanie 01 W przedstawionym ponizej programie w jezyku ANSI C w miejscu wykropkowanym brakuje jednej linii: #include... int main() { printf("tralalalala"); return 0; } A. B. "iostream" C.

Bardziej szczegółowo

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe Wykład 15 Wprowadzenie do języka na bazie a Literatura Podobieństwa i różnice Literatura B.W.Kernighan, D.M.Ritchie Język ANSI Kompilatory Elementarne różnice Turbo Delphi FP Kylix GNU (gcc) GNU ++ (g++)

Bardziej szczegółowo

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna Język JAVA podstawy Wykład 3, część 3 1 Język JAVA podstawy Plan wykładu: 1. Konstrukcja kodu programów w Javie 2. Identyfikatory, zmienne 3. Typy danych 4. Operatory, instrukcje sterujące instrukcja warunkowe,

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Egzamin z Podstaw informatyki i programowania 2007/2008

Egzamin z Podstaw informatyki i programowania 2007/2008 Egzamin z Podstaw informatyki i programowania 2007/2008 Imię i nazwisko:... 1 2 3 4 5 6 7 8 9 10 11 12 13 14 suma 1. Napisz funkcję logiczną, która dla zadanej parametrem wartości rzeczywistej x, oblicza

Bardziej szczegółowo

10.1 Szablony... 1 10.2 Szablony funkcji... 2 10.3 Szablony klas... 5 10.4 Szablony jako wstęp do biblioteki STL... 10

10.1 Szablony... 1 10.2 Szablony funkcji... 2 10.3 Szablony klas... 5 10.4 Szablony jako wstęp do biblioteki STL... 10 .1 Szablony... 1.2 Szablony funkcji... 2.3 Szablony klas....4 Szablony jako wstęp do biblioteki STL....1 Szablony Szablony definiują sparametryzowane rodziny klas, funkcji. Szablony deklarujemy i definiujemy

Bardziej szczegółowo

Wykład 12. Programowanie serwera MS SQL 2005 w C#

Wykład 12. Programowanie serwera MS SQL 2005 w C# Wykład 12 Programowanie serwera MS SQL 2005 w C# Budowa procedur składowanych w C# Budowa funkcji składowanych w C# Wykorzystanie funkcji składowanych w C# po stronie klienta Tworzenie typów definiowanych

Bardziej szczegółowo

Języki i paradygmaty programowania

Języki i paradygmaty programowania Języki i paradygmaty programowania WYDZIAŁ ELEKTRONIKI i INFORMATYKI dr inż. Robert Arsoba Politechnika Koszalińska Wydział Elektroniki i Informatyki POLITECHNIKA KOSZALIŃSKA 2009/2010 Materiały do wykładu

Bardziej szczegółowo

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Polimorfizm, metody wirtualne i klasy abstrakcyjne Programowanie obiektowe Polimorfizm, metody wirtualne i klasy abstrakcyjne Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski pwr.wroc.pl Polimorfizm,

Bardziej szczegółowo

Jzyk C++ cz 3. Jarosław Gramacki Instytut Informatyki i Elektroniki ( $)*)+' *, - ( ' )*'.' '',*/ *, ','*0) 1 / ) %*+ 2'' 2" ( $%%) )'20 )*0) 1 / )

Jzyk C++ cz 3. Jarosław Gramacki Instytut Informatyki i Elektroniki ( $)*)+' *, - ( ' )*'.' '',*/ *, ','*0) 1 / ) %*+ 2'' 2 ( $%%) )'20 )*0) 1 / ) Jzyk C++ cz 3 Jarosław Gramacki Instytut Informatyki i Elektroniki # $$%%& ' ( $)*)+' *, - ( ' )*'.' '',*/ *, ','*0) 1 / ) %*+ 2'' 2" ( $%%) )'20 )*0) 1 / )!" 2 # $$%%& ' ( $%%/,))3 ( %* 2 / 4 ( ( *' *''*,

Bardziej szczegółowo

PROGRAMOWANIE w C prolog

PROGRAMOWANIE w C prolog PROGRAMOWANIE w C prolog dr inż. Jarosław Stańczyk Uniwersytet Przyrodniczy we Wrocławiu Wydział Biologii i Hodowli Zwierząt Katedra Genetyki 1 / jaroslaw.stanczyk@up.wroc.pl programowanie w c 17.10.2014

Bardziej szczegółowo

Środowisko programistyczne GEANT4

Środowisko programistyczne GEANT4 Środowisko programistyczne GEANT4 Leszek Adamczyk Wydział Fizyki i Informatyki Stosowanej Akademia Górniczo-Hutnicza Wykłady w semestrze zimowym 2013/2014 Informacje wstępne Kurs oparty jest na: dokumentacji

Bardziej szczegółowo

20. Pascal i łączenie podprogramów Pascala z programem napisanym w C

20. Pascal i łączenie podprogramów Pascala z programem napisanym w C Opublikowano w: WEREWKA J..: Podstawy programowana dla automatyków. Skrypt AGH Nr 1515, Kraków 1998 20. i łączenie podprogramów a z programem napisanym w Ze względu na duże rozpowszechnienie języka, szczególnie

Bardziej szczegółowo

Język C++ część 9 szablony klas. Jarosław Gramacki Instytut Informatyki i Elektroniki. szablony funkcji

Język C++ część 9 szablony klas. Jarosław Gramacki Instytut Informatyki i Elektroniki. szablony funkcji Język C++ część 9 szablony klas Jarosław Gramacki Instytut Informatyki i Elektroniki szablony funkcji były omawiane na wcześniejszym wykładzie nazewnictwo: szablon funkcji wzorzec funkcji 2 szablony

Bardziej szczegółowo

Microsoft IT Academy kurs programowania

Microsoft IT Academy kurs programowania Microsoft IT Academy kurs programowania Podstawy języka C# Maciej Hawryluk Język C# Język zarządzany (managed language) Kompilacja do języka pośredniego (Intermediate Language) Kompilacja do kodu maszynowego

Bardziej szczegółowo

Wstęp do programowania 1

Wstęp do programowania 1 Wstęp do programowania 1 Struktury Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 12 Struktura dla dat - przykład #include struct Date { int y; short m; short

Bardziej szczegółowo

Programowanie strukturalne język C - wprowadzenie

Programowanie strukturalne język C - wprowadzenie Programowanie strukturalne język C - wprowadzenie Dr inż. Sławomir Samolej D102 C, tel: 865 1766, email: ssamolej@prz-rzeszow.pl WWW: ssamolej.prz-rzeszow.pl Cechy programowania strukturalnego Możliwość

Bardziej szczegółowo

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość 1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość 2. Poprawna definicja wskażnika b to: a) float *a, **b = &a; b) float

Bardziej szczegółowo

Zaawansowane programowanie w C++ (PCP)

Zaawansowane programowanie w C++ (PCP) Zaawansowane programowanie w C++ (PCP) Wykład 1 - sprawy organizacyjne i wprowadzenie. dr inż. Robert Nowak - p. 1/27 Cel i zakres przedmiotu Umiejętność programowania to umiejętność rozwiazania problemów

Bardziej szczegółowo

Język JAVA podstawy. wykład 1, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Język JAVA podstawy. wykład 1, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna Język JAVA podstawy wykład 1, część 3 1 Język JAVA podstawy Plan wykładu: 1. Krótka historia Javy 2. Jak przygotować sobie środowisko programistyczne 3. Opis środowiska JDK 4. Tworzenie programu krok po

Bardziej szczegółowo

Oprogramowanie i wykorzystanie stacji roboczych. Wykład 4

Oprogramowanie i wykorzystanie stacji roboczych. Wykład 4 Wykład 4 p. 1/1 Oprogramowanie i wykorzystanie stacji roboczych Wykład 4 Dr inż. Tomasz Olas olas@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Obsługa sieci Wykład

Bardziej szczegółowo

Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut.

Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut. Konstruktory Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut. Rozpatrzmy przykład przedstawiający klasę Prostokat: class

Bardziej szczegółowo

Funkcje wirtualne. Wskaźniki do klas pochodnych są podstawą dla funkcji wirtualnych i polimorfizmu dynamicznego.

Funkcje wirtualne. Wskaźniki do klas pochodnych są podstawą dla funkcji wirtualnych i polimorfizmu dynamicznego. Funkcje wirtualne W C++ polimorfizm jest zrealizowany w dwa sposoby: na etapie kompilacji i na etapie wykonania. Na etapie kompilacji polimorfizm jest zrealizowany poprzez przeciążenie funkcji i operatorów.

Bardziej szczegółowo

Wskaznik. Przekazywanie wyniku funkcji przez return. Typy i zmienne wskaznikowe. Zmienna wskazywana. typ * nazwa_wkaznika

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

DYNAMICZNE PRZYDZIELANIE PAMIECI

DYNAMICZNE PRZYDZIELANIE PAMIECI DYNAMICZNE PRZYDZIELANIE PAMIECI Pamięć komputera, dostępna dla programu, dzieli się na cztery obszary: kod programu, dane statyczne ( np. stałe i zmienne globalne programu), dane automatyczne zmienne

Bardziej szczegółowo

Dia rysowanie diagramów

Dia rysowanie diagramów Bogdan Kreczmer bogdan.kreczmer@pwr.edu.pl Katedra Cybernetyki i Robotyki Wydziału Elektroniki Politechnika Wrocławska Kurs: Copyright c 2015 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu

Bardziej szczegółowo

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

Wykład I. Programowanie III - semestr III Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej Wykład I - semestr III Kierunek Informatyka Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2014 c Copyright 2014 Janusz Słupik Zaliczenie przedmiotu Do zaliczenia przedmiotu niezbędne jest

Bardziej szczegółowo

Język C++ wykład VII. uzupełnienie notatek: dr Jerzy Białkowski. Programowanie C/C++ Język C++ wykład VII. dr Jarosław Mederski. Spis.

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

Bardziej szczegółowo

Programowanie I C / C++ laboratorium 03 arytmetyka, operatory

Programowanie I C / C++ laboratorium 03 arytmetyka, operatory Programowanie I C / C++ laboratorium 03 arytmetyka, operatory Jarosław Piersa Wydział Matematyki i Informatyki, Uniwersytet Mikołaja Kopernika 2013-02-19 Typ znakowy Typ znakowy Typ wyliczeniowy # include

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

Zaawansowane programowanie w C++ (PCP)

Zaawansowane programowanie w C++ (PCP) Zaawansowane programowanie w C++ (PCP) Wykład 3 - polimorfizm. dr inż. Robert Nowak - p. 1/14 Powtórzenie Powtórzenie: klasy autonomiczne: konstruktor, konstruktor kopiujacy, operator przypisania, destruktor

Bardziej szczegółowo

PARADYGMATY PROGRAMOWANIA Wykład 3

PARADYGMATY PROGRAMOWANIA Wykład 3 PARADYGMATY PROGRAMOWANIA Wykład 3 Definiowanie operatorów i ich przeciążanie Przykłady zastosowania operatorów: a) operator podstawienia ( = ) obiektów o złożonej strukturze, b) operatory działania na

Bardziej szczegółowo

Podstawy programowania obiektowego

Podstawy programowania obiektowego Podstaw programowania obiektowego wkład 5 klas i obiekt namespace ConsoleApplication1 // współrzędne punktu int, ; Jak, korzstając z dotchczasowej wiedz, zdefiniować w programie punkt? = 3; = 2; Może tak?

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

Wstęp do programowania obiektowego Szablony w C++ 1

Wstęp do programowania obiektowego Szablony w C++ 1 Wstęp do programowania obiektowego Szablony w C++ 1 Szablony Szablon - funkcja bądź klasa zaimplementowana dla nieokreślonego z góry typu. Typ ten jest określany (w sposób jawny bądź niejawny) w miejscu

Bardziej szczegółowo

Programowanie obiektowe, wykład nr 10. Metaprogramowanie cz.2: szablony struktur i klas

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

Wykład I. Programowanie. dr inż. Janusz Słupik. Gliwice, 2014. Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

Wykład I. Programowanie. dr inż. Janusz Słupik. Gliwice, 2014. Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik Wykład I I Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2014 c Copyright 2014 Janusz Słupik Zaliczenie przedmiotu Na laboratorium można zdobyć 100 punktów. Do zaliczenia niezbędne jest

Bardziej szczegółowo

Informatyka II Laboratorium 3 : Programowania obiektowe C++ - dziedziczenie

Informatyka II Laboratorium 3 : Programowania obiektowe C++ - dziedziczenie Materiały: Informatyka II Laboratorium : Programowania obiektowe C++ - dziedziczenie Książka: Symfonia C++, Jerzy Grębosz. Wykład: www.materialy.prz-rzeszow.pl, Informatyka II, dr Wojciech Rząsa. Zasoby

Bardziej szczegółowo

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. 1. Rodzaje pamięci używanej w programach Pamięć komputera, dostępna dla programu,

Bardziej szczegółowo

4 bity zarezerwowane dla przyszłych zastosowań 11 bitów określających źródło błędu 16 bitów określających rodzaj błędu.

4 bity zarezerwowane dla przyszłych zastosowań 11 bitów określających źródło błędu 16 bitów określających rodzaj błędu. Zgłaszanie błędów HRESULT Każda metoda interfejsu COM zwraca informację o błędzie w postaci typu HRESULT (long int). Struktura reprezentacji bitowej HRESULT podzielona jest na 4 sekcje: 1 bit błędu 4 bity

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 2 Marcin Młotkowski 4 marca 2015 Plan wykładu 1 2 3 4 5 Marcin Młotkowski Programowanie obiektowe 2 / 47 Krótki opis C Obiektowy, z kontrolą typów; automatyczne odśmiecanie;

Bardziej szczegółowo

Pętle while, for, do while, instrukcje break, continue, switch 1. Pętle

Pętle while, for, do while, instrukcje break, continue, switch 1. Pętle Pętle while, for, while, instrukcje break, continue, switch 1. Pętle Przykład 1 - Pętla while public class lab4_3 public static void main(string[] args) char ch = 'a'; String s, wynik=""; while ( ch!=

Bardziej szczegółowo

Programowanie Proceduralne

Programowanie Proceduralne Programowanie Proceduralne Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 6 Wskaźniki i tablice int a[10], b[10]; int* c; c = &a[0]; // c wskazuje na pierwszy element tablicy

Bardziej szczegółowo

Kontenery, algorytmy

Kontenery, algorytmy Kontenery, algorytmy Zaawansowane biblioteki programistyczne Sebastian Deorowicz Politechnika Śląska 2008 10 23 Sebastian Deorowicz (PŚl) Kontenery, algorytmy 2008 10 23 1 / 84 Plan wykładu 1 Kontenery

Bardziej szczegółowo

Co to jest sterta? Sterta (ang. heap) to obszar pamięci udostępniany przez system operacyjny wszystkim działającym programom (procesom).

Co to jest sterta? Sterta (ang. heap) to obszar pamięci udostępniany przez system operacyjny wszystkim działającym programom (procesom). Zarządzanie pamięcią Pamięć: stos i sterta Statyczny i dynamiczny przydział pamięci Funkcje ANSI C do zarządzania pamięcią Przykłady: Dynamiczna tablica jednowymiarowa Dynamiczna tablica dwuwymiarowa 154

Bardziej szczegółowo

Klasa std::string. Bogdan Kreczmer. ZPCiR IIAiR PWr pokój 307 budynek C3.

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

Ekspert radzi. mechanizm w enova, umożliwiający wskazanie domyślnej drukarki dla danego stanowiska i wydruku. Strona 1 z 8. Ekspert radzi.

Ekspert radzi. mechanizm w enova, umożliwiający wskazanie domyślnej drukarki dla danego stanowiska i wydruku. Strona 1 z 8. Ekspert radzi. Ekspert radzi mechanizm w enova, umożliwiający wskazanie domyślnej drukarki dla danego stanowiska i wydruku. Strona 1 z 8 Spis treści 1. Zarys rozwiązania...3 1.2 Case study...3 1.3 Wymagania...3 2. Projekt...3

Bardziej szczegółowo

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

Wykład 4 Delegat (delegate), właściwości indeksowane, zdarzenie (event) Zofia Kruczkiewicz Wykład 4 Delegat (delegate), właściwości indeksowane, zdarzenie (event) Zofia Kruczkiewicz Zagadnienia 1. Delegaty wiązane, właściwości indeksowane 2. Delegaty niewiązane 3. Nowa wersja kalkulatora, delegaty

Bardziej szczegółowo

Programowanie. Sylwester Arabas. prowadzący ćwiczenia: Magdalena Kuich, Krzysztof Piasecki, Łukasz Dulny. Wydział Fizyki Uniwersytetu Warszawskiego

Programowanie. Sylwester Arabas. prowadzący ćwiczenia: Magdalena Kuich, Krzysztof Piasecki, Łukasz Dulny. Wydział Fizyki Uniwersytetu Warszawskiego Programowanie Sylwester Arabas prowadzący ćwiczenia: Magdalena Kuich, Krzysztof Piasecki, Łukasz Dulny Wydział Fizyki Uniwersytetu Warszawskiego wykład VIII 15. kwietnia 2015 r. na ostatnim wykładzie...

Bardziej szczegółowo

The Graphics View Framework. Oprogramowanie i wykorzystanie stacji roboczych. Wykład 5. he Graphics View Framework - architektura

The Graphics View Framework. Oprogramowanie i wykorzystanie stacji roboczych. Wykład 5. he Graphics View Framework - architektura The Graphics View Framework Oprogramowanie i wykorzystanie stacji roboczych Dr inż. Tomasz Olas olas@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska The Graphics View

Bardziej szczegółowo

Programowanie niskopoziomowe

Programowanie niskopoziomowe Programowanie niskopoziomowe Programowanie niskopoziomowe w systemie operacyjnym oraz poza nim Tworzenie programu zawierającego procedury asemblerowe 1 Programowanie niskopoziomowe w systemie operacyjnym

Bardziej szczegółowo

Języki i paradygmaty programowania Wykład 2. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/18

Języki i paradygmaty programowania Wykład 2. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/18 Dariusz Wardowski dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/18 Literatura Języki i paradygmaty programowania Wykład 2 1. C. S. Horstman, G. Cornell, core Java 2 Podstawy, Helion 2003

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

KURS C/C++ WYKŁAD 8. Deklaracja funkcji informuje komplilator jaką wartość funkcja będzie zwracała i jakiego typu są jej argumenty.

KURS C/C++ WYKŁAD 8. Deklaracja funkcji informuje komplilator jaką wartość funkcja będzie zwracała i jakiego typu są jej argumenty. Funkcje. Deklaracja funkcji: KURS C/C++ WYKŁAD 8 #include //deklaracje funkcji: printf(...), scanf(...) #include //double sqrt (double ) #include //void clrscr (void) void main

Bardziej szczegółowo

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

Java - tablice, konstruktory, dziedziczenie i hermetyzacja Java - tablice, konstruktory, dziedziczenie i hermetyzacja Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak PLAN WYKŁADU zmienne tablicowe konstruktory klas dziedziczenie hermetyzacja

Bardziej szczegółowo

Problem Próby rozwiązania Maszyna stanów Inne zastosowania Podsumowanie. Maszyny stanów. Programowanie gier bez Unity, cz. 3.

Problem Próby rozwiązania Maszyna stanów Inne zastosowania Podsumowanie. Maszyny stanów. Programowanie gier bez Unity, cz. 3. Maszyny stanów Programowanie gier bez Unity, cz. 3 Piotr Korgul Koło Naukowe Twórców Gier Polygon 3 grudnia 2014 r. Cykl Programowanie gier bez Unity 1 Jak zorganizować prace nad grą? 2 Jak działa gra?

Bardziej szczegółowo

Grzegorz Cygan. Wstęp do programowania mikrosterowników w języku C

Grzegorz Cygan. Wstęp do programowania mikrosterowników w języku C Grzegorz Cygan Wstęp do programowania mikrosterowników w języku C Mikrosterownik Inne nazwy: Microcontroler (z języka angielskiego) Ta nazwa jest powszechnie używana w Polsce. Mikrokomputer jednoukładowy

Bardziej szczegółowo

Gostai URBI Power Swith

Gostai URBI Power Swith Wrocław, 14 czerwca 2012 Sterowniki Robotów Projekt Gostai URBI Power Swith Michalina Kotyla 180460 Opiekun projektu mgr inż. Jan Kędzierski 1 Cel projektu Celem projektu było utworzenie modułu dla URBI

Bardziej szczegółowo

Programowanie obiektowe, wykład nr 6. Klasy i obiekty

Programowanie obiektowe, wykład nr 6. Klasy i obiekty Dr hab. inż. Lucyna Leniowska, prof. UR, Zakład Mechatroniki, Automatyki i Optoelektroniki, IT Programowanie obiektowe, wykład nr 6 Klasy i obiekty W programowaniu strukturalnym rozwój oprogramowania oparto

Bardziej szczegółowo

Programowanie w językach

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

Bardziej szczegółowo

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

Podstawy programowania obiektowego

Podstawy programowania obiektowego Podstawy programowania obiektowego Technologie internetowe Wykład 5 Program wykładu Podejście obiektowe kontra strukturalne do tworzenie programu Pojęcie klasy i obiektu Składowe klasy: pola i metody Tworzenie

Bardziej szczegółowo

Akademia ETI. Wprowadzenie do programowania w Javie PG Java User Group Przemysław Kulesza

Akademia ETI. Wprowadzenie do programowania w Javie PG Java User Group Przemysław Kulesza Akademia ETI Wprowadzenie do programowania w Javie PG Java User Group 1 Dlaczego Java? Najpopularniejszy język programowania obiektowego Łatwy w nauce Dostępny na wiele platform 2 Platformy Java Java Standard

Bardziej szczegółowo