K URS JĘZYKA C++ – WYKŁAD 14 (3.06.2015) Narzędzia programistyczne w STL.

Slides:



Advertisements
Podobne prezentacje
C++ wykład 9 ( ) Szablony.
Advertisements

C++ wykład 2 ( ) Klasy i obiekty.
C++ wykład 4 ( ) Przeciążanie operatorów.
Język C/C++ Funkcje.
C++ wykład 13,14,15 (16/23/ ) STL.
Programowanie obiektowe
Programowanie obiektowe PO PO - LAB 4 Wojciech Pieprzyca.
1 Dzisiejszy wykład Wzorce funkcji Wzorce klas. 2 Wzorce Często pojawia się konieczność pisania podobnych funkcji lub klas operujących na argumentach.
1 Dzisiejszy wykład Wzorce funkcji Wzorce klas Tablica asocjacyjna Składowe statyczne.
Wzorce.
Język ANSI C Funkcje Wykład: Programowanie komputerów
Dr hab. Ewa Popko pok. 231a
Static, const, volatile.
Języki programowania C++
ZŁOŻONOŚĆ OBLICZENIOWA
Liczby wokół nas A. Cedzidło.
Standard Template Library
Podstawy informatyki Wirtotechnologia – Funkcje Grupa: 1A
Dr hab. Ewa Popko pok. 231a
Wykład 1 dr hab. Ewa Popko
C++ wykład 2 ( ) Klasy i obiekty.
Niepewności przypadkowe
Wykład 2 struktura programu elementy języka typy zmienne
LICZBY RZECZYWISTE PODZBIORY ZBIORU LICZB RZECZYWISTYCH
Pakiety w Javie Łukasz Smyczyński (132834). Czym są pakiety? Klasy w Javie są grupowane w pewne zbiory zwane pakietami. Pakiety są więc pewnym podzbiorem.
Podstawy informatyki (4)
Podstawy programowania. Język C i C++– podstawy Temat: 1
Elementy Rachunku Prawdopodobieństwa i Statystyki
Złożone typy danych Listy Tworzenie elastycznych baz danych
JAVA c.d.. Instrukcji wyboru SWITCH używamy, jeśli chcemy w zależności od wartości pewnego wyrażenia wykonać jeden z kilku fragmentów kodu. Jest to w.
Programowanie obiektowe III rok EiT
Andrzej Repak Nr albumu
Inicjalizacja i sprzątanie
Programowanie obiektowe Wykład 3 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/21 Dariusz Wardowski.
Przekazywanie parametrów do funkcji oraz zmienne globalne i lokalne
Kurs języka C++ – wykład 13 ( )
Kurs języka C++ – wykład 3 ( )
Kurs języka C++ – wykład 8 ( )
Kurs języka C++ – wykład 9 ( )
Programowanie w języku C++
Kurs języka C++ – wykład 5 ( )
K URS JĘZYKA C++ – WYKŁAD 10 ( ) Szablony.
Temat: Liczby całkowite
Kurs języka C++ – wykład 4 ( )
K URS JĘZYKA C++ – WYKŁAD 2 ( ) Klasy i obiekty.
Programowanie obiektowe Wykład 9 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/15 Dariusz Wardowski.
Instrukcje wyboru.
Metody matematyczne w inżynierii chemicznej
Zasady arytmetyki dwójkowej
Klasy String i Vector Zajęcia 9. Klasa String Atutem języka C++ jest biblioteka standardowych szablonów STL (Standard Template Library), która udostępnia.
Wykład 2 Programowanie obiektowe. Programowanie obiektowe wymaga dobrego zrozumienia działania funkcji definiowanych przez użytkownika, w ten sposób będziemy.
Wykład 2 Klasa Zesp i jej hermetyzacja 1.Przykład definicji klasy Zesp 2.Zmiana definicji klasy 3.Zmienne i funkcje statyczne PO2-1 / 28.
Wykład 5 Klasa Vec i jej operatory 1.Kategorie operatorów 2.Operatory ogólne - przykłady 3.Operatory specjalne [ ], ( ) oraz –> 4.Operatory new i delete.
Seminarium Dyplomowe: Metodyka i Techniki Programowania Autor: Bartłomiej Fornal.
Wstęp do programowania wykład 3 Typy wyliczeniowe, tablice.
Podstawy informatyki Preprocesor Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Podstawy informatyki Funkcje Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego Matuszyka Podstawy.
Podstawy informatyki Szablony funkcji Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty.
STOS. STL (ang. Standard Template Library) jest to biblioteka zawierająca algorytmy, pojemniki, iteratory oraz inne konstrukcje w formie szablonów, gotowe.
K URS JĘZYKA C++ – WYKŁAD 3 ( ) Przenoszenie Składowe statyczne Funkcje wbudowane Argumenty domyślne.
K URS JĘZYKA C++ – WYKŁAD 1 ( ) Łagodne wprowadzenie do języka C++
K URS JĘZYKA C++ – WYKŁAD 7 ( ) Konwersje.
 Formuła to wyrażenie algebraiczne (wzór) określające jakie operacje ma wykonać program na danych. Może ona zawierać liczby, łańcuchy znaków, funkcje,
Liczby naturalne i całkowite Wykonanie: Aleksandra Jurkowska Natalia Piłacik Paulina Połeć Klasa III a Gimnazjum nr 1 w Józefowie Ul. Leśna 39 O5 – 420.
Kurs języka C++ – wykład 3 ( )
Programowanie Obiektowe – Wykład 2
Dane, zmienne, instrukcje
Język C++ Typy Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego.
Zapis prezentacji:

K URS JĘZYKA C++ – WYKŁAD 14 ( ) Narzędzia programistyczne w STL

S PIS TREŚCI Współczynniki wymierne Liczby losowe Pomiar czasu Wyrażenia regularne Lokalizacje

W SPÓŁCZYNNIKI WYMIERNE W pliku nagłówkowym jest zdefiniowany szablon do tworzenia współczynnika wymiernego, w którym licznik i mianownik jest przekazany poprzez argumenty szablonu. Mianownik zawsze musi być niezerowy. Definicja tego szablonu przypomina liczbę wymierną: template class ratio { public: typedef ratio type; static constexpr intmax_t num; static constexpr intmax_t den; //… }; Licznik num i mianownik den są automatycznie redukowane do minimalnych wartości (mianownik będzie dodatni).

W SPÓŁCZYNNIKI WYMIERNE typedef ratio FiveThirds; cout << FiveThirds::num << "/" << FiveThirds::den << endl; // 5/3 ratio one; cout << one.num << "/" << one.den << endl; // 1/1 ratio zero; cout << zero.num << "/" << zero.den << endl; // 0/1 typedef ratio Neg; cout << Neg::num << "/" << Neg::den << endl; // -7/3

W SPÓŁCZYNNIKI WYMIERNE Obliczenia na współczynnikach można wykonywać w trakcie kompilacji za pomocą następujących szablonów: ratio_add, ratio_subtract, ratio_multiply i ratio_divide (operacje arytmetyczne) oraz ratio_equal, ratio_not_equal, ratio_less, ratio_less_equal, ratio_greater i ratio_greater_equal (porównania). Przykład: ratio_add,ratio >::type ratio_equal,ratio >::value Istnieje też wiele predefiniowanych jednostek ratio<> : pico, nano, micro, milli, centi, deci, deca, hecto, kilo, mega, giga, tera, itd.

L ICZBY LOSOWE Narzędzia do generowania liczb losowych są zdefiniowane w pliku nagłówkowym. Do generowania liczb pseudolosowych używane są różne silniki pseudolosowe i różne rozkłady. Generatory liczb losowych posiadają wewnętrzny stan i funkcję, która oblicza rezultat i wysterowuje generator do następnego stanu – te dwie charakterystyki stanowią silnik generatora. Innym bardzo ważnym mechanizmem są rozkłady wyników – przedział i gęstość zmiennej losowej.

L ICZBY LOSOWE W STL zdefiniowano kilka szablonów silników do generowania liczb pseudolosowych: szablon linear_congruential_engine<> – niska jakość (wielkość stanu to 1 x sizeof(TYPE)), szablon subtract_with_carry_engine<> – średnia jakość (wielkość stanu to 25 x sizeof(TYPE)), szablon mersenne_twister_engine<> – wysoka jakość (wielkość stanu to 624 x sizeof(TYPE)) Adaptery szablonów silników pseudolosowych: … Wewnętrzny stan silnika pseudolosowego jest określony przez ziarno.

L ICZBY LOSOWE Rozkłady liczb pseudolosowych: …...

LICZBY LOSOWE Przykład utworzenia silnika pseudolosowego: std::default_random_engine dre; Przykład wykorzystania silnika pseudolosowego do wygenerowania liczby całkowitej z określonego zakresu z rozkładem jednostajnym: std::uniform_int_distribution di(0,9); int x = di(dre); Przykład wykorzystania silnika pseudolosowego do wygenerowania liczby rzeczywistej z określonego zakresu z rozkładem jednostajnym: std::uniform_real_distribution dr(1,2); double y = dr(dre);

L ICZBY LOSOWE

P OMIAR CZASU Biblioteka standardowa wprowadza narzędzia pomocne w pomiarze czasu – są one zdefiniowane w pliku nagłówkowym w przestrzeni nazw std::chrono. Podstawowe pojęcia: przedział czasowy (ang. duration) – określona liczba tyknięć w zadanej jednostce czasowej, na przykład: 3 minuty – 3 tyknięcia minut sekund – 1 doba liczona w tyknięciach sekund punkt czasowy (ang. timepoint) – odległość czasowa od pewnego ustalonego punku początkowego epoki, na przykład: New Year’s Midnight 2000 – jest to sekund od początku epoki unixowej (od 1 stycznia 1970 r) epoka (ang. epoch) – punkt bieżący zegara.

P OMIAR CZASU

Przedział czasowy reprezentowany przez szablon std::chrono::duration<> jest liczbą określonych jednostek czasowych (mierzonych w sekundach). Przykłady: std::chrono::duration twentySeconds(20); std::chrono::duration > halfAMinute(0.5); std::chrono::duration > oneMillisecond(1); W bibliotece standardowej zdefiniowano następujące typy przedziałów czasowych: nanoseconds, microseconds, milliseconds, seconds, minutes i hours. Przykłady: std::chrono::seconds twentySeconds(20); std::chrono::hours aDay(24);

P OMIAR CZASU Przedziały czasowe możemy porównywać, dodawać, odejmować, mnożyć i dzielić przez współczynniki oraz inkrementować i dekrementować o określoną jednostkę. Przykład: chrono::duration > d1(1); // 1/3 sekundy chrono::duration > d2(1); // 1/5 sekundy d1 + d2 /* 8 jednostek z 1/15 sekundy */ d1 < d2 /* false */

P OMIAR CZASU Zegar definiuje epokę i długość tyknięcia zegara. W bibliotece standardowej zdefiniowane są trzy zegary: system_clock (z funkcjami to_time_t() oraz from_time_t() ), steady_clock (nigdy nie korygowany) i high_resolution_clock (dokładny zegar systemowy). Bieżący czas można uzyskać za pomocą metody now() : auto system_start = chrono::system_clock::now(); Sprawdzenie czy upłynęła co najmniej minuta do startu: if (system_clock::now() > system_start + minutes(1))

P OMIAR CZASU Punkt czasowy jest reprezentowany przez obiekt time_point. Pomiaru czasu można dokonać za pomocą punktów czasowych: auto t = steady_clock::now(); //... do something... auto d = steady_clock::now()−t; Konwersja punktu czasowego do postaci kalendarzowej: std::string asString (const std::chrono::system_clock::time_point &tp) { // convert to system time: std::time_t t = std::chrono::system_clock::to_time_t(tp); std::string ts = std::ctime(&t); // convert to calendar time ts.resize(ts.size()-1); // skip trailing newline return ts; }