Programowanie obiektowe Wykład 10

Slides:



Advertisements
Podobne prezentacje
C++ wykład 13,14,15 (16/23/ ) STL.
Advertisements

Standardowa biblioteka języka C++
Standard Template Library
Standard Template Library
Programowanie obiektowe
Programowanie obiektowe Wykład 3 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/21 Dariusz Wardowski.
Programowanie obiektowe Wykład 7 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/20 Dariusz Wardowski.
Programowanie obiektowe Wykład 6 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/14 Dariusz Wardowski.
Programowanie w języku C++
Programowanie obiektowe Wykład 9 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/15 Dariusz Wardowski.
Temat 2: Podstawy programowania Algorytmy – 1 z 2 _________________________________________________________________________________________________________________.
STOS. STL (ang. Standard Template Library) jest to biblioteka zawierająca algorytmy, pojemniki, iteratory oraz inne konstrukcje w formie szablonów, gotowe.
Wyszukiwanie informacji w Internecie. Czym jest wyszukiwarka? INTERNET ZASOBY ZAINDEKSOWANE PRZEZ WYSZUKIWARKI Wyszukiwarka to mechanizm, który za pomocą.
Excel 2007 dla średniozaawansowanych zajęcia z dnia
Cel analizy statystycznej. „Człowiek –najlepsza inwestycja”
FORMAT WYMIANY DANYCH GEODEZYJNYCH TANAGO. TANGO V. 1.
Literary Reference Center Przewodnik
Karolina Supera Michał Krajewski. Struktura w formie drzewa Funktor jest węzłem Składniki struktur są gałęziami W strukturze możemy zagnieżdżać inne struktury.
Porównywarki cen leków w Polsce i na świecie. Porównywarki w Polsce.
Algorytmy Informatyka Zakres rozszerzony
Model warstwowy OSI Model OSI (Open Systems Interconnection) opisuje sposób przepływu informacji między aplikacjami programowymi w jednej stacji sieciowej.
BADANIA STATYSTYCZNE. WARUNKI BADANIA STATYSTYCZNEGO musi dotyczyć zbiorowościstatystycznej musi określać prawidłowościcharakteryzujące całą zbiorowość.
Menu Jednomiany Wyrażenia algebraiczne -definicja Mnożenie i dzielenie sum algebraicznych przez jednomian Mnożenie sum algebraicznych Wzory skróconego.
Python. Języki Programistyczne Microcode Machine code Assembly Language (symboliczna reprezentacja machine code) Low-level Programming Language (FORTRAN,
Metody sztucznej inteligencji - Technologie rozmyte i neuronowe 2015/2016 Perceptrony proste nieliniowe i wielowarstwowe © Kazimierz Duzinkiewicz, dr hab.
Definiowanie i planowanie zadań typu P 1.  Planowanie zadań typu P  Zadania typu P to zadania unikalne służące zwykle dokonaniu jednorazowej, konkretnej.
Jak tworzymy katalog alfabetyczny? Oprac.Regina Lewańska.
API jądra do obsługi przestrzeni użytkownika Co jest tematem tej prezentacji: Transport danych pomiędzy przestrzeniami użytkownika i jądra (asm/uaccess.h)
Budżetowanie kapitałowe cz. III. NIEPEWNOŚĆ senesu lago NIEPEWNOŚĆ NIEMIERZALNA senesu strice RYZYKO (niepewność mierzalna)
Język Java Paweł Rajba
Dziedziczenie, polimorfizm, Interfejsy
PODSTAWY TEORII BAZ DANYCH
Programowanie Obiektowe – Wykład 1
W kręgu matematycznych pojęć
O ochronie danych osobowych
MARS CZERWONA PLANETA.
Komunikacja ze szkołą i nauczycielami - dziennik elektroniczny
DEFINICJA I ZASTOSOWANIE W JĘZYKU HASKELL
Podstawowe polecenia systemu
Akademia C# - Lab2 Zmienne, instrukcje warunkowe, pętle, debugger,
Rekursje Tak jak w innych językach funkcje mogą odwoływać się same do siebie Możemy regulować głębokość przed stwierdzeniem błędu (MaxRecursion, $RecursionLimit,
ALGORYTMY I STRUKTURY DANYCH
Odczytywanie diagramów
Akademia C# lab. 9 Zdarzenia i delegaty.
Podstawy automatyki I Wykład /2016
Funkcja – definicja i przykłady
Programowanie obiektowe
Optymalizacja programów Open-Source
Wstęp do Informatyki - Wykład 8
Programowanie obiektowe
Kurs języka C++ – wykład 13 ( )
PROGRAMY DO KONTROLI RODZICIELSKIEJ
Programowanie obiektowe
Języki programowania.
Programowanie obiektowe
Instrukcje wyboru.
Podstawy informatyki Zygfryd Głowacz.
Programowanie obiektowe Wykład 11
ALGORYTMY I STRUKTURY DANYCH
C++ wykład 12 ( ) Kolekcje standardowe.
Zmienne i typy danych w C#
PGO Kolekcje Michail Mokkas.
Implementacja rekurencji w języku Haskell
Bufory.
Język C++ Preprocesor Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła.
Język C++ Operatory Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła.
Program na dziś Wprowadzenie Logika prezentacji i artykułu
Autor: Magdalena Linowiecka
Asynchroniczne operacje I/O za pomocą IOCP
dr Robert Kowalczyk, PWSZ Płock
Zapis prezentacji:

Programowanie obiektowe Wykład 10 Standard Template Library Dariusz Wardowski dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ

Programowanie obiektowe Wykład 10 Klasa string Klasa string umieszczona w standardowej bibliotece odpowiada za różnego rodzaju operacje na łańcuchach. string s0; //łańcuch o długości 0 string s1(„Ala ma kota”); string s2(10,’x’); //utworzy łańcuch „xxxxxxxxxx” string s3(„Nie lubie C++”,4,9); //”lubie C++” string s4(„Ciekawy wyklad?”,14); //”Ciekawy wyklad” string s5(&s4[0],&s4[5]); //”Ciek” dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ

Programowanie obiektowe Wykład 10 Operatory + cout << string(„Ala”) + string(„ ma”) + string(„ kota”); cout << s1 + s3; = s2 = s3; s4 = ’d’; [] string s(„Tekst”); cout << s[2]; // ‘k’ <, ==, != string t1(„abc”); string t2(„abd”); cout << (t1 < t2) << (t1 == t2) << (t1 != t2) << endl; dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ

length() i size() Za pomocą tych metod odczytujemy długość łańcucha. Programowanie obiektowe Wykład 10 length() i size() Za pomocą tych metod odczytujemy długość łańcucha. string s(„baaaaaaaaaaaaaaaaaardzo dlugi string”); cout << s.size() << endl; cout << s.length() << endl; Obydwie funkcje zwracają długość łańcucha bez znaku końca. Funkcja length() pochodzi ze starszych wersji klasy string, natomiast funkcja size() zgodna jest z biblioteką STL. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ

STL (Standard Template Library) Programowanie obiektowe Wykład 10 STL (Standard Template Library) STL to biblioteka szablonów zawierająca: kontenery – pełniące rolę analogiczną do tablic, czyli przechowują obiekty tego samego typu iteratory – obiekty umożliwiające przeglądanie elementów w kontenerze obiekty funkcyjne – działaniem przypominające funkcje, inaczej funktory, mogą być obiektami klas lub wskaźnikami do funkcji. algorytmy – czyli grupa instrukcji wykonująca określone zadanie. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ

Programowanie obiektowe Wykład 10 vector vector to klasa szablonowa, której obiekty pozwalają na przechowywanie obiektów tego samego typu. Alokacja pamięci następuje w sposób dynamiczny. #include <vector> int main() { vector<double> liczby(10); for (int i=0; i<10; i++) liczby[i]=i*i; return 0; } dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ

Iterator klas kontenerowych Programowanie obiektowe Wykład 10 Iterator klas kontenerowych Każda klasa kontenerowa posiada iterator, czyli mechanizm, który przypomina działanie wskaźnika. W szczególności iterator może być wskaźnikiem, lecz również może być obiektem dla którego zdefiniowano odpowiednie metody pozwalające działać jak wskaźnik. vector<double> liczby(10); for (int i=0; i<10; i++) liczby[i]=i*i; vector<double>::iterator it; //definicja iteratora it = liczby.begin(); //ustawienie iteratora na pierwszy element for (int i=0; i<liczby.size(); i++) //określenie wielkości // konteneru { cout << *it << endl; //operator wyłuskania it++; //iterator wskazuje na nastepny element } dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ

Programowanie obiektowe Wykład 10 begin() i end() Metoda begin() zwraca iterator wskazujący na pierwszy element kontenera. Metoda end() zwraca iterator wskazujący na element, który znajduje się za ostatnim elementem kontenera, element ten nazywany jest elementem ograniczającym. it = liczby.begin(); while (it != liczby.end()) { cout << *it << endl; it++; } dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ

Programowanie obiektowe Wykład 10 push_back Jest to jedna z metod, która należy tylko do niektórych klas kontenerowych (np. do vector). Metoda ta umożliwia dodanie elementu na koniec konteneru. vector<char> znaki; //tworzy pusty wektor char z; while (cin >> z && z!=‘a’) znaki.push_back(z); for (int i=0; i < znaki.size(); i++) cout << znaki[i]; dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ

Programowanie obiektowe Wykład 10 erase Metoda erase powoduje usunięcie elementów kontenera. Usuwane elementy wskazywane są przez iteratory będące argumentami. vector<bool> taknie(4); taknie[0]=taknie[2] = false; taknie[1]=taknie[3] = true; taknie.erase(taknie.begin()++, taknie.begin()+2); for (int i=0; i<taknie.size(); i++) cout << taknie[i] << endl; erase(it1, it2) usunie elementy kontenera zaczynając od elementu na który wskazuje it1 aż do elementu występującego przed elementem wskazywanym przez iterator it2; dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ

Programowanie obiektowe Wykład 10 insert Dzięki metodzie insert możemy wstawić elementy z jednego kontenera do drugiego. vector<string> s1; s1.push_back(„Ala”); s1.push_back(„ma”); s1.push_back(„kota”); vector<string> s2; s2.push_back(„Janek”); s2.push_back(„ma”); s2.push_back(„kota”); s2.push_back(„i”); s2.push_back(„psa”); s1.insert(s1.end(),s2.begin()+3,s2.end()); vector<string>::iterator it; it = s1.begin(); while (it != s1.end()) { cout << *it << " "; it++; } cout << endl; dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ

Funkcje biblioteki STL Programowanie obiektowe Wykład 10 Funkcje biblioteki STL Bibliotek STL poza klasami szablonowymi, zawiera również funkcje, które nie są związane z żadną klasą. Jednakże każda klasa z tej biblioteki może tego typu funkcje wykorzystywać. Poniżej przedstawiono przykładowe funkcje STL-owe, które nie są związane z klasami. for_each(); random_shuffle(); sort(); dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ

Programowanie obiektowe Wykład 10 random_shuffle Jest to funkcja dwuargumentowa pobierająca dwa iteratory określające zakres obiektów jakie mają być rozmieszczone w sposób losowy. vector<int> w(10); for (int i=0; i<10; i++) w[i] = 5*i; srand (unsigned(time(NULL))); random_shuffle(w.begin()+1, w.end()); Powyższy kod spowoduje rozmieszczenie w sposób losowy elementów o wartościach od 5 do 45. Element 0 (czyli pierwszy) zostanie na swoim miejscu. random_shuffle może być zastosowany dla tych kontenerów, dla których możliwy jest losowy dostęp (operator []). dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ

Programowanie obiektowe Wykład 10 sort Funkcja sort powoduje posortowanie w kolejności rosnącej elementów danego kontenera w zakresie podanym przez dwa iteratory. Do porównywania elementów używany jest operator <. vector<int> w(10); for (int i=0; i<10; i++) w[i] = 5*i; sort(w.begin(),w.end()); dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ

Programowanie obiektowe Wykład 10 sort int main() { vector<A> g(10); for (int i=0; i<10; i++) g[i] = A(i+10); } sort(g.begin(),g.end()); cout << g[i].getx() << " "; return 0; class A { int x; public: A() {} int getx() {return x;} A(int _x) : x(_x) {} friend bool operator< (const A & a1, const A & a2) if (a1.x<a2.x) return true; return false; } }; W przypadku, gdy kontener zawiera obiekty typu zdefiniowanego przez użytkownika, należy pamiętać o zdefiniowaniu funkcji operator<(). dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ

Programowanie obiektowe Wykład 10 Więcej kontenerów Biblioteka STL posiada wiele rodzajów kontenerów. Kontenery te różnią się typami. Poniżej przedstawiono listę nazw różnych typów kontenerów: vector deque list queue priority_queue stack map multimap set multiset bitset Wszystkie powyższe typy kontenerów służą do przechowywania obiektów. W ramach jednego konteneru wszystkie obiekty muszą być tego samego typu. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ

Programowanie obiektowe Wykład 10 Funktory Funktory, czyli obiekty funkcyjne to dowolne obiekty dla których zdefiniowano operator (). Poniżej przedstawiono przykład funktora: class A { private: int x; public: A(int _x) : x(_x) {} int operator()(int y) {return x*y;} }; A a(10); int z = a(30); //obiekt a jest funktorem dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ

Programowanie obiektowe Wykład 10 for_each Poniżej przedstawiono przykład użycia funktora na przykładzie funkcji for_each. void f(int & x) { x *= 2; } int main() vector<int> W; W.push_back(1); W.push_back(8); W.push_back(12); for_each(W.begin(),W.end(),f); cout << W[0] << " " << W[1] << " " << W[2] << endl; return 0; dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ

KONIEC Dziękuję za uwagę  Programowanie obiektowe Wykład 10 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ