( rednio) zaawansowane programowanie w C++ (ZPR)
|
|
- Emilia Krzemińska
- 9 lat temu
- Przeglądów:
Transkrypt
1 ( rednio) zaawansowane programowanie w C++ (ZPR) Wykªad 13 - tworzenie oprogramowania, testowanie, powtórzenie Robert Nowak 2015L ( rednio) zaawansowane programowanie w C++ (ZPR) 1/45
2 Metodologie lekkie (agile) ( rednio) zaawansowane programowanie w C++ (ZPR) 2/45
3 Pewne fakty zwi zane z tworzeniem oprogramowania Najcz stsze przyczyny niepowodzenia projektu (przedstawione na wykªadzie 1): niestabilne wymagania optymistyczna estymacja kosztów (gªównie czasu) realizacji projektów R. Glass, Frequently Forgotten Facts about Software Engineering, 2001 Sterowanie projektem: koszt czas jako± zakres ( rednio) zaawansowane programowanie w C++ (ZPR) 3/45
4 Model wodospadowy Wodospadowy (tradycyjny) model tworzenia oprogramowania: 1. analiza 2. projektowanie Koszt 3. implementacja 4. testowanie 5. wdro»enie 6. piel gnacja Wady: du»e ryzyko niepowodzenia projektu dªugi czas sprz»enia zwrotnego Przyczyny: Czas wykªadniczy (wzgl dem czasu) wzrost kosztów zmian w projekcie. ( rednio) zaawansowane programowanie w C++ (ZPR) 4/45
5 Metodologie lekkie (extreme programming, SCRUM) Mo»liwo±ci uzyskania innej krzywej kosztu zmian w czasie: prostota projektu automatyczne testy nastawienie na ci gªe zmiany w projekcie polepszenie komunikacji Wªa±ciwo±ci: krótki czas sprz»enia zwrotnego Koszt mniejsze ryzyko niepowodzenia projektu Czas ( rednio) zaawansowane programowanie w C++ (ZPR) 5/45
6 Cykl tworzenia oprogramowania - SCRUM ( rednio) zaawansowane programowanie w C++ (ZPR) 6/45
7 Zmniejszenie kosztów zmian - implementacja Utrzymywanie dziaªaj cej wersji przez caªy czas: automatyczne testowanie: moduªów funkcjonalne ci gªa integracja Utrzymywanie kodów ¹ródªowych dobrej jako±ci zmiana struktury programu bez zmiany funkcjonalno±ci (refactoring) wzorce projektowe komentarze (komentarz mówi DLACZEGO, kod mówi JAK) ( rednio) zaawansowane programowanie w C++ (ZPR) 7/45
8 Zmniejszanie kosztów zmian (2) - zarz dzanie denicja tego co to znaczy,»e zadanie zostaªo wykonane (projekt, implementacja, testy jednostkowe, testy funkcjonalne, wdro»enie) jawne sterowanie projektem jawna lista zada«kolektywne prawo do zmian kodu (narz dzia zarz dzaj ce wersjami) kolektywne szacowanie zªo»ono±ci zada«nastawienie na zmiany planowanie czasu pracy dyskusja z u»ytkownikiem lub wªa±cicielem biznesowym podsumowania, wyci ganie wniosków ( rednio) zaawansowane programowanie w C++ (ZPR) 8/45
9 PRINCE2 - projekty w sterowalnym ±rodowisku zarz dzanie strategiczne: odpowiedzialne za sukces projektu, m.in. ci gªa zasadno± biznesowa zarz dzanie operacyjne: delegowanie zada«, monitorowanie, alokacja zasobów ( rednio) zaawansowane programowanie w C++ (ZPR) 9/45
10 ( rednio) zaawansowane programowanie w C++ (ZPR) 10/45
11 Testowanie moduªów: zagadnienia ogólne Rola Testowania: klient upewnia si,»e projekt dziaªa zgodnie z zaªo»eniami programista upewnia si,»e kod dziaªa tak jak on zakªada implementacja testów: jedna z pocz tkowych faz implementacji nowej klasy czy biblioteki pisanie testów powinno by proste wiele maªych testów (test-case), które mo»na grupowa (test-suits) mo»liwo± wyboru ilo±ci wy±wietlanej informacji w razie niepowodzenia testu mo»liwo± ±ledzenia post pu przy du»ych i zªo»onych testach biblioteki: boost::test, cppunit, inne ( rednio) zaawansowane programowanie w C++ (ZPR) 11/45
12 Tworzenie testów - poziomy boost/test/test_tools.hpp - dostarcza zestawu makrodenicji poziom informacja licznik bª dów wykonywanie testu WARN ostrze»enie bez zmian kontynuowane CHECK bª d zwi kszany kontynuowane REQUIRE bª d krytyczny zwi kszany przerywane zazwyczaj nale»y u»ywa CHECK (tak jak asercji) WARN gdy mniej istotne ni» poprawno± (np. wydajno± ) REQUIRE gdy kontynuacja testu nie ma sensu int* ptr = 0L; BOOST_WARN( sizeof(short) == sizeof(int) ); //ostrze»enie BOOST_CHECK( silnia(1) == 1 ); BOOST_REQUIRE( ptr!= 0L ); BOOST_CHECK( *ptr == 2 ); //Ta linia nigdy si nie wykona ( rednio) zaawansowane programowanie w C++ (ZPR) 12/45
13 Tworzenie testów - warunki liczbowe BITWISE_EQUAL(a,b) zgodno± poszczególnych bitów EQUAL(a,b) równo± (woªany operator==) SMALL(val,ɛ) dla zmiennopozycyjnych, warto± bezwzgl dna mniejsza ni» ɛ CLOSE(a,b,ɛ) dla zmiennopozycyjnych, warto±ci bezwzgl dna ró»nicy nie wi ksza ni» ɛ% int a = 1, b = 2; //przykªady testów double x = 1.0, y = 1.001; BOOST_CHECK_BITWISE_EQUAL(0x27, 0x17); //ró»nica na 4 oraz 5 bicie BOOST_CHECK_EQUAL(a,b); BOOST_CHECK_SMALL( x - y, 0.001); // x - y <= BOOST_WARN_CLOSE(x, y, 0.1); // (x-y)/x <= oraz (x - y)/y <= ( rednio) zaawansowane programowanie w C++ (ZPR) 13/45
14 Tworzenie testów - wyj tki NO_THROW( stat ) THROW(stat, except) EXCEPTION(stat, except, p) nie powinno generowa wyj tków rzuca wyj tkiem danego typu spodziewane gen. wyj tku, który speªnia predykat struct MyException : public std::exception {//przykªadowy wyj tek int i_; MyException(int i) : i_(i) {} }; void f() { throw MyException(1); } //testowany kod //przykªadowy warunek dla wyj tku bool iscritical(const MyException& ex) { return ex.i_ == 2; } BOOST_CHECK_NO_THROW( f() ); //nie powinno rzuca wyj tków BOOST_REQUIRE_THROW( f(), std::exception );//spodziewany wyj tek //spodziewany wyj tek odp. typu oraz speªniaj cy warunek BOOST_CHECK_EXCEPTION( f(), MyException, iscritical ); ( rednio) zaawansowane programowanie w C++ (ZPR) 14/45
15 Generowane wiadomo±ci warning in <nazwa>: condition <opis> is not satised error in <nazwa>: test <opis> failed fatal error in <nazwa>: critical test <opis> failed MESSAGE( p, msg ) je»eli warunek faªszywy to generuje wiadomo± 'msg' int i = 1; BOOST_CHECK_MESSAGE(i == 2,"mialo byc i == 2, a jest i == " << i); //BOOST_ERROR( msg ) = BOOST_CHECK_MESSAGE( false, msg ) BOOST_ERROR("nie powinien sie tutaj znalezc"); //BOOST_FAIL( msg ) = BOOST_REQUIRE_MESSAGE( false, msg ) BOOST_FAIL("dalsze wykonywanie testu nie ma sensu"); ( rednio) zaawansowane programowanie w C++ (ZPR) 15/45
16 Test - obiekt klasy test_case #define BOOST_TEST_CASE( fun ) \ make_test_case(callback0<>(fun),boost_test_stringize(fun)) void test_1 () { //tutaj co± testuje } BOOST_TEST_CASE( &test_1 );//tworzy obiekt typu test_case BOOST_AUTO_TEST_CASE( nazwa ){ //tworzy obiekt typu test_case //tutaj co± testuje } ( rednio) zaawansowane programowanie w C++ (ZPR) 16/45
17 Organizacja testów - zbiór testów (test_suite) //Reprezentuje zbiór testów (wzorzec kompozytu) class test_suite : public test_case { public: void add( test_case* tc, //Metoda dodaje nowy test do zbioru unit_test_counter expected_failures = 0, int timeout = 0 ); //np. do wykrywania p tli niesk. /*... */ }; //Makrodefinicja tworz ca test_suite BOOST_TEST_SUITE( nazwa ); //Przykªad u»ycia test_suite* init_unit_test_suite( int, char* [] ) { //Zamiast main test_suite* test= BOOST_TEST_SUITE("nazwa"); test->add(boost_test_case(&test1)); test->add(boost_test_case(&test2)); return test; } ( rednio) zaawansowane programowanie w C++ (ZPR) 17/45
18 Zarz dzanie testami - Unit Test Framework linia komend zmienne ±rodowiskowe (np. BOOST_TEST_LOG_LEVEL ) kod testów (klasa unit_test_log, singleton) nazwa opcje opis build_info yes no platforma, itp. log_level all... warning error... ilo± wy±w. komunikatów nothing report_level no conrm short detailed wielko± komunikatu output_format HRF XML HRF: dla czªowieka show_progress yes no pokazuje post p random testy losowo mytest --build_info=yes --log_level=all --report_level=detailed mytest --show_progres=yes --log_level=nothing ( rednio) zaawansowane programowanie w C++ (ZPR) 18/45
19 boost/test/minimal.hpp nie potrzebuje biblioteki binarnej boost_unit_test_framework dostarcza BOOST_CHECK(p) BOOST_REQUIRE(p) BOOST_ERROR(msg) BOOST_FAIL(msg) //Przykªad u»ycia #include <boost/test/minimal.hpp> int test_main(int, char* [] ) { //tak musi si nazywa gªówna funkcja BOOST_CHECK(1 == 2 ); BOOST_ERROR("blad"); BOOST_FAIL("blad krytyczny"); return 0; } ( rednio) zaawansowane programowanie w C++ (ZPR) 19/45
20 Opis narz dzia SCons opis projektu to skrypt Pythona bardzo ªatwo rozszerzalny automatyczna analiza zale»no±ci wsparcie dla: C++, Java, Fortran, Yacc, Lex, Qt, LaTeX, Subversion, msvc (zast puje.vcproj,.sln) i in. Linux, AIX, Windows NT, Mac OS X, Solaris i in. wsparcie dla kompilacji równolegªej detekcja zmiany zawarto±ci plików przy u»yciu sygnatury MD5 (lub tradycyjnie timestamps) ( rednio) zaawansowane programowanie w C++ (ZPR) 20/45
21 SCons - tworzenie aplikacji # plik SConstruct Program(source=['calc.cpp', 'main.cpp'], target = prog) Windows (Visual Studio Command Prompt): cl /Fo calc.obj /c calc.cpp /nologo cl /Fo main.obj /c main.cpp /nologo link /nologo /OUT:prog.exe calc.obj main.obj Linux (gnu g++): g++ -o calc.o -c calc.cpp g++ -o main.o -c main.cpp g++ -o prog calc.o main.o ( rednio) zaawansowane programowanie w C++ (ZPR) 21/45
22 SCons - tworzenie biblioteki # plik SConstruct SharedLibrary(source=['x.cpp', y.cpp'], target = bib) Windows (Visual Studio Command Prompt): cl /Fo x.obj /c x.cpp /nologo cl /Fo y.obj /c y.cpp /nologo link /nologo /dll /out:bib.dll /implib:bib.lib x.obj y.obj Linux (gnu g++): g++ -o x.os -c -fpic x.cpp g++ -o y.os -c -fpic y.cpp g++ -o libbib.so -shared x.os y.os ( rednio) zaawansowane programowanie w C++ (ZPR) 22/45
23 System zarz dzania wersjami, repozytorium serwer plików, przechowuje kolejne wersje plików i katalogów, umo»liwia wycofywanie zmian i prac grupow ( rednio) zaawansowane programowanie w C++ (ZPR) 23/45
24 Repozytorium - blokowanie ( rednio) zaawansowane programowanie w C++ (ZPR) 24/45
25 Repozytorium - rozstrzyganie koniktów ( rednio) zaawansowane programowanie w C++ (ZPR) 25/45
26 Repozytorium - serwer lokalny i zdalny (publikowanie) local push server update plik pull plik commit A plik ( rednio) zaawansowane programowanie w C++ (ZPR) 26/45
27 Debugger program sªu» cy do uruchamiania innych programów zatrzymywania dziaªania badanego programu w okre±lonym miejscu wykonywanie pojedynczych instrukcji wy±wietlanie zawarto±ci zmiennych Przykªady: GNU debugger (gdb), Microsoft Visual Studio, inne ( rednio) zaawansowane programowanie w C++ (ZPR) 27/45
28 Narz dzie do wysyªania komunikatów (Boost.Log) badaniu stanu aplikacji cz sto jedyny dost pny mechanizm do ±ledzenia bª dów (gdy nie ma mo»liwo±ci u»ycia debuggera) #include <boost/log/trivial.hpp> int main(int, char*[]) { BOOST_LOG_TRIVIAL(debug) << "A debug severity message"; BOOST_LOG_TRIVIAL(info) << "An informational severity message"; BOOST_LOG_TRIVIAL(warning) << "A warning severity message"; BOOST_LOG_TRIVIAL(error) << "An error severity message"; return 0; } obserwatorzy: konsola, plik, NT Event Loggers, UNIX Syslog alternatywne rozwi zania: pahteios, glog, log4cxx, log4cpp ( rednio) zaawansowane programowanie w C++ (ZPR) 28/45
29 powtórzenie przykªadowe zadania Powtórzenie ( rednio) zaawansowane programowanie w C++ (ZPR) 29/45
30 powtórzenie przykªadowe zadania Powtórzenie w tki, boost::thread obiekty wspóªdzielone wy±cigi synchronizacja (mutex), zakleszczenia (deadlock) pasywny obiekt (monitor) aktywny obiekt szablony, programowanie generyczne szablony jako mechanizm czasu kompilacji specjalizacja szablonu TMP (template metaprogramming) informacja o typie w szablonach (trejty) sposoby na zmniejszanie nadmiernego rozrastania si kodu sposoby na nieczytelne komunikaty o bª dach ( rednio) zaawansowane programowanie w C++ (ZPR) 30/45
31 powtórzenie przykªadowe zadania Powtórzenie (2) biblioteka standardowa i biblioteki boost kontenery kontenery sekwencyjne, asocjacyjne i haszuj ce (bazuj ce na tablicach, bazuj ce na w zªach) std::pair, std::tuple std::function boost::variant, boost::optional, boost::any boost::multi_array boost graph library algorytmy modykuj ce i niemodykuj ce: wyszukiwanie, sortowanie, usuwanie ograniczenie potrzeby pisania funktorów (std::bind) funkcje anonimowe (funkcje lambda) warstwa trwaªo±ci wbudowany SQL serializacja (boost::serialization) ( rednio) zaawansowane programowanie w C++ (ZPR) 31/45
32 powtórzenie przykªadowe zadania szablony, rozrost kodu //dwuwymiarowa tablica o ustalonych rozmiarach template<typename T, unsigned int m1, unsigned int m2> class Array2D { public: Array2D() {} Array2D operator+=(const Array2D&); //wiele innych metod private: T tab_[m1*m2]; }; W aplikacji u»ywa si powy»szego szablonu dla wielu ró»nych rozmiarów. Zmie«struktur wzorca, aby zmniejszy ilo± generowanego kodu. ( rednio) zaawansowane programowanie w C++ (ZPR) 32/45
33 powtórzenie przykªadowe zadania rozrost kodu - rozwi zanie //Usuni cie parametrów szablonu, które nie s typami template<typename T> struct Array2DImpl { Array2DImpl(unsigned int m1, unsigned int m2, T* tab) : m1_(m1), m2_(m2), tab_(tab) {} unsigned int m1_; unsigned int m2_; T* tab_; }; template<typename T, unsigned int m1, unsigned int m2> class Array2D : private Array2DImpl<T> { public: Array2D() : Array2DImpl<T>(m1,m2,tab_) {} Array2D operator+=(const Array2D&); private: T tab_[m1*m2]; }; ( rednio) zaawansowane programowanie w C++ (ZPR) 33/45
34 powtórzenie przykªadowe zadania wy±cig struct Thread { Thread(MTCounter counter) : c_(counter) {} void operator()() { for(int i=0;i< ;++i) c_.inc(); } MTCounter c_; }; int main() { MTCounter counter; Thread t1(counter), t2(counter); boost::thread thrd1( ref(t1) ); boost::thread thrd2( ref(t2) ); thrd1.join(); thrd2.join(); return 0; } ( rednio) zaawansowane programowanie w C++ (ZPR) 34/45
35 powtórzenie przykªadowe zadania struct Counter { Counter() : i_(0) {} int get() { return i_; } void set(int i) { i_ = i; } int i_; }; class MTCounter { public: MTCounter() : counter_(new Counter) {} MTCounter(const MTCounter& c) : counter_(c.counter_) {} void inc() { mutex::scoped_lock scoped(m_); counter_->set( counter_->get() + 1 ); } int get() const { mutex::scoped_lock scoped(m_); return counter_->get(); } private: shared_ptr<counter> counter_; mutable mutex m_; }; ( rednio) zaawansowane programowanie w C++ (ZPR) 35/45
36 powtórzenie przykªadowe zadania struct CounterSync { CounterSync() : i_(0) {} int get() { return i_; } void set(int i) { i_ = i; } int i_; mutex m_; }; class MTCounterSync { public: MTCounterSync() : counter_(new CounterSync) {} MTCounterSync(const MTCounterSync& c) : counter_(c.counter_) {} void inc() { mutex::scoped_lock scoped(counter->m_); counter_->set( counter_->get() + 1 ); } int get() const { mutex::scoped_lock scoped(counter->m_); return counter_->get(); } private: shared_ptr<countersync> counter_; }; ( rednio) zaawansowane programowanie w C++ (ZPR) 36/45
37 powtórzenie przykªadowe zadania szablony, trejty CheckInit : nie pozwala zainicjowa warto±ci 0 ( wyj tek ) CheckDeref: gdy dereferencja i pusty wska¹nik to wyj tek CheckAll: oba na raz NoCheck: brak sprawdzania typedef SmartPtr<int,NoCheck> PNoCheck; typedef SmartPtr<int,CheckInit> PInitCheck; typedef SmartPtr<int,CheckDeref> PDerefCheck; typedef SmartPtr<int,CheckAll> PAllCheck; BOOST_CHECK_NO_THROW( PNoCheck(0L) ); BOOST_CHECK_THROW( PInitCheck(0L), NullPointerException ); BOOST_CHECK_NO_THROW( PDerefCheck(0L) ); BOOST_CHECK_THROW( PAllCheck(0L), NullPointerException ); PNoCheck p1(0l); PDerefCheck p2(0l); BOOST_CHECK_NO_THROW( p1.get() ); BOOST_CHECK_THROW( p2.get(), NullPointerException ); ( rednio) zaawansowane programowanie w C++ (ZPR) 37/45
38 powtórzenie przykªadowe zadania struct NullPointerException : public std::exception {}; template<typename T,typename Checking = NoCheck > class SmartPtr { public: SmartPtr(T* p) : p_(p) { //if( Checking == CheckInit Checking == CheckAll ) //check(); } T& get() { //if( Checking == CheckDeref Checking == CheckAll ) //check(); return *p_; }; private: void check() const { (!p_) throw NullPointerException(); } T* p_; }; ( rednio) zaawansowane programowanie w C++ (ZPR) 38/45
39 powtórzenie przykªadowe zadania struct NoCheck { }; //trejt struct CheckInit : public NoCheck {}; //trejt struct CheckDeref : public NoCheck { };//trejt struct CheckAll : public CheckInit, public CheckDeref { };//trejt template<typename T,typename Checking = NoCheck > class SmartPtr { public: SmartPtr(T* p) : p_(p) { init(checking()); } T& get() { deref(checking()); return *p_; } private: void init(checkinit){ check();} void init(nocheck){ } void deref(checkderef){ check();} void deref(nocheck){ } void check() const { if(!p_) throw NullPointerException(); } T* p_; }; ( rednio) zaawansowane programowanie w C++ (ZPR) 39/45
40 powtórzenie przykªadowe zadania znajomo± kodu kontenery: std::array, std::vector, std::list, std::set, std::map, boost::any, boost::variant, boost::optional, std::function algorytmy: std::for_each, std::nd, std::nd_if, std::equal_range, std::copy, std::remove, std::transform iteratory: std::insert_iterator (inserter), std::ostream_iterator inne: std::bind, std::ref, std::cref, funkcje anonimowe (lambda) ( rednio) zaawansowane programowanie w C++ (ZPR) 40/45
41 powtórzenie przykªadowe zadania znajomo± kodu: podaj wydruk //Podaj wydruk typedef pair<int,string> P; const P TAB[] = { P(3,"A"), P(3,"M"), P(2,"L"), P(1,"A") }; const int TAB_SIZE = sizeof(tab)/sizeof(tab[0]); typedef variant<int,string> Var; set<var> svar; transform(tab, TAB + TAB_SIZE, inserter(svar, svar.begin() ), bind(&p::first, _1) ); cout << svar.size() << *svar.begin() << endl; ( rednio) zaawansowane programowanie w C++ (ZPR) 41/45
42 powtórzenie przykªadowe zadania znajomo± kodu: podaj wydruk struct CountFun { CountFun() : counter_(0) {} template<typename T> void inc(const any& a) { if(a.type() == typeid(t) ) ++counter_; } int counter_; }; vector<any> v; v.push_back(1); v.push_back(2.54); v.push_back(string("ala")); v.push_back(1.01); CountFun counter; for_each(v.begin(), v.end(), bind(&countfun::inc<double>, ref(counter),_1) ); cout << counter.counter_ << endl; ( rednio) zaawansowane programowanie w C++ (ZPR) 42/45
43 powtórzenie przykªadowe zadania znajomo± kodu: podaj wydruk void fxx(int& count, const string& s, int offset) { count += s.size() + offset; } typedef boost::function<void (int)> PF; int x = 0; vector<pf> vpf; vpf.push_back( bind(fxx, ref(x), string("a"), _1) ); vpf.push_back( bind(fxx, ref(x), string("aa"), _1) ); vpf.push_back( bind(fxx, ref(x), string("aaa"), _1) ); for_each( vpf.begin(), vpf.end(), bind(&pf::operator(),_1,1) ); cout << x << endl; ( rednio) zaawansowane programowanie w C++ (ZPR) 43/45
44 powtórzenie przykªadowe zadania problemy projektowe Przedstawiony kod jest bª dny. Dla N = 5 (linia 4) dziaªa on poprawnie, natomiast po zmianie na N = 500 wyst puj bª dy w linii 10 lub 11. Co Twoim zdaniem jest ¹ródªem problemu? vector<foo> kolekcja; typedef vector<foo>::const_iterator Id; map<int,id> index; static const int N = 500; for(int i=0; i < N; ++i ) { Id id = kolekcja.insert( kolekcja.end(), Foo(i) ); index.insert( make_pair(i,id) ); } Id id_0 = (*index.find(0)).second; const Foo& f = *id_0; cout << f.i_ << endl; ( rednio) zaawansowane programowanie w C++ (ZPR) 44/45
45 powtórzenie przykªadowe zadania Dodatkowa lektura ( R. Nowak, Badanie pokrycia kodu c++ testami jednostkowymi, Programista, no. 6, pp , Dzi kuj ( rednio) zaawansowane programowanie w C++ (ZPR) 45/45
( rednio) zaawansowane programowanie w C++ (ZPR)
( rednio) zaawansowane programowanie w C++ (ZPR) Wykªad 8 - tworzenie oprogramowania, testowanie Robert Nowak 2015Z ( rednio) zaawansowane programowanie w C++ (ZPR) 1/35 Podsumowanie kolokwium Frekwencja:
Zaawansowane programowanie w C++ (PCP)
Wykład 7 - sprytne wskaźniki. 20 kwietnia 2007 Potrzeba współdzielenia kodu źródłowego Pojęcia niezależne od typu: kolekcje (np. listy) algorytmy (np. znajdowania największego elementu) Szablony mechanizm
Praca Dyplomowa Magisterska
Internetowa Platform Edukacyjna w Technologii ZOPE Autor: Promotor: Dr in». Adam Doma«ski Politechnika l ska Wydziaª Automatyki, Elektroniki i Informatyki Kierunek Informatyka 22 wrze±nia 2009 Dlaczego
( rednio)zaawansowane programowanie w C++
( rednio)zaawansowane programowanie w C++ Wykªad 1 - wst p Robert Nowak 2015Z ( rednio)zaawansowane programowanie w C++ 1/36 Programowanie Programowanie umiej tno± zapisu algorytmów w danym j zyku programowania
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
Wzorce projektowe strukturalne cz. 1
Wzorce projektowe strukturalne cz. 1 Krzysztof Ciebiera 19 pa¹dziernika 2005 1 1 Wst p 1.1 Podstawowe wzorce Podstawowe wzorce Podstawowe informacje Singleton gwarantuje,»e klasa ma jeden egzemplarz. Adapter
Zaawansowane programowanie w C++ (PCP)
Zaawansowane programowanie w C++ (PCP) Wykład 6 - szablony. dr inż. Robert Nowak - p. 1/15 Kolekcje i algorytmy» Deklaracja szablonu y Pojęcia niezależne od typu: kolekcje (np. listy) algorytmy (np. znajdowania
Spis treści 1. Wstęp 2. Projektowanie systemów informatycznych
Spis treści 1. Wstęp... 9 1.1. Inżynieria oprogramowania jako proces... 10 1.1.1. Algorytm... 11 1.2. Programowanie w językach wysokiego poziomu... 11 1.3. Obiektowe podejście do programowania... 12 1.3.1.
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...
Wartości domyślne, szablony funkcji i 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 2012 Bogdan Kreczmer Niniejszy dokument
Zaawansowane programowanie w C++ (PCP)
Wykład 9 - powtórzenie. 11 maja 2007 Powtórzenie materiału obiekty automatyczne, statyczne, tymczasowe, dynamiczne dziedziczenie, agregacja polimorfizm, funkcje wirtualne wzorce projektowe (strukturalne,
Ję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
Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.
Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych. 1. Przygotowanie środowiska programistycznego. Zajęcia będą
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
Ć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
Zaawansowane programowanie w C++ (PCP)
Wykład 10 - boost Thread. 8 czerwca 2007 Równoległość bardzo wolna reakcja człowieka wolne urządzenia wejścia - wyjścia (np. drukarki) bardzo szybkie procesory można przeprowadzać obliczenia podczas obsługi
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................................
1 Klasy. 1.1 Denicja klasy. 1.2 Skªadniki klasy.
1 Klasy. Klasa to inaczej mówi c typ który podobnie jak struktura skªada si z ró»nych typów danych. Tworz c klas programista tworzy nowy typ danych, który mo»e by modelem rzeczywistego obiektu. 1.1 Denicja
Automatyczne tworzenie operatora = Integer2& operator=(const Integer& prawy) { zdefiniuje. Integer::operator=(ri);
Przeciążanie operatorów [] Przykład: klasa reprezentująca typ tablicowy. Obiekt ma reprezentować tablicę, do której można się odwoływać intuicyjnie, np. Tab[i] Ma być też dostępnych kilka innych metod
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.
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
Analiza wydajno±ci serwera openldap
Analiza wydajno±ci serwera openldap Autor: Tomasz Kowal 13 listopada 2003 Wst p Jako narz dzie testowe do pomiarów wydajno±ci i oceny konguracji serwera openldap wykorzystano pakiet DirectoryMark w wersji
1. Wprowadzenie do C/C++
Podstawy Programowania :: Roman Grundkiewicz :: 014 Zaj cia 1 1 rodowisko Dev-C++ 1. Wprowadzenie do C/C++ Uruchomienie ±rodowiska: Start Programs Developments Dev-C++. Nowy projekt: File New Project lub
Kurs 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
Algorytmy 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.
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
Podstawy programowania. Wprowadzenie
Podstawy programowania Wprowadzenie Proces tworzenia programu Sformułowanie problemu funkcje programu zakres i postać danych postać i dokładność wyników Wybór / opracowanie metody rozwiązania znaleźć matematyczne
Ję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,
Dzisiejszy wykład. Wzorce projektowe. Visitor Client-Server Factory Singleton
Dzisiejszy wykład Wzorce projektowe Visitor Client-Server Factory Singleton 1 Wzorzec projektowy Wzorzec nazwana generalizacja opisująca elementy i relacje rozwiązania powszechnie występującego problemu
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
Obsługa wyjątków. Język C++ WW12
Obsługa wyjątków Pozwala zarządzać błędami wykonania w uporządkowany sposób. Umożliwia automatyczne wywołanie części kodu, funkcji, metod klas, który trzeba wykonać przy powstaniu błędów. try //blok try
Projektowanie 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
Programowanie i struktury danych
Programowanie i struktury danych Wykªad 3 1 / 37 tekstowe binarne Wyró»niamy dwa rodzaje plików: pliki binarne pliki tekstowe 2 / 37 binarne tekstowe binarne Plik binarny to ci g bajtów zapami tanych w
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
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
Subversion - jak dziaªa
- jak dziaªa Krótka instrukcja obsªugi lstelmach@gmail.com Stelmisoft 12/07/2010 1 1 2 1 2 3 1 2 3 4 1 2 3 4 5 1 2 3 4 5 6 Spis tre±ci Czym jest Czym jest repozytorium 1 Czym jest Czym jest repozytorium
Zaawansowane programowanie w C++ (PCP)
Zaawansowane programowanie w C++ (PCP) Wykład 1 - sprawy organizacyjne i wprowadzenie. dr inż. Robert Nowak - p. 1/27 Cel i zakres przedmiotu Umiejętność programowania to umiejętność rozwiazania problemów
Automatyczne tworzenie operatora = Integer2& operator=(const Integer& prawy) {
Przeciążanie a dziedziczenie class Integer2: public Integer Operatory, z wyjątkiem operatora przypisania są automatycznie dziedziczone w klasach pochodnych. Integer2(int i): Integer(i) Automatyczne tworzenie
1. Wprowadzenie do C/C++
Podstawy Programowania - Roman Grundkiewicz - 013Z Zaj cia 1 1 rodowisko Dev-C++ 1. Wprowadzenie do C/C++ Uruchomienie ±rodowiska: Start Programs Developments Dev-C++. Nowy projekt: File New Project lub
(Średnio)zaawansowane programowanie w C++
(Średnio)zaawansowane programowanie w C++ Wykład 1 - wstęp Robert Nowak 2019L (Średnio)zaawansowane programowanie w C++ 1/36 Programowanie Programowanie umiejętność zapisu algorytmów w danym języku programowania
Dariusz 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)
Git, Bitbucket, IntelliJ IDEA
Państwowa Wyższa Szkoła Zawodowa w Tarnowie Zakład Informatyki Narzędzia i środowiska programistyczne Laboratorium 3 Git, Bitbucket, IntelliJ IDEA Prowadzący: Kierunek: Semestr: Rok: Informatyka Zimowy
ANALIZA NUMERYCZNA. Grzegorz Szkibiel. Wiosna 2014/15
ANALIZA NUMERYCZNA Grzegorz Szkibiel Wiosna 2014/15 Spis tre±ci 1 Metoda Eulera 3 1.1 zagadnienia brzegowe....................... 3 1.2 Zastosowanie ró»niczki...................... 4 1.3 Output do pliku
Szablony. Szablony funkcji
Szablony Szablony sa mechanizmem ponownego wykorzystania kodu (reuse) W przypadku funkcji ponownie wykorzystany jest algorytm W przypadku klas ponownie wykorzystane sa wszystkie skladowe Deklaracja szablonu
Oprogramowanie i wykorzystanie stacji roboczych. Wykład 4
Wykład 4 p. 1/1 Oprogramowanie i wykorzystanie stacji roboczych Wykład 4 Dr inż. Tomasz Olas olas@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Obsługa sieci Wykład
Klasy generyczne. ZbiórLiczb. ZbiórCzegokolwiek. Zbiór
Klasy generyczne Klasy generyczne Klasy generyczne są to klasy o parametryzowanych typach danych. Klasy generyczne posiadają kompletną implementację, jednak nie definiują typów danych wykorzystanych w
Zaawansowane programowanie w C++ (PCP)
Zaawansowane programowanie w C++ (PCP) Wykład 4 - wzorce projektowe. dr inż. Robert Nowak - p. 1/18 Powtórzenie klasy autonomiczne tworzenie nowych typów: dziedziczenie i agregacja dziedziczenie: przedefiniowywanie
Automatyczne tworzenie operatora = Integer2& operator=(const Integer& prawy) {
Przeciążanie operatorów [] Przykład: klasa reprezentująca typ tablicowy. Obiekt ma reprezentować tablicę, do której można się odwoływać intuicyjnie, np. Tab[i] Ma być też dostępnych kilka innych metod
Programowanie obiektowe
Programowanie obiektowe Wykład 2 Marcin Młotkowski 4 marca 2015 Plan wykładu 1 2 3 4 5 Marcin Młotkowski Programowanie obiektowe 2 / 47 Krótki opis C Obiektowy, z kontrolą typów; automatyczne odśmiecanie;
Wprowadzenie do szablonów 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 2008-2010 Bogdan Kreczmer Niniejszy
Programowanie poprzez testy z wykorzystaniem JUnit
Programowanie poprzez testy z wykorzystaniem JUnit Programowanie ekstremalne (XP) XP zaproponowano w 1999 (K. Beck: Extreme Programming Explained ) XP dedykowane jest do projektów: O małym lub średnim
Lab. 02: Algorytm Schrage
Lab. 02: Algorytm Schrage Andrzej Gnatowski 5 kwietnia 2015 1 Opis zadania Celem zadania laboratoryjnego jest zapoznanie si z jednym z przybli»onych algorytmów sªu» cych do szukania rozwi za«znanego z
Zaawansowane programowanie w języku C++
Kod szkolenia: Tytuł szkolenia: C/ADV Zaawansowane programowanie w języku C++ Dni: 3 Opis: Uczestnicy szkolenia zapoznają się z metodami wytwarzania oprogramowania z użyciem zaawansowanych mechanizmów
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
WYMAGANIA EDUKACYJNE I KRYTERIA OCENIANIA Z PRZEDMIOTU PROGRAMOWANIE APLIKACJI INTERNETOWYCH
WYMAGANIA EDUKACYJNE I KRYTERIA OCENIANIA Z PRZEDMIOTU PROGRAMOWANIE APLIKACJI INTERNETOWYCH Klasa: 3TIR - Technik informatyk Program: 351203 Wymiar: 4 h tygodniowo Podręcznik: Kwalifikacja E.14 Programowanie
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:
Programowanie obiektowe w C++ Wykład 11
Programowanie obiektowe w C++ Wykład 11 dr Lidia Stępień Akademia im. Jana Długosza w Częstochowie L. Stępień (AJD) Programowanie obiektowe w C++ 1 / 34 STL - rys historyczny utworzona została w 1994 r.
Programowanie i struktury danych. Wykład 4 Dr Piotr Cybula
Programowanie i struktury danych Wykład 4 Dr Piotr ybula Typ wska ź nikowy int* pointer; //wskaźnik do zmiennych typu int pozwala na dostęp do dowolnego miejsca pamięci (zmienne
Programowanie i struktury danych 1 / 44
Programowanie i struktury danych 1 / 44 Lista dwukierunkowa Lista dwukierunkowa to liniowa struktura danych skªadaj ca si z ci gu elementów, z których ka»dy pami ta swojego nast pnika i poprzednika. Operacje
SVN - wprowadzenie. 1 Wprowadzenie do SVN. 2 U»ywanie SVN. Adam Krechowicz. 16 lutego Podstawowe funkcje. 2.1 Windows
SVN - wprowadzenie Adam Krechowicz 16 lutego 2013 1 Wprowadzenie do SVN SVN SubVersion jest systemem kontroli wersji pozwalaj cym wielu u»ytkownikom na swobodne wspóªdzielenie tych samych plików. Pozwala
Projekt ATENA - system wspomagaj cy zarz dzanie szkoª lub zespoªem szkóª przedlicealnych
Projekt ATENA - system wspomagaj cy zarz dzanie szkoª lub zespoªem szkóª przedlicealnych Robert Boczek Dawid Ciepli«ski Paweª Bara 19 marca 2009 Outline Technologia w trzech etapach JAVA Oracle Java Server
obiekty funkcyjne - funktory
#include #include #include #include #include #include #include #include #include #include using namespace
Projekt konceptualny z Baz Danych "Centralny system zarz dzania salami na AGH"
Projekt konceptualny z Baz Danych "Centralny system zarz dzania salami na AGH" Autorzy: Adrian Stanula Grzegorz Stopa Mariusz Sasko Data: 14 XI 2008 rok Spis tre±ci 1 Sformuªowanie zadania projektowego.
Budowa aplikacji webowej w oparciu o Maven2 oraz przykłady testów jednostkowych. Wykonał Marcin Gadamer
Budowa aplikacji webowej w oparciu o Maven2 oraz przykłady testów jednostkowych. Wykonał Marcin Gadamer Maven 2 podstawowe informacje Apache Maven jest narzędziem automatyzującym budowę oprogramowania
Programowanie 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:
Dzi kuj za uwag! Spotkania z Pythonem. Cz ± 1 - podstawy - rozwi zania zada« Michaª Alichniewicz. Gda«sk 2014. Studenckie Koªo Automatyków SKALP
Spotkania z Pythonem Cz ± 1 - podstawy - rozwi zania zada«michaª Alichniewicz Studenckie Koªo Automatyków SKALP Gda«sk 2014 Dzi kuj za uwag! Na licencji Creative Commons Attribution-NonCommercial-ShareAlike
1 Bª dy i arytmetyka zmiennopozycyjna
1 Bª dy i arytmetyka zmiennopozycyjna Liczby w pami ci komputera przedstawiamy w ukªadzie dwójkowym w postaci zmiennopozycyjnej Oznacza to,»e s one postaci ±m c, 01 m < 1, c min c c max, (1) gdzie m nazywamy
METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02
METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się
Zaawansowane programowanie w C++ (PCP)
Zaawansowane programowanie w C++ (PCP) Wykład 5 - obsługa błędów. Mechanizm wyjatków. dr inż. Robert Nowak - p. 1/24 Powtórzenie - wzorce wzorce kreacyjne fabryka abstrakcyjna (abstract factory) prototyp
Wykład I. Programowanie III - semestr III Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej
Wykład I - semestr III Kierunek Informatyka Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2014 c Copyright 2014 Janusz Słupik Zaliczenie przedmiotu Do zaliczenia przedmiotu niezbędne jest
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
Modelowanie numeryczne w fizyce atmosfery Ćwiczenia 3
Modelowanie numeryczne w fizyce atmosfery Sylwester Arabas (ćwiczenia do wykładu dr. hab. inż. Lecha Łobockiego) Instytut Geofizyki, Wydział Fizyki Uniwersytetu Warszawskiego 3. listopada 2011 r. Schemat
Produktywne tworzenie aplikacji webowych z wykorzystaniem Groovy i
Program szkolenia: Produktywne tworzenie aplikacji webowych z wykorzystaniem Groovy i Informacje: Nazwa: Kod: Kategoria: Grupa docelowa: Czas trwania: Forma: Produktywne tworzenie aplikacji webowych z
IMIĘ 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
WYKORZYSTANIE JĘZYKA GROOVY W TESTACH JEDNOSTKOWYCH, INTEGRACYJNYCH I AUTOMATYCZNYCH. Mirosław Gołda, Programista Java
WYKORZYSTANIE JĘZYKA GROOVY W TESTACH JEDNOSTKOWYCH, INTEGRACYJNYCH I AUTOMATYCZNYCH Mirosław Gołda, Programista Java Agenda Kilka słów o języku Groovy Wpięcie Grooviego w projekt Springowy Testy jednostkowe
Wyjątki (exceptions)
Instrukcja laboratoryjna nr 6 Programowanie w języku C 2 (C++ poziom zaawansowany) Wyjątki (exceptions) dr inż. Jacek Wilk-Jakubowski mgr inż. Maciej Lasota dr inż. Tomasz Kaczmarek Wstęp Wyjątki (ang.
Laboratorium Podstawy Przetwarzania Rozproszonego SPRAWOZDANIE z zadania SERWIS KOMPUTEROWY
Laboratorium Podstawy Przetwarzania Rozproszonego SPRAWOZDANIE z zadania SERWIS KOMPUTEROWY Nazwisko Imię album termin zajęć Marek Lewandowski 59817 Maciej Mietliński 59832 poniedziałek 18:30 tydzień nieparzysty
Automatyzacja procesu publikowania w bibliotece cyfrowej
Automatyzacja procesu publikowania w bibliotece cyfrowej Jakub Bajer Biblioteka Politechniki Poznańskiej Krzysztof Ober Poznańska Fundacja Bibliotek Naukowych Plan prezentacji 1. Cel prezentacji 2. Proces
Programowanie MorphX Ax
Administrowanie Czym jest system ERP? do systemu Dynamics Ax Obsługa systemu Dynamics Ax Wyszukiwanie informacji, filtrowanie, sortowanie rekordów IntelliMorph : ukrywanie i pokazywanie ukrytych kolumn
Wykład 12. Programowanie serwera MS SQL 2005 w C#
Wykład 12 Programowanie serwera MS SQL 2005 w C# Budowa procedur składowanych w C# Budowa funkcji składowanych w C# Wykorzystanie funkcji składowanych w C# po stronie klienta Tworzenie typów definiowanych
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;
Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych
Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych Obiekty reprezentują pewne pojęcia, przedmioty, elementy rzeczywistości. Obiekty udostępniają swoje usługi: metody operacje,
Jzyk C++ cz 3. Jarosław Gramacki Instytut Informatyki i Elektroniki ( $)*)+' *, - ( ' )*'.' '',*/ *, ','*0) 1 / ) %*+ 2'' 2" ( $%%) )'20 )*0) 1 / )
Jzyk C++ cz 3 Jarosław Gramacki Instytut Informatyki i Elektroniki # $$%%& ' ( $)*)+' *, - ( ' )*'.' '',*/ *, ','*0) 1 / ) %*+ 2'' 2" ( $%%) )'20 )*0) 1 / )!" 2 # $$%%& ' ( $%%/,))3 ( %* 2 / 4 ( ( *' *''*,
Przetwarzanie sygnaªów
Przetwarzanie sygnaªów Laboratorium 1 - wst p do C# Dawid Poªap Przetwarzanie sygnaªów Pa¹dziernik, 2018 1 / 17 Czego mo»na oczekiwa wzgl dem programowania w C# na tych laboratoriach? Dawid Poªap Przetwarzanie
Dobre praktyki w zakresie zarządzania ładem architektury korporacyjnej
Dobre praktyki w zakresie zarządzania ładem architektury korporacyjnej Dr hab. Andrzej Sobczak, prof. SGH, Kierownik Zakładu Systemów Informacyjnych, Katedra Informatyki Gospodarczej SGH Gospodarczej SGH
Algorytmy tekstowe. Andrzej Jastrz bski. Akademia ETI
Andrzej Jastrz bski Akademia ETI Wyszukiwanie wzorca Wyszukiwaniem wzorca nazywamy sprawdzenie, czy w podanym tekscie T znajduje si podci g P. Szukamy sªowa kot: Ala ma kota, kot ma ale. Algorytm naiwny
O autorze... 9 Wprowadzenie... 11
Spis tre ci O autorze... 9 Wprowadzenie... 11 Rozdzia 1. Sterownik przemys owy... 15 Sterownik S7-1200... 15 Budowa zewn trzna... 16 Budowa wewn trzna... 19 Cykl programu oraz tryby pracy... 21 Zestaw
C# 6.0 : kompletny przewodnik dla praktyków / Mark Michaelis, Eric Lippert. Gliwice, cop Spis treści
C# 6.0 : kompletny przewodnik dla praktyków / Mark Michaelis, Eric Lippert. Gliwice, cop. 2016 Spis treści Spis rysunków 11 Spis tabel 13 Przedmowa 15 Wprowadzenie 17 Podziękowania 27 O autorach 29 1 Wprowadzenie
YapS Plan testów. Šukasz Bieniasz-Krzywiec Dariusz Leniowski Jakub Š cki 29 maja 2007
YapS Plan testów Šukasz Bieniasz-Krzywiec Dariusz Leniowski Jakub Š cki 29 maja 2007 1 Spis tre±ci 1 Wprowadzenie 3 1.1................................. 3 1.2 Zakres............................... 3 2
System kontroli wersji SVN
System kontroli wersji SVN Co to jest system kontroli wersji Wszędzie tam, gdzie nad jednym projektem pracuje wiele osób, zastosowanie znajduje system kontroli wersji. System, zainstalowany na serwerze,
public: // interfejs private: // implementacja // składowe klasy protected: // póki nie będziemy dziedziczyć, // to pole nas nie interesuje
Zbudujemy klasę Definicję klasy zapiszmy w pliku tstring.h #ifndef TSTRING_H #define TSTRING_H #include // w pliku nagłówkowym NIE // otwieramy przestrzeni std // interfejs private: // implementacja
Wykład 1
Wstęp do programowania 1 Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 1 Wprowadzenie Cel wykładów z programowania proceduralnego Wykład jest poświęcony językowi C i jego
PROE wykład 7 kontenery tablicowe, listy. dr inż. Jacek Naruniec
PROE wykład 7 kontenery tablicowe, listy dr inż. Jacek Naruniec Prosty kontener oparty na tablicach Funkcja dodawanie pojedynczego słonia do kontenera: 1 2 3 4 5 6 7 11 12 13 14 15 16 17 21 22 23 24 25
Operatory 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
Algorytmy grafowe 2. Andrzej Jastrz bski. Akademia ETI. Politechnika Gda«ska Algorytmy grafowe 2
Algorytmy grafowe 2 Andrzej Jastrz bski Akademia ETI Minimalne drzewo spinaj ce Drzewem nazywamy spójny graf nie posiadaj cy cyklu. Liczba wierzchoªków drzewa jest o jeden wi ksza od liczby jego kraw dzi.
Podstawy programowania w Qt4
Podstawy programowania w Qt4 Rafał Rawicki 21 kwietnia 2007 Co to jest Qt? Zestaw bibliotek dla języka C++ oraz narzędzia roszerzające jego możliwości Ponad 400 klas Introspekcja oraz mechanizm sygnałów
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ę
Programowanie w C++ Wykład 12. Katarzyna Grzelak. 28 maja K.Grzelak (Wykład 12) Programowanie w C++ 1 / 27
Programowanie w C++ Wykład 12 Katarzyna Grzelak 28 maja 2018 K.Grzelak (Wykład 12) Programowanie w C++ 1 / 27 Klasy cd K.Grzelak (Wykład 12) Programowanie w C++ 2 / 27 Klasy - powtórzenie Klasy typy definiowane