Technologie programowania Wykład 4. Szablony funkcji Notes. Szablony funkcji Notes. Szablony funkcji Notes. Notes. Przemek Błaśkiewicz.
|
|
- Teodor Sikorski
- 6 lat temu
- Przeglądów:
Transkrypt
1 Technologie programowania Wykład 4 Przemek Błaśkiewicz 9 maja / 54 Szablony funkcji Często w programach zachodzi potrzeba użycia funkcji, które co do mechanizmu działaja tak samo, ale różnia się tylko typem parametrów. Kompilator C++ pozwala na stworzenie szablonu funkcji, gdzie parametrem moga być typy danych. Programista koduje przepis na tworzenie rodziny funkcji różniacych się tylko typami parametrów. oszczędność pracy programisty, nie kodu! w prostych programach umieszczane w.cpp, w bardziej złożonych - w.h 2 / 54 Szablony funkcji Często w programach zachodzi potrzeba użycia funkcji, które co do mechanizmu działaja tak samo, ale różnia się tylko typem parametrów. Kompilator C++ pozwala na stworzenie szablonu funkcji, gdzie parametrem moga być typy danych. Programista koduje przepis na tworzenie rodziny funkcji różniacych się tylko typami parametrów. oszczędność pracy programisty, nie kodu! w prostych programach umieszczane w.cpp, w bardziej złożonych - w.h 3 / 54 Szablony funkcji Często w programach zachodzi potrzeba użycia funkcji, które co do mechanizmu działaja tak samo, ale różnia się tylko typem parametrów. Kompilator C++ pozwala na stworzenie szablonu funkcji, gdzie parametrem moga być typy danych. Programista koduje przepis na tworzenie rodziny funkcji różniacych się tylko typami parametrów. oszczędność pracy programisty, nie kodu! w prostych programach umieszczane w.cpp, w bardziej złożonych - w.h 4 / 54
2 Szablony funkcji Często w programach zachodzi potrzeba użycia funkcji, które co do mechanizmu działaja tak samo, ale różnia się tylko typem parametrów. Kompilator C++ pozwala na stworzenie szablonu funkcji, gdzie parametrem moga być typy danych. Programista koduje przepis na tworzenie rodziny funkcji różniacych się tylko typami parametrów. oszczędność pracy programisty, nie kodu! w prostych programach umieszczane w.cpp, w bardziej złożonych - w.h 5 / 54 Przykład funkcji szablonowej Zamiana wartości 2 void swap (T &a, T &b) { 3 T temp ; 4 temp = a; a = b; b = temp ; 5 } Kompilator interpretuje... 1 // T oznacza int 2 void swap ( int a, int b) { 3 int temp ; 4 temp = a; a = b; b = temp ; 5 } 6 / 54 Przykład funkcji szablonowej Zamiana wartości 2 void swap (T &a, T &b) { 3 T temp ; 4 temp = a; a = b; b = temp ; 5 } Kompilator interpretuje... 1 // T oznacza int 2 void swap ( int a, int b) { 3 int temp ; 4 temp = a; a = b; b = temp ; 5 } 7 / 54 Parametry funkcji szablonowej generowanie skonkretyzowanej funkcji zależy tylko od typu parametrów, a nie od typu zwracanego parametrem szablonu może być dowolny typ danych (wbudowany, klasa), pod warunkiem, że zachowanie się funkcji dla konkretnego typu jest zdefiniowane dla pewnych przypadków kompilator dorabia funkcjonalności dla typów wbudowanych (przykład) możliwe jest użycie większej ilości parametrów: template <class T1, class T2> void do(t1 a, T2 b); jeśli typem kolejnego argumentu jest typ pochodny od już zadeklarowanego (wskaźnik, referencja) - nie ma potrzeby jego deklaracji: template <class T> void abc(t a, T[ ] b); 8 / 54
3 Parametry funkcji szablonowej generowanie skonkretyzowanej funkcji zależy tylko od typu parametrów, a nie od typu zwracanego parametrem szablonu może być dowolny typ danych (wbudowany, klasa), pod warunkiem, że zachowanie się funkcji dla konkretnego typu jest zdefiniowane dla pewnych przypadków kompilator dorabia funkcjonalności dla typów wbudowanych (przykład) możliwe jest użycie większej ilości parametrów: template <class T1, class T2> void do(t1 a, T2 b); jeśli typem kolejnego argumentu jest typ pochodny od już zadeklarowanego (wskaźnik, referencja) - nie ma potrzeby jego deklaracji: template <class T> void abc(t a, T[ ] b); 9 / 54 Parametry funkcji szablonowej generowanie skonkretyzowanej funkcji zależy tylko od typu parametrów, a nie od typu zwracanego parametrem szablonu może być dowolny typ danych (wbudowany, klasa), pod warunkiem, że zachowanie się funkcji dla konkretnego typu jest zdefiniowane dla pewnych przypadków kompilator dorabia funkcjonalności dla typów wbudowanych (przykład) możliwe jest użycie większej ilości parametrów: template <class T1, class T2> void do(t1 a, T2 b); jeśli typem kolejnego argumentu jest typ pochodny od już zadeklarowanego (wskaźnik, referencja) - nie ma potrzeby jego deklaracji: template <class T> void abc(t a, T[ ] b); 10 / 54 Parametry funkcji szablonowej generowanie skonkretyzowanej funkcji zależy tylko od typu parametrów, a nie od typu zwracanego parametrem szablonu może być dowolny typ danych (wbudowany, klasa), pod warunkiem, że zachowanie się funkcji dla konkretnego typu jest zdefiniowane dla pewnych przypadków kompilator dorabia funkcjonalności dla typów wbudowanych (przykład) możliwe jest użycie większej ilości parametrów: template <class T1, class T2> void do(t1 a, T2 b); jeśli typem kolejnego argumentu jest typ pochodny od już zadeklarowanego (wskaźnik, referencja) - nie ma potrzeby jego deklaracji: template <class T> void abc(t a, T[ ] b); 11 / 54 Parametry funkcji szablonowej generowanie skonkretyzowanej funkcji zależy tylko od typu parametrów, a nie od typu zwracanego parametrem szablonu może być dowolny typ danych (wbudowany, klasa), pod warunkiem, że zachowanie się funkcji dla konkretnego typu jest zdefiniowane dla pewnych przypadków kompilator dorabia funkcjonalności dla typów wbudowanych (przykład) możliwe jest użycie większej ilości parametrów: template <class T1, class T2> void do(t1 a, T2 b); jeśli typem kolejnego argumentu jest typ pochodny od już zadeklarowanego (wskaźnik, referencja) - nie ma potrzeby jego deklaracji: template <class T> void abc(t a, T[ ] b); 12 / 54
4 Właściwości funkcji szablonowej zmienna static pozostaje właściwa dla konkretnej instancji szablonu (przykład) szablon funkcji nie powinien korzystać ze zmiennych globalnych w przypadku, gdy ogólny opis funkcji szablonowej wymaga modyfikacji dla konkretnych parametrów stosuje się funkcję specjalizowana 2 T max ( const T a, const T b) { 3 return (a > b)? a : b; } 1 // funkcja specjalna dla T = char * 2 char * max ( const char *a, const char *b) { 3 return ( strlen (a) > strlen (b) )? a : b; } 13 / 54 Właściwości funkcji szablonowej zmienna static pozostaje właściwa dla konkretnej instancji szablonu (przykład) szablon funkcji nie powinien korzystać ze zmiennych globalnych w przypadku, gdy ogólny opis funkcji szablonowej wymaga modyfikacji dla konkretnych parametrów stosuje się funkcję specjalizowana 2 T max ( const T a, const T b) { 3 return (a > b)? a : b; } 1 // funkcja specjalna dla T = char * 2 char * max ( const char *a, const char *b) { 3 return ( strlen (a) > strlen (b) )? a : b; } 14 / 54 Właściwości funkcji szablonowej zmienna static pozostaje właściwa dla konkretnej instancji szablonu (przykład) szablon funkcji nie powinien korzystać ze zmiennych globalnych w przypadku, gdy ogólny opis funkcji szablonowej wymaga modyfikacji dla konkretnych parametrów stosuje się funkcję specjalizowana 2 T max ( const T a, const T b) { 3 return (a > b)? a : b; } 1 // funkcja specjalna dla T = char * 2 char * max ( const char *a, const char *b) { 3 return ( strlen (a) > strlen (b) )? a : b; } 15 / 54 Właściwości funkcji szablonowej zmienna static pozostaje właściwa dla konkretnej instancji szablonu (przykład) szablon funkcji nie powinien korzystać ze zmiennych globalnych w przypadku, gdy ogólny opis funkcji szablonowej wymaga modyfikacji dla konkretnych parametrów stosuje się funkcję specjalizowana 2 T max ( const T a, const T b) { 3 return (a > b)? a : b; } 1 // funkcja specjalna dla T = char * 2 char * max ( const char *a, const char *b) { 3 return ( strlen (a) > strlen (b) )? a : b; } 16 / 54
5 Właściwości funkcji szablonowej zmienna static pozostaje właściwa dla konkretnej instancji szablonu (przykład) szablon funkcji nie powinien korzystać ze zmiennych globalnych w przypadku, gdy ogólny opis funkcji szablonowej wymaga modyfikacji dla konkretnych parametrów stosuje się funkcję specjalizowana 2 T max ( const T a, const T b) { 3 return (a > b)? a : b; } 1 // funkcja specjalna dla T = char * 2 char * max ( const char *a, const char *b) { 3 return ( strlen (a) > strlen (b) )? a : b; } 17 / 54 Właściwości funkcji szablonowej zmienna static pozostaje właściwa dla konkretnej instancji szablonu (przykład) szablon funkcji nie powinien korzystać ze zmiennych globalnych w przypadku, gdy ogólny opis funkcji szablonowej wymaga modyfikacji dla konkretnych parametrów stosuje się funkcję specjalizowana 2 T max ( const T a, const T b) { 3 return (a > b)? a : b; } 1 // funkcja specjalna dla T = char * 2 char * max ( const char *a, const char *b) { 3 return ( strlen (a) > strlen (b) )? a : b; } 18 / 54 Funkcje szablonowe podsumowanie pozwalaja na skrócenie pracy nad podobnymi funkcjonalnościami praca przerzucona na kompilator i linker programista odpowiedzialny za sens implementacji szablonu nie wykluczaja dosłownej definicji funkcji dla konkretnych typów Ale funkcje szablonowe to nie wszystko / 54 Funkcje szablonowe podsumowanie pozwalaja na skrócenie pracy nad podobnymi funkcjonalnościami praca przerzucona na kompilator i linker programista odpowiedzialny za sens implementacji szablonu nie wykluczaja dosłownej definicji funkcji dla konkretnych typów Ale funkcje szablonowe to nie wszystko / 54
6 Klasy szablonowe Tak jak w przypadku funkcji, w programach często pojawiaja się przypadki klas, które różnia się jedynie typami danych, jakie obsługuja. Najczęstszym przypadkiem tego rodzaju jest ten, gdzie potrzebujemy sposobu na przechowywanie elementów (obiektów) w dowolnej, nie znanej z góry ilości. Kontenery W językach obiektowych kontenery służa do przechowywania (dynamicznie) tworzonych obiektów, grupowania ich w logiczne struktury. 21 / 54 Klasy szablonowe Tak jak w przypadku funkcji, w programach często pojawiaja się przypadki klas, które różnia się jedynie typami danych, jakie obsługuja. Najczęstszym przypadkiem tego rodzaju jest ten, gdzie potrzebujemy sposobu na przechowywanie elementów (obiektów) w dowolnej, nie znanej z góry ilości. Kontenery W językach obiektowych kontenery służa do przechowywania (dynamicznie) tworzonych obiektów, grupowania ich w logiczne struktury. 22 / 54 Klasy szablonowe Tak jak w przypadku funkcji, w programach często pojawiaja się przypadki klas, które różnia się jedynie typami danych, jakie obsługuja. Najczęstszym przypadkiem tego rodzaju jest ten, gdzie potrzebujemy sposobu na przechowywanie elementów (obiektów) w dowolnej, nie znanej z góry ilości. Kontenery W językach obiektowych kontenery służa do przechowywania (dynamicznie) tworzonych obiektów, grupowania ich w logiczne struktury. 23 / 54 Klasy parametryzowane typami W językach obiektowych można definiować klasy uogólnione zawierajace pola, których typy sa parametrami, tzw. szablony klas (np. klasy z Standard Template Library). Parametry typów podaje się w nawiasach (<>) po nazwie klasy, odzielajac je od siebie przecinkami. Typem uogólnionym może być klasa, struktura, typ prosty czy inny typ uogólniony. Typem nie jest klasa parametryzowana ale dopiero jej ukonkretnienie z podanymi konkretnymi parametrami. Rozwiazania przyjęte w C++ sprawdzaja poprawność szablonu w większości dopiero podczas kompilacji konkretnej instancji szablonu. 24 / 54
7 Klasy parametryzowane typami W językach obiektowych można definiować klasy uogólnione zawierajace pola, których typy sa parametrami, tzw. szablony klas (np. klasy z Standard Template Library). Parametry typów podaje się w nawiasach (<>) po nazwie klasy, odzielajac je od siebie przecinkami. Typem uogólnionym może być klasa, struktura, typ prosty czy inny typ uogólniony. Typem nie jest klasa parametryzowana ale dopiero jej ukonkretnienie z podanymi konkretnymi parametrami. Rozwiazania przyjęte w C++ sprawdzaja poprawność szablonu w większości dopiero podczas kompilacji konkretnej instancji szablonu. 25 / 54 Klasy parametryzowane typami W językach obiektowych można definiować klasy uogólnione zawierajace pola, których typy sa parametrami, tzw. szablony klas (np. klasy z Standard Template Library). Parametry typów podaje się w nawiasach (<>) po nazwie klasy, odzielajac je od siebie przecinkami. Typem uogólnionym może być klasa, struktura, typ prosty czy inny typ uogólniony. Typem nie jest klasa parametryzowana ale dopiero jej ukonkretnienie z podanymi konkretnymi parametrami. Rozwiazania przyjęte w C++ sprawdzaja poprawność szablonu w większości dopiero podczas kompilacji konkretnej instancji szablonu. 26 / 54 Klasy parametryzowane typami W językach obiektowych można definiować klasy uogólnione zawierajace pola, których typy sa parametrami, tzw. szablony klas (np. klasy z Standard Template Library). Parametry typów podaje się w nawiasach (<>) po nazwie klasy, odzielajac je od siebie przecinkami. Typem uogólnionym może być klasa, struktura, typ prosty czy inny typ uogólniony. Typem nie jest klasa parametryzowana ale dopiero jej ukonkretnienie z podanymi konkretnymi parametrami. Rozwiazania przyjęte w C++ sprawdzaja poprawność szablonu w większości dopiero podczas kompilacji konkretnej instancji szablonu. 27 / 54 Klasy parametryzowane typami W językach obiektowych można definiować klasy uogólnione zawierajace pola, których typy sa parametrami, tzw. szablony klas (np. klasy z Standard Template Library). Parametry typów podaje się w nawiasach (<>) po nazwie klasy, odzielajac je od siebie przecinkami. Typem uogólnionym może być klasa, struktura, typ prosty czy inny typ uogólniony. Typem nie jest klasa parametryzowana ale dopiero jej ukonkretnienie z podanymi konkretnymi parametrami. Rozwiazania przyjęte w C++ sprawdzaja poprawność szablonu w większości dopiero podczas kompilacji konkretnej instancji szablonu. 28 / 54
8 Deklarowanie szablonu Słowo kluczowe template 2 class Keep { 3 T storage ; 4 public : 5 void hide (T thing ) { storage = thing ; } 6 T give () { return storage ; } 7 }; Konkretyzacja szablonu 1 Keep <int > a; 2 Keep <string > b; 29 / 54 Deklarowanie szablonu Słowo kluczowe template 2 class Keep { 3 T storage ; 4 public : 5 void hide (T thing ) { storage = thing ; } 6 T give () { return storage ; } 7 }; Konkretyzacja szablonu 1 Keep <int > a; 2 Keep <string > b; 30 / 54 Przykład stos.cpp 1 template <typename T> class ElemStosu { 2 public : 3 T elem ; 4 ElemStosu <T>* nast ; 5 ElemStosu (T elem, ElemStosu <T>* nast ) { 6 this ->elem = elem ; 7 this ->nast = nast ; 8 } 9 }; 10 template <typename T> class Stos { 11 private : 12 ElemStosu <T>* wierzch ; 13 public : 14 Stos () { wierzch = NULL ; } 15 bool empty () { return wierzch == NULL ; } 16 void push (T elem ) { wierzch = new ElemStosu <T>( elem, wierzch ); } 17 T pop () { 18 if( empty () ) throw ( string )" PustyStos!"; 19 T wynik = wierzch ->elem ; 20 wierzch = wierzch ->nast ; 21 return wynik ; 22 } 23 }; 31 / 54 Przykład stos.cpp (cd) 24 int main ( int argc, char * argv []) { 25 Stos <int > a; 26 Stos <string > b; 27 a. push (2); a. push (3); 28 try { 29 cout << a. pop () << " " << a. pop () << endl ; 30 cout << a. pop () << " " << a. pop () << endl ; 31 } 32 catch ( string e) { 33 cout << e << endl ; 34 } 35 b. push (" Maciek "); b. push (" Ala "); 36 try { 37 while (!b. empty () ) 38 cout << b. pop () << endl ; 39 } 40 catch ( string e) { 41 cout << e << endl ; 42 } 43 } 32 / 54
9 Inne przykłady 1 shelf < book * > a; // na fiszki 2 shelf < book [3] > b; // na trylogie 3 shelf < Stos <book > > c; // na balagan 4 shelf < shelf <book > > d; // regal 33 / 54 Parametry szablonu klas Parametrem szablonu może być: nazwa typu wartość całkowita: template <class T, int size = 10> class Arr { T a[size] ;... }; adres obiektu globalnego adres funkcji globalnej: template <class T, int(*ptr)(t,t) > class Sorter {... }; adres statycznego pola lub funkcji klasy 34 / 54 Parametry szablonu klas Parametrem szablonu może być: nazwa typu wartość całkowita: template <class T, int size = 10> class Arr { T a[size] ;... }; adres obiektu globalnego adres funkcji globalnej: template <class T, int(*ptr)(t,t) > class Sorter {... }; adres statycznego pola lub funkcji klasy 35 / 54 Parametry szablonu klas Parametrem szablonu może być: nazwa typu wartość całkowita: template <class T, int size = 10> class Arr { T a[size] ;... }; adres obiektu globalnego adres funkcji globalnej: template <class T, int(*ptr)(t,t) > class Sorter {... }; adres statycznego pola lub funkcji klasy 36 / 54
10 Parametry szablonu klas Parametrem szablonu może być: nazwa typu wartość całkowita: template <class T, int size = 10> class Arr { T a[size] ;... }; adres obiektu globalnego adres funkcji globalnej: template <class T, int(*ptr)(t,t) > class Sorter {... }; adres statycznego pola lub funkcji klasy 37 / 54 Parametry szablonu klas Parametrem szablonu może być: nazwa typu wartość całkowita: template <class T, int size = 10> class Arr { T a[size] ;... }; adres obiektu globalnego adres funkcji globalnej: template <class T, int(*ptr)(t,t) > class Sorter {... }; adres statycznego pola lub funkcji klasy 38 / 54 Pomocnik: słowo typedef Tworzenie złożonych szablonów prowadzi do bardzo skomplikowanych definicji typów danych, np.: 1 zestaw < shelf <book, int >, 2 sizeof ( book )*1024, browserfun > biblioteka ; Wyobraźmy sobie deklarację funkcji odwiedz( ) dla takiej biblioteki, albo porownaj( ) sprawdzajacej co jest w jednej, a co w drugiej i... zwracajacej nowa bibliotekę! Wprowadzamy nowy typ 1 typedef 2 zestaw < shelf <book, int >, 3 sizeof ( book )*1024, 4 browsefun > 5 bib ; 6 void odwiedz ( bib ); 7 bib porownaj (bib, bib ); 39 / 54 Pomocnik: słowo typedef Tworzenie złożonych szablonów prowadzi do bardzo skomplikowanych definicji typów danych, np.: 1 zestaw < shelf <book, int >, 2 sizeof ( book )*1024, browserfun > biblioteka ; Wyobraźmy sobie deklarację funkcji odwiedz( ) dla takiej biblioteki, albo porownaj( ) sprawdzajacej co jest w jednej, a co w drugiej i... zwracajacej nowa bibliotekę! Wprowadzamy nowy typ 1 typedef 2 zestaw < shelf <book, int >, 3 sizeof ( book )*1024, 4 browsefun > 5 bib ; 6 void odwiedz ( bib ); 7 bib porownaj (bib, bib ); 40 / 54
11 Pomocnik: słowo typedef Tworzenie złożonych szablonów prowadzi do bardzo skomplikowanych definicji typów danych, np.: 1 zestaw < shelf <book, int >, 2 sizeof ( book )*1024, browserfun > biblioteka ; Wyobraźmy sobie deklarację funkcji odwiedz( ) dla takiej biblioteki, albo porownaj( ) sprawdzajacej co jest w jednej, a co w drugiej i... zwracajacej nowa bibliotekę! Wprowadzamy nowy typ 1 typedef 2 zestaw < shelf <book, int >, 3 sizeof ( book )*1024, 4 browsefun > 5 bib ; 6 void odwiedz ( bib ); 7 bib porownaj (bib, bib ); 41 / 54 Zastosowania szablonów Zalety Wady Tworzenie klas które przechowuja inne obiekty (kontenery), np. tablice, kolejki, stosy, listy... Łatwe tworzenie klas które posługuja się innymi typami danych (alternatywa do pisania wielokrotnie podobnego kodu dla różnych typów danych). Krótszy łatwiejszy kod, operacje bezpieczniejsze niż rzutowanie typów. Kiepska diagnostyka błędów błędy sa często zgłaszane dopiero po konkretyzacji danego szablonu, najczęściej oznajmiajac, że pewne operacje sa niemożliwe dla konkretnego typu (sam szablon nie sprawdza poprawności użycia typu uogólnionego). 42 / 54 Zastosowania szablonów Zalety Wady Tworzenie klas które przechowuja inne obiekty (kontenery), np. tablice, kolejki, stosy, listy... Łatwe tworzenie klas które posługuja się innymi typami danych (alternatywa do pisania wielokrotnie podobnego kodu dla różnych typów danych). Krótszy łatwiejszy kod, operacje bezpieczniejsze niż rzutowanie typów. Kiepska diagnostyka błędów błędy sa często zgłaszane dopiero po konkretyzacji danego szablonu, najczęściej oznajmiajac, że pewne operacje sa niemożliwe dla konkretnego typu (sam szablon nie sprawdza poprawności użycia typu uogólnionego). 43 / 54 Standard Template Library Idea Biblioteka grupujaca klasy (kolekcje) przechowujace/manipuluj ace jakimiś elementami (obiekty lub wartości). Przykładami kolekcji sa zbiór, lista, mapa czy wektor (tablica). Składniki Kontenery - implementacje klas. Algorytmy - operuja na danych ale nie sa zależne od kontenera Iteratory - metody przechodzenia po elementach kontenerów. Kontenery i algorytmy najcześciej współpracuja ze soba za pomoca iteratorów. Pełna dokumentacja 44 / 54
12 Standard Template Library Idea Biblioteka grupujaca klasy (kolekcje) przechowujace/manipuluj ace jakimiś elementami (obiekty lub wartości). Przykładami kolekcji sa zbiór, lista, mapa czy wektor (tablica). Składniki Kontenery - implementacje klas. Algorytmy - operuja na danych ale nie sa zależne od kontenera Iteratory - metody przechodzenia po elementach kontenerów. Kontenery i algorytmy najcześciej współpracuja ze soba za pomoca iteratorów. Pełna dokumentacja 45 / 54 Standard Template Library Idea Biblioteka grupujaca klasy (kolekcje) przechowujace/manipuluj ace jakimiś elementami (obiekty lub wartości). Przykładami kolekcji sa zbiór, lista, mapa czy wektor (tablica). Składniki Kontenery - implementacje klas. Algorytmy - operuja na danych ale nie sa zależne od kontenera Iteratory - metody przechodzenia po elementach kontenerów. Kontenery i algorytmy najcześciej współpracuja ze soba za pomoca iteratorów. Pełna dokumentacja 46 / 54 Kontenery vector uogólnienie tablicy (dynamiczny rozmiar, dodawanie/usuwanie elementów na końcu/poczatku,...) list implementacja listy/stosu (pokrywa się częściowo z vector, ale dla zastosowań typowo listowych ma szybsza implementację) deque implementacja kolejki (podobnie jak list) set, multiset, hash_set, hash_multiset implementacja zbiorów/multizbiorów map, multimap, hash_map, hash_multimap implementacja odwzorowań funkcyjnych Kontenery odzwierciedlaja pewne konkretne struktury danych używane powszechnie w algorytmach/programach. 47 / 54 Kontenery vector uogólnienie tablicy (dynamiczny rozmiar, dodawanie/usuwanie elementów na końcu/poczatku,...) list implementacja listy/stosu (pokrywa się częściowo z vector, ale dla zastosowań typowo listowych ma szybsza implementację) deque implementacja kolejki (podobnie jak list) set, multiset, hash_set, hash_multiset implementacja zbiorów/multizbiorów map, multimap, hash_map, hash_multimap implementacja odwzorowań funkcyjnych Kontenery odzwierciedlaja pewne konkretne struktury danych używane powszechnie w algorytmach/programach. 48 / 54
13 Algorytmy i iteratory Podstawowe algorytmy sort uporzadkowanie elementów (jeśli maja porzadek) find szukanie elementu copy kopiowanie struktury generate generowanie struktury o określonych własnościach max, min znajdowanie elementu minimalnego/maksymalnego... Nie wszystkie algorytmy stosuja się do wszystkich kontenerów (np. sortowanie zbioru nie ma sensu). Iteratory Klasy umożliwiajace przechodzenie po elementach kolekcji wskazujace element z kolekcji (np. begin(), end()) 49 / 54 Algorytmy i iteratory Podstawowe algorytmy sort uporzadkowanie elementów (jeśli maja porzadek) find szukanie elementu copy kopiowanie struktury generate generowanie struktury o określonych własnościach max, min znajdowanie elementu minimalnego/maksymalnego... Nie wszystkie algorytmy stosuja się do wszystkich kontenerów (np. sortowanie zbioru nie ma sensu). Iteratory Klasy umożliwiajace przechodzenie po elementach kolekcji wskazujace element z kolekcji (np. begin(), end()) 50 / 54 Przykład lista.cpp 1 # include <iostream > 2 # include <list > 3 # include <string > 4 using namespace std ; 5 int main ( int argc, char * argv []) { 6 list <string > * nazwiska = new list <string >(); 7 nazwiska ->push_back (" Nowak "); nazwiska ->push_back (" Kowalski "); 8 nazwiska ->push_back (" Bielecki "); nazwiska ->push_back (" Adamski "); 9 nazwiska ->push_back (" Kowalski "); 10 list <string >:: iterator it; 11 for (it=nazwiska ->begin (); it!=nazwiska ->end (); it++) 12 cout << " - " << *it << endl ; 13 nazwiska ->sort (); 14 for (it=nazwiska ->begin (); it!=nazwiska ->end (); it++) 15 cout << " + " << *it << endl ; 16 nazwiska ->reverse (); 17 for (it=nazwiska ->begin (); it!=nazwiska ->end (); it++) 18 cout << " - " << *it << endl ; 19 nazwiska ->remove (" Kowalski "); 20 for (it=nazwiska ->begin (); it!=nazwiska ->end (); it++) 21 cout << " + " << *it << endl ; 22 delete ( nazwiska ); 23 } 51 / 54 Implementacja iteratora Przykład: Thinking in C++, vol / 54
14 Dodatkowe biblioteki szablonów Boost Microsoft 53 / 54 Dodatkowe biblioteki szablonów Boost Microsoft 54 / 54
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ółowoKurs programowania. Wykład 9. Wojciech Macyna
Wykład 9 Java Collections Framework (w C++ Standard Template Library) Kolekcja (kontener) Obiekt grupujacy/przechowuj acy jakieś elementy (obiekty lub wartości). Przykładami kolekcji sa zbiór, lista czy
Bardziej szczegółowoWprowadzenie do szablonów szablony funkcji
Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2006 2010 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu na temat programowania obiektowego.
Bardziej szczegółowoProgramowanie i struktury danych
Programowanie i struktury danych 1 / 30 STL Standard Template Library, STL (ang. = Standardowa Biblioteka Wzorców) biblioteka C++ zawierająca szablony (wzorce), które umożliwiają wielokrotne użycie. Główne
Bardziej szczegółowoWprowadzenie do szablonów szablony funkcji
Wprowadzenie do szablonów szablony funkcji Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2006 2010 Bogdan Kreczmer Niniejszy dokument zawiera materiały do
Bardziej szczegółowoSzablony funkcji i szablony klas
Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2011 Bogdan Kreczmer Niniejszy dokument
Bardziej szczegółowo2. Klasy cz. 2 - Konstruktor kopiujący. Pola tworzone statycznie i dynamicznie - Funkcje zaprzyjaźnione - Składowe statyczne
Tematyka wykładów 1. Wprowadzenie. Klasy cz. 1 - Język C++. Programowanie obiektowe - Klasy i obiekty - Budowa i deklaracja klasy. Prawa dostępu - Pola i funkcje składowe - Konstruktor i destruktor - Tworzenie
Bardziej szczegółowoProgramowanie w C++ Wykład 6. Katarzyna Grzelak. 1 kwietnia K.Grzelak (Wykład 6) Programowanie w C++ 1 / 43
Programowanie w C++ Wykład 6 Katarzyna Grzelak 1 kwietnia 2019 K.Grzelak (Wykład 6) Programowanie w C++ 1 / 43 Pojęcia z poprzednich wykładów Tablica to ciag obiektów tego samego typu, zajmujacy ciagły
Bardziej szczegółowoSzablony funkcji i klas (templates)
Instrukcja laboratoryjna nr 3 Programowanie w języku C 2 (C++ poziom zaawansowany) Szablony funkcji i klas (templates) dr inż. Jacek Wilk-Jakubowski mgr inż. Maciej Lasota dr inż. Tomasz Kaczmarek Wstęp
Bardziej szczegółowoParadygmaty programowania
Paradygmaty programowania Programowanie generyczne w C++ Dr inż. Andrzej Grosser Cz estochowa, 2016 2 Spis treści 1. Zadanie 3 5 1.1. Wprowadzenie.................................. 5 1.2. Obiekty funkcyjne................................
Bardziej szczegółowoProgramowanie w C++ Wykład 7. Katarzyna Grzelak. 23 kwietnia K.Grzelak (Wykład 7) Programowanie w C++ 1 / 40
Programowanie w C++ Wykład 7 Katarzyna Grzelak 23 kwietnia 2018 K.Grzelak (Wykład 7) Programowanie w C++ 1 / 40 Standard Template Library (STL) K.Grzelak (Wykład 7) Programowanie w C++ 2 / 40 C++ Templates
Bardziej szczegółowoWykład 5 Wybrane zagadnienia programowania w C++ (c.d.)
Wykład 5 Wybrane zagadnienia programowania w C++ (c.d.) Kontenery - - wektor vector - - lista list - - kolejka queue - - stos stack Kontener asocjacyjny map 2016-01-08 Bazy danych-1 W5 1 Kontenery W programowaniu
Bardziej szczegółowoKurs programowania. Wykład 3. Wojciech Macyna. 22 marca 2019
Wykład 3 22 marca 2019 Klasy wewnętrzne Klasa wewnętrzna class A {... class B {... }... } Klasa B jest klasa wewnętrzna w klasie A. Klasa A jest klasa otaczajac a klasy B. Klasy wewnętrzne Właściwości
Bardziej szczegółowoKurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016
Wykład 1 3 marca 2016 Słowa kluczowe języka Java abstract, break, case, catch, class, const, continue, default, do, else, enum, extends, final, finally, for, goto, if, implements, import, instanceof, interface,
Bardziej szczegółowoDariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki
Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki int getmax (int a, int b) { return (a > b? a : b); float getmax (float a, float b) { return (a > b? a : b); long getmax (long a, long b)
Bardziej szczegółowoSTL: Lekcja 1&2. Filozofia STL
STL: Lekcja 1&2 Tematy: Filozofia STL Po co nam STL? Podstawowa zawartość STL Co warto znać zanim zaczniemy pracę z STL?: wskaźniki Praca na tekstach: klasa String Vector: nowy wymiar standardowych tablic.
Bardziej szczegółowoJęzyk C++ wykład VIII
Programowanie uzupełnienie notatek: dr Jerzy Białkowski 1 2 3 4 Obiektowość języka C++ ˆ Klasa (rozszerzenie struktury), obiekt instancją klasy, konstruktory i destruktory ˆ Enkapsulacja - kapsułkowanie,
Bardziej szczegółowoZaawansowane programowanie w języku C++ Biblioteka standardowa
Zaawansowane programowanie w języku C++ Biblioteka standardowa Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka
Bardziej szczegółowoSzablony. Szablony funkcji
Szablony Szablony sa mechanizmem ponownego wykorzystania kodu (reuse) W przypadku funkcji ponownie wykorzystany jest algorytm W przypadku klas ponownie wykorzystane sa wszystkie skladowe Deklaracja szablonu
Bardziej szczegółowoSkładnia C++ Programowanie Obiektowe Mateusz Cicheński
Składnia C++ Programowanie Obiektowe Mateusz Cicheński Klasy i modyfikatory dostępu Przesłanianie metod Polimorfizm Wskaźniki Metody wirtualne Metody abstrakcyjne i interfejsy Konstruktory i destruktory
Bardziej szczegółowoProgramowanie w C++ Wykład 5. Katarzyna Grzelak. 16 kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 27
Programowanie w C++ Wykład 5 Katarzyna Grzelak 16 kwietnia 2018 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 27 Pojęcia z poprzednich wykładów Tablica to ciag obiektów tego samego typu, zajmujacy ciagły
Bardziej szczegółowoAby uzyskać zaliczenie w pierwszym terminie (do 30 stycznia 2018) rozliczyć trzeba co najmniej 8 projektów, po 4 z każdej z części: C++ oraz Python.
Aby uzyskać zaliczenie w pierwszym terminie (do 30 stycznia 2018) rozliczyć trzeba co najmniej 8 projektów, po 4 z każdej z części: C++ oraz Python. Pliki z rozwiązaniami projektu (wszystkie polecenia
Bardziej szczegółowoJęzyk C++ Różnice między C a C++
Język C++ Różnice między C a C++ Plan wykładu C a C++ Różnice ogólne Typy Deklaracje zmiennych C++ jako rozszerzenie C Domyślne argumenty funkcji Przeciążanie funkcji Referencje Dynamiczny przydział pamięci
Bardziej szczegółowoProgramowanie w C++ Wykład 8. Katarzyna Grzelak. 7 maja K.Grzelak (Wykład 8) Programowanie w C++ 1 / 31
Programowanie w C++ Wykład 8 Katarzyna Grzelak 7 maja 2018 K.Grzelak (Wykład 8) Programowanie w C++ 1 / 31 STL - powtórzenie STL Standard Template Libarary standardowa biblioteka szablonów Składowe biblioteki:
Bardziej szczegółowoWprowadzenie do szablonów klas
Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2008-2010 Bogdan Kreczmer Niniejszy
Bardziej szczegółowoObsługa wyjątków. Język C++ WW12
Obsługa wyjątków Pozwala zarządzać błędami wykonania w uporządkowany sposób. Umożliwia automatyczne wywołanie części kodu, funkcji, metod klas, który trzeba wykonać przy powstaniu błędów. try //blok try
Bardziej szczegółowoProgramowanie w języku C++
Programowanie w języku C++ Część dziewiąta Autor Roman Simiński Kontakt siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu, lektura tych materiałów nie zastąpi
Bardziej szczegółowoProjektowanie klas c.d. Projektowanie klas przykład
Projektowanie klas c.d. ogólne wskazówki dotyczące projektowania klas: o wyodrębnienie klasy odpowiedź na potrzeby życia (obsługa rozwiązania konkretnego problemu) o zwykle nie uda się utworzyć idealnej
Bardziej szczegółowoAlgorytmy i Struktury Danych.
Algorytmy i Struktury Danych. Standard Template Library. Część 1. Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 6 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych.
Bardziej szczegółowoMETODY 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ółowoProgramowanie w C++ Wykład 6. Katarzyna Grzelak. kwiecień K.Grzelak (Wykład 6) Programowanie w C++ 1 / 40
Programowanie w C++ Wykład 6 Katarzyna Grzelak kwiecień 2019 K.Grzelak (Wykład 6) Programowanie w C++ 1 / 40 STL - powtórzenie STL Standard Template Libarary standardowa biblioteka szablonów Składowe biblioteki:
Bardziej szczegółowoParadygmaty programowania. Paradygmaty programowania
Paradygmaty programowania Paradygmaty programowania Dr inż. Andrzej Grosser Cz estochowa, 2013 2 Spis treści 1. Zadanie 2 5 1.1. Wprowadzenie.................................. 5 1.2. Wskazówki do zadania..............................
Bardziej szczegółowoDla każdej operacji łącznie tworzenia danych i zapisu ich do pliku przeprowadzić pomiar czasu wykonania polecenia. Wyniki przedstawić w tabelce.
Przygotować program tworzący tablicę dwuwymiarową zawierającą zestawy 10 2, 10 4, 10 6 liczb losowych zmiennoprzecinkowych. Korzystając z funkcji bibliotecznych uporządkować zawartość każdego (a) wiersza
Bardziej szczegółowoZaawansowane programowanie w języku C++ Funkcje uogólnione - wzorce
Zaawansowane programowanie w języku C++ Funkcje uogólnione - wzorce Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka
Bardziej szczegółowoProgramowanie obiektowe. Wykład 5. C++: szablony
Programowanie obiektowe Wykład 5. C++: szablony Szablony Szablony to technika realizacji polimorfizmu na innym poziomie niż za pomocą funkcji wirtualnych i dziedziczenia. Mechanizm ten można rozumieć jako
Bardziej szczegółowoKlasy 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ółowoPodczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej.
Polimorfizm jest filarem programowania obiektowego, nie tylko jeżeli chodzi o język C++. Daje on programiście dużą elastyczność podczas pisania programu. Polimorfizm jest ściśle związany z metodami wirtualnymi.
Bardziej szczegółowoAutomatyczne tworzenie operatora = Integer2& operator=(const Integer& prawy) { zdefiniuje. Integer::operator=(ri);
Przeciążanie operatorów [] Przykład: klasa reprezentująca typ tablicowy. Obiekt ma reprezentować tablicę, do której można się odwoływać intuicyjnie, np. Tab[i] Ma być też dostępnych kilka innych metod
Bardziej szczegółowoSzablony klas, zastosowanie szablonów w programach
Szablony klas, zastosowanie szablonów w programach 1. Szablony klas i funkcji 2. Szablon klasy obsługującej uniwersalną tablicę wskaźników 3. Zastosowanie metody zwracającej przez return referencję do
Bardziej szczegółowoSkładnia C++ Programowanie Obiektowe Mateusz Cicheński
Składnia C++ Programowanie Obiektowe Mateusz Cicheński Klasy i modyfikatory dostępu Przesłanianie metod Polimorfizm Wskaźniki Metody wirtualne Metody abstrakcyjne i interfejsy Przeciążanie operatorów Słowo
Bardziej szczegółowoPodstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.
M. Trzebiński C++ 1/14 Podstawy języka C++ Maciej Trzebiński Instytut Fizyki Jądrowej Polskiej Akademii Nauk Praktyki studenckie na LHC IVedycja,2016r. IFJ PAN Przygotowanie środowiska pracy Niniejsza
Bardziej szczegółowoJę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ółowoKurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016
Wykład 2 17 marca 2016 Dziedziczenie Klasy bazowe i potomne Dziedziczenie jest łatwym sposobem rozwijania oprogramowania. Majac klasę bazowa możemy ja uszczegółowić (dodać nowe pola i metody) nie przepisujac
Bardziej szczegółowoKLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany
KLASA UCZEN Napisz deklarację klasy Uczen, w której przechowujemy następujące informacje o uczniu: imię, nazwisko, średnia (pola prywatne), poza tym klasa zawiera metody: konstruktor bezparametrowy (nie
Bardziej szczegółowoIMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi
IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi EGZAMIN PIERWSZY (25 CZERWCA 2013) JĘZYK C++ poprawiam ocenę pozytywną z egzaminu 0 (zakreśl poniżej x) 1. Wśród poniższych wskaż poprawną formę definicji
Bardziej szczegółowoWyjątki (exceptions)
Instrukcja laboratoryjna nr 6 Programowanie w języku C 2 (C++ poziom zaawansowany) Wyjątki (exceptions) dr inż. Jacek Wilk-Jakubowski mgr inż. Maciej Lasota dr inż. Tomasz Kaczmarek Wstęp Wyjątki (ang.
Bardziej szczegółowoWskaźniki. nie są konieczne, ale dają językowi siłę i elastyczność są języki w których nie używa się wskaźników typ wskaźnikowy typ pochodny:
Wskaźniki nie są konieczne, ale dają językowi siłę i elastyczność są języki w których nie używa się wskaźników typ wskaźnikowy typ pochodny: typ nw; /* definicja zmiennej nw typu typ */ typ *w_nw; /* definicja
Bardziej szczegółowoAutomatyczne tworzenie operatora = Integer2& operator=(const Integer& prawy) {
Przeciążanie a dziedziczenie class Integer2: public Integer Operatory, z wyjątkiem operatora przypisania są automatycznie dziedziczone w klasach pochodnych. Integer2(int i): Integer(i) Automatyczne tworzenie
Bardziej szczegółowo1. 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ółowoKLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany
KLASA UCZEN Napisz deklarację klasy Uczen, w której przechowujemy następujące informacje o uczniu: imię, nazwisko, średnia (pola prywatne), poza tym klasa zawiera metody: konstruktor bezparametrowy (nie
Bardziej szczegółowoJzyk 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ółowoAbstrakcyjny typ danych
Abstrakcyjny typ danych Abstrakcyjny Typ Danych (abstract data type-adt): zbiór wartości wraz z powiązanymi z nimi operacjami; operacje są zdefiniowane w sposób niezależny od implementacji; operacje są
Bardziej szczegółowoTEMAT : KLASY POLIMORFIZM
TEMAT : KLASY POLIMORFIZM 1. Wprowadzenie do polimorfizmu i funkcji wirtualnych w języku C++ Język C++ zakłada, że w pewnych przypadkach uzasadnione jest tworzenie klas, których reprezentanci w programie
Bardziej szczegółowoAutomatyczne tworzenie operatora = Integer2& operator=(const Integer& prawy) {
Przeciążanie operatorów [] Przykład: klasa reprezentująca typ tablicowy. Obiekt ma reprezentować tablicę, do której można się odwoływać intuicyjnie, np. Tab[i] Ma być też dostępnych kilka innych metod
Bardziej szczegółowoInformatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018
Informatyka I Klasy i obiekty. Podstawy programowania obiektowego dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2018 Plan wykładu Pojęcie klasy Deklaracja klasy Pola i metody klasy
Bardziej szczegółowoWstęp do programowania
wykład 8 Agata Półrola Wydział Matematyki i Informatyki UŁ semestr zimowy 2018/2019 Podprogramy Czasami wygodnie jest wyodrębnić jakiś fragment programu jako pewną odrębną całość umożliwiają to podprogramy.
Bardziej szczegółowoWstęp do programowania obiektowego. WYKŁAD 3 Dziedziczenie Pola i funkcje statyczne Funkcje zaprzyjaźnione, this
Wstęp do programowania obiektowego WYKŁAD 3 Dziedziczenie Pola i funkcje statyczne Funkcje zaprzyjaźnione, this 1 Nazwa typu Rozmiar Zakres Uwagi bool 1 bit wartości true albo false stdbool.h TYPY ZNAKOWE
Bardziej szczegółowoFunctionalization. Funkcje w C. Marcin Makowski. 30 listopada Zak lad Chemii Teoretycznej UJ
w C Zak lad Chemii Teoretycznej UJ 30 listopada 2006 1 2 3 Inicjalizacja zmiennych Zmienne jednowymiarowe można inicjować przy ich definicji. #include i n t x = 1 ; l o n g day = 1000L * 60L
Bardziej szczegółowoWstęp do Programowania 2
Wstęp do Programowania 2 dr Bożena Woźna-Szcześniak bwozna@gmail.com Akademia im. Jana Długosza Wykład 4 Funkcje przeciażone - Idea Przeciażanie funkcji (polimorfizm funkcji), to kolejna nowość w języku
Bardziej szczegółowoWykład 3 Składnia języka C# (cz. 2)
Wizualne systemy programowania Wykład 3 Składnia języka C# (cz. 2) 1 dr Artur Bartoszewski -Wizualne systemy programowania, sem. III- WYKŁAD Wizualne systemy programowania Metody 2 Metody W C# nie jest
Bardziej szczegółowoWykład 1. Program przedmiotu. Programowanie Obiektowe (język C++) Literatura. Program przedmiotu c.d.:
Program przedmiotu Programowanie Obiektowe (język C++) Wykład 1. Definiowanie prostych klas. Przykłady. Przypomnienie: typy referencyjne, domyślne wartości argumentów, przeciąŝanie funkcji. Konstruktory,
Bardziej szczegółowoWykł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ółowoProgramowanie obiektowe - Przykładowe zadania egzaminacyjne (2005/2006)
Programowanie obiektowe - Przykładowe zadania egzaminacyjne (2005/2006) Część 1. Teoria Wyjaśnij pojęcia, podaj przykład: klasa obiekt konstruktor destruktor kapsułkowanie (hermetyzacja) wskaźnik this
Bardziej szczegółowoStos liczb całkowitych
Stos liczb całkowitych class StosInt int* tab; unsigned size ; StosInt(unsigned s=10) tab=new int[size=s];top=0; ~StosInt()delete[] tab; void push(int i)tab[top++]=i; int pop(void) return tab[--top]; int
Bardziej szczegółowoProgramowanie Komponentowe Zarządzanie obiektami: kontenery
Programowanie Komponentowe Zarządzanie obiektami: kontenery dr inż. Ireneusz Szcześniak jesień 2016 roku Kontenery Kontener w C++ to generyczna struktura danych. Przechowuje elementy jednego dowolnego
Bardziej szczegółowoZaawansowane programowanie w C++ (PCP)
Zaawansowane programowanie w C++ (PCP) Wykład 6 - szablony. dr inż. Robert Nowak - p. 1/15 Kolekcje i algorytmy» Deklaracja szablonu y Pojęcia niezależne od typu: kolekcje (np. listy) algorytmy (np. znajdowania
Bardziej szczegółowoOperatory na rzecz typu TString
Operatory na rzecz typu TString Dopiszmy w definicji klasy operator[], dzięki któremu potraktujemy obiekt jak tablicę class TString { public: char& operator[]( size_t n ); const char& operator[]( size_t
Bardziej szczegółowoJę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ółowoWstęp do Programowania 2
Wstęp do Programowania 2 dr Bożena Woźna-Szcześniak bwozna@gmail.com Akademia im. Jana Długosza Wykład 5 W programowaniu obiektowym programista koncentruje się na obiektach. Zadaje sobie pytania typu:
Bardziej szczegółowoProgramowanie obiektowe
Programowanie obiektowe Wykład 2: Wstęp do języka Java 3/4/2013 S.Deniziak: Programowanie obiektowe - Java 1 Cechy języka Java Wszystko jest obiektem Nie ma zmiennych globalnych Nie ma funkcji globalnych
Bardziej szczegółowoProgramowanie i struktury danych
Programowanie i struktury danych 1 / 19 Dynamiczne struktury danych Dynamiczną strukturą danych nazywamy taka strukturę danych, której rozmiar, a więc liczba przechowywanych w niej danych, może się dowolnie
Bardziej szczegółowoWstęp do programowania
wykład 10 Agata Półrola Wydział Matematyki i Informatyki UŁ semestr zimowy 2018/2019 Przesyłanie argumentów - cd Przesyłanie argumentów do funkcji - tablice wielowymiarowe Przekazywanie tablic wielowymiarowych
Bardziej szczegółowoTechnologie cyfrowe semestr letni 2018/2019
Technologie cyfrowe semestr letni 2018/2019 Tomasz Kazimierczuk Wykład 8 (15.04.2019) Kompilacja Kompilacja programu (kodu): proces tłumaczenia kodu napisanego w wybranym języku na kod maszynowy, zrozumiały
Bardziej szczegółowoWstęp do programowania obiektowego, wykład 7
Wstęp do programowania obiektowego, wykład 7 Klasy i funkcje abstrakcyjne Przeciążanie funkcji Definiowanie i interpretacja złożonych typów danych w C++ Wskaźniki do funkcji 1 KLASA ABSTRAKCYJNA 2 Klasa
Bardziej szczegółowoTechnologie cyfrowe semestr letni 2018/2019
Technologie cyfrowe semestr letni 2018/2019 Tomasz Kazimierczuk Wykład 7 (08.04.2019) Wikipedia Programowanie komputerów proces projektowania, tworzenia, testowania i utrzymywania kodu źródłowego programów
Bardziej szczegółowoPrzesłanianie nazw, przestrzenie nazw
Przesłanianie nazw, przestrzenie nazw 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
Bardziej szczegółowoJęzyk C++ wykład VI. uzupełnienie notatek: dr Jerzy Białkowski. Programowanie C/C++ Język C++ wykład VI. dr Jarosław Mederski.
- - uzupełnienie notatek: dr Jerzy Białkowski - - 1-2 - - - 1 #include 2 #include 3 # include 4 using namespace std ; 5 6 class Punkt { 7 8 private : 9 double
Bardziej szczegółowoPodstawy programowania w języku C++
Podstawy programowania w języku C++ Część dziewiąta Tablice a zmienne wskaźnikowe Wersja skrócona, tylko C++ Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie
Bardziej szczegółowopublic: // interfejs private: // implementacja // składowe klasy protected: // póki nie będziemy dziedziczyć, // to pole nas nie interesuje
Zbudujemy klasę Definicję klasy zapiszmy w pliku tstring.h #ifndef TSTRING_H #define TSTRING_H #include // w pliku nagłówkowym NIE // otwieramy przestrzeni std // interfejs private: // implementacja
Bardziej szczegółowo2.4 Dziedziczenie. 2.4 Dziedziczenie Przykłady programowania w C - kurs podstawowy
2.4 Dziedziczenie Poprzednie dwa rozdziały które dotyczyły zagadnienia automatów komórkowych na przykładach programów w C++. Mogłyby one sugerować że niekoniecznie trzeba programować obiektowo aby napisać
Bardziej szczegółowoPodstawy 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ółowoTechniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 5. Karol Tarnowski A-1 p.
Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni Wykład 5 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Przestrzenie nazw Standardowa biblioteka szablonów
Bardziej szczegółowoWykł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ółowoProgramowanie w C++ Wykład 14. Katarzyna Grzelak. 3 czerwca K.Grzelak (Wykład 14) Programowanie w C++ 1 / 27
Programowanie w C++ Wykład 14 Katarzyna Grzelak 3 czerwca 2019 K.Grzelak (Wykład 14) Programowanie w C++ 1 / 27 Na ostatnim wykładzie: Konstruktor standardowy (domyślny) to taki, który nie ma żadnych argumentów
Bardziej szczegółowoTablice. Monika Wrzosek (IM UG) Podstawy Programowania 96 / 119
Tablice Tablica to struktura danych, która może przechowywać wiele wartości tego samego typu. Na przykład tablica może zawierać: 10 wartości typu int opisujących liczbę studentów przyjętych na kierunek
Bardziej szczegółowoW2 Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy :
Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy : class nazwa_klasy prywatne dane i funkcje public: publiczne dane i funkcje lista_obiektów;
Bardziej szczegółowoProgramowanie 2. Język C++. Wykład 2.
2.1 Definicja, deklaracja, wywołanie funkcji.... 1 2.2 Funkcje inline... 4 2.3 Przekazanie do argumentu funkcji wartości, adresu zmiennej.... 5 2.4 Wskaźniki do funkcji... 8 2.5 Przeładowanie funkcji...
Bardziej szczegółowoW przypadku STL w specyfikacji nazwy pliku nagłówkowego brak rozszerzenia tj. <string> <string.h> zamiast
Wykład 12 - Biblioteka stadardowa.sxw 1 Przegląd biblioteki standardowej C++; W porównaniu z pierwszymi implementacjami i specyfikacjami C++ biblioteka standardowa języka C++ bardzo się rozrosła, a w latach
Bardziej szczegółowoRzutowanie 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ółowoWykład 1. Program przedmiotu. Programowanie (język C++) Literatura. Program przedmiotu c.d.:
Program przedmiotu Programowanie (język C++) Wykład 1. Język C a C++. Definiowanie prostych klas. Typy referencyjne. Domyślne wartości argumentów. PrzeciąŜanie funkcji. Konstruktory, destruktory. Definiowanie
Bardziej szczegółowoFUNKCJE 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ółowoPARADYGMATY PROGRAMOWANIA Wykład 4
PARADYGMATY PROGRAMOWANIA Wykład 4 Metody wirtualne i polimorfizm Metoda wirualna - metoda używana w identyczny sposób w całej hierarchii klas. Wybór funkcji, którą należy wykonać po wywołaniu metody wirtualnej
Bardziej szczegółowo1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami
1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami Celem tych zajęć jest zrozumienie i oswojenie z technikami programowania przy pomocy wskaźników w języku C++. Proszę przeczytać rozdział 8.
Bardziej szczegółowoI - Microsoft Visual Studio C++
I - Microsoft Visual Studio C++ 1. Nowy projekt z Menu wybieramy File -> New -> Projekt -> Win32 Console Application w okienku Name: podajemy nazwę projektu w polu Location: wybieramy miejsce zapisu i
Bardziej szczegółowoobiekty funkcyjne - funktory
#include #include #include #include #include #include #include #include #include #include using namespace
Bardziej szczegółowoInformacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;
Klasy w C++ są bardzo ważnym narzędziem w rękach programisty. Klasy są fundamentem programowania obiektowego. Z pomocą klas będziesz mógł tworzyć lepszy kod, a co najważniejsze będzie on bardzo dobrze
Bardziej szczegółowoProgramowanie 2. Język C++. Wykład 3.
3.1 Programowanie zorientowane obiektowo... 1 3.2 Unie... 2 3.3 Struktury... 3 3.4 Klasy... 4 3.5 Elementy klasy... 5 3.6 Dostęp do elementów klasy... 7 3.7 Wskaźnik this... 10 3.1 Programowanie zorientowane
Bardziej szczegółowoC++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU
Inicjalizacja agregatowa zmiennej tablicowej int a[5] = 1,2,3,4,5 INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU Struktury są również agregatami, dlatego: struct X double f; char c; X x1 = 1, 2.2, 'c' Ale
Bardziej szczegółowo10.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