Programowanie współbieżne i rozproszone
|
|
- Kinga Amalia Lewicka
- 6 lat temu
- Przeglądów:
Transkrypt
1 Programowanie współbieżne i rozproszone WYKŁAD 5 Jan Kazimirski 1
2 Programowanie GPU 2/2 2
3 Thrust Język CUDA C bazuje na języku C języku o dosyć niskim poziomie abstrakcji ( macro assembler) Implementowanie złożonych problemów w CUDA C jest kłopotliwe CUDA C wymaga podejmowania decyzji związanych z niskopoziomową reprezentacją problemu (bloki, wątki, sposoby alokacji pamięci itd.) 3
4 Thrust c.d. Thrust jest biblioteką wysokiego poziomu opartą o system szablonów C++. Używa modelu znanego z biblioteki STL (kontenery i algorytmy) Ukrywa szczegóły sprzętowe i niskopoziomowe Pozwala skoncentrować się na problemie, a nie na szczegółach jego implementacji Pozwala na szybkie tworzenie kodu 4
5 Thrust c.d. Thrust jest częścią tool-kitu dostępnego na stronie NVIDIA Kompilacja nie wymaga dodatkowych narzędzi Programy wykorzystujące Thrust muszą włączać odpowiednie pliki nagłówkowe Dokumentację API można znaleźć pod adresem: 5
6 Thrust - Przykład programu suma wektorów 1/2 #include <thrust/host_vector.h> #include <thrust/device_vector.h> #include <stdio.h> #include <thrust/functional.h> #include <thrust/fill.h> #include <thrust/transform.h> #define N 100 void show(thrust::host_vector<int> v) { int i; for(i=0;i<n;i++) printf("%d ",v[i]); printf("\n"); } 6
7 Thrust - Przykład programu suma wektorów 1/2 int main(void) { thrust::device_vector<int> d_va(n); thrust::device_vector<int> d_vb(n); thrust::device_vector<int> d_vc(n); thrust::fill(d_va.begin(),d_va.end(),1); thrust::fill(d_vb.begin(),d_vb.end(),2); } thrust::plus<int> op; thrust::transform( d_va.begin(), d_va.end(), d_vb.begin(), d_vc.begin(),op); thrust::host_vector<int> h_vc = d_vc; show(h_vc); return 0; 7
8 Elementy Thrust Kontenery pozwalają na przechowywanie danych dowolnego typu Iteratory udostępniają dane kontenera Algorytmy przetwarzają dane z kontenerów Obiekty funkcyjne wykorzystywane do definiowania operacji używanych w algorytmach Generator pseudolosowy 8
9 Kontenery Thrust definiuje jeden typ kontenera w dwóch wersjach. Kontener ten odpowiada STL-owemu kontenerowi vector. Klasa thrust::host_vector kontener alokowany w pamięci hosta Klasa thrust::device_vector kontener alokowany w pamięci urządzenia Funkcjonalność tych kontenerów odpowiada funkcjonalności STL-owego wektora
10 Kontenery c.d. Kopiowanie danych między hostem i urządzeniem jest bardzo łatwe używa się operatora przypisania: thrust::host_vector<int> hvec(100); thrust::device_vector<int> dvec(100); dvec = hvec; //... hvec = dvec;
11 Kontenery c.d. Klasy wektorów Thrust definiują wiele wygodnych metod do manipulowania danymi (tworzenie, usuwanie oraz dostęp do elementów). Elementy wektorów dostępne są poprzez operator indeksowania [] (Uwaga! Dla vector_device niewydajne). Wektorami zwykle manipulujemy za pomocą iteratorów.
12 Iteratory Przetwarzanie danych z kontenerów wymaga zwykle podanie zakresu. Metody begin() i end() wektora zwracają iterator do pierwszego i ostatniego elementu wektora. Iteratory implementują również metody pozwalające na dostęp do dowolnego elementu i wyliczanie odstępu między elementami.
13 Iteratory - przykład #include <thrust/host_vector.h> #include <thrust/device_vector.h> #include <iostream> int main(void) { thrust::device_vector<int>::iterator iter; thrust::host_vector<int> hvec(10,5); thrust::device_vector<int> dvec(10); dvec = hvec; for(iter=dvec.begin();iter<dvec.end();iter++) std::cout << *iter << std::endl; } return 0;
14 Iteratory c.d. Iteratory zawierają informację o typie wskaźnika (device, host) te same algorytmy mogą działać na obu typach Thrust zawiera metody do konwersji gołego wskaźnika CUDA (cudamalloc) na iterator i odwrotnie.
15 Wybrane algorytmy Thrust implementuje zbiór algorytmów analogicznych do algorytmów STL. Algorytmy Thrust mogą działać na wektorach na hoście, jak i na urządzeniu (zależnie od użytego iteratora) Sposób korzystania z algorytmów Thrust bardzo przypomina używanie algorytmów STL.
16 Wybrane algorytmy c.d. Wyszukiwanie Kopiowanie Redukcja Sortowanie Partycjonowanie Łączenie Operacje teorii mnogości Transformacje
17 Wyszukiwanie Funkcje związane z wyszukiwaniem: find wyszukuje podany element w zbiorze. find_if, find_if_not wyszukuje w zbiorze element spełniający lub niespełniający danego warunku mismatch porównuje dwa zbiory elementów i zwraca pozycję pierwszej różnicy elementów
18 find 01: #include <thrust/host_vector.h> 02: #include <thrust/device_vector.h> 03: #include <iostream> 04: 05: int main(void) { 06: int arr[] = {1,3,5,2,6,9,11,32,4,99}; 07: thrust::host_vector<int> hvec(arr,arr+10); 08: thrust::device_vector<int> dvec = hvec; 09: thrust::device_vector<int>::iterator iter; 10: 11: iter = thrust::find(dvec.begin(),dvec.end(),5); 12: std::cout << iter-dvec.begin() << std::endl; 13: iter = thrust::find(dvec.begin(),dvec.end(),33); 14: std::cout << iter-dvec.begin() << std::endl; 15: 16: return 0; 17: }
19 find_if 01: #include <thrust/host_vector.h> 02: #include <thrust/device_vector.h> 03: #include <iostream> 04: 05: struct pred { 06: device bool operator()(int x) { 07: return x>10; 08: } 09: }; 10: 11: int main(void) { 12: int arr[] = {1,3,5,2,6,9,11,32,4,99}; 13: thrust::host_vector<int> hvec(arr,arr+10); 14: thrust::device_vector<int> dvec = hvec; 15: thrust::device_vector<int>::iterator iter; 16: 17: iter = thrust::find_if(dvec.begin(),dvec.end(),pred()); 18: std::cout << iter-dvec.begin() << std::endl; 19: 20: return 0; 21: }
20 mismatch 01: #include <thrust/host_vector.h> 02: #include <thrust/device_vector.h> 03: #include <iostream> 04: 05: int main(void) { 06: int arr1[] = {1,3,5,2,6,9,11,32,4,99}; 07: int arr2[] = {1,3,5,2,6,11,8,30,22,15}; 08: thrust::device_vector<int> dvec1(arr1,arr1+10); 09: thrust::device_vector<int> dvec2(arr2,arr2+10); 10: typedef thrust::device_vector<int>::iterator Iterator; 11: thrust::pair<iterator,iterator> result; 12: result = thrust::mismatch(dvec1.begin(), dvec1.end(), dvec2.begin()); 13: 14: std::cout << *result.first << std::endl << 15: *result.second << std::endl << 16: result.first-dvec1.begin() << std::endl; 17: 18: return 0; 19: }
21 Kopiowanie Funkcje związane z kopiowaniem danych: copy kopiuje elementy z jednego zbioru do drugiego copy_n kopiuje n elementów z jednego zbioru do drugiego swap_ranges Wymienia elementy dwóch zbiorów między sobą.
22 copy 01: #include <thrust/host_vector.h> 02: #include <thrust/device_vector.h> 03: #include <iostream> 04: 05: int main(void) { 06: int arr1[] = {1,3,5,2,6,9,11,32,4,99}; 07: thrust::device_vector<int> dvec1(arr1,arr1+10); 08: thrust::device_vector<int> dvec2(10); 09: 10: thrust::copy(dvec1.begin(),dvec1.end(),dvec2.begin()); 11: 12: for(int i=0;i<10;i++) std::cout << dvec2[i] << " "; 13: std::cout << std::endl; 14: 15: return 0; 16: }
23 swap_ranges 01: #include <thrust/host_vector.h> 02: #include <thrust/device_vector.h> 03: #include <iostream> 04: 05: int main(void) { 06: int arr1[] = {1,3,5,2,6,9,11,32,4,99}; 07: int arr2[] = {1,1,1,1,1,1,1,1,1,1}; 08: thrust::device_vector<int> dvec1(arr1,arr1+10); 09: thrust::device_vector<int> dvec2(arr2,arr2+10); 10: 11: thrust::swap_ranges(dvec1.begin()+2,dvec1.begin()+5,dvec2.begin()+2); 12: 13: for(int i=0;i<10;i++) std::cout << dvec2[i] << " "; 14: std::cout << std::endl; 15: 16: return 0; 17: }
24 Kopiowanie c.d. Funkcje gather i scatter pozwalają na kopiowanie elementów pomiędzy zbiorami zgodnie z określoną mapą Alternatywne wersje powyższych funkcji gather_if i scatter_if pozwalają dodatkowo okreslić warunek jaki muszą spełniać kopiowane elementy
25 Redukcja Algorytmy związane z redukcją możemy podzielić na kilka grup: Redukcja za pomocą określonej operacji Zliczanie elementów Redukcja oparta o porównanie Wyszukiwanie wartości ekstremalnych Redukcje z transformacją Redukcje oparte o operacje logiczne Redukcje na podstawie własności zbioru
26 Redukcja za pomocą określonej operacji Funkcja reduce pozwala przekształcić zbiór wejściowy w pojedynczą wartość Zależnie od wariantu funkcji możemy zastosować sumowanie lub inną operację Uwaga! Wektoryzacja powoduje, że elementy mogą być przetwarzane w innej niż podana kolejności.
27 reduce 01: #include <thrust/host_vector.h> 02: #include <thrust/device_vector.h> 03: #include <iostream> 04: 05: int main(void) { 06: int arr1[] = {1,2,3,4,5,6,7,8,9,10}; 07: thrust::device_vector<int> dvec1(arr1,arr1+10); 08: 09: std::cout << thrust::reduce(dvec1.begin(),dvec1.end()) << std::endl; 10: std::cout << thrust::reduce(dvec1.begin(),dvec1.end(),10) << std::endl; 11: 12: return 0; 13: }
28 Zliczanie elementów Funkcja count zlicza ile elementów w podanym zakresie jest równe danej wartości Funkcja count_if zlicza dla ilu elementów w podanym zakresie podane wyrażenie jest prawdziwe.
29 count 01: #include <thrust/host_vector.h> 02: #include <thrust/device_vector.h> 03: #include <thrust/count.h> 04: #include <iostream> 05: 06: int main(void) { 07: int arr1[] = {1,2,3,4,5,6,7,8,9,1}; 08: thrust::device_vector<int> dvec1(arr1,arr1+10); 09: 10: std::cout << thrust::count(dvec1.begin(),dvec1.end(),1) << std::endl; 11: std::cout << thrust::count(dvec1.begin(),dvec1.end(),11) << std::endl; 12: 13: return 0; 14: }
30 Redukcja oparta o porównanie Funkcja equal pozwala sprawdzić czy elementy dwóch podanych zakresów są takie same. Funkcja jest też dostępna w wariancie umożliwiającym podanie funkcji stosowanej do porównywania elementów.
31 Wyszukiwanie wartości ekstremalnych Dostępne funkcje: min_element znajduje najmniejszy element zbioru max_element znajduje największy element zbioru minmax_element znajduje parę elementów: największy i najmniejszy Funkcje dostępne są też w wersji pozwalającej na dostarczenie własnej funkcji porównującej.
32 minmax_element 01: #include <thrust/host_vector.h> 02: #include <thrust/device_vector.h> 03: #include <thrust/count.h> 04: #include <iostream> 05: 06: int main(void) { 07: int arr1[] = {1,2,3,4,5,6,7,8,9,1}; 08: thrust::device_vector<int> dvec1(arr1,arr1+10); 09: typedef thrust::device_vector<int>::iterator Iterator; 10: 11: thrust::pair<iterator,iterator> result = thrust::minmax_element(dvec1.begin(),dvec1.end()); 12: 13: std::cout << *result.first << " " << result.first-dvec1.begin() << std::endl; 14: std::cout << *result.second << " " << result.second-dvec1.begin() << std::endl; 15: 16: return 0; 17: }
33 Redukcje z transformacją Funkcja inner_product liczy iloczyn skalarny dla danego zbioru Funkcja transform_reduce pozwala połączyć redukcję z transformacją zbioru za pomocą określonej operacji
34 Redukcje oparte o operacje logiczne Wykorzystują operacje logiczne na zbiorach. Dostępne funkcje: all_of sprawdza czy wszystkie elementy spełniają dany warunek any_of sprawdza czy jakikolwiek element spełnia dany warunek none_of sprawdza czy żaden element nie spełnia danego warunku.
35 any_f, all_of 01: #include <thrust/host_vector.h> 02: #include <thrust/device_vector.h> 03: #include <thrust/count.h> 04: #include <thrust/logical.h> 05: #include <iostream> 06: 07: struct is_one { 08: device bool operator()(int x) { 09: return x==1; 10: } 11: }; 12: 13: int main(void) { 14: int arr1[] = {1,2,3,4,5,6,7,8,9,1}; 15: thrust::device_vector<int> dvec1(arr1,arr1+10); 16: 17: 18: std::cout << thrust::any_of(dvec1.begin(),dvec1.end(),is_one()) << std::endl; 19: std::cout << thrust::all_of(dvec1.begin(),dvec1.end(),is_one()) << std::endl; 20: 21: return 0; 22: }
36 Redukcje na podstawie własności zbioru Funkcje: is_partitioned sprawdza czy zbiór jest podzielony na elementy spełniające i niespełniające danego warunku is_sorted sprawdza czy zbiór jest posortowany is_sorted_until zwraca liczbę elementów zbioru, które są posortowane.
37 Sortowanie Algorytm sortowania zbioru występuje w dwóch wariantach sort i stable_sort. Funkcja stable_sort zachowuje porządek elementów równorzędnych Funkcja sort_by_key pozwala sortować dane w postaci par klucz-wartość. Zamiast domyślnego operatora porównania można do sortowania użyć własnej funkcji porównującej.
38 sort 01: #include <thrust/host_vector.h> 02: #include <thrust/device_vector.h> 03: #include <thrust/sort.h> 04: #include <iostream> 05: 06: 07: int main(void) { 08: int arr1[] = {1,2,3,4,5,6,7,8,9,1}; 09: thrust::device_vector<int> dvec1(arr1,arr1+10); 10: 11: thrust::sort(dvec1.begin(),dvec1.end()); 12: 13: for(int i=0;i<10;i++) std::cout << dvec1[i] << " "; 14: std::cout << std::endl; 15: 16: return 0; 17: }
39 Partycjonowanie Algorytmy te pozwalają na częściowe uporządkowanie zbioru tzn. osobno elementy spełniające i niespełniające warunku Funkcje: partition podział zbioru zgodnie z warunkiem partition_copy podział zbioru i umieszczenie rezultatu w innym miejscu stable_partition, stable_partition_copy stabilne wersje powyższych algorytmów
40 Łączenie Funkcja merge pozwala połączyć dwa posortowane zbiory w jeden zbiór wynikowy Dostępna jest wersja funkcji merge pozwalająca dostarczyć własny operator porównania zamiast domyślnego
41 Operacje teoriomnogościowe Dostępne operacje teoriomnogościowe: set_difference różnica zbiorów set_intersection cześć wspólna zbiorów set_symmetric_difference różnica symetryczna set_union suma zbiorów Powyższe funkcje wymagają posortowanych zbiorów. Alternatywne wersje funkcji pozwalają dostarczyć własną funkcję porównującą.
42 Transformacje Thrust dysponuje algorytmami pozwalającymi na różnorodne transformacje zbioru wejściowego Podstawowe grupy transformacji: Generowanie zbioru Wypełnianie zbioru Transformacje zbioru wejściowego w wyjściowy Przetwarzanie każdego elementu zbioru Zastępowanie elementów zbioru
43 Generowanie zbioru Funkcja generate wypełnia kontener w podanym zakresie wartościami wyliczonymi za pomocą podanej funkcji generującej. Funkcja generate_n j.w. ale podaje się ile elementów ma być utworzonych. Funkcja sequence wypełnia kontener wartościami tworzącymi sekwencję.
44 generate 01: #include <thrust/host_vector.h> 02: #include <thrust/device_vector.h> 03: #include <thrust/generate.h> 04: #include <iostream> 05: 06: struct five { 07: device int operator()() { 08: return 5; 09: } 10: }; 11: 12: int main(void) { 13: thrust::device_vector<int> dvec1(10); 14: 15: thrust::generate(dvec1.begin(),dvec1.end(),five()); 16: 17: for(int i=0;i<10;i++) std::cout << dvec1[i] << " "; 18: std::cout << std::endl; 19: 20: return 0; 21: }
45 sequence 01: #include <thrust/host_vector.h> 02: #include <thrust/device_vector.h> 03: #include <thrust/sequence.h> 04: #include <iostream> 05: 06: int main(void) { 07: thrust::device_vector<int> dvec1(10); 08: 09: thrust::sequence(dvec1.begin(),dvec1.end()); 10: 11: for(int i=0;i<10;i++) std::cout << dvec1[i] << " "; 12: std::cout << std::endl; 13: 14: return 0; 15: }
46 Wypełnianie zbioru Funkcja fill Wypełnia kontener w podanym zakresie określoną wartością Funkcja fill_n Jak fill, ale podaje się liczbę elementów do wypełnienia.
47 fill 01: #include <thrust/host_vector.h> 02: #include <thrust/device_vector.h> 03: #include <thrust/fill.h> 04: #include <iostream> 05: 06: int main(void) { 07: thrust::device_vector<int> dvec1(10); 08: 09: thrust::fill(dvec1.begin(),dvec1.end(),11); 10: 11: for(int i=0;i<10;i++) std::cout << dvec1[i] << " "; 12: std::cout << std::endl; 13: 14: return 0; 15: }
48 Transformacje zbioru wejściowego w wyjściowy Funkcja transform dokonuje transformacji zbioru (lub 2 zbiorów) wejściowych na zbiór wyjściowy według zadanej funkcji. Funkcja transform_if Podobna do transform, ale pozwala dokonać transformacji warunkowej na podstawie danych wejściowych lub dodatkowej mapy.
49 transform 01: #include <thrust/host_vector.h> 02: #include <thrust/device_vector.h> 03: #include <thrust/transform.h> 04: #include <iostream> 05: 06: int main(void) { 07: int arr1[] = {1,3,5,2,6,9,11,32,4,99}; 08: int arr2[] = {1,1,1,1,1,1,1,1,1,1}; 09: thrust::device_vector<int> dvec1(arr1,arr1+10); 10: thrust::device_vector<int> dvec2(arr2,arr2+10); 11: thrust::device_vector<int> dvec3(10); 12: 13: thrust::plus<int> op; 14: thrust::transform(dvec1.begin(),dvec1.end(),dvec2.begin(),dvec3.begin(),op); 15: 16: for(int i=0;i<10;i++) std::cout << dvec3[i] << " "; 17: std::cout << std::endl; 18: 19: return 0; 20: }
50 Przetwarzanie każdego elementu zbioru Funkcja for_each wykonuje określoną operację na zbiorze w podanym zakresie. Funkcja for_each_n Podobna do for_each, ale podaje się liczbę elementów do przetworzenia
51 Zastępowanie elementów zbioru Funkcja replace pozwala zastąpić w zbiorze podany element nową wartością. Funkcja replace_if jw. ale podaje się warunek jaki muszą spełnić zastępowane wartości. Funkcja replace_copy, replace_copy_if ten wariant funkcji replace wykonuje zastępowanie z jednoczesnym kopiowaniem do innego zbioru.
52 Zaawansowane iteratory Thrust definiuje dodatkowe specjalne iteratory pozwalające zwiększyć możliwości algorytmów. Algorytm nie widzi różnicy między zwykłym a specjalnym iteratorem. Specjalne iteratory: constant_iterator counting_iterator transform_iterator permutation_iterator zip_iterator
53 constant_iterator Reprezentuje zbiór złożony z jednej wartości Może być wykorzystany do wypełniania kontenerów danymi. Funkcja make_constant_iterator może być użyta do łatwego utworzenia iteratora jako parametru algorytmu (nie wymaga podania dokładnego typu iteratora)
54 counting_iterator Reprezentuje zbiór będący sekwencją rosnących wartości. Pozwala na łatwe tworzenie sekwencji lub wykonywanie operacji z udziałem sekwencji Dostępna jest funkcja make_counting_iterator
55 transform_iterator Reprezentuje zbiór będący przedziałem wartości po przetworzeniu przez funkcję (transformacja) Połączony z innym algorytmem pozwala połączyć wywołania jądra zwiększając wydajność Dostępna jest funkcja make_transform_iterator
56 permutation_iterator Reprezentuje zbiór danych będący podzbiorem podanego przedziału, ale z wartościami przestawionymi zgodnie z podanym schematem Wygodny przy operacjach typu scatter/gather Dostępna jest funkcja generująca make_permutation_iterator
57 zip_iterator Łączy kilka sekwencji wejściowych w jedną sekwencję Użyteczny gdy wymagana jest operacja na bardziej złożonych danych (np.. wielowymiarowych). Umożliwia algorytmom pracę na wielu strumieniach danych z użyciem tylko jednego iteratora. Dodatkowe funkcje: make_tuple, make_zip_iterator
58 Obiekty funkcyjne Większość algorytmów pozwala na dostarczenie własnej wersji funkcji wykorzystywanej do przetwarzania danych. Thrust udostępnia predefiniowane funkcje w postaci tzw. obiektów funkcyjnych dla różnych typów operacji: arytmetycznych, porównania, logicznych, bitowych i innych. Predefiniowane obiekty funkcyjne dostarczane są w postaci szablonów.
59 Predefiniowane obiekty funkcyjne Operatory arytmetyczne: plus<t>, minus<t>, multiplies<t>, divides<t>, modulus<t>, negate<t> Operatory porównania: equal_to<t>, not_equal_to<t>, greater<t>, less<t>, greater_equal<t>, less_equal<t> Operatory logiczne: logical_and<t>, logical_or<t>, logical_not<t> Operatory bitowe: bit_and<t>, bit_or<t>, bit_xor<t>
Programowanie Równoległe wykład 12. Thrust C Maciej Matyka Instytut Fizyki Teoretycznej
Programowanie Równoległe wykład 12 Thrust C++ 30.01.2013 Maciej Matyka Instytut Fizyki Teoretycznej Co to jest Thrust C++? Thrust C++ biblioteka szablonów Interfejs w pewnym sensie spójny z STL Biblioteka
Algorytmy w C++ dla opornych!
Algorytmy w C++ dla opornych! 02.10.2011 Opracował: Krzysztof Rudlicki W-ce przewodniczący SKN TeamBit krudlicki@future-processing.com O czym będę przynudzał: O - Dlaczego będę przynudzał? O - Vector A
Programowanie Obiektowo Zorientowane w języku C++ Biblioteka STL
Programowanie Obiektowo Zorientowane w języku C++ Biblioteka STL Mirosław Głowacki 1 1 Akademia Górniczo-Hutnicza im. Stanisława Staszica w Ktrakowie Wydział Inżynierii Metali i Informatyki Stosowanej
Programowanie 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
STL: kontenery. STL: kontenery. STL: kontenery. Typy kontenerów STL. STL: kontenery. STL: kontenery. multimap. Kontener map: przykład zadanie:
Kontener map: przykład zadanie: Jak policzyć liczby różnych słów występujących w tekście? Rozwiązanie: Potrzebny jest kontener, który będzie zawierał listę różnych słów (tj. listę bez powtórzeń), która
STL: algorytmy sortujące. STL: algorytmy sortujące. STL: algorytmy sortujące. STL: algorytmy sortujące. STL: algorytmy sortujące
1. partition 2. stable_partition 3. sort 4. stable_sort 5. partial_sort 6. partial_sort_copy 7. nth_element 8. lower_bound 9. upper_bound 10.equal_range 11.binary_search 12.merge 13.inplace_merge 14.includes
STL: algorytmy sortujące. STL: algorytmy sortujące. STL: algorytmy sortujące. STL: algorytmy sortujące. STL: algorytmy sortujące
1. partition 2. stable_partition 3. sort 4. stable_sort 5. partial_sort 6. partial_sort_copy 7. nth_element 8. lower_bound 9. upper_bound 10.equal_range 11.binary_search 12.merge 13.inplace_merge 14.includes
Programowanie 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
Programowanie 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
Programowanie 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
Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.
Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni Wykład 3 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Abstrakcja funkcyjna Struktury Klasy hermetyzacja
Wykł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
Paradygmaty 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................................
Zaawansowane 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
Algorytmy, iteratory, kolekcje niestandardowe
Algorytmy, iteratory, kolekcje niestandardowe Biblioteka STL Sebastian Deorowicz Politechnika Śląska 2006 11 06 Sebastian Deorowicz (PŚl) Algorytmy, iteratory, kolekcje niestandardowe 2006 11 06 1 / 83
Kontenery i iteratory. Wykorzystanie kontenerów w praktyce.
Instrukcja laboratoryjna nr 2 Programowanie w języku C 2 (C++ poziom zaawansowany) Kontenery i iteratory. Wykorzystanie kontenerów w praktyce. dr inż. Jacek Wilk-Jakubowski mgr inż. Maciej Lasota dr inż.
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.
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
Wykł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
Definicja szablonu klasy. Korzystanie z szablonu. Specjalizacja metody szablonu.
class Wektor private: Typ x; Typ y; Wektor(Typ a, Typ b) :x(a), y(b) ; Wektor A(2, 5); Wektor B(2.7, 9.7); Wektor C('A', 'B'); 1 Definicja szablonu klasy. Korzystanie z szablonu. class
Style programowania - krótki przeglad
Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2005 2008 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu na temat programowania obiektowego.
W 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
Algorytmy sortujące. sortowanie kubełkowe, sortowanie grzebieniowe
Algorytmy sortujące sortowanie kubełkowe, sortowanie grzebieniowe Sortowanie kubełkowe (bucket sort) Jest to jeden z najbardziej popularnych algorytmów sortowania. Został wynaleziony w 1956 r. przez E.J.
STL: 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.
Wykład 1 Wprowadzenie do algorytmów. Zawartość wykładu 1. Wstęp do algorytmów i struktur danych 2. Algorytmy z rozgałęzieniami.
Wykład 1 Wprowadzenie do algorytmów Zawartość wykładu 1. Wstęp do algorytmów i struktur danych 2. Algorytmy z rozgałęzieniami Wykaz literatury 1. N. Wirth - Algorytmy+Struktury Danych = Programy, WNT Warszawa
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
STL: kontenery C++: STL: kontenery. STL: kontenery. STL: kontenery. STL: kontenery. Fabryka obiektów. Fabryka obiektów
Fabryka obiektów C++: Fabryka obiektów Klasa, której obiekty pośrednicza przy tworzeniu innych obiektów. Pomagają tworzyć obiekty, jeżeli informacja o typie odnosi się do konkretnego typu, znanego w momencie
Dla 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
Techniki 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
Porównanie wydajności CUDA i OpenCL na przykładzie równoległego algorytmu wyznaczania wartości funkcji celu dla problemu gniazdowego
Porównanie wydajności CUDA i OpenCL na przykładzie równoległego algorytmu wyznaczania wartości funkcji celu dla problemu gniazdowego Mariusz Uchroński 3 grudnia 2010 Plan prezentacji 1. Wprowadzenie 2.
int tab[5]; tab[1]; ciągły obszar pamięci, w którym umieszczone są elementy tego samego typu macierz [ ] - dwuargumentowy operator indeksowania
Rok akademicki 2013/2014, Pracownia nr 10 2/20 Informatyka 1 Tablica elementów ciągły obszar pamięci, w którym umieszczone są elementy tego samego typu Politechnika Białostocka - Wydział Elektryczny Elektrotechnika,
// Liczy srednie w wierszach i kolumnach tablicy "dwuwymiarowej" // Elementy tablicy są generowane losowo #include <stdio.h> #include <stdlib.
Wykład 10 Przykłady różnych funkcji (cd) - przetwarzanie tablicy tablic (tablicy "dwuwymiarowej") - sortowanie przez "selekcję" Dynamiczna alokacja pamięci 1 // Liczy srednie w wierszach i kolumnach tablicy
Paradygmaty programowania
Paradygmaty programowania Programowanie generyczne w C++ Dr inż. Andrzej Grosser Cz estochowa, 2014 2 Spis treści 1. Zadanie 4 5 1.1. Wprowadzenie.................................. 5 1.2. Wskazówki do
Programowanie obiektowe, wykład nr 7. Przegląd typów strukturalnych - klasy i obiekty - c.d.
Dr hab. inż. Lucyna Leniowska, prof. UR, Zakład Mechatroniki, Automatyki i Optoelektroniki, IT Programowanie obiektowe, wykład nr 7 Przegląd typów strukturalnych - klasy i obiekty - c.d. Klasa - powtórzenie
STL Standardt Template Library (wprowadzenie)
STL Standardt Template Library (wprowadzenie) Biblioteka standardowych szablonów na dzień dzisiejszy stanowi jedną z najpotężniejszych możliwości języka C++ Zawiera szablony klas ogólnego przeznaczenia
Wstęp do programowania
Wstęp do programowania Algorytmy na tablicach Paweł Daniluk Wydział Fizyki Jesień 2013 P. Daniluk (Wydział Fizyki) WP w. III Jesień 2013 1 / 23 Dwadzieścia pytań Zasady 1 Osoba 1 wymyśla hasło z ustalonej
EGZAMIN MATURALNY 2011 INFORMATYKA
Centralna Komisja Egzaminacyjna w Warszawie EGZAMIN MATURALNY 2011 INFORMATYKA POZIOM PODSTAWOWY MAJ 2011 2 Zadanie 1. a) (0 1) Egzamin maturalny z informatyki poziom podstawowy CZĘŚĆ I Obszar standardów
Programowanie obiektowe W3
Programowanie obiektowe W3 Przegląd typów strukturalnych w C++ : tablice statyczne i dynamiczne Dr hab. inż. Lucyna Leniowska, prof. UR Zakład Mechatroniki, Automatyki i Optoelektroniki Typy złożone: tablice
Wprowadzenie do szablonów szablony funkcji
Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2006 2010 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu na temat programowania obiektowego.
Algorytmy sortujące i wyszukujące
Algorytmy sortujące i wyszukujące Zadaniem algorytmów sortujących jest ułożenie elementów danego zbioru w ściśle określonej kolejności. Najczęściej wykorzystywany jest porządek numeryczny lub leksykograficzny.
Wstęp do Techniki Cyfrowej... Teoria automatów
Wstęp do Techniki Cyfrowej... Teoria automatów Alfabety i litery Układ logiczny opisywany jest przez wektory, których wartości reprezentowane są przez ciągi kombinacji zerojedynkowych. Zwiększenie stopnia
Język C zajęcia nr 11. Funkcje
Język C zajęcia nr 11 Funkcje W języku C idea podprogramów realizowana jest wyłącznie poprzez definiowanie i wywołanie funkcji. Każda funkcja musi być przed wywołaniem zadeklarowana. Deklaracja funkcji
Style programowania - krótki przeglad
Style programowania - krótki przeglad Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Niniejszy dokument zawiera materiały do wykładu na temat programowania obiektowego.
Definicja. Ciąg wejściowy: Funkcja uporządkowująca: Sortowanie polega na: a 1, a 2,, a n-1, a n. f(a 1 ) f(a 2 ) f(a n )
SORTOWANIE 1 SORTOWANIE Proces ustawiania zbioru elementów w określonym porządku. Stosuje się w celu ułatwienia późniejszego wyszukiwania elementów sortowanego zbioru. 2 Definicja Ciąg wejściowy: a 1,
Wykł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
Wstęp do programowania obiektowego. STL - Standard Template Library
Wstęp do programowania obiektowego STL - Standard Template Library 1 STL z ang. Standard Template Library, (pol. standardowa biblioteka szablonów) biblioteka C++ zawierająca pojemniki, iteratory, algorytmy,
Wprowadzenie do szablonów szablony funkcji
Wprowadzenie do szablonów szablony funkcji Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2006 2010 Bogdan Kreczmer Niniejszy dokument zawiera materiały do
Programowanie w elektronice: Podstawy C
Programowanie w elektronice: Podstawy C Projekt Matematyka dla Ciekawych Świata, Robert Ryszard Paciorek 2019-05-05 C / C++ są najpopularniejszymi językami kompilowanymi do kodu maszynowego
Algorytmy i Struktury Danych. Anna Paszyńska
Algorytmy i Struktury Danych Anna Paszyńska Tablica dynamiczna szablon Array Zbiory Zbiory template class Container {public: virtual ~Container() { }; virtual int Count() const = 0;
Tablicę 2-wymiarową można przedstawić jako pewien zestaw tablic 1-wymiarowych np.:
emat zajęć: ablice wielowymiarowe i struktury w języku C Autor: mgr inż. Sławomir Samolej Zagadnienie 1. (ablice liczbowe wielowymiarowe) ablicę 2-wymiarową można przedstawić jako pewien zestaw tablic
Szablony 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
Zaawansowane 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
2. 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
Wstęp do programowania
Wstęp do programowania wykład 2 Piotr Cybula Wydział Matematyki i Informatyki UŁ 2012/2013 http://www.math.uni.lodz.pl/~cybula Język programowania Każdy język ma swoją składnię: słowa kluczowe instrukcje
Tablice mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011
Tablice mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011 Załóżmy, że uprawiamy jogging i chcemy monitorować swoje postępy. W tym celu napiszemy program, który zlicza, ile czasu
Szablony 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
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
Podstawowe algorytmy i ich implementacje w C. Wykład 9
Wstęp do programowania 1 Podstawowe algorytmy i ich implementacje w C Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 9 Element minimalny i maksymalny zbioru Element minimalny
Informacje wstępne #include <nazwa> - derektywa procesora umożliwiająca włączenie do programu pliku o podanej nazwie. Typy danych: char, signed char
Programowanie C++ Informacje wstępne #include - derektywa procesora umożliwiająca włączenie do programu pliku o podanej nazwie. Typy danych: char, signed char = -128 do 127, unsigned char = od
Grzegorz Paweł Korbaś. Podstawy C++ Zbiór zadań z rozwiązaniami. Opole 2011 wydanie pierwsze wydawnictwo czytnia.pl
Grzegorz Paweł Korbaś Podstawy C++ Zbiór zadań z rozwiązaniami Opole 2011 wydanie pierwsze wydawnictwo czytnia.pl Copyright by Grzegorz Paweł Korbaś & czytnia.pl Powielanie całości lub części w jakikolwiek
Temat 1: Podstawowe pojęcia: program, kompilacja, kod
Temat 1: Podstawowe pojęcia: program, kompilacja, kod wynikowy. Przykłady najprostszych programów. Definiowanie zmiennych. Typy proste. Operatory: arytmetyczne, przypisania, inkrementacji, dekrementacji,
Technologie programowania Wykład 4. Szablony funkcji Notes. Szablony funkcji Notes. Szablony funkcji Notes. Notes. Przemek Błaśkiewicz.
Technologie programowania Wykład 4 Przemek Błaśkiewicz 9 maja 2017 1 / 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ę
Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1
Podstawy programowania. Wykład Funkcje Krzysztof Banaś Podstawy programowania 1 Programowanie proceduralne Pojęcie procedury (funkcji) programowanie proceduralne realizacja określonego zadania specyfikacja
Algorytmy i złożoności. Wykład 3. Listy jednokierunkowe
Algorytmy i złożoności Wykład 3. Listy jednokierunkowe Wstęp. Lista jednokierunkowa jest strukturą pozwalającą na pamiętanie danych w postaci uporzadkowanej, a także na bardzo szybkie wstawianie i usuwanie
Warto też w tym miejscu powiedzieć, że w C zero jest rozpoznawane jako fałsz, a wszystkie pozostałe wartości jako prawda.
Nazwa implementacji: Nauka języka C wyrażenia warunkowe if- Autor: Piotr Fiorek Opis implementacji: Poznanie struktury oraz zastosowania wyrażeń warunkowych if- w języku C. W programie realizującym jakiś
Programowanie w języku Java. Kolekcje
Programowanie w języku Java Kolekcje Definicja Kolekcja to obiekt, który grupuje elementy danych (inne obiekty) i pozwala traktować je jak jeden zestaw danych, umożliwiając jednocześnie wykonywanie na
Typy złożone. Struktury, pola bitowe i unie. Programowanie Proceduralne 1
Typy złożone Struktury, pola bitowe i unie. Programowanie Proceduralne 1 Typy podstawowe Typy całkowite: char short int long Typy zmiennopozycyjne float double Modyfikatory : unsigned, signed Typ wskaźnikowy
Języki i techniki programowania Ćwiczenia 2
Języki i techniki programowania Ćwiczenia 2 Autor: Marcin Orchel Spis treści: Język C++... 5 Przekazywanie parametrów do funkcji... 5 Przekazywanie parametrów w Javie.... 5 Przekazywanie parametrów w c++...
Technologie 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
Języki programowania obiektowego Nieobiektowe elementy języka C++
Języki programowania obiektowego Nieobiektowe elementy języka C++ Roman Simiński roman.siminski@us.edu.pl www.programowanie.siminskionline.pl Przetwarzanie tablic znaków Łańcuchy znakowe jako tablice znaków
Materiał Typy zmiennych Instrukcje warunkowe Pętle Tablice statyczne Wskaźniki Tablice dynamiczne Referencje Funkcje
Podstawy informatyki Informatyka stosowana - studia niestacjonarne - Zajęcia nr 4 Grzegorz Smyk Wydział Inżynierii Metali i Informatyki Przemysłowej Akademia Górniczo Hutnicza im. Stanisława Staszica w
main( ) main( void ) main( int argc, char argv[ ] ) int MAX ( int liczba_1, liczba_2, liczba_3 ) źle!
Funkcja wysoce niezależny blok definicji i instrukcji programu (podprogram) Każdy program napisany w języku C/C++ zawiera przynajmniej jedną funkcję o predefiniowanej nazwie: main( ). Najczęściej wykorzystuje
Programowanie 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:
Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.
Języki C i C++ to bardzo uniwersalne platformy programistyczne o ogromnych możliwościach. Wykorzystywane są do tworzenia systemów operacyjnych i oprogramowania użytkowego. Dzięki niskiemu poziomowi abstrakcji
Programowanie C++ Wykład 2 - podstawy języka C++ dr inż. Jakub Możaryn. Warszawa, Instytut Automatyki i Robotyki
Wykład 2 - podstawy języka C++ Instytut Automatyki i Robotyki Warszawa, 2014 Wstęp Plan wykładu Struktura programu. Zmienne i ich nazwy, podstawowe typy: całkowite, rzeczywiste, znakowe i napisowe. Instrukcje:
/* dołączenie pliku nagłówkowego zawierającego deklaracje symboli dla wykorzystywanego mikrokontrolera */ #include <aduc834.h>
Szablon programu: /* dołączenie pliku nagłówkowego zawierającego deklaracje symboli dla wykorzystywanego mikrokontrolera */ #include /* opcjonalne: deklaracja typów o rozmiarze jednego i dwóch
Java Collections Framework
Java Collections Framework Co to jest Java Collections Framework JCF Zunifikowana architektura do reprezentacji i manipulacji kolekcjami danych. Składa się z: Interfejsów Definuje abstrakcyjne typy możliwych
ang. file) Pojęcie pliku (ang( Typy plików Atrybuty pliku Fragmentacja wewnętrzna w systemie plików Struktura pliku
System plików 1. Pojęcie pliku 2. Typy i struktury plików 3. etody dostępu do plików 4. Katalogi 5. Budowa systemu plików Pojęcie pliku (ang( ang. file)! Plik jest abstrakcyjnym obrazem informacji gromadzonej
TOPIT Załącznik nr 3 Programowanie aplikacji internetowych
Szkolenie przeznaczone jest dla osób chcących poszerzyć swoje umiejętności o tworzenie rozwiązań internetowych w PHP. Zajęcia zostały przygotowane w taki sposób, aby po ich ukończeniu można było rozpocząć
Techniki programowania INP001002Wl rok akademicki 2017/18 semestr letni. Wykład 5. Karol Tarnowski A-1 p.
Techniki programowania INP001002Wl rok akademicki 2017/18 semestr letni Wykład 5 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Standardowa biblioteka szablonów (Standard Template
Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44
Programowanie w C++ Wykład 2 Katarzyna Grzelak 4 marca 2019 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44 Na poprzednim wykładzie podstawy C++ Każdy program w C++ musi mieć funkcję o nazwie main Wcięcia
Struktury Danych i Złożoność Obliczeniowa
Struktury Danych i Złożoność Obliczeniowa Zajęcia 1 Podstawowe struktury danych Tablica Najprostsza metoda przechowywania serii danych, zalety: prostota, wady: musimy wiedzieć, ile elementów chcemy przechowywać
Rekurencja (rekursja)
Rekurencja (rekursja) Rekurencja wywołanie funkcji przez nią samą wewnątrz ciała funkcji. Rekurencja może być pośrednia funkcja jest wywoływana przez inną funkcję, wywołaną (pośrednio lub bezpośrednio)
Programowanie Równoległe Wykład, CUDA praktycznie 1. Maciej Matyka Instytut Fizyki Teoretycznej
Programowanie Równoległe Wykład, 07.01.2014 CUDA praktycznie 1 Maciej Matyka Instytut Fizyki Teoretycznej Motywacja l CPU vs GPU (anims) Plan CUDA w praktyce Wykład 1: CUDA w praktyce Wykład 2: Cuda +
Spis treści. Wprowadzenie 15
Spis treści Wprowadzenie 15 1. Mechanizmy języka C++ 19 1.1. Struktura programu jednostki translacji.................. 21 1.1.1. Składnia tekstu źródłowego...................... 22 1.1.2. Preprocesor...
Klasy Obiekty Dziedziczenie i zaawansowane cechy Objective-C
#import "Fraction.h" #import @implementation Fraction -(Fraction*) initwithnumerator: (int) n denominator: (int) d { self = [super init]; } if ( self ) { [self setnumerator: n anddenominator:
Programowanie Obiektowo Zorientowane w języku c++ Przestrzenie nazw
Programowanie Obiektowo Zorientowane w języku c++ Przestrzenie nazw Mirosław Głowacki 1 1 Akademia Górniczo-Hutnicza im. Stanisława Staszica w Ktrakowie Wydział Inżynierii Metali i Informatyki Stosowanej
Zajęcia nr 5 Algorytmy i wskaźniki. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej
Zajęcia nr 5 Algorytmy i wskaźniki dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej Plan Zapis i odczyt z plików tekstowych O tablicach ciąg dalszy Referencje
Programowanie w języku C++
Programowanie w języku C++ Część siódma Autor Roman Simiński Kontakt roman.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
Wydajność użycia funktorów z biblioteką STL języka C++
Wydajność użycia funktorów z biblioteką STL języka C++ Irek Szcześniak, Maciek Sobczak 1 października 2005 roku Streszczenie Artykuł dotyczy wydajności użycia funktorów z biblioteką STL (Standard Template
Literatura. adów w cyfrowych. Projektowanie układ. Technika cyfrowa. Technika cyfrowa. Bramki logiczne i przerzutniki.
Literatura 1. D. Gajski, Principles of Digital Design, Prentice- Hall, 1997 2. C. Zieliński, Podstawy projektowania układów cyfrowych, PWN, Warszawa 2003 3. G. de Micheli, Synteza i optymalizacja układów
Języki programowania. Przetwarzanie tablic znaków. Część druga. Autorzy Tomasz Xięski Roman Simiński
Języki programowania Część druga Przetwarzanie tablic znaków Autorzy Tomasz Xięski Roman Simiński Niniejsze opracowanie zawiera skrót treści wykładu, lektura tych materiałów nie zastąpi uważnego w nim
Algorytmy i struktury danych. Co dziś? Tytułem przypomnienia metoda dziel i zwyciężaj. Wykład VIII Elementarne techniki algorytmiczne
Algorytmy i struktury danych Wykład VIII Elementarne techniki algorytmiczne Co dziś? Algorytmy zachłanne (greedyalgorithms) 2 Tytułem przypomnienia metoda dziel i zwyciężaj. Problem można podzielić na
Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk. Wydział Inżynierii Metali i Informatyki Przemysłowej
Podstawy informatyki Informatyka stosowana - studia niestacjonarne Grzegorz Smyk Wydział Inżynierii Metali i Informatyki Przemysłowej Akademia Górniczo Hutnicza im. Stanisława Staszica w Krakowie, rok
Podstawy programowania. Wykład 7 Tablice wielowymiarowe, SOA, AOS, itp. Krzysztof Banaś Podstawy programowania 1
Podstawy programowania. Wykład 7 Tablice wielowymiarowe, SOA, AOS, itp. Krzysztof Banaś Podstawy programowania 1 Tablice wielowymiarowe C umożliwia definiowanie tablic wielowymiarowych najczęściej stosowane
Skł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
Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++
Programowanie Wstęp p do programowania Klasa 3 Lekcja 9 PASCAL & C++ Język programowania Do przedstawiania algorytmów w postaci programów służą języki programowania. Tylko algorytm zapisany w postaci programu
Zadanie 2: Arytmetyka symboli
1 Cel ćwiczenia Zadanie 2: Arytmetyka symboli Wykształcenie umiejętności abstrahowania operacji arytmetycznych. Zapoznanie się i przećwiczenie mechanizmu tworzenia przeciążeń funkcji operatorowych. Utrwalenie
Proste algorytmy w języku C
Proste algorytmy w języku C Michał Rad AGH Laboratorium Maszyn Elektrycznych 2016-12-01 Outline Język C Zadanie pierwsze - obliczanie miejsc zerowych wielomianu Zadanie drugie - znajdowanie największego
Prof. Danuta Makowiec Instytut Fizyki Teoretycznej i Astrofizyki pok. 353, tel danuta.makowiec at gmail.com
Programowanie wykład dla I roku bioinformatyki semestr letni 2013 Prof. Danuta Makowiec Instytut Fizyki Teoretycznej i Astrofizyki pok. 353, tel. 58 523 2466 e-mail: danuta.makowiec at gmail.com Cel bloku
Pojemniki Pojemnik to obiekt, którego zadaniem jest przechowywanie innych obiektów.
1 Wstęp Biblioteka standardowa C++ Wejście/wyjście (iostream) Napisy (string) Napisy jako strumienie (sstream) STL Standard Template Library Pojemniki (kolekcje) Iteratory (wyliczanie elementów) Algorytmy