( rednio) zaawansowane programowanie w C++ (ZPR)
|
|
- Karol Filipiak
- 9 lat temu
- Przeglądów:
Transkrypt
1 ( rednio) zaawansowane programowanie w C++ (ZPR) Wykªad 6 - ª czenie C++ i a, powtórzenie Robert Nowak 2015Z ( rednio) zaawansowane programowanie w C++ (ZPR) 1/46
2 Š czenie C i C++ C Kompilatory musz by zgodne (w taki sam sposób reprezentowa typy wbudowane) problemy: dekorowanie nazw dla linkera struktury danych funkcja main operacje na stercie ( rednio) zaawansowane programowanie w C++ (ZPR) 2/46
3 dekorowanie nazw C linker w C nazwy nie mog by przeci»ane w C++ mog nazwa funkcji jest dekorowana przez kompilator C++ (name mengling, name decoration) extern "C" { //Zapobiega dekorowaniu nazw int funkcja(int a, int b) /*... */ } //Zapobiega dekorowaniu nazw je»eli jest kompilowane przez C++ #ifdef cplusplus extern "C" { #endif int funkcja( int a, int b) /*... */ #ifdef cplusplus } #endif ( rednio) zaawansowane programowanie w C++ (ZPR) 3/46
4 funkcja main i struktury danych C Nale»y wybiera implementacj main z C++, poniewa» zapewnia ona prawidªow inicjacj skªadowych statycznych zapewnia woªanie destruktorów dla skªadowych statycznych Struktury danych (tylko te, które s dost pne w C): typy wbudowane, POD struktury, które nie maj funkcji wirtualnych obiekty, które zostaªy powoªane przez new powinny by zwalniane przez delete pami zaalokowana przez malloc powinna by zwalniana przez free ( rednio) zaawansowane programowanie w C++ (ZPR) 4/46
5 interpretowany, interaktywny j zyk programowania Software Fundation, programowanie funkcyjne, obiektowe i strukturalne dynamiczna kontrola typów brak enkapsulacji zarz dzanie pami ci przez garbage collection dokumentacja w kodzie ¹ródªowym zmienna liczba argumentów funkcji i metod zaznaczanie bloków przez wci cia ( rednio) zaawansowane programowanie w C++ (ZPR) 5/46
6 - hello world uruchomienie interpretera python >>> print 'Hello world!' # comments after hash >>> quit() skrypt utworzenie pliku o nazwie hello.py print 'Hello world!' uruchomienie skryptu python hello.py ( rednio) zaawansowane programowanie w C++ (ZPR) 6/46
7 , obliczenia - wykorzystanie interpretera do oblicze«>>> >>> (2+3*3)/2 # arytmetyka caªkowita 5 >>> width = 20.1 >>> height = 5/2.0 # arytmetyka rzeczywista >>> width * height >>> x = y = 0 # równoczesne przypisanie do dwóch obiektów >>> n # odwoªanie si do niezdefiniowanego obiektu Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'n' is not defined None oznacza brak warto±ci x = None ( rednio) zaawansowane programowanie w C++ (ZPR) 7/46
8 , obliczenia (2) % modulo (5 % 2 = 1) Funkcje wbudowane ** pot ga (2 ** 3 = 8) int() konwersja (podªoga) float() konwersja Math module (import math) math.pi π = math.e e = math.sqrt() pierwiastek kwadratowy math.log(), math.log10(), funkcje wykªadnicze i logarytmiczne math.exp(x), math.pow(x,y) dodatkowo funkcje trygonometryczne i inne Google: python math or ( rednio) zaawansowane programowanie w C++ (ZPR) 8/46
9 - napis >>> s = 'Hello' # pojedyncze lub podwójne cudzysªowy >>> print s Hello >>> print s + "world" # konkatenacja przez operator + Hello world >>> print s + ' man'*3 # powtórzenia napisów za pomoc * Hello man man man >>> u'hello' # unicode >>> print u'section \u00a7'# unicode character >>> unicode('xyz','utf-8') # ASCII, UTF-8, UTF-16, Latin-1, etc. Indeksowanie >>> s = 'Hello' >>> s[0] # pierwsza litera, tutaj 'H' >>> s[-1] # ujemy indeks oznacza liczenie od ko«ca, tutaj 'o' >>> s[1:3] # substring, tutaj 'ell' >>> s[:3] # pierwszy indeks jest domy±lnie równy 0 >>> s[1:] # drugi indeks jest domy±lnie równy dªugo±ci napisu >>> len(s)# dªugo± napisu ( rednio) zaawansowane programowanie w C++ (ZPR) 9/46
10 - lista l = [ 'Hello', 'world', 1, 2] # elementy listy mog by ró»nych typów l[0] # indeks u»ywany dla list len(l) # liczba elementów w liscie l[1:3] # wycinanie dla list (podobnie jak dla napisów) l + [ 'X', 'Y' ] # ª czenie list print l[2:]*3 # powtórzenia dla list l[0] = 'cat' # l = [ 'cat', 'world', 1, 2 ] l.append('mouse') # dodaje element na koniec listy l[0:2] = [ 'xxx' ] # modyfikuje list, mo»e doda lub usun elementy l[:] = [ ] # czy±ci list l = [ 1, 2, 3 ] m = [ l, [ 4 ] ] # m jest list list # [[1, 2, 3], [4]] ( rednio) zaawansowane programowanie w C++ (ZPR) 10/46
11 - sªownik len(d) - liczba obiektów w sªowniku k in d - czy d zawiera klucz k d[k] - zwraca warto± dla klucza k, je»eli brak klucza zgªasza wyj tek KeyError d[k] = val - dodaje par klucz-warto±, je»eli poprzednio istniaªa para jest nadpisywana d = {'one':1, 'three':3} # tworzy sªownik d['two'] = 1 # d = { 'one':1, 'three':3, 'two':1 } d['two'] = 2 # d = { 'one':1, 'three':3, 'two':2 } d = {'John Smidth': ' ', 'Mark Brown' : ' ', 'Max Sugar' : ' ' } ( rednio) zaawansowane programowanie w C++ (ZPR) 11/46
12 - instrukcje steruj ce Bloki s oznaczane przez wci cia x = int(raw_input("enter integer:")) if x < 0: print 'Negative' elif x == 0: print 'Zero' else: print 'Positive' while x > 0: # p tla while x = x - 1 print x animals = [ 'dog', 'cat', 'mouse' ] for a in animals: # p tla for for i in range(len(a)): # range generuje list, np. [0, 1, 2] print a[:i] ( rednio) zaawansowane programowanie w C++ (ZPR) 12/46
13 Programowanie strukturalne w ie Nowa funkcja deniowana za pomoc def Przykªad: wie»e Hanoi, animacja: Tower_of_Hanoi_4.gif a b c a b c a b c a b c def hanoi(in_tower, out_tower, tmp_tower, nr): "documentation of the function" # narz dzia u»ywaj tego opisu if nr == 1: print 'move 1 from ' + in_tower + ' to ' + out_tower return hanoi(in_tower, tmp_tower, out_tower, nr - 1) print 'move ' + str(nr) + ' from ' + in_tower + ' to ' + out_tower hanoi(tmp_tower, out_tower, in_tower, nr - 1) return ( rednio) zaawansowane programowanie w C++ (ZPR) 13/46
14 - wyj tki 1 def f(i): 2 if i == 2: 3 raise Exception('i==2') 4 else: 5 g(i-1) 6 def g(i): 7 while i > 0: 8 i = i - 1; 9 f(i) 10 def h(i): 11 try: 12 g(i) 13 except Exception: 14 pass 15 h(5) linia 15 h(5) 10 i=5 11 * 12 * g(5) 06 i=5 07 * 08 i=4 09 * f(4) 01 i=4 02 * 04 * 05 * g(3) 06 i=3 07 * 08 i=2 09 * f(2) 01 i=2 02 * 03 * 13 * 14 * ( rednio) zaawansowane programowanie w C++ (ZPR) 14/46
15 Programowanie funkcyjne w ie >>>g= lambda x: x**2 # tworzy funkcj anomimow >>>g(4) 16 >>>add = lambda a, b: a+b >>>add(2,3) 5 >>># pierwszy argument to warunek >>>print filter(lambda x: x % 2 == 0, [1, 2, 3, 4, 5, 6, 7]) [2, 4, 6] >>># domkni cie (closure) - zapami tuje otoczenie funkcji >>>def callback(msg):... print msg >>>words = ['do', 're', 'mi' ] >>>func = [] >>>for w in words:... func.append( lambda p = w: callback(p) ) >>>func[0]() do ( rednio) zaawansowane programowanie w C++ (ZPR) 15/46
16 - moduª (plik) Moduª - plik z rozszerzeniem py zawieraj cy kod a wewn trz moduªu jego nazwa jest zmienn name gdy moduª jest uruchomiony jako skrypt python module.py jego nazw jest ' main ' denicje mog by u»yte w innym module import name Funkcje: dir(module-name) - zawarto± moduªu help(module-name) - dokumentacja moduªu Moduª mo»e zawiera sekcj wykonywan gdy po raz pierwszy moduª jest u»yty def f() # definicja if name == ' main ': # nie uruchamia gdy moduª jest doª czany # sekcja wykonywana gdy moduª jest woªany jako skrypt ( rednio) zaawansowane programowanie w C++ (ZPR) 16/46
17 - programowanie obiektowe denicja klasy po sªowie kluczowym class class MyClass: default_x = 1 # skªadowa statyczna def init (self, x, y=0): # metoda inicjuj ca self.x = x # skªadowa obiektu self.y = y # skªadowa obiektu def f(self): # metoda return self.x j zyk upraszcza woªanie metody inicjuj cej obiekt, np. m=myclass(23), wtedy m.x==23 j zyk upraszcza dost p do atrybutu lub woªanie metody, np. m.f() to to samo co MyClass.f(m) pierwszy atrybut metody jest wymieniony jawnie, przyj ªo si go nazywa self ( rednio) zaawansowane programowanie w C++ (ZPR) 17/46
18 - (wielo)dziedziczenie # dziedziczenie class DerivedClass(BaseClass): # definicja klasy pochodnej je»eli atrybut (lub metoda) nie jest zdeniowana w danej klasie klasy bazowe s przeszukiwane (rekursywnie) wszystkie metody zachowuj si jak wirtualne w C++ mo»na woªa metody wprost BaseClass.method(self, arguments) brak enkapsulacji (wszystkie metody i skªadowe s publiczne) isinstance(obj, class) bada, czy obj is typu class issubclass(classa, classb) bada, zcy classa jest pochodna po classb ( rednio) zaawansowane programowanie w C++ (ZPR) 18/46
19 - programowanie obiektowe (2) Mo»na dodawa metody w czasie dziaªania class A(): def init (self): self.i = 0 def f(self, p): print 'A::f, i=' + str(self.i) + ' p=' + str(p) >>>a=a() >>>a.f(1) A::f, i=0 p=1 >>>a. class.g = lambda self: self.f('ala') >>>a.g() A::f, i=0, p=ala ( rednio) zaawansowane programowanie w C++ (ZPR) 19/46
20 Pakiety Pakiet - katalog zawieraj cy moduªy a i moduª specjalny (inicjuj cy) o nazwie init.py server/ # przykªad pakietu init.py # inicjacja config/ # pakiet skªadowy init.py models.py # moduª simulator/ init.py camera.py radar.py nazwy moduªów wykorzystuj kropki import server.simulator.camera # import module Plik init.py musi istnie, nawet gdy nie jest potrzebna inicjacja pakietu (wielko± pliku=0) ( rednio) zaawansowane programowanie w C++ (ZPR) 20/46
21 cie»ka poszukiwa«moduªów Gdy name jest doª czany, poszukuje si plików w katalogach: lokalnym, zawieraj cym uruchomiony skrypt innych, katalogi s przechowywane w zmiennej sys.path import sys print sys.path # drukuje aktualne ±cie»ki aby doda ±cie»k, mo»na ustawi zmienn ±rodowiskow PYTHONPATH ( rednio) zaawansowane programowanie w C++ (ZPR) 21/46
22 Standardowe pakiety a - dostarczane wraz z interpreterem dokumentacja: string re struct diib StringIO cstringio textwrap codecs unicodedata stringprep fpformat datetime calendar collections heapq bisect array sets sched mutex Queue weakref UserDict UserList UserString types new copy pprint repr numbers math cmath decimal fractions random itertools functools operator os.path leinput stat statvfs lecmp temple glob fnmatch linecache shutil dircache macpath pickle cpickle copy_reg shelve marshal anydbm whichdb dbm gdbm dbhash bsddb dumbdbm sqlite3 zlib gzip bz2 ziple tarle csv CongParser robotparser netrc xdrlib plistlib hashlib hmac md5 sha os io time argparse optparse getopt logging logging.cong logging.handlers getpass curses curses.textpad curses.ascii curses.panel platform errno ctypes select threading thread dummy_threading dummy_thread multiprocessing mmap readline rlcompleter subprocess socket ssl signal popen2 asyncore asynchat json mailcap mailbox mhlib mimetools mimetypes MimeWriter mimify multile rfc822 base64 binhex binascii quopri uu HTMLParser sgmllib htmllib htmlentitydefs xml.parsers.expat xml.dom xml.dom.minidom xml.dom.pulldom xml.sax xml.sax.handler xml.sax.saxutils xml.sax.xmlreader xml.etree.elementtree webbrowser cgi cgitb wsgiref urllib urllib2 httplib ftplib poplib imaplib nntplib smtplib smtpd telnetlib uuid urlparse SocketServer BaseHTTPServer SimpleHTTPServer CGIHTTPServer cookielib Cookie xmlrpclib SimpleXMLRPCServer DocXMLRPCServer audioop imageop aifc sunau wave chunk colorsys imghdr sndhdr ossaudiodev gettext locale cmd shlex Tk Tkinter ttk Tix ScrolledText turtle IDLE Packages pydoc doctest unittest translation test test.test_support bdb pdb Commands Prolers hotshot timeit trace sys syscong future_builtins warnings contextlib abc atexit traceback gc inspect site user fpectl distutils code codeop rexec Bastion imp imputil zipimport pkgutil modulender runpy parser ast symtable symbol token keyword tokenize tabnanny pyclbr py_compile compileall dis pickletools i wiele innych ( rednio) zaawansowane programowanie w C++ (ZPR) 22/46
23 automatyczna instalacja pakietów kilka tysi cy pakietów dost pnych w repozytorium Package Index. pypi.python.org Dost pne s narz dzia do automatycznego instalowania pakietów przechowywanych w tym repozytorium zainstalowa setuptools dla odpowiedniej wersji interpretera run the egg: sh setuptools-version.egg Nast pnie: pip install package_name wersja pakietu jest wybierana automatycznie (najcz ±ciej najnowsza) ( rednio) zaawansowane programowanie w C++ (ZPR) 23/46
24 Š czenie C++ i a ( rednio) zaawansowane programowanie w C++ (ZPR) 24/46
25 Potrzeba u»ycia ró»nych j zyków w aplikacjach (patrz wykªad 1) System komputerowy zawsze: ma ograniczenia czasowe, wi c tworzenie caªo±ci powinno by mo»liwie szybkie posiada pewne elementy, które s w skim gardªem - powinny by zaimplementowane wydajnie (20% kodu) System komputerowy cz sto: posiada pewne elementy, których autor nie chce udost pnia (kod ukryty przed u»ytkownikiem) posiada pewne fragmenty, które powinny by dost pne dla u»ytkownika (aby dostosowa aplikacj do indywidualnych potrzeb, np. konguracja) ( rednio) zaawansowane programowanie w C++ (ZPR) 25/46
26 powody rozszerzania a w C++ kod wykonywany jest szybciej wykorzystanie istniej cego kodu kod jest ukryty przed u»ytkownikiem powody osadzania a w C++ brak potrzeby kompilacji wykorzystanie bibliotek a kod dost pny dla u»ytkownika Interfejsy: C API Boost ( rednio) zaawansowane programowanie w C++ (ZPR) 26/46
27 Przykªady Rozszerzanie a w C++: utworzenie biblioteki dzielonej zawieraj cej funkcje w C++ import biblioteki do a i wykonanie Przykªad: hello world Osadzanie a w C++ (Boost ): Przykªad: embedding ( rednio) zaawansowane programowanie w C++ (ZPR) 27/46
28 Zadanie dodatkowe (dodatkowe 10 pkt) Zadanie nieobowi zkowe, omówione cz ±ciowo na wykªadzie 1. Napisa przykªadow, prost aplikacj, która wykorzystuje /C++/JavaScript. Aplikacja powinna kompilowa si i dziaªa na ró»nych systemach operacyjnych (np. Linux, Windows), wykorzystywa przegl dark jako graczny interfejs u»ytkownika. ( rednio) zaawansowane programowanie w C++ (ZPR) 28/46
29 Dodatkowa lektura ( R. Nowak, Biblioteka Boost.. Š czenie C++ i a, Software Developer's Journal, R. Nowak, Wydajne i elastyczne programy. Š czenie C++ i a przy pomocy Boost., Programista, R. Nowak, Komunikacja z serwerem w aplikacjach ex, Programista, no. 7, pp , R. Nowak, Aplikacje internetowe wykorzystuj ce python. biblioteki up, web2py, django, Programista, no. 13, pp , ( rednio) zaawansowane programowanie w C++ (ZPR) 29/46
30 Przykªadowe zadania ( rednio) zaawansowane programowanie w C++ (ZPR) 30/46
31 Wzorce projektowe Przykªadowe zadania Wzorce kreacyjne (tworzenie obiektów) fabryka obiektów fabryka abstrakcyjna prototyp singleton wzorce strukturalne (budowa obiektów) adapter fasada proxy kompozyt dekorator wzorce czynno±ciowe (wspóªpraca pomi dzy obiektami) polecenie, komenda wizytator wielometoda obserwator iterator ( rednio) zaawansowane programowanie w C++ (ZPR) 31/46
32 Przykªadowe zadania i uzupeªnienie wiadomo±ci o C++ staªo±, 'const', 'mutable' polimorzm, funkcje wirtualne, dziedziczenie wielobazowe dynamiczna informacja o typie ró»ne strategie obsªugi bª dów, mechanizm wyj tków sprytne wska¹niki: std::unique_ptr, std::auto_ptr (wycofywany) std::shared_ptr, boost::shared_ptr std::weak_ptr, boost::weak_ptr boost::scoped_ptr, boost::scoped_array boost::intrusive_ptr referencja do r-warto±ci w C++11 (r-value reference) ( rednio) zaawansowane programowanie w C++ (ZPR) 32/46
33 Przykªadowe zadania Przykªadowe zadania ( rednio) zaawansowane programowanie w C++ (ZPR) 33/46
34 Przykªadowe zadania Zad1 - zaproponuj implementacj 'readfromstream' wczytuje ona kolekcj pracowników ze strumienia (hierarchia taka jak na rysunku). Deklaracje s zaproponowane poni»ej. enum PracownikTyp { SEZNONOWY, SPECJALISTA, KIEROWNIK}; typedef boost::shared_ptr<pracownik> PracownikPtr; typedef std::vector<pracownikptr> Pracownicy; Pracownicy readfromstream(std::istream& iys); ( rednio) zaawansowane programowanie w C++ (ZPR) 34/46
35 Przykªadowe zadania typedef boost::shared_ptr<pracownik> PracownikPtr; class UnknownTypeException : public std::exception { }; class PracownikFactory { public: typedef PracownikPtr (*PracownikCreateFun)(); static PracownikFactory& getinstance() { static PracownikFactory instance; return instance; } void regist(int t, PracownikCreateFun fun) { creators_.insert( std::pair<int,pracownikcreatefun>(t,fun) ); } PracownikPtr create(std::istream& is) { int typ; is >> typ; Creators::const_iterator it = creators_.find(typ); if(it!= creators_.end() ) return it->second(); else throw UnknownTypeException(); } private: typedef std::map<int,pracownikcreatefun> Creators; Creators creators_; }; ( rednio) zaawansowane programowanie w C++ (ZPR) 35/46
36 Zad1 - przykªadowe rozwi zanie Przykªadowe zadania typedef std::vector<pracownikptr> Pracownicy; Pracownicy readfromstream(std::istream& is) { Pracownicy out; while(is) { try { PracownikPtr p = PracownikFactory::getInstance().create(is); out.push_back(p); } catch(unknowntypeexception&) {} } return out; } ( rednio) zaawansowane programowanie w C++ (ZPR) 36/46
37 Przykªadowe zadania class File { std::string name_; int size_; public: File(std::string n, int s) : name_(n), size_(s) {} std::string getname() const { return name_; } int getsize() const { return size_; } ~File(){} }; class Dir { typedef File* Child; typedef std::vector<child> Children; std::string name_; Children ch_; public: Dir(const std::string& n) : name_(n) {} std::string getname() const { return name_; } int getsize() const { int size = 0; for(children::const_iterator i=ch_.begin(); i!=ch_.end();++i) size += (*i)->getsize(); return size; } void add(child el) { ch_.push_back(el); } ~Dir() { for(children::iterator i=ch_.begin(); i!=ch_.end();++i) delete *i; } }; ( rednio) zaawansowane programowanie w C++ (ZPR) 37/46
38 Przykªadowe zadania Zad3 - poda napis, który zostanie wydrukowany M m; D1* d1 = &m; cout << m.f() << d1->f() << static_cast<d2&>(m).f() << static_cast<b&>(m).f() << flush; struct B { virtual int f() { return 1; } }; struct D1 : virtual public B { virtual int f() { return 2; } }; struct D2 : virtual public B { }; struct M : public D1, public D2 { virtual int f() { return 3; } }; ( rednio) zaawansowane programowanie w C++ (ZPR) 38/46
39 Przykªadowe zadania try { h(); } catch(const std::exception&) { std::cout << 'c'; } catch(const E& e) { std::cout << e.c_; } Ile razy zostanie wywoªany destruktor klasy X Je»eli denicja typu PX zostanie zmieniona na nast puj c : typedef X* PX;, to ile razy zostanie wywoªany destruktor klasy X struct E : public std::exception { char c_; E(char c):c_(c){} }; struct X { char c_; X(char c):c_(c){cout << c_;} ~X(){ std::cout << c_; } }; typedef std::auto_ptr<x> PX; PX f(char c){ return PX(new X(c) );} void g(const PX& px){ throw E(px->c_);} void h() { PX pa = f('a'); try { PX pb = pa; g(f('b'));} catch(const E& e){ cout << e.c_;throw;} } ( rednio) zaawansowane programowanie w C++ (ZPR) 39/46
40 Przykªadowe zadania Wekt2D w1(1,1), w2(2); assert( w1 + w2 == Wekt2D(3,1) ); class Wekt2D { public: explicit Wekt2D(int dx = 0, int dy ) : dx_(dx), dy_(dy) {} int getdx() { return dx_; } int getdy() { return dy_; } Wekt2D& operator+=(const Wekt2D& w) { Wekt2D o; o.dx_ = w.dx_ + dx_; o.dy_ = w.dy_ = dy_; return o; } Wekt2D& operator+(wekt2d& w) const { Wekt2D o(*this); o += w; return o; } int operator==(wekt2d w) const { return dy_ == w.dy_; } private: int dx_, dy_; }; std::ostream& operator<<(std::ostream os, Wekt2D w) { os << ( << w.getdx() <<, << w.getdy() << ) ; } ( rednio) zaawansowane programowanie w C++ (ZPR) 40/46
41 Przykªadowe zadania class Wekt2D { public: explicit Wekt2D(int dx = 0, int dy = 0) : dx_(dx), dy_(dy) {} int getdx() const { return dx_; } int getdy() const { return dy_; } Wekt2D& operator+=(const Wekt2D& w) { dx_ += w.dx_; dy_ += w.dy_; return *this; } Wekt2D operator+(const Wekt2D& w) const { Wekt2D o(*this); o += w; return o; } bool operator==(const Wekt2D& w) const { return dx_ == w.dx_ && dy_ == w.dy_; } private: int dx_, dy_; }; std::ostream& operator<<(std::ostream& os, const Wekt2D& w) { os << "(" << w.getdx() << "," << w.getdy() << ")"; return os; } ( rednio) zaawansowane programowanie w C++ (ZPR) 41/46
42 Przykªadowe zadania Zadanie 6 (Guru of The Week, 2), niepotrzebne obiekty string FindAddr( list<employee> l, string name ) { for( list<employee>::iterator i = l.begin(); i!= l.end(); i++ ) if( *i == name ) return (*i).addr; return ""; } ( rednio) zaawansowane programowanie w C++ (ZPR) 42/46
43 Przykªadowe zadania Zadanie 6 (Guru of The Week, 2), niepotrzebne obiekty string FindAddr( list<employee> l, string name ) { for( list<employee>::iterator i = l.begin(); i!= l.end(); i++ ) if( *i == name ) return (*i).addr; return ""; } string FindAddr( const list<employee>& l, const string& name ) { string addr; for( list<employee>::iterator i = l.begin(); i!= l.end(); ++i ) if( i->name() == name ){ addr = (*i).addr; break; } return addr; } ( rednio) zaawansowane programowanie w C++ (ZPR) 43/46
44 Przykªadowe zadania Zadanie 6 (Guru of The Week, 2), niepotrzebne obiekty string FindAddr( list<employee> l, string name ) { for( list<employee>::iterator i = l.begin(); i!= l.end(); i++ ) if( *i == name ) return (*i).addr; return ""; } string FindAddr( const list<employee>& l, const string& name ) { string addr; for( list<employee>::iterator i = l.begin(); i!= l.end(); ++i ) if( i->name() == name ){ addr = (*i).addr; break; } return addr; } list<employee>::const_iterator it = find_if(l.begin(), l.end(), bind(&employee::name,_1) == name); ( rednio) zaawansowane programowanie w C++ (ZPR) 44/46
45 Przykªadowe zadania Zadanie 6 (Guru of The Week, 2), niepotrzebne obiekty string FindAddr( list<employee> l, string name ) { for( list<employee>::iterator i = l.begin(); i!= l.end(); i++ ) if( *i == name ) return (*i).addr; return ""; } string FindAddr( const list<employee>& l, const string& name ) { string addr; for( list<employee>::iterator i = l.begin(); i!= l.end(); ++i ) if( i->name() == name ){ addr = (*i).addr; break; } return addr; } list<employee>::const_iterator it = find_if(l.begin(), l.end(), bind(&employee::name,_1) == name); auto it = find_if(l.begin(), l.end(), [&](Employee& e) return e.name == name;); ( rednio) zaawansowane programowanie w C++ (ZPR) 45/46
46 Przykªadowe zadania Dzi kuj ( rednio) zaawansowane programowanie w C++ (ZPR) 46/46
(Średnio) zaawansowane programowanie w C++ (ZPR)
(Średnio) zaawansowane programowanie w ++ (ZPR) Wykład 6 - łączenie ++ i a, powtórzenie Robert Nowak 2019L (Średnio) zaawansowane programowanie w ++ (ZPR) 1/45 Łączenie i ++ Kompilatory muszą być zgodne
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
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,
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...
Środowisko programisty
Środowisko programisty 1/35 Środowisko programisty Język Python cz. 3 dr inż. Grzegorz Michalski 7 kwietnia 2014 Środowisko programisty 2/35 Kod samotestujący Tworzenie def t e s t e r ( ) : p r i n t
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
Kurs rozszerzony języka Python
Wykład 1. 6 października 2017 Plan wykładu 1 2 3 4 Plan wykładu 1 2 3 4 Wykładowca: Termin wykładu: piątek, 10:15 12:00, sala 119 Strona wykładu http://www.ii.uni.wroc.pl/ marcinm/dyd/python Materiały
JĘZYK PYTHON - NARZĘDZIE DLA KAŻDEGO NAUKOWCA. Marcin Lewandowski [ ]
JĘZYK PYTHON - NARZĘDZIE DLA KAŻDEGO NAUKOWCA Marcin Lewandowski [ mlew@ippt.gov.pl ] PYTHON 3 2 Int int jest obecnie odpowiednikiem dawnego long int nie ma wartości maksymalnej (sys.maxint) 2/4 == 0.5
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 1. Wojciech Macyna. 3 marca 2016
Wykład 1 3 marca 2016 Słowa kluczowe języka Java abstract, break, case, catch, class, const, continue, default, do, else, enum, extends, final, finally, for, goto, if, implements, import, instanceof, interface,
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
PARADYGMATY PROGRAMOWANIA Wykład 4
PARADYGMATY PROGRAMOWANIA Wykład 4 Metody wirtualne i polimorfizm Metoda wirualna - metoda używana w identyczny sposób w całej hierarchii klas. Wybór funkcji, którą należy wykonać po wywołaniu metody wirtualnej
Python. Wprowadzenie. Jolanta Bachan
Python Wprowadzenie Jolanta Bachan Zainstaluj i przetestuj Pythona https://www.python.org/downloads/ print 'Hello world!' operatory numeryczne: + - * / // % ** operatory porównania: ==!= > < >=
3. Biblioteka standardowa Pythona
Gdańsk, 2014 i plików tekstowych Użyteczne typy danych Biblioteka numeryczna Operacje systemowe i programowanie współbieżne Sieci Inne Standardowa biblioteka Pythona to ok. 200 modułów i ok. 100 podmodułów.
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
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
JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.
JAVA Java jest wszechstronnym językiem programowania, zorientowanym obiektowo, dostarczającym możliwość uruchamiania apletów oraz samodzielnych aplikacji. Java nie jest typowym kompilatorem. Źródłowy kod
1. Klasa typu sealed. Przykład 1. sealed class Standard{ class NowyStandard:Standard{ // błd!!!
Temat: Klasy typu sealed. Klasy abstrakcyjne. Deklaracja i implementacja interfejsu. Typ Object i operatory is oraz as. Czas ycia obiektu. Destruktory. 1. Klasa typu sealed Przykład 1 Klasa typu sealed
Programowanie 2. Język C++. Wykład 3.
3.1 Programowanie zorientowane obiektowo... 1 3.2 Unie... 2 3.3 Struktury... 3 3.4 Klasy... 4 3.5 Elementy klasy... 5 3.6 Dostęp do elementów klasy... 7 3.7 Wskaźnik this... 10 3.1 Programowanie zorientowane
Przegląd języka Python. Łukasz Anwajler
Przegląd języka Python Łukasz Anwajler lukasz.anwajler@pjwstk.edu.pl Nie wierzcie mi na słowo Zaraz zobaczymy: czym jest Python dlaczego warto go używać jakie ma zastosowania gdzie z niego korzystają jakzacząć
Zaawansowane programowanie w C++ (PCP)
Zaawansowane programowanie w C++ (PCP) Wykład 3 - polimorfizm. dr inż. Robert Nowak - p. 1/14 Powtórzenie Powtórzenie: klasy autonomiczne: konstruktor, konstruktor kopiujacy, operator przypisania, destruktor
Programowanie obiektowe
Programowanie obiektowe Wykład 2: Wstęp do języka Java 3/4/2013 S.Deniziak: Programowanie obiektowe - Java 1 Cechy języka Java Wszystko jest obiektem Nie ma zmiennych globalnych Nie ma funkcji globalnych
Współczesne Narzędzia Obliczeniowe - Python
Współczesne Narzędzia Obliczeniowe - Python mgr. inż. M. Czubenko Politechnika Gdańska Wydział Elektroniki Telekomunikacji i Informatyki Katedra Systemów Decyzyjnych 7 maja 2012 Podstawy podstaw Co to
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
Kurs rozszerzony języka Python
Wykład 2. 13 października 2017 Plan wykładu Klasy i obiekty 1 Klasy i obiekty 2 3 4 Plan wykładu Klasy i obiekty 1 Klasy i obiekty 2 3 4 Deklaracja klasy Klasy i obiekty Przykłady class Figura: Pierwsza
Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),
Tworzenie obiektów Dostęp do obiektów jest realizowany przez referencje. Obiekty w języku Java są tworzone poprzez użycie słowa kluczowego new. String lan = new String( Lancuch ); Obszary pamięci w których
Technologie cyfrowe semestr letni 2018/2019
Technologie cyfrowe semestr letni 2018/2019 Tomasz Kazimierczuk Wykład 8 (15.04.2019) Kompilacja Kompilacja programu (kodu): proces tłumaczenia kodu napisanego w wybranym języku na kod maszynowy, zrozumiały
JAVA W SUPER EXPRESOWEJ PIGUŁCE
JAVA W SUPER EXPRESOWEJ PIGUŁCE Obiekt Obiekty programowe to zbiór własności i zachowań (zmiennych i metod). Podobnie jak w świecie rzeczywistym obiekty posiadają swój stan i zachowanie. Komunikat Wszystkie
Zaawansowany kurs języka Python
Wykład 1. 4 października 2013 Plan wykładu 1 2 3 4 Typy proste Kolekcje Instrukcje w języku (przypomnienie) Wykładowca: Termin wykładu: piątek, 10:15 12:00, sala 119 Strona wykładu http://www.ii.uni.wroc.pl/
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 ( ( *' *''*,
Programowanie obiektowe
Programowanie obiektowe Podstawowe cechy i możliwości języka Scala mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 2017 1 / 32 mgr inż. Krzysztof Szwarc Programowanie obiektowe Informacje
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.
Metody getter https://www.python-course.eu/python3_object_oriented_programming.php 0_class http://interactivepython.org/runestone/static/pythonds/index.html https://www.cs.auckland.ac.nz/compsci105s1c/lectures/
1 Atrybuty i metody klasowe
1 Atrybuty i metody klasowe Składowe klasowe (statyczne) Każdy obiekt klasy posiada własny zestaw atrybutów. Metody używają atrybutów odpowiedniego obiektu. Czasem potrzeba atrybutów wspólnych dla wszystkich
Kurs programowania. Wykład 13. Wojciech Macyna. 14 czerwiec 2017
Wykład 13 14 czerwiec 2017 Java vs cpp - podobieństwa Podobny sposób definiowania klas. Występowanie typów podstawowych: boolean, char, byte, short, int, long, float, double. Podobna zasada definiowania
Programowanie w języku C++
Programowanie w języku C++ Część dziewiąta Autor Roman Simiński Kontakt siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu, lektura tych materiałów nie zastąpi
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
Model obiektu w JavaScript
16 marca 2009 E4X Paradygmat klasowy Klasa Deniuje wszystkie wªa±ciwo±ci charakterystyczne dla wybranego zbioru obiektów. Klasa jest poj ciem abstrakcyjnym odnosz cym si do zbioru, a nie do pojedynczego
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
Programowanie obiektowe w C++ Wykªad 4
Programowanie obiektowe w C++ Wykªad 4 dr Lidia St pie«akademia im. Jana Dªugosza w Cz stochowie L. St pie«(ajd) Programowanie obiektowe w C++ 1 / 26 Dziedziczenie - podstawy Denicja klasy dziedzicz cej
Paradygmaty programowania. Paradygmaty programowania
Paradygmaty programowania Paradygmaty programowania Dr inż. Andrzej Grosser Cz estochowa, 2013 2 Spis treści 1. Zadanie 2 5 1.1. Wprowadzenie.................................. 5 1.2. Wskazówki do zadania..............................
PL/SQL. Zaawansowane tematy PL/SQL
PL/SQL Zaawansowane tematy PL/SQL Cele Przypomnienie kursorów Przypomnienie procedur i funkcji składowanych Poznanie pakietów składowanych 2 Bazę danych Oracle możemy traktować jakby była złożona z dwóch
Operator przypisania. Jest czym innym niż konstruktor kopiujący!
Operator przypisania Jest czym innym niż konstruktor kopiujący! Domyślnie jest zdefiniowany jako przypisanie składowa po składowej (zatem niekoniecznie bajt po bajcie). Dla klasy X definiuje się jako X&
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...
19. Obiektowo± 1 Kacze typowanie. 2 Klasy
1 Kacze typowanie 19. Obiektowo± Sk d interpreter wie, jakiego typu s np. przekazywane do metody argumenty? Tak naprawd wcale nie musi wiedzie. Do poprawnego dziaªania programu istotne jest,»e przekazywany
Zaawansowane programowanie w języku C++ Programowanie obiektowe
Zaawansowane programowanie w języku C++ Programowanie obiektowe Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka
Programowanie obiektowe
Programowanie obiektowe Laboratorium 1. Wstęp do programowania w języku Java. Narzędzia 1. Aby móc tworzyć programy w języku Java, potrzebny jest zestaw narzędzi Java Development Kit, który można ściągnąć
Programowanie w Internecie. Java
Programowanie w Internecie Java Autor: dr inż. Zofia Kruczkiewicz Literatura: L. Lemay, R. Cadenhead P. Naughton Krzysztof Barteczko Boone Barry Java 2 dla każdego Podręcznik Języka Programowania Java
EGZAMIN 2 (14 WRZEŚNIA 2015) JĘZYK C++
IMIĘ i NAZWISKO: przykładowe odpowiedzi NR: 0 EGZAMIN 2 (14 WRZEŚNIA 2015) JĘZYK C++ 1. Napisz precyzyjnie co to jest ptr jeśli: const * const Foo ptr; ptr to stały wskaźnik do stałego obiektu typu Foo
Programowanie Obiektowe i C++
Programowanie Obiektowe i C++ Marcin Benke Instytut Informatyki UW 6.11.2006 Marcin Benke (IIUW) Programowanie Obiektowe i C++ 6.11.2006 1 / 138 Operator przypisania Jest czym innym niż konstruktor kopiujacy!
Kurs języka Python. Wykład 11. Marcin Młotkowski. 4 stycznia Kontrola poprawności podczas biegu programu. 2 Testowanie oprogramowania
Wykład 11. 4 stycznia 2010 1 Kontrola poprawności podczas biegu programu 2 3 4 Asercje Asercja to formuła logiczna; Asercji używa się do kontrolowania czy np. wartość zmiennej ma odpowiedni typ lub mieści
Wyjątki. Wyjątki. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Politechnika Wrocławska
Bogdan Kreczmer bogdan.kreczmer@pwr.edu.pl Katedra Cybernetyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2018 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu dotyczącego programowania
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
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
Zaawansowany kurs języka Python
Wykład 4. 23 października 2015 Plan wykładu 1 2 Pliki tekstowe Trwałość obiektów CSV Strumienie Plan wykładu 1 2 Pliki tekstowe Trwałość obiektów CSV Strumienie Protokół iteracyjny Producent Umiem dostarczać
Język C++ Różnice między C a C++
Język C++ Różnice między C a C++ Plan wykładu C a C++ Różnice ogólne Typy Deklaracje zmiennych C++ jako rozszerzenie C Domyślne argumenty funkcji Przeciążanie funkcji Referencje Dynamiczny przydział pamięci
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
Programowanie obiektowe
Programowanie obiektowe Wykład 5 Marcin Młotkowski 23 marca 2017 Plan wykładu 1 2 3 4 5 Marcin Młotkowski Programowanie obiektowe 2 / 50 Historia Początkowe założenia Projekt OAK Sterowanie urządzeniami
Programowanie obiektowe w C++ Wykład 12
Programowanie obiektowe w C++ Wykład 12 dr Lidia Stępień Akademia im. Jana Długosza w Częstochowie L. Stępień (AJD) 1 / 22 Zakresowe pętle for double tab[5] {1.12,2.23,3.33,4.12,5.22 for(double x: tab)
Kurs programowania. Wykład 3. Wojciech Macyna. 22 marca 2019
Wykład 3 22 marca 2019 Klasy wewnętrzne Klasa wewnętrzna class A {... class B {... }... } Klasa B jest klasa wewnętrzna w klasie A. Klasa A jest klasa otaczajac a klasy B. Klasy wewnętrzne Właściwości
( 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
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
Programowanie 2. Język C++. Wykład 9.
9.1 Ukrywanie metod, metody nadpisane... 1 9.2 Metody wirtualne, wirtualny destruktor... 2 9.3 Metody czysto wirtualne... 6 9.4 Klasy abstrakcyjne... 7 9.5 Wielodziedziczenie... 9 9.1 Ukrywanie metod,
Wstęp do programowania obiektowego. WYKŁAD 3 Dziedziczenie Pola i funkcje statyczne Funkcje zaprzyjaźnione, this
Wstęp do programowania obiektowego WYKŁAD 3 Dziedziczenie Pola i funkcje statyczne Funkcje zaprzyjaźnione, this 1 Nazwa typu Rozmiar Zakres Uwagi bool 1 bit wartości true albo false stdbool.h TYPY ZNAKOWE
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,
Język Python (3) Język Python (3) 1/35
Język Python (3) Język Python (3) 1/35 Język Python (3) 2/35 Kod samotestujący Tworzenie def t e s t e r ( ) : p r i n t ( "Wywołanie funkcji testujacych..." ) i f n ame == main : t e s t e r ( ) Język
Wprowadzenie do języka Java
WSNHiD, Programowanie 2 Lab. 1 [ część 1 ] Wprowadzenie do języka Java Wprowadzenie Język programowania Java jest obiektowym językiem programowania. Powstał w 1995 i od tej pory był intensywnie rozwijany.
PROGRAMOWANIE OBIEKTOWE W C++ cz. 2. Dziedziczenie, operacje wej cia-wyj cia, przeładowanie operatorów.
PROGRAMOWANIE OBIEKTOWE W C++ cz. 2 Dziedziczenie, operacje wej cia-wyj cia, przeładowanie operatorów. Dziedziczenie Dziedziczenie jest to technika pozwalaj c na definiowanie nowej klasy przy wykorzystaniu
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. 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
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
TEMAT : KLASY DZIEDZICZENIE
TEMAT : KLASY DZIEDZICZENIE Wprowadzenie do dziedziczenia w języku C++ Język C++ możliwa tworzenie nowej klasy (nazywanej klasą pochodną) w oparciu o pewną wcześniej zdefiniowaną klasę (nazywaną klasą
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
Zaawansowane programowanie w języku C++ Klasy w C++
Zaawansowane programowanie w języku C++ Klasy w C++ Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka bez ograniczeń
Programowanie Komputerów
Programowanie Komputerów Łukasz Kuszner pokój 209, WETI http://www.kaims.pl/ kuszner/ kuszner@eti.pg.gda.pl Wykład 30 godzin, Laboratoria 30 godzin 2012/ Strona 1 z 28 1. Tablice w C# Indeksowane od zera
Python. Skąd taka nazwa? Kurs systemu UNIX 1
Python Skąd taka nazwa? Kurs systemu UNIX 1 Cechy języka marketing Obiektowy (dużo prostszy od C++) Darmowy Nie tylko Unix (choć tam najpopularniejszy) Wiele bibliotek (np. Tkinter, czyli interfejs do
Programowanie obiektowe, wykład nr 7. Przegląd typów strukturalnych - klasy i obiekty - c.d.
Dr hab. inż. Lucyna Leniowska, prof. UR, Zakład Mechatroniki, Automatyki i Optoelektroniki, IT Programowanie obiektowe, wykład nr 7 Przegląd typów strukturalnych - klasy i obiekty - c.d. Klasa - powtórzenie
Java Język programowania
Java Język programowania Język Java Bazuje i jest zbliżony do C/C++ Porosty zbiór typów danych (podział na typy prymitywne i obiektowe) Zarządzanie pamięcią i Garbage Collection Zintegrowana synchronizacja
Technologie cyfrowe semestr letni 2018/2019
Technologie cyfrowe semestr letni 2018/2019 Tomasz Kazimierczuk Wykład 7 (08.04.2019) Wikipedia Programowanie komputerów proces projektowania, tworzenia, testowania i utrzymywania kodu źródłowego programów
Kurs języka Python Wykład 6. Pliki tekstowe Pliki rekordów Pliki CSV Strumienie
Kurs języka Python Wykład 6. Pliki tekstowe Pliki rekordów Pliki CSV Strumienie Operacje na plikach Otwarcie i zamknięcie pliku: fh = open('plik', 'r') Atrybuty: 'r' odczyt 'w' zapis 'a' dopisanie 'r+'
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
Programowanie obiektowe zastosowanie języka Java SE
Programowanie obiektowe zastosowanie języka Java SE Wstęp do programowania obiektowego w Javie Autor: dr inŝ. 1 Java? Java język programowania obiektowo zorientowany wysokiego poziomu platforma Javy z
Podstawy Programowania ELEMENTY PROGRAMU i TYPY DANYCH
Podstawy Programowania ELEMENTY PROGRAMU i TYPY DANYCH Michał Bujacz bujaczm@p.lodz.pl B9 Lodex 207 godziny przyjęć: środy i czwartki 10:00-11:00 http://www.eletel.p.lodz.pl/bujacz/ 1 Pytania weryfikacyjne:
Kurs WWW. Paweł Rajba. pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/
Paweł Rajba pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/ Spis treści Wprowadzenie Automatyczne ładowanie klas Składowe klasy, widoczność składowych Konstruktory i tworzenie obiektów Destruktory i
Język Python (2) Język Python (2) 1/36
Język Python (2) Język Python (2) 1/36 Język Python (2) 2/36 Podstawy funkcji Pojęcia podstawowe Instrukcja def tworzy obiekt funkcji i przypisuje go do nazwy Instrukcja return przekazuje obiekt wynikowy
3-4. 5-7. 8-10. 11-12 15-18. 19-22
1. 2. 3-4. 5-7. 8-10. 11-12 13-14. 15-18. 19-22 23-28. 29-30. Programowanie strukturalne i obiektowe Typ wyliczeniowy, lista wyliczeniowa. Rzutowanie w C++. Wskaźniki i referencje. Działania na wskaźnikach.
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
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
Programowanie obiektowe w języku
Programowanie obiektowe w języku C++ Stanisław Gepner sgepner@meil.pw.edu.pl Dziedziczenie Wstęp Zacznijmy od przykładu Przykład rolniczy Każde zwierzątko wydaje dźwięk Każde się tak samo porusza Musimy
Low Level Virtual Machine
Wprowadzenie Low Level Virtual Machine J. Lamecki 14 czerwca 2011 Outline Wprowadzenie 1 Wprowadzenie Co to jest LLVM? Dlaczego moduªowy kompilator? Cechy LLVM 2 Format LLVM IR Bloki podstawowe SSA 3 U»yte
Python in the Enterprise
Python in the Enterprise Wykład 1 Bardzo krótki wstęp do Pythona Adam Dendek WFiIS, AGH Wstępne uwagi Dekoratory Klasy Wyjątki Socket Zawartość Kilka użytecznych modułów Użyteczne narzędzia Prośba do Państwa
JAVA. Platforma JSE: Środowiska programistyczne dla języka Java. Wstęp do programowania w języku obiektowym. Opracował: Andrzej Nowak
JAVA Wstęp do programowania w języku obiektowym Bibliografia: JAVA Szkoła programowania, D. Trajkowska Ćwiczenia praktyczne JAVA. Wydanie III,M. Lis Platforma JSE: Opracował: Andrzej Nowak JSE (Java Standard
Programowanie obiektowe
Programowanie obiektowe Wykład 4 Marcin Młotkowski 15 marca 2018 Plan wykładu 1 2 3 Klasa podstawowa Własne kolekcje Obiekty i wartości Marcin Młotkowski Programowanie obiektowe 141 / 224 Z czego składa
Języki i metodyka programowania. Język C# pętle, sterowanie, wyjątki
Język C# pętle, sterowanie, wyjątki Język C# pętle Pętle: while ( ) do { while ( ); for ( ; ; ) foreach ( in
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ę
EGZAMIN PROGRAMOWANIE II (10 czerwca 2010) pytania i odpowiedzi
EGZAMIN PROGRAMOWANIE II (10 czerwca 2010) pytania i odpowiedzi 1. Napisz wskaźnik do funkcji fun tak zdeklarowanej: T* fun( int, double const& ) const; definicja wskaźnika musi być precyzyjna, inaczej
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++)
Wykład. Materiały bazują częściowo na slajdach Marata Dukhana
Wykład Materiały bazują częściowo na slajdach Marata Dukhana Języki programowania Kompilowane np. C, C++, Pascal Interpretowane np. JavaScript, PHP, Python, VBA Pośrednie np. Java, C# Znane kompilatory
Programowanie obiektowe, wykład nr 6. Klasy i obiekty
Dr hab. inż. Lucyna Leniowska, prof. UR, Zakład Mechatroniki, Automatyki i Optoelektroniki, IT Programowanie obiektowe, wykład nr 6 Klasy i obiekty W programowaniu strukturalnym rozwój oprogramowania oparto