Programowanie Obiektowo Zorientowane w języku C++ Biblioteka STL
|
|
- Błażej Laskowski
- 4 lat temu
- Przeglądów:
Transkrypt
1 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 Katedra Informatyki Stosowanej i Modelowania Maj 2019 Mirosław Głowacki (AGH, UJK) Programowanie w języku C / 35
2 Spis treści 1 Biblioteka STL 2 Kontenery 3 Iteratory 4 Algorytmy 5 Podsumowanie Mirosław Głowacki (AGH, UJK) Programowanie w języku C / 35
3 Spis treści 1 Biblioteka STL 2 Kontenery 3 Iteratory 4 Algorytmy 5 Podsumowanie Mirosław Głowacki (AGH, UJK) Programowanie w języku C / 35
4 Biblioteka STL STL, czyli Standard Template Library, to biblioteka języka C++ zawierająca szablony gotowych do użycia: kontenerów, iteratorów, algorytmów oraz innych konstrukcji w formie szablonów. STL początkowo powstawała jako niezależna biblioteka rozwijana przez firmę Hewlett Packard. Z czasem większość przyjętych tam rozwiązań przeszła do biblioteki standardowej C++. STL to tzw. biblioteka generyczna - jej komponenty są sparametryzowane - niemal każdy z nich jest szablonem. Umożliwia to dobrą współpracę z typami wbudowanymi: w język i w bibliotekę oraz typami zdefiniowanymi przez użytkownika. Typy zdefiniowane muszą spełnić pewne określone warunki. Mirosław Głowacki (AGH, UJK) Programowanie w języku C / 35
5 Spis treści 1 Biblioteka STL 2 Kontenery 3 Iteratory 4 Algorytmy 5 Podsumowanie Mirosław Głowacki (AGH, UJK) Programowanie w języku C / 35
6 Kontenery Biblioteka kontenerów pozwala programistom w łatwy sposób zaimplementować podstawowe struktury danych, jak kolejki, listy, stosy. Obecnie występują trzy rodzaje kontenerów: kontenery sekwencyjne, kontenery asocjacyjne i nieuporządkowane kontenery asocjacyjne (występują dopiero w standardzie C++11 ). Każdy z nich został zaprojektowany, aby zapewniać inny zestaw operacji. Zarządzają one pamięcią alokowaną dla ich elementów, i zapewniają metody dostępu: bezpośredniego lub przez iteratory, czyli obiekty o właściwościach podobnych do wskaźników. Większość kontenerów ma co najmniej kilka wspólnych funkcji wpływających ich funkcjonalność i wydajność. Mirosław Głowacki (AGH, UJK) Programowanie w języku C / 35
7 Kontenery sekwencyjne standardu C++03 Wszystkie kontenery sekwencyjne są szablonami klas, które implementują struktury danych, które zapewniają sekwencyjny dostęp do ich elementów. Biblioteka STL standard C++03 zawierała następujące kontenery sekwencyjne: vector stanowiący dynamiczną, ciągłą tablicę, deque będący dwustronnie zakończoną kolejką, list implementujący listę dwukierunkową. Standard C++11 wprowadził dwa dodatkowe kontenery sekwencyjne, a mianowicie: statyczną tablicę ciągłą array i listę jednokierunkową forward list. Mirosław Głowacki (AGH, UJK) Programowanie w języku C / 35
8 Kontenery asocjacyjne Kontenery asocjacyjne implementują posortowane struktury danych, które da się szybko przeszukiwać ze złożonością obliczeniową O(log n). Wyróżniamy następujące kontenery asocjacyjne, które są również szablonami klas: set - kolekcja unikalnych kluczy, posortowana względem tych kluczy. map, czyli słownik - jest to kolekcja par klucz-wartość, posortowana względem kluczy, które są unikalne. multiset - posortowana kolekcja kluczy, które mogą się powtarzać. multimap - słownik z powtórzeniami będący kolekcją par klucz-wartość, posortowana względem kluczy, które nie muszą być unikalne. Mirosław Głowacki (AGH, UJK) Programowanie w języku C / 35
9 Adaptery kontenerów STL zawiera dodatkowo klasy tzw. adapterów kontenerów, które zapewniają inny interfejs kontenerom sekwencyjnym, umożliwiając inny zakres operacji. Są to: stack, który adaptuje kontener w celu zapewnienia stosu o strukturze danych LIFO, queue, który adaptuje kontener w celu zapewnienia kolejki - struktura danych FIFO, priority queue, który adaptuje kontener w celu zapewnienia kolejki priorytetowej. Mirosław Głowacki (AGH, UJK) Programowanie w języku C / 35
10 Kontenery Tak więc kontenery, czyli obiekty zbiorcze są jedną z najważniejszych rzeczy wprowadzanych przez STL Ich rodzaje - różnią się konstrukcją i tym samym wydajnością poszczególnych operacji. Przykładowo kontener typu vector trzyma obiekty w liniowym obszarze pamięci, co umożliwia swobodny dostęp (ang. random access) do wszystkich elementów. Można go indeksować liczbą całkowitą, podobnie jak robi to się ze zwykłymi tablicami. Wstawienie nowego elementu gdziekolwiek indziej, niż na końcu jest operacją o złożoności liniowej, gdyż trzeba odsuwać elementy, żeby zrobić miejsce na nowy. Z kolei, w kontenerze typu list, wstawianie i usuwanie elementów jest operacją o stałym czasie wykonania, ale nie jest możliwe jego indeksowanie. Mirosław Głowacki (AGH, UJK) Programowanie w języku C / 35
11 Kontener vector - przykład W celu użycia pojemnika vector należ przyłączyć plik nagłówkowy o tej samej nazwie, a następnie zadeklarować wektor zawierający obiekty żądanej klasy jedną z instrukcji, np.: vector<string> mojwekt; vector<string> mojwekt(5); vector<string> mojwekt(5, "pusty"); Zostanę zarezerwowane kolejno: pusty wektor, wektor o rozmiarze 5, wektor o rozmiarze 5 wypełniony obiektami typu string. Obiekty wektora można indeksować: np. mojwekt[i] lub mojwekt.at(2). Można także wstawiać obiekty na końcu wektora mojwekt.push_back("ostatni"); Mirosław Głowacki (AGH, UJK) Programowanie w języku C / 35
12 Kontener vector - przykład # include <string> # include <vector> using namespace std; int main(){ vector<string> mojwekt(4, "pusty"); mojwekt.push_back("ostatni"); vector<string>::iterator itstr = mojwekt.begin(); mojwekt.insert(itstr, "pierwszy"); itstr = mojwekt.end(); mojwekt.insert(itstr-=2, 2, "pelny"); mojwekt[2] = "trzeci"; for (size_t i = 0; i < mojwekt.size(); i++) cout << mojwekt[i] << " "; return 0; } pierwszy pusty trzeci pusty pelny pelny pusty ostatni Mirosław Głowacki (AGH, UJK) Programowanie w języku C / 35
13 Kontenery Koncepcja kontenerów określa podstawowe warunki, jakie powinien spełniać typ, aby móc być zaliczonym do odpowiedniej kategorii i tym samym obsługiwanym przez odpowiednie składniki biblioteki. Określa też możliwości, jakie udostępnia dany kontener - np. list jest pojemnikiem dwukierunkowym, co oznacza, że można się po nim poruszać jedynie krokowo, ale za to w obu kierunkach. Natomiast vector jest zbiornikiem swobodnego dostępu i umożliwia poza tym jeszcze indeksowanie elementów wewnątrz pojemnika. Inny model z kolei prezentują sortowane pojemniki asocjacyjne, takie jak set i map. Elementy wewnątrz set i map są posortowane i wyszukiwanie elementu jest podobne do wyszukiwania binarnego o logarytmicznej złożoności czasowwej. Mirosław Głowacki (AGH, UJK) Programowanie w języku C / 35
14 Kontener map - przykład # include <iostream> # include <map> using namespace std; int main(){ map<int, string> tydzien; tydzien[1] = "niedziela"; tydzien[2] = "poniedziałek"; tydzien[3] = "wtorek"; tydzien[4] = "środa"; tydzien[5] = "czwartek"; tydzien[6] = "piątek"; tydzien[7] = "sobota"; cout << "3 dzień tygodnia to " << tydzien[3] << endl; } Trzeci dzień tygodnia to wtorek Mirosław Głowacki (AGH, UJK) Programowanie w języku C / 35
15 Kontenery Kontener set jest zwykłym pojemnikiem asocjacyjnym i zawiera tylko elementy kluczowe (służy tylko do tego, żeby można było w nim łatwo dany element wyszukać) Natomiast map jest pojemnikiem asocjacyjnym zawierającym pary: klucz-wartość. Odrębnym zgadnieniem są wymagania dla typów użytkownika, których obiekty mają się znaleźć w kontenerze. Przykładowo przypisywalny oznacza, że obiekt ma mieć możliwość przypisania do niego wartości. Dla odmiany domyślnie konstruowalny oznacza, że typ musi posiadać konstruktor domyślny. Kontenery list i vector stawiają takie wymagania. Mirosław Głowacki (AGH, UJK) Programowanie w języku C / 35
16 Spis treści 1 Biblioteka STL 2 Kontenery 3 Iteratory 4 Algorytmy 5 Podsumowanie Mirosław Głowacki (AGH, UJK) Programowanie w języku C / 35
17 Iteratory Wstawienie obiektu wewnątrz wektora (lub innego pojemnika) wymaga zastosowania iteratora: vector<string>::iterator itstr; Iteratory to specjalne obiekty przeznaczone do poruszania się po kontenerach. Iterator, podobnie jak inne elementy STL, musi podlegać określonej koncepcji. Koncepcję iteratora o swobodnym dostępie spełnia np. zwykły wskaźnik, gdyż można na nim wykonać operacje wymagane dla iteratora: ++, --, += czy -=. itstr = mojwekt.end(); mojwekt.insert(itstr-=2, 2, "pelny"); Mirosław Głowacki (AGH, UJK) Programowanie w języku C / 35
18 Iterator mapy Zastosowanie iteratorów w stosunku do zaprezentowanej wcześniej mapy tydzien przedstawia następujący przykład. // definicja iteratora i ustawienie go // na element o kluczu 5 map<int, string>::iterator iter = tydzien.find(5); cout << "Dzień tygodnia nr " << iter->first << " to " << iter->second << endl; // elementy o kluczach większych i mniejszych map<int, string>::iterator poprzedni = iter; map<int, string>::iterator nastepny = iter; ++nastepny; --poprzedni; cout << "Przed nim jest " << poprzedni->second; cout << ", a po nim " << nastepny->second << endl; Mirosław Głowacki (AGH, UJK) Programowanie w języku C / 35
19 Iterator listy A oto przykład zastosowania iteratora listy. # include <string> # include <list> int main (){ std::string bd = "brak_danych"; std::list<std::string> lista(5, bd); // dostep do elementow listy zapewnia iterator std::list<std::string>::iterator iter; // begin() ustawia iterator na początku listy // end() ustawia iterator za lista // operator++ inkrementuje iterator if(!lista.empty()) for (iter = lista.begin(); iter!= lista.end(); ++iter) std::cout << *iter << " "; std::cout << std::endl; Mirosław Głowacki (AGH, UJK) Programowanie w języku C / 35
20 Iterator listy lista.push_back("poniedziałek"); lista.push_back("wtorek"); lista.push_back("środa"); lista.push_back("czwartek"); lista.push_back("piątek"); lista.push_back("sobota"); lista.push_back("koniec-listy"); lista.push_front("niedziela"); lista.push_front("lista-dni-tygodnia:"); for (iter = lista.begin(); iter!= lista.end(); ) if ((*iter) == bd) iter=lista.erase(iter); else iter++; Mirosław Głowacki (AGH, UJK) Programowanie w języku C / 35
21 Iterator listy if(!lista.empty()) for (iter = lista.begin(); iter!= lista.end(); ++iter){ std::cout << *iter << std::endl; // wartość elementu listy wyłuskuje // operator wyłuskania "*"" } return 0; } Rezultatem działani programu jest strumień wyjściowy: brak danych brak danych brak danych brak danych brak danych Lista-dni-tygodnia: niedziela poniedziałek wtorek środa czwartek piątek sobota Koniec-listy Mirosław Głowacki (AGH, UJK) Programowanie w języku C / 35
22 Spis treści 1 Biblioteka STL 2 Kontenery 3 Iteratory 4 Algorytmy 5 Podsumowanie Mirosław Głowacki (AGH, UJK) Programowanie w języku C / 35
23 Algorytmy STL definiuje się też algorytmy, czyli odpowiednie wzorce funkcji, które mają wykonać pewne abstrakcyjne zadania na określonym kontenerze. Przykładowym algorytmem jest for each, który ma wywołać podany funktor na określonym zakresie elementów. Innymi przykładami algorytmów są reverse, który odwraca kolejność elementów w kontenerze, find, który wyszukuje określoną wartość, czy find if, który wyszukuje element spełniający warunek określony podanym funktorem. Każdy algorytm STL może pracować na każdym pojemniku konkretyzowanym każdym możliwym typem. Nie każda jednak kombinacja algorytmu i kontenera ma sens - np. nie ma sensu wywoływać algorytmu sort na kontenerze takim jak set. Mirosław Głowacki (AGH, UJK) Programowanie w języku C / 35
24 Kontenery, iteratory, algorytmy - przykład # include <iostream> # include <set> # include <algorithm> using namespace std; struct Suma{ Suma(): suma(0) { } void operator()(double dbl){suma += dbl;} double suma; }; int main(){ set<double> liczby; for(int i = 1; i < 100; i++) liczby.insert(i); set<double>::iterator result, it; result = liczby.find(5); Mirosław Głowacki (AGH, UJK) Programowanie w języku C / 35
25 Kontenery, iteratory, algorytmy - przykład } if(result!= liczby.end()) cout << "Znaleziona liczba: " << *result << endl; for(it = liczby.begin(); it!= result; ++it) cout << *it << " "; Suma s = for_each(liczby.begin(), result, Suma()); cout << endl << "Suma liczb wynosi: " << s.suma << endl; return 0; Znaleziona liczba: Suma liczb wynosi: 10 Mirosław Głowacki (AGH, UJK) Programowanie w języku C / 35
26 Grupy algorytmów Biblioteka <algorithm> ma dla języka C++ duże znaczenie. Algorytmy modyfikujące kontenery są uciążliwe i wymagają znacznego nakładu pracy. Biblioteka dostarcza ponad 60 funkcji, które tematycznie można zakwalifikować do następujących grup: Operacje niemodyfikujące - np. for_each wykonująca operację na każdym elemencie ciągu, czy count określająca liczbę wystąpień danej wartości w ciągu. Operacje niemodyfikujące, wyszukujące - np. find, która znajduje pierwsze wystąpienie wartości w ciągu, czy search znajdująca pierwsze wystąpienie podciągu w większym ciągu. Operacje modyfikujące - np. fill, która zastępuje elementy ciągu podaną wartością czy generate zastępująca elementy ciągu wartościami będącymi wynikiem funkcji. Operacje zmieniające kolejność - np. partition, która umieszcza elementy spełniające warunek przed tymi, które go nie spełniają. Mirosław Głowacki (AGH, UJK) Programowanie w języku C / 35
27 Grupy algorytmów Kolejne grupy tematyczne biblioteki <algorithm> : Operacje sortujące - np. sort, która sortuje ciąg rosnąco, czy stable_sort sortująca ciąg z zachowaniem wzajemnej kolejność dla równych elementów. Operacje wyszukiwania binarnego, np. lower_bound, która zwraca iterator do pierwszego elementu równego lub większego od podanego, czy binary_search stwierdzająca czy dany element występuje w ciągu. Operacje na zbiorze, np. merge łącząca dwa zbiory w zbiór posortowany, czy set_difference tworząca różnicę dwóch zbiorów. Operacje na kopcu, np. make_heap, która przekształca ciąg elementów tak aby tworzyły kopiec, czy sort_heap przekształcająca ciąg o strukturze kopca w ciąg posortowany. Operacje min max takie jak max, która zwraca większy z dwóch elementów, czy max_element wyszukująca największy z elementów ciągu. Mirosław Głowacki (AGH, UJK) Programowanie w języku C / 35
28 Grupy algorytmów Ostatnia z grup tematycznych algorytmów zawarta jest w oddzielnej bibliotece <numeric> : Operacje numeryczne, np. accumulate sumująca ciąg elementów, czy inner_product, która oblicza iloczyn skalarny na elementach dwóch ciągów. # include <iostream> # include <numeric> # include <vector> int main(){ std::vector<double> a{0., 1., 2., 0.,-1.}; std::vector<double> b{5., 1., 0., 3., 1.}; double ilo = std::inner_product(a.begin(), a.end(), b.begin(), 0); // 0 - wartość początkowa iloczynu if (!ilo) std::cout << "Wektory są ortogonalne\n"; } Mirosław Głowacki (AGH, UJK) Programowanie w języku C / 35
29 Przykład - zmiana struktury wektora Ostatni z przykładów przedstawia funkcje operujące na kopcu - dla przypomnienia: Kopiec (ang. heap) inne nazwy: stóg lub sterta to struktura danych oparta na drzewie, w której wartości potomków węzła są w stałej relacji z wartością rodzica. Jeżeli kopiec ma być kopcem zupełnym, wtedy dodatkowo spełnione muszą być warunki: drzewo jest prawie pełne, tzn. liście występują na ostatnim i ewentualnie przedostatnim poziomie w drzewie tylko gdy ostatni poziom nie jest całkowicie wypełniony, liście na ostatnim poziomie są spójnie ułożone od strony lewej do prawej. Jeśli przyjętą relacją między wartością potomka a wartością rodzica będzie relacja mniejszości, wówczas na szczycie znajdzie się węzeł z największym kluczem. Mirosław Głowacki (AGH, UJK) Programowanie w języku C / 35
30 Przykład - zmiana struktury wektora W przypadku zupełnego kopca binarnego, łatwo zaimplementować kopiec w tablicy, według schematu: Numerując kolejne elementy począwszy od korzenia kopca ( 1 ), a następnie od lewej do prawej, na każdym kolejnym poziomie kopca można łatwo uzyskać dostęp do potomka lewego lub prawego, albo rodzica: Jeśli potomek ma numer n, to rodzic ma n/2 - np. dla węzła 7 rodzic ma numer 3, Jeśli rodzic ma numer n, to lewy potomek ma numer 2n, a prawy 2n+1. Dla innych kopców istnieją podobne techniki. Mirosław Głowacki (AGH, UJK) Programowanie w języku C / 35
31 Przykład - zmiana struktury wektora # include <iostream> # include <algorithm> # include <vector> using namespace std; void vectelem(const char& val) {cout << val << " "; } void heapelem(const char& val){ static unsigned int nrwez = 1; static unsigned int nrpoz = 1; if (nrwez++ == nrpoz) nrpoz *= 2; cout << val << " "; if (nrwez == nrpoz) cout << endl; } void wypiszdane(const vector<char>::iterator& itp, const vector<char>::iterator& itk){ Mirosław Głowacki (AGH, UJK) Programowanie w języku C / 35
32 Zmiana struktury wektora - przykład if (is_heap(itp, itk)) for_each(itp, itk, heapelem); else for_each(itp, itk, vectelem); cout << endl; } int main(){ char alfabet[] = {"abcdefghijklmnoprstuvwxyz"}; unsigned int chrno = sizeof(alfabet); vector<char> cvect; for (int i = 0; i < chrno; i++) cvect.push_back(alfabet[i]); vector<char>::iterator itp = cvect.begin(), itk = cvect.end(); wypiszdane(itp, itk); std::reverse(itp, itk); wypiszdane(itp, itk); Mirosław Głowacki (AGH, UJK) Programowanie w języku C / 35
33 Zmiana struktury wektora - przykład } make_heap(itp, itk); // utworzenie kopca wypiszdane(itp, itk); sort_heap(itp, itk); // przywrócenie struktury wypiszdane(itp, itk); return 0; a b c d e f g h i j k l m n o p r s t u v w x y z z y x w v u t s r p o n m l k j i h g f e d c b a z x y t w v u k s r p o n m l j i h g f e d c b a a b c d e f g h i j k l m n o p r s t u v w x y z Mirosław Głowacki (AGH, UJK) Programowanie w języku C / 35
34 Spis treści 1 Biblioteka STL 2 Kontenery 3 Iteratory 4 Algorytmy 5 Podsumowanie Mirosław Głowacki (AGH, UJK) Programowanie w języku C / 35
35 Biblioteka STL - podsumowanie Sposób zaprogramowania biblioteki STL (jej generyczność) zapewnił jej szerokie zastosowanie - kontenery, iteratory i algorytmy mogą się ona adaptować do typów nieznanych w momencie jej opracowywania. Szablony C++ są bardzo efektywne, więc STL jest o wiele bardziej popularna niż podobne biblioteki pisane dla C, w przypadku których wydajność była istotnie niższa od ręcznie programowanych rozwiązań. Mirosław Głowacki (AGH, UJK) Programowanie w języku C / 35
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
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ół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ół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ółowoKontenery 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ż.
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ół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ółowoAlgorytmy 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
Bardziej szczegółowoSTL 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
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ół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ółowoProgramowanie 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
Bardziej szczegółowoStruktury 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ć
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ółowoTechniki 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
Bardziej szczegółowoProgramowanie Obiektowew języku C++ Zadania L2
Programowanie Obiektowew języku C++ Zadania L2 Mirosław Głowacki 1,2 1 Akademia Górniczo-Hutnicza im. Stanisława Staszica w Ktrakowie Wydział Inżynierii Metali i Informatyki Stosowanej Katedra Informatyki
Bardziej szczegółowoKompletna dokumentacja kontenera C++ vector w - http://www.cplusplus.com/reference/stl/vector/
STL, czyli o co tyle hałasu W świecie programowania C++, hasło STL pojawia się nieustannie i zawsze jest o nim głośno... często początkujące osoby, które nie znają STL-a pytają się co to jest i czemu go
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ół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ółowoProgramowanie Obiektowew języku C++ Zadania L4
Programowanie Obiektowew języku C++ Zadania L4 Mirosław Głowacki 1,2 1 Akademia Górniczo-Hutnicza im. Stanisława Staszica w Ktrakowie Wydział Inżynierii Metali i Informatyki Stosowanej Katedra Informatyki
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ółowoWykład 4. Klasa List Kolejki Stosy Słowniki
Wykład 4 Klasa List Kolejki Stosy Słowniki Klasa List Poważną niedogodnością tablic jako kolekcji danych jest fakt, że muszą one mieć stały rozmiar. Programista musi wiedzieć z góry ile miejsca powinien
Bardziej szczegółowoProgramowanie Obiektowew języku C++ Zadania L4
Programowanie Obiektowew języku C++ Zadania L4 Mirosław Głowacki 1,2 1 Akademia Górniczo-Hutnicza im. Stanisława Staszica w Ktrakowie Wydział Inżynierii Metali i Informatyki Stosowanej Katedra Informatyki
Bardziej szczegółowoBiblioteka standardowa C++
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 (sortowanie,
Bardziej szczegółowoKurs 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ółowoSTL Standard Template Library
Literatura Przykłady: STL Standard Template Library Nicolai M. Josuttis: C++ Standard Library: A tutorial and Reference, 1st, Pearson 1999, (Polska wersja: Nicolai M. Josuttis: C++ Biblioteka standardowa
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ółowoPojemniki 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
Bardziej szczegółowoSTL: 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
Bardziej szczegółowoPodstawy programowania skrót z wykładów:
Podstawy programowania skrót z wykładów: // komentarz jednowierszowy. /* */ komentarz wielowierszowy. # include dyrektywa preprocesora, załączająca biblioteki (pliki nagłówkowe). using namespace
Bardziej szczegółowoStos LIFO Last In First Out
Stos LIFO Last In First Out Operacje: push - dodanie elementu na stos pop - usunięcie elementu ze stosu empty - sprawdzenie, czy stos jest pusty size - zwrócenie liczby elementów na stosie value (peek)
Bardziej szczegółowoAlgorytmy i Struktury Danych
Algorytmy i Struktury Danych Kopce Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 11 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych Wykład 11 1 / 69 Plan wykładu
Bardziej szczegółowoWstę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,
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ół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ół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ółowoStruktury danych: stos, kolejka, lista, drzewo
Struktury danych: stos, kolejka, lista, drzewo Wykład: dane w strukturze, funkcje i rodzaje struktur, LIFO, last in first out, kolejka FIFO, first in first out, push, pop, size, empty, głowa, ogon, implementacja
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ół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ółowoPodstawy programowania w języku C++ Zadania
Podstawy programowania w języku C++ Zadania Mirosław Głowacki 1,2 1 Akademia Górniczo-Hutnicza im. Stanisława Staszica w Ktrakowie Wydział Inżynierii Metali i Informatyki Stosowanej Katedra Informatyki
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ół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ół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ółowoProgramowanie 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
Bardziej szczegółowoMateriał 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
Bardziej szczegółowoPodstawy programowania w języku C++ Zadania - dziedziczenie i polimorfizm
Podstawy programowania w języku C++ Zadania - dziedziczenie i polimorfizm Mirosław Głowacki 1,2 1 Akademia Górniczo-Hutnicza im. Stanisława Staszica w Ktrakowie Wydział Inżynierii Metali i Informatyki
Bardziej szczegółowoTemat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.
Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. 1. Rodzaje pamięci używanej w programach Pamięć komputera, dostępna dla programu,
Bardziej szczegółowoAlgorytmy, 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
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ółowoProgramowanie Obiektowew języku C++ Zadania L8
Programowanie Obiektowew języku C++ Zadania L8 Mirosław Głowacki 1,2 1 Akademia Górniczo-Hutnicza im. Stanisława Staszica w Ktrakowie Wydział Inżynierii Metali i Informatyki Stosowanej Katedra Informatyki
Bardziej szczegółowoSTL: kontenery. Typy kontenerów STL. STL: kontenery. STL: kontenery. STL: kontenery. Typy kontenerów STL. deque (double-ended queue) list
Kontenery sekwencyjne: deque (kolejka dwustronna) deque (double-ended queue) implementacja kontenera zoptymalizowana pod kątem efektywności operacji dołączania i usuwania elementów z sekwencji na obu jej
Bardziej szczegółowoLaboratorium z przedmiotu Programowanie obiektowe - zestaw 04
Laboratorium z przedmiotu Programowanie obiektowe - zestaw 04 Cel zajęć. Celem zajęć jest zapoznanie się ze sposobem działania popularnych kolekcji. Wprowadzenie teoretyczne. Rozważana w ramach niniejszych
Bardziej szczegółowoWykład 3. Złożoność i realizowalność algorytmów Elementarne struktury danych: stosy, kolejki, listy
Wykład 3 Złożoność i realizowalność algorytmów Elementarne struktury danych: stosy, kolejki, listy Dynamiczne struktury danych Lista jest to liniowo uporządkowany zbiór elementów, z których dowolny element
Bardziej szczegółowoTechnologie 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ę
Bardziej szczegółowoPodstawy 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
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ół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ółowoZaję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
Bardziej szczegółowoProgramowanie Obiektowew języku C++ Zadania L2
Programowanie Obiektowew języku C++ Zadania L2 Mirosław Głowacki 1,2 1 Akademia Górniczo-Hutnicza im. Stanisława Staszica w Ktrakowie Wydział Inżynierii Metali i Informatyki Stosowanej Katedra Informatyki
Bardziej szczegółowoJava 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
Bardziej szczegółowoAlgorytmy 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;
Bardziej szczegółowoWSTĘP DO INFORMATYKI. Struktury liniowe
Akademia Górniczo-Hutnicza Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej WSTĘP DO INFORMATYKI Adrian Horzyk Struktury liniowe www.agh.edu.pl STRUKTURY LINIOWE SEKWENCJE Struktury
Bardziej szczegółowoPodstawy informatyki. Elektrotechnika I rok. Język C++ Operacje na danych - wskaźniki Instrukcja do ćwiczenia
Podstawy informatyki Elektrotechnika I rok Język C++ Operacje na danych - wskaźniki Instrukcja do ćwiczenia Katedra Energoelektroniki i Automatyki Systemów Przetwarzania Energii AGH Kraków 2017 Tematyka
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ół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ół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ół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ółowoJęzyk ludzki kod maszynowy
Język ludzki kod maszynowy poziom wysoki Język ludzki (mowa) Język programowania wysokiego poziomu Jeśli liczba punktów jest większa niż 50, test zostaje zaliczony; w przeciwnym razie testu nie zalicza
Bardziej szczegółowoProgramowanie Obiektowew języku C++ Zadania L9
Programowanie Obiektowew języku C++ Zadania L9 Mirosław Głowacki 1,2 1 Akademia Górniczo-Hutnicza im. Stanisława Staszica w Ktrakowie Wydział Inżynierii Metali i Informatyki Stosowanej Katedra Informatyki
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ółowoSTL: kontenery. STL: kontenery. STL: kontenery. STL: kontenery. STL: kontenery. STL: kontenery
Kontenery sekwencyjne: list (lista dwukierunkowa) jest przystosowany do szybkiego wstawiania elementów w dowolne miejsce sekwencji, nie nadaje się do efektywnej realizacji operacji swobodnego dostępu,
Bardziej szczegółowoDynamiczny przydział pamięci w języku C. Dynamiczne struktury danych. dr inż. Jarosław Forenc. Metoda 1 (wektor N M-elementowy)
Rok akademicki 2012/2013, Wykład nr 2 2/25 Plan wykładu nr 2 Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia niestacjonarne I stopnia Rok akademicki 2012/2013
Bardziej szczegółowoJęzyki Programowania. Prowadząca: dr inż. Hanna Zbroszczyk. tel: Konsultacje: piątek:
Języki Programowania Prowadząca: dr inż. Hanna Zbroszczyk e-mail: gos@if.pw.edu.pl tel: +48 22 234 58 51 Konsultacje: piątek: 12.00 13.30 www: http://www.if.pw.edu.pl/~gos/students/jp Politechnika Warszawska
Bardziej szczegółowoProgramowanie 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
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ół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ółowoWskaźnik może wskazywać na jakąś zmienną, strukturę, tablicę a nawet funkcję. Oto podstawowe operatory niezbędne do operowania wskaźnikami:
Wskaźniki są nieodłącznym elementem języka C. W języku C++ także są przydatne i korzystanie z nich ułatwia pracę, jednak w odróżnieniu do C wiele rzeczy da się osiągnąć bez ich użycia. Poprawne operowanie
Bardziej szczegółowoJak Windows zarządza pamięcią?
Jak Windows zarządza pamięcią? System Windows definiuje dwa typy pamięci, często mylone przez użytkowników. Pamięć fizyczna (pamięc RAM zainstalowana w komputerze) Pamięć widziana przez daną aplikację
Bardziej szczegółowoPodstawy programowania 2. Temat: Drzewa binarne. Przygotował: mgr inż. Tomasz Michno
Instrukcja laboratoryjna 5 Podstawy programowania 2 Temat: Drzewa binarne Przygotował: mgr inż. Tomasz Michno 1 Wstęp teoretyczny Drzewa są jedną z częściej wykorzystywanych struktur danych. Reprezentują
Bardziej szczegółowojava.util.* :Kolekcje Tomasz Borzyszkowski
java.util.* :Kolekcje Tomasz Borzyszkowski Wstęp Kolekcje w Java dają programiście pewien standardowy sposób radzenia sobie z przetwarzaniem grup obiektów. Implementacja kolekcji w Java składa się z następujących
Bardziej szczegółowoWydajność 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
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ółowoRekurencja. Przygotowała: Agnieszka Reiter
Rekurencja Przygotowała: Agnieszka Reiter Definicja Charakterystyczną cechą funkcji (procedury) rekurencyjnej jest to, że wywołuje ona samą siebie. Drugą cechą rekursji jest jej dziedzina, którą mogą być
Bardziej szczegółowoRekurencja. Dla rozwiązania danego problemu, algorytm wywołuje sam siebie przy rozwiązywaniu podobnych podproblemów. Przykład: silnia: n! = n(n-1)!
Rekurencja Dla rozwiązania danego problemu, algorytm wywołuje sam siebie przy rozwiązywaniu podobnych podproblemów. Przykład: silnia: n! = n(n-1)! Pseudokod: silnia(n): jeżeli n == 0 silnia = 1 w przeciwnym
Bardziej szczegółowoĆwiczenia IV - Kontenery (pojemniki)
Ćwiczenia IV - Kontenery (pojemniki) 28 października 2010 Kontener Kontener jest to obiekt który zawiera w sobie obiekty innej klasy i ma zdefiniowane metody nimi zarządzające. Jednym z najprostszych przykładów
Bardziej szczegółowoProgramowanie Obiektowo Zorientowane w języku C++ Klasy, pola, metody
Programowanie Obiektowo Zorientowane w języku C++ Klasy, pola, metody Mirosław Głowacki 1 1 Akademia Górniczo-Hutnicza im. Stanisława Staszica w Ktrakowie Wydział Inżynierii Metali i Informatyki Stosowanej
Bardziej szczegółowoInformacje 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
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ół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ółowoZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2014/2015. Drzewa BST c.d., równoważenie drzew, kopce.
POLITECHNIKA WARSZAWSKA Instytut Automatyki i Robotyki ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 204/205 Język programowania: Środowisko programistyczne: C/C++ Qt Wykład 2 : Drzewa BST c.d., równoważenie
Bardziej szczegółowoAlgorytmy i struktury danych. Wykład 4 Tablice nieporządkowane i uporządkowane
Algorytmy i struktury danych Wykład 4 Tablice nieporządkowane i uporządkowane Tablice uporządkowane Szukanie binarne Szukanie interpolacyjne Tablice uporządkowane Szukanie binarne O(log N) Szukanie interpolacyjne
Bardziej szczegółowoProgramowanie proceduralne w języku C++ Pętle, tablice
Programowanie proceduralne w języku C++ Pętle, tablice Mirosław Głowacki 1 1 Akademia Górniczo-Hutnicza im. Stanisława Staszica w Ktrakowie Wydział Inżynierii Metali i Informatyki Stosowanej Katedra Informatyki
Bardziej szczegółowoListy powiązane zorientowane obiektowo
Listy powiązane zorientowane obiektowo Aby zilustrować potęgę polimorfizmu, przeanalizujmy zorientowaną obiektowo listę powiązaną. Jak zapewne wiesz, lista powiązana jest strukturą danych, zaprojektowaną
Bardziej szczegółowoprowadzący dr ADRIAN HORZYK /~horzyk e-mail: horzyk@agh tel.: 012-617 Konsultacje paw. D-13/325
PODSTAWY INFORMATYKI WYKŁAD 8. prowadzący dr ADRIAN HORZYK http://home home.agh.edu.pl/~ /~horzyk e-mail: horzyk@agh agh.edu.pl tel.: 012-617 617-4319 Konsultacje paw. D-13/325 DRZEWA Drzewa to rodzaj
Bardziej szczegółowoZadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.
Sortowanie Dane wejściowe: ciąg n-liczb (kluczy) (a 1, a 2, a 3,..., a n 1, a n ) Dane wyjściowe: permutacja ciągu wejściowego (a 1, a 2, a 3,..., a n 1, a n) taka, że a 1 a 2 a 3... a n 1 a n. Będziemy
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ółowoWykład II. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej
Wykład II - semestr II Kierunek Informatyka Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2015 c Copyright 2015 Janusz Słupik Operacje dyskowe - zapis do pliku #include #include
Bardziej szczegółowoKolejka priorytetowa. Często rozważa się kolejki priorytetowe, w których poszukuje się elementu minimalnego zamiast maksymalnego.
Kolejki Kolejka priorytetowa Kolejka priorytetowa (ang. priority queue) to struktura danych pozwalająca efektywnie realizować następujące operacje na zbiorze dynamicznym, którego elementy pochodzą z określonego
Bardziej szczegółowo