( rednio) zaawansowane programowanie w C++ (ZPR)

Wielkość: px
Rozpocząć pokaz od strony:

Download "( rednio) zaawansowane programowanie w C++ (ZPR)"

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 (http://staff.elka.pw.edu.pl/~rnowak2/rnbib.html): 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) ( 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:

Bardziej szczegółowo

( rednio)zaawansowane programowanie w C++

( 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

Bardziej szczegółowo

Szablony funkcji i szablony klas

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

Bardziej szczegółowo

Wartości domyślne, szablony funkcji i klas

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

Bardziej szczegółowo

Język ludzki kod maszynowy

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

Bardziej szczegółowo

Spis treści 1. Wstęp 2. Projektowanie systemów informatycznych

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.

Bardziej szczegółowo

Ćwiczenia IV - Kontenery (pojemniki)

Ć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ółowo

1. Wprowadzenie do C/C++

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

Bardziej szczegółowo

Analiza wydajno±ci serwera openldap

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Projektowanie klas c.d. Projektowanie klas przykład

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

Bardziej szczegółowo

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

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ę

Bardziej szczegółowo

Zaawansowane programowanie w C++ (PCP)

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

Bardziej szczegółowo

1. Wprowadzenie do C/C++

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

Bardziej szczegółowo

Algorytmy i Struktury Danych.

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.

Bardziej szczegółowo

Wpisany przez Piotr Klimek Wtorek, 11 Sierpień 2009 22:36 - Zmieniony Poniedziałek, 03 Czerwiec 2013 03:55

Wpisany przez Piotr Klimek Wtorek, 11 Sierpień 2009 22:36 - Zmieniony Poniedziałek, 03 Czerwiec 2013 03:55 Na początku PHP było przystosowane do programowania proceduralnego. Możliwości obiektowe wprowadzono z językiem C++ i Smalltalk. Obecnie nowy sposób programowania występuje w większości językach wysokopoziomowych

Bardziej szczegółowo

Dzisiejszy wykład. Wzorce projektowe. Visitor Client-Server Factory Singleton

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

Bardziej szczegółowo

Wprowadzenie do szablonów klas

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Programowanie obiektowe

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;

Bardziej szczegółowo

ANALIZA NUMERYCZNA. Grzegorz Szkibiel. Wiosna 2014/15

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

Bardziej szczegółowo

Programowanie poprzez testy z wykorzystaniem JUnit

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

Bardziej szczegółowo

Oprogramowanie i wykorzystanie stacji roboczych. Wykład 4

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

Bardziej szczegółowo

Programowanie obiektowe w C++ Wykład 11

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.

Bardziej szczegółowo

WYMAGANIA EDUKACYJNE I KRYTERIA OCENIANIA Z PRZEDMIOTU PROGRAMOWANIE APLIKACJI INTERNETOWYCH

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

Bardziej szczegółowo

Programowanie i struktury danych 1 / 44

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

Bardziej szczegółowo

Wykład I. Programowanie III - semestr III Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

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 / ) Jzyk C++ cz 3 Jarosław Gramacki Instytut Informatyki i Elektroniki # $$%%& ' ( $)*)+' *, - ( ' )*'.' '',*/ *, ','*0) 1 / ) %*+ 2'' 2" ( $%%) )'20 )*0) 1 / )!" 2 # $$%%& ' ( $%%/,))3 ( %* 2 / 4 ( ( *' *''*,

Bardziej szczegółowo

Modelowanie numeryczne w fizyce atmosfery Ćwiczenia 3

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

Bardziej szczegółowo

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 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

Bardziej szczegółowo

Programowanie MorphX Ax

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

Bardziej szczegółowo

Laboratorium Podstawy Przetwarzania Rozproszonego SPRAWOZDANIE z zadania SERWIS KOMPUTEROWY

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

Bardziej szczegółowo

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe Wykład 15 Wprowadzenie do języka na bazie a Literatura Podobieństwa i różnice Literatura B.W.Kernighan, D.M.Ritchie Język ANSI Kompilatory Elementarne różnice Turbo Delphi FP Kylix GNU (gcc) GNU ++ (g++)

Bardziej szczegółowo

Kontenery. Wykład 12. Programowanie (język C++) Rodzaje kontenerów. Przegląd kontenerów

Kontenery. Wykład 12. Programowanie (język C++) Rodzaje kontenerów. Przegląd kontenerów Programowanie (język C) Kontenery Wykład 12. Tomasz Marks - Wydział MiNI PW -1- Tomasz Marks - Wydział MiNI PW -2- Rodzaje kontenerów Kontenery sekwencyjne kolekcje uporządkowane, w których kaŝdy element

Bardziej szczegółowo

Poznaj ASP.NET MVC. Kamil Cieślak Microsoft Student Partner 2013-03-11

Poznaj ASP.NET MVC. Kamil Cieślak Microsoft Student Partner 2013-03-11 Poznaj ASP.NET MVC Kamil Cieślak Microsoft Student Partner 2013-03-11 Agenda Czym jest ASP.NET MVC? Wzorzec MVC ASP.NET MVC vs inne frameworki Bazy danych w ASP.NET MVC Jak zacząć? 2 Czym jest ASP.NET

Bardziej szczegółowo

System kontroli wersji SVN

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,

Bardziej szczegółowo

Enterprise Test Manager Architektura systemu. Krzysztof Kryniecki Filip Balejko Artur M czka Szymon Seliga Jakub Dziedzina 24 stycze«2009

Enterprise Test Manager Architektura systemu. Krzysztof Kryniecki Filip Balejko Artur M czka Szymon Seliga Jakub Dziedzina 24 stycze«2009 Enterprise Test Manager Architektura systemu Krzysztof Kryniecki Filip Balejko Artur M czka Szymon Seliga Jakub Dziedzina 24 stycze«2009 1 Spis tre±ci 1 Wprowadzenie 4 1.1 Cel........................................

Bardziej szczegółowo

PLD Linux Day. Maciej Kalkowski. 11 marca 2006. Wydziaª Matematyki i Informatyki UAM

PLD Linux Day. Maciej Kalkowski. 11 marca 2006. Wydziaª Matematyki i Informatyki UAM Wydziaª Matematyki i Informatyki UAM 11 marca 2006 Nasz nagªówek Wprowadzenie Co to jest klaster? Wprowadzenie Co to jest klaster? Podziaª ze wzgl du na przeznaczenie: Wprowadzenie Co to jest klaster?

Bardziej szczegółowo

Wykład 12. Programowanie serwera MS SQL 2005 w C#

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

Bardziej szczegółowo

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 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

Bardziej szczegółowo

Microsoft IT Academy kurs programowania

Microsoft IT Academy kurs programowania Microsoft IT Academy kurs programowania Podstawy języka C# Maciej Hawryluk Język C# Język zarządzany (managed language) Kompilacja do języka pośredniego (Intermediate Language) Kompilacja do kodu maszynowego

Bardziej szczegółowo

Wykład II. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Wykł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ółowo

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

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,

Bardziej szczegółowo

Dokumentacja końcowa projektu z ZPR

Dokumentacja końcowa projektu z ZPR Dokumentacja końcowa projektu z ZPR Temat projektu: Prowadzący projekt: Zespół projektowy: Losowe przeszukiwanie stanów dr inż. Robert Nowak Piotr Krysik Kamil Zabielski 1. Opis projektu Projekt ma za

Bardziej szczegółowo

Podstawy programowania w Qt4

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

Bardziej szczegółowo

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

Programowanie 2. Język C++. Wykład 2. 2.1 Definicja, deklaracja, wywołanie funkcji.... 1 2.2 Funkcje inline... 4 2.3 Przekazanie do argumentu funkcji wartości, adresu zmiennej.... 5 2.4 Wskaźniki do funkcji... 8 2.5 Przeładowanie funkcji...

Bardziej szczegółowo

Dzi kuj za uwag! Spotkania z Pythonem. Cz ± 1 - podstawy - rozwi zania zada« Michaª Alichniewicz. Gda«sk 2014. Studenckie Koªo Automatyków SKALP

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

Bardziej szczegółowo

Laboratorium 1. Programowanie II - Kierunek Informatyka. dr inż. Janusz Słupik. Gliwice, 2015. Wydział Matematyki Stosowanej Politechniki Śląskiej

Laboratorium 1. Programowanie II - Kierunek Informatyka. dr inż. Janusz Słupik. Gliwice, 2015. Wydział Matematyki Stosowanej Politechniki Śląskiej Laboratorium 1 - Kierunek Informatyka Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2015 c Copyright 2015 Janusz Słupik Punkty Na laboratorium można zdobyć 60 punktów. Ocena ogólna z zajęć:

Bardziej szczegółowo

I - Microsoft Visual Studio C++

I - Microsoft Visual Studio C++ I - Microsoft Visual Studio C++ 1. Nowy projekt z Menu wybieramy File -> New -> Projekt -> Win32 Console Application w okienku Name: podajemy nazwę projektu w polu Location: wybieramy miejsce zapisu i

Bardziej szczegółowo

Dziedziczenie : Dziedziczenie to nic innego jak definiowanie nowych klas w oparciu o już istniejące.

Dziedziczenie : Dziedziczenie to nic innego jak definiowanie nowych klas w oparciu o już istniejące. Programowanie II prowadzący: Adam Dudek Lista nr 8 Dziedziczenie : Dziedziczenie to nic innego jak definiowanie nowych klas w oparciu o już istniejące. Jest to najważniejsza cecha świadcząca o sile programowania

Bardziej szczegółowo

Rok akademicki: 2012/2013 Kod: ZIE-1-306-s Punkty ECTS: 3. Poziom studiów: Studia I stopnia Forma i tryb studiów: -

Rok akademicki: 2012/2013 Kod: ZIE-1-306-s Punkty ECTS: 3. Poziom studiów: Studia I stopnia Forma i tryb studiów: - Nazwa modułu: Programowanie obiektowe Rok akademicki: 2012/2013 Kod: ZIE-1-306-s Punkty ECTS: 3 Wydział: Zarządzania Kierunek: Informatyka i Ekonometria Specjalność: - Poziom studiów: Studia I stopnia

Bardziej szczegółowo

Wykład I. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Wykł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ółowo

Zaawansowane programowanie w języku C++ Biblioteka standardowa

Zaawansowane programowanie w języku C++ Biblioteka standardowa Zaawansowane programowanie w języku C++ Biblioteka standardowa Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka

Bardziej szczegółowo

Dobre praktyki w zakresie zarządzania ładem architektury korporacyjnej

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

Bardziej szczegółowo

Chess. Joanna Iwaniuk. 9 marca 2010

Chess. Joanna Iwaniuk. 9 marca 2010 9 marca 2010 Plan prezentacji 1. Co to jest? 2. Jak u»ywa? 3. Prezentacja dziaªania 4. kontrola przeplotów model checking odtwarzanie wadliwego wykonania 5. Ogólna idea Wynik dziaªania Co to jest? program

Bardziej szczegółowo

Wykład VII. Programowanie III - semestr III Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Wykład VII. Programowanie III - semestr III Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej Wykład VII - semestr III Kierunek Informatyka Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2014 c Copyright 2014 Janusz Słupik Wytwarzanie oprogramowania Model tworzenia oprogramowania

Bardziej szczegółowo

10.1 Szablony... 1 10.2 Szablony funkcji... 2 10.3 Szablony klas... 5 10.4 Szablony jako wstęp do biblioteki STL... 10

10.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ółowo

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++ Programowanie Wstęp p do programowania Klasa 3 Lekcja 9 PASCAL & C++ Język programowania Do przedstawiania algorytmów w postaci programów służą języki programowania. Tylko algorytm zapisany w postaci programu

Bardziej szczegółowo

Wykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, 2014. Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

Wykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, 2014. Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik Wykład VII Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2014 c Copyright 2014 Janusz Słupik Kompilacja Kompilator C program do tłumaczenia kodu źródłowego na język maszynowy. Preprocesor

Bardziej szczegółowo

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 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

Bardziej szczegółowo

PARADYGMATY PROGRAMOWANIA Wykład 3

PARADYGMATY PROGRAMOWANIA Wykład 3 PARADYGMATY PROGRAMOWANIA Wykład 3 Definiowanie operatorów i ich przeciążanie Przykłady zastosowania operatorów: a) operator podstawienia ( = ) obiektów o złożonej strukturze, b) operatory działania na

Bardziej szczegółowo

Zaawansowane aplikacje internetowe - laboratorium Architektura Spring.

Zaawansowane aplikacje internetowe - laboratorium Architektura Spring. Zaawansowane aplikacje internetowe - laboratorium Architektura Spring. Celem ćwiczenia jest przygotowanie prostej aplikacji internetowej wykorzystującej architekturę Spring. Aplikacja składa się z jednego

Bardziej szczegółowo

Projektowanie i programowanie obiektowe (materiały do wykładu cz. VI)

Projektowanie i programowanie obiektowe (materiały do wykładu cz. VI) Projektowanie i programowanie obiektowe (materiały do wykładu cz. VI) Jacek Cichosz www.zssk.pwr.wroc.pl Katedra Systemów i Sieci Komputerowych Politechnika Wrocławska Dziedziczenie 221 Dziedziczenie Dziedziczenie

Bardziej szczegółowo

PROE wykład 7 kontenery tablicowe, listy. dr inż. Jacek Naruniec

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

Bardziej szczegółowo

FUNKCJE WZORCOWE. Wykład 10. Programowanie Obiektowe (język C++) Funkcje wzorcowe wprowadzenie (2) Funkcje wzorcowe wprowadzenie (1)

FUNKCJE WZORCOWE. Wykład 10. Programowanie Obiektowe (język C++) Funkcje wzorcowe wprowadzenie (2) Funkcje wzorcowe wprowadzenie (1) Programowanie Obiektowe (język C++) Wykład 10. FUNKCJE WZORCOWE Funkcje wzorcowe wprowadzenie (1) Funkcje wzorcowe wprowadzenie (2) int max ( int a, int b ) return a>b? a : b; Aby mieć analogiczną funkcję

Bardziej szczegółowo

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Programowanie obiektowe Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Java P. L. Lemay, Naughton R. Cadenhead Java Podręcznik 2 dla kaŝdego Języka Programowania Java Linki Krzysztof Boone oprogramowania

Bardziej szczegółowo

Lekcja 9 - LICZBY LOSOWE, ZMIENNE

Lekcja 9 - LICZBY LOSOWE, ZMIENNE Lekcja 9 - LICZBY LOSOWE, ZMIENNE I STAŠE 1 Liczby losowe Czasami spotkamy si z tak sytuacj,»e b dziemy potrzebowa by program za nas wylosowaª jak ± liczb. U»yjemy do tego polecenia: - liczba losowa Sprawd¹my

Bardziej szczegółowo

INFORMATOR TECHNICZNY WONDERWARE

INFORMATOR TECHNICZNY WONDERWARE Informator techniczny nr 95 04-06-2007 INFORMATOR TECHNICZNY WONDERWARE Synchronizacja czasu systemowego na zdalnych komputerach względem czasu systemowego na komputerze z serwerem Wonderware Historian

Bardziej szczegółowo

Robaki sieciowe. Wstęp Instalacja w systemie Kanały dystrybucji Ogólny schemat Przykłady robaków Literatura

Robaki sieciowe. Wstęp Instalacja w systemie Kanały dystrybucji Ogólny schemat Przykłady robaków Literatura Robaki sieciowe Wstęp Instalacja w systemie Kanały dystrybucji Ogólny schemat Przykłady robaków Literatura Robaki sieciowe: Wstęp Skąd taka nazwa? Słowo robak pochodzi od angielskiego słowa tapeworm tasiemiec.

Bardziej szczegółowo

1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami

1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami 1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami Celem tych zajęć jest zrozumienie i oswojenie z technikami programowania przy pomocy wskaźników w języku C++. Proszę przeczytać rozdział 8.

Bardziej szczegółowo

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk. Wydział Inżynierii Metali i Informatyki Przemysłowej

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk. Wydział Inżynierii Metali i Informatyki Przemysłowej 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ółowo

Język JAVA podstawy. wykład 1, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Język JAVA podstawy. wykład 1, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna Język JAVA podstawy wykład 1, część 1 1 Język JAVA podstawy Język Java to jeden z najbardziej popularnych obiektowych języków programowania. Należy do grupy języków programowania bazujących na C i C++.

Bardziej szczegółowo

Wyjątki. Streszczenie Celem wykładu jest omówienie tematyki wyjątków w Javie. Czas wykładu 45 minut.

Wyjątki. Streszczenie Celem wykładu jest omówienie tematyki wyjątków w Javie. Czas wykładu 45 minut. Wyjątki Streszczenie Celem wykładu jest omówienie tematyki wyjątków w Javie. Czas wykładu 45 minut. Wydaje się, że żaden użytkownik oprogramowania nie lubi, kiedy stosowany program nagle zawiesza się,

Bardziej szczegółowo

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

Programowanie 2. Język C++. Wykład 1. 1.1 Wstęp... 1 1.2 Obiekty stałe... 3 1.3 Obiekty statyczne... 4 1.4 Wskaźniki... 5 1.5 Referencje... 8 1.6 Wskaźniki do wskaźników... 11 1.7 Definiowanie własnych typów danych, polecenie typedef... 17

Bardziej szczegółowo

Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli.

Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli. Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną, fotograficzną,

Bardziej szczegółowo

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość 1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość 2. Poprawna definicja wskażnika b to: a) float *a, **b = &a; b) float

Bardziej szczegółowo

W dobie postępującej digitalizacji zasobów oraz zwiększającej się liczby dostawców i wydawców

W dobie postępującej digitalizacji zasobów oraz zwiększającej się liczby dostawców i wydawców W dobie postępującej digitalizacji zasobów oraz zwiększającej się liczby dostawców i wydawców oferujących dostępy do tytułów elektronicznych, zarówno bibliotekarze jak i użytkownicy coraz większą ilość

Bardziej szczegółowo

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami.

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami. UML a kod w C++ i Javie Projektowanie oprogramowania Dokumentowanie oprogramowania Diagramy przypadków użycia Przewoznik Zarzadzanie pojazdami Optymalizacja Uzytkownik Wydawanie opinii Zarzadzanie uzytkownikami

Bardziej szczegółowo

Automatyzacja procesu publikowania w bibliotece cyfrowej

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

Bardziej szczegółowo

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna Język JAVA podstawy Wykład 3, część 3 1 Język JAVA podstawy Plan wykładu: 1. Konstrukcja kodu programów w Javie 2. Identyfikatory, zmienne 3. Typy danych 4. Operatory, instrukcje sterujące instrukcja warunkowe,

Bardziej szczegółowo

0.1 Hierarchia klas. 0.1.1 Diagram. 0.1.2 Krótkie wyjaśnienie

0.1 Hierarchia klas. 0.1.1 Diagram. 0.1.2 Krótkie wyjaśnienie 0.1 Hierarchia klas 0.1.1 Diagram 0.1.2 Krótkie wyjaśnienie Po pierwsze to jest tylko przykładowe rozwiązanie. Zarówno na wtorkowych i czwartkowych ćwiczeniach odbiegaliśmy od niego, ale nie wiele. Na

Bardziej szczegółowo

Leszek Stasiak Zastosowanie technologii LINQ w

Leszek Stasiak Zastosowanie technologii LINQ w Leszek Stasiak Zastosowanie technologii LINQ w C# 1. Wstęp - połączenie Do naszych zadań będziemy używać Microsoft Visual Studio 2010. Stwórzmy nowy projekt Windows Form Application. Mając do dyspozycji

Bardziej szczegółowo

SYSTEMY CZASU RZECZYWISTEGO - VxWorks

SYSTEMY CZASU RZECZYWISTEGO - VxWorks WZAJEMNE WYKLUCZANIE Wiele metod. Np. wyłączanie przerwań: funkcja() //... Int blokada = intlock(); // Obszar krytyczny, któremu nie możemy przerwać intunlock(blokada); wyłączanie wywłaszczania: funkcja()

Bardziej szczegółowo

Kompozycja i dziedziczenie klas

Kompozycja i dziedziczenie klas Programowanie obiektowe Kompozycja i dziedziczenie klas Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski pwr.wroc.pl Kompozycja i dziedziczenie klas

Bardziej szczegółowo

Microsoft Management Console

Microsoft Management Console Microsoft Management Console Konsola zarządzania jest narzędziem pozwalającym w prosty sposób konfigurować i kontrolować pracę praktycznie wszystkich mechanizmów i usług dostępnych w sieci Microsoft. Co

Bardziej szczegółowo

API transakcyjne BitMarket.pl

API transakcyjne BitMarket.pl API transakcyjne BitMarket.pl Wersja 20140314 1. Sposób łączenia się z API... 2 1.1. Klucze API... 2 1.2. Podpisywanie wiadomości... 2 1.3. Parametr tonce... 2 1.4. Odpowiedzi serwera... 3 1.5. Przykładowy

Bardziej szczegółowo

Preprocesor języka C

Preprocesor języka C języka C 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

Bardziej szczegółowo

Serwery. Autorzy: Karol Czosnowski Mateusz Kaźmierczak

Serwery. Autorzy: Karol Czosnowski Mateusz Kaźmierczak Serwery Autorzy: Karol Czosnowski Mateusz Kaźmierczak Czym jest XMPP? XMPP (Extensible Messaging and Presence Protocol), zbiór otwartych technologii do komunikacji, czatu wieloosobowego, rozmów wideo i

Bardziej szczegółowo

Język C++ część 9 szablony klas. Jarosław Gramacki Instytut Informatyki i Elektroniki. szablony funkcji

Język C++ część 9 szablony klas. Jarosław Gramacki Instytut Informatyki i Elektroniki. szablony funkcji 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ółowo

class A { public: A(): i(5), s("abc") { } int i; string s; };

class A { public: A(): i(5), s(abc) { } int i; string s; }; UWAGA! PoniŜej są pytania z egzaminu, z zaznaczonymi poprawnymi odpowiedziami. Przy niektórych z nich napisałem jakieś słowo komentarza (czemu tak, a nie inaczej...). Przypominam, Ŝe zasada punktacji była

Bardziej szczegółowo

Wzorce logiki dziedziny

Wzorce logiki dziedziny Wzorce logiki dziedziny 1. Wzorce logiki dziedziny skrypt transakcji (Transaction Script), brama tabeli (Table Data Gateway), model dziedziny (Domain model), strategia (Strategy), moduł tabeli (Table Module),

Bardziej szczegółowo

Spis treści INTERFEJS (WEBSERVICES) - DOKUMENTACJA TECHICZNA 1

Spis treści INTERFEJS (WEBSERVICES) - DOKUMENTACJA TECHICZNA 1 I N T E R F E J S W E BSERVICES NADAWANIE PAKIETÓW DO S YSTEMU MKP P RZEZ INTERNET D O K U M E N T A C J A T E C H N I C Z N A S T Y C Z E Ń 2 0 1 2 Spis treści 1. Wstęp... 2 2. Informacje ogólne... 2

Bardziej szczegółowo

Wprowadzenie do środowiska Qt Creator

Wprowadzenie do środowiska Qt Creator 1.Instalacja środowiska Qt Creator Qt Creator jest wygodnym środowiskiem programistycznym przeznaczonym do tworzenia projektów, czyli aplikacji zarówno konsolowych, jak i okienkowych z wykorzystaniem biblioteki

Bardziej szczegółowo

Aplikacje internetowe oparte na kluczowych technologiach Java Enterprise(Servlet,JSP,JDBC, )

Aplikacje internetowe oparte na kluczowych technologiach Java Enterprise(Servlet,JSP,JDBC, ) Kod szkolenia: Tytuł szkolenia: JEE/JSP Aplikacje internetowe oparte na kluczowych technologiach Java Enterprise(Servlet,JSP,JDBC, ) Dni: 5 Opis: Adresaci szkolenia: Szkolenie adresowane jest do programistów

Bardziej szczegółowo

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje. Podstawowe elementy proceduralne w C++ Program i wyjście Zmienne i arytmetyka Wskaźniki i tablice Testy i pętle Funkcje Pierwszy program // Niezbędne zaklęcia przygotowawcze ;-) #include using

Bardziej szczegółowo

Metodyka programowania. Podstawy C#

Metodyka programowania. Podstawy C# Metodyka programowania Podstawy C# Platforma.NET Platforma.NET (.NET Framework) Platforma programistyczna Microsoft, Obejmuje - środowisko uruchomieniowe CLR (Common Language Runtime) - biblioteki klas

Bardziej szczegółowo

Oprogramowanie klawiatury matrycowej i alfanumerycznego wyświetlacza LCD

Oprogramowanie klawiatury matrycowej i alfanumerycznego wyświetlacza LCD Oprogramowanie klawiatury matrycowej i alfanumerycznego wyświetlacza LCD 1. Wprowadzenie DuŜa grupa sterowników mikroprocesorowych wymaga obsługi przycisków, które umoŝliwiają uŝytkownikowi uruchamianie

Bardziej szczegółowo

Uniwersytet Rzeszowski

Uniwersytet Rzeszowski Uniwersytet Rzeszowski Interdyscyplinarne Centrum Modelowania Komputerowego Inżynieria oprogramowania Część 1: Tworzenie dokumentacji projektowej Opracował: dr inż. Przemysław Pardel v2.01 2014 1. Dokumentacja

Bardziej szczegółowo

Efekty uboczne błędów

Efekty uboczne błędów Obsługa wyjątków Efekty uboczne błędów Fragment kodu programu jest bezpieczny (ang. exception-safe) jeżeli błędy, które wystąpią w trakcie przetwarzania tego kodu nie będą powodowały niepożądanych efektów

Bardziej szczegółowo