Paradygmaty programowania

Podobne dokumenty
Paradygmaty programowania

Paradygmaty programowania. Paradygmaty programowania

Paradygmaty programowania. Paradygmaty programowania

STL Standardt Template Library (wprowadzenie)

Szablon klasy std::vector

STL: Lekcja 1&2. Filozofia STL

Definicja szablonu klasy. Korzystanie z szablonu. Specjalizacja metody szablonu.

Algorytmy w C++ dla opornych!

Szablony funkcji i szablony klas

Język C++ wykład VI. uzupełnienie notatek: dr Jerzy Białkowski. Programowanie C/C++ Język C++ wykład VI. dr Jarosław Mederski.

Paradygmaty programowania

C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów

Programowanie w C++ Wykład 7. Katarzyna Grzelak. 23 kwietnia K.Grzelak (Wykład 7) Programowanie w C++ 1 / 40

Wykład 5 Wybrane zagadnienia programowania w C++ (c.d.)

Programowanie obiektowe w C++ Wykład 11

Szablon klasy std::list

Wprowadzenie do szablonów szablony funkcji

Functionalization. Funkcje w C. Marcin Makowski. 30 listopada Zak lad Chemii Teoretycznej UJ

Wprowadzenie do szablonów szablony funkcji

Programowanie w C++ Wykład 6. Katarzyna Grzelak. 1 kwietnia K.Grzelak (Wykład 6) Programowanie w C++ 1 / 43

STL: implementowanie algorytmów C++: STL. STL: implementowanie algorytmów. STL: implementowanie algorytmów. STL: implementowanie algorytmów

Programowanie i struktury danych

Technologie programowania Wykład 4. Szablony funkcji Notes. Szablony funkcji Notes. Szablony funkcji Notes. Notes. Przemek Błaśkiewicz.

2. Klasy cz. 2 - Konstruktor kopiujący. Pola tworzone statycznie i dynamicznie - Funkcje zaprzyjaźnione - Składowe statyczne

Programowanie w C++ z użyciem kontenerów - parę przykładów programów Opracowanie: dr hab. Mirosław R. Dudek, prof. UZ

Style programowania - krótki przeglad

Algorytmy, iteratory, kolekcje niestandardowe

PARADYGMATY PROGRAMOWANIA Wykład 3

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy WSKAŹNIKI KLASOWE

Algorytmy i Struktury Danych. Anna Paszyńska

Ghost in the machine

obiekty funkcyjne - funktory

Rzutowanie i konwersje

Wstęp do Programowania 2

public: // interfejs private: // implementacja // składowe klasy protected: // póki nie będziemy dziedziczyć, // to pole nas nie interesuje

Wydajność użycia funktorów z biblioteką STL języka C++

Szablony klas, zastosowanie szablonów w programach

Techniki Programowania wskaźniki

Funkcje. Piotr Zierhoffer. 7 października Institute of Computer Science Poznań University of Technology

Biblioteka standardowa C++

Jak Windows zarządza pamięcią?

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.

Wskaźnik może wskazywać na jakąś zmienną, strukturę, tablicę a nawet funkcję. Oto podstawowe operatory niezbędne do operowania wskaźnikami:

Podstawy programowania skrót z wykładów:

Programowanie obiektowe i C++ dla matematyków

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016

Dla każdej operacji łącznie tworzenia danych i zapisu ich do pliku przeprowadzić pomiar czasu wykonania polecenia. Wyniki przedstawić w tabelce.

Algorytmy i Struktury Danych.

Technologie cyfrowe semestr letni 2018/2019

Algorytmy i złożoności. Wykład 3. Listy jednokierunkowe

Wyjątki. Wyjątki. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Politechnika Wrocławska

Konstruktor kopiujacy

Programowanie obiektowe Wykład 3. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/21

Programowanie Komponentowe Zarządzanie obiektami: kontenery

Pojemniki Pojemnik to obiekt, którego zadaniem jest przechowywanie innych obiektów.

Obliczenia rozproszone z wykorzystaniem MPI

Zaawansowane programowanie w języku C++ Funkcje uogólnione - wzorce

utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy,

Metody Metody, parametry, zwracanie wartości

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Kurs programowania. Wykład 9. Wojciech Macyna

STL: implementowanie algorytmów. STL: implementowanie algorytmów. STL: implementowanie algorytmów. STL: implementowanie algorytmów

Klasy generyczne. ZbiórLiczb. ZbiórCzegokolwiek. Zbiór

Operacje wejścia/wyjścia (odsłona druga) - pliki

referencje Wykład 2. Programowanie (język C++) Referencje (1) int Num = 50; zdefiniowano zmienną Num (typu int) nadając jej wartość początkową 50.

wykład II uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - funkcje, tablice i wskaźniki wykład II dr Jarosław Mederski Spis

Język C++ wykład VIII

Operatory na rzecz typu TString

Programowanie Obiektowew języku C++ Zadania L4

Wartości domyślne, szablony funkcji i klas

Programowanie Obiektowo Zorientowane w języku C++ Biblioteka STL

Programowanie w języku C++

STL: algorytmy sortujące. STL: algorytmy sortujące. STL: algorytmy sortujące. STL: algorytmy sortujące. STL: algorytmy sortujące

DYNAMICZNE PRZYDZIELANIE PAMIECI

Technologie cyfrowe semestr letni 2018/2019


Wstęp do Programowania 2

Programowanie obiektowe - Przykładowe zadania egzaminacyjne (2005/2006)

ś ś ź ć ć ż ż ść ź ś Ę ś ż ś ź ś Ę ż ż ć ś ś ź

Programowanie 2. Język C++. Wykład 2.

ś ć ś Ź ć ś Ż Ż Ś Ź Ć ś Ź


Programowanie w C++ Wykład 12. Katarzyna Grzelak. 28 maja K.Grzelak (Wykład 12) Programowanie w C++ 1 / 27

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

ć ć Ń Ę

Wstęp do informatyki- wykład 7

Ę ć Ę Ś

Programowanie i struktury danych. Wykład 4 Dr Piotr Cybula

Wykład 2 Składnia języka C# (cz. 1)

IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi

Wartości domyślne, przeciażenia funkcji

Wstęp do Programowania potok funkcyjny

Krótkie wprowadzenie do STL. XIV LO im. S. Staszica, K06 D

Wskaźniki. Przemysław Gawroński D-10, p marca Wykład 2. (Wykład 2) Wskaźniki 8 marca / 17

Wprowadzenie do szablonów klas

Referencje do zmiennych i obiektów

Programowanie w C++ Wykład 14. Katarzyna Grzelak. 3 czerwca K.Grzelak (Wykład 14) Programowanie w C++ 1 / 27

Wartości domyślne, przeciażenia funkcji

Programowanie w C++ Wykład 11. Katarzyna Grzelak. 13 maja K.Grzelak (Wykład 11) Programowanie w C++ 1 / 30

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

Transkrypt:

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 zadania.............................. 7 3

4 Spis treści

1. Zadanie 4 1.1. Wprowadzenie Dzisiejsze zadanie jest dość proste do zrobienia wymagaja jedynie (przynajmniej w niektórych przypadkach) przygotowania odpowiedniego dla danego algorytmu funktora. Można tutaj wyróżnić: 1. generate() - funktor nieprzyjmujacy żadnych argumentów i zwracajacy element sekwencji np. (nie podaje definicji klasy Osoba, ale latwo można ja wydedukować): class Gen { Osoba operator ( ) ( ) { return Osoba ( Nowak, Aleksander,18) ; ; std : : generate ( vec. begin ( ), vec. end ( ), Gen ( ) ) ; 2. sort(), unique() - predykat dwuargumentowy (zwraca wartość logiczna i pobiera elementy sekwencji) np.: class Pred { bool operator ( ) ( const Osoba& o1, const Osoba& o2 ) const { return o1. nazwisko ( ) > o2. nazwisko ( ) ; ; Operacje na wektorze np. wczytywanie z p l i k u // Sortowanie std : : s o r t ( vec. begin ( ), vec. end ( ), Pred ( ) ) ; 3. remove_if(), remove_copy_if() - predykat jednoargumentowy (zwaraca wartość logiczna i pobiera elemnt sekwencji) np.: class Pred2 { 5

6 1. Zadanie 4 bool operator ( ) ( const Osoba& o ) const { return o. nazwisko ( ) [ 0 ] == A ; ; //.. // Dopiero w po l a czeniu z metoda erase () elementy s a f i z y c z n i e usuwane vec. e r a s e ( std : : remove if ( vec. begin ( ), vec. end ( ), Pred2 ( ) ), vec. end ( ) ) ; 4. accumulate() - funktor dwuagrumentowy np.: class Fun { // Prev to poprzednia warto ś ć z l i c z a n e j w i e l k o ś ci, // przed uwzgl e dnieniem b i e ż a cego elementu double operator ( ) ( double prev, const Osoba& o ) { return prev + o. wiek ( ) ; ; double sum = accumulate ( vec. begin ( ), vec. end ( ), 0. 0, Fun ( ) ) ; 5. transform() - wymaga funkcji dwuargumentowej lub jednoargumentowej w zależności od użytej wersji np.: class Fun2 { int operator ( ) ( const Osoba& o ) { return o. wiek ( ) ; ; std : : vectro <Osoba> vec (10) ; std : : vector <int> wiek (10) ; // Tutaj transformowana j e s t wektor os ób na wektor // z a w i e r a j a cy t y l k o wiek os ób ( int y ) std : : transform ( vec. begin ( ), vec. end ( ), wiek. begin ( ), Fun2 ( ) ) ;

1.2. Wskazówki do zadania 7 Uwaga - podana lista nie wyczerpuje wszystkich możliwości, niektóre wersje algorytmów nie wymagaja podawania funktorów, wystarcza zapewnienie dla określonego typu stosownego operatora (np. istnieje wersja sort, dla której wystarczy dostarczyć operator mniejszości (<), podobnie istnieje wersja unique, która korzysta z operator równości (==) itd.). Po szczegó ly implementacyjne odsy lam Was do dokumentacji. 1.2. Wskazówki do zadania 1. Algorym unique() podobnie jak remove_if nie usuwa fizycznie elementów, dlatego wymagane jest po l aczenie z metoda erase(). Do poprawnego użycia tego algorytmu wymagane jest także wcześniejsze posorotwanie sekwencji (usuwa powtórzone elementy, które sasiaduj a ze soba). 2. Przenoszenie elementów polega na skopiowaniu ich z orginalnej sekwencji do sekwencji wynikowej a nast epnie wymagane jest fizyczne usuni ecie elementów z oryginalnego zasobnika. Do tego celu można użyć algorytmów remove_if i remove_copy_if - należy sobie jednak zdać sprawe, że nazwa drugiego algorytmu jest mylaca, gdyż tak naprawd e s luży do kopiowania elemntów, dla których predyka nie jest spe lniony (musi wykonywać odwrotność tego co dla remove if). 3. Algorytmy same nie przydziela dodatkowej pamieci - programista musi pamietać o jej wcześniejszym przydzieleniu lub skorzystać z dodatkowych mechanizmów np. z back inseretera): vector <int> v1 (10), v2 ; copy ( v1. begin ( ), v1. end ( ), b a c k i n s e r t e r ( v2 ) ) ; W podanym powyżej przyk ladzie elementy sa kopiowane z wektora v1 do wektora v2, kolejne elementy sa dostawiane na koniec wektora v2 - dzieki użycia back inseretera nie by l potrzebny przydzia l pami eci dla v2 - ta metoda jest szczególnie użyteczna dla algorytmów, dla których nie wiadomo z góry ile elementów trzeba b edzie przenieść (np. remove_copy_if()). 4. Algorytm accumulate() wymaga do l aczenia nag lówka numeric.