Потоци (Rev: 1.1)

Размер: px
Започни от страница:

Download "Потоци (Rev: 1.1)"

Препис

1 Потоци (Rev: 1.1) Любомир Чорбаджиев 1 lchorbadjiev@elsys-bg.org 1 Технологическо училище Електронни системи Технически университет, София 8 май 2007 г. Л. Чорбаджиев (ELSYS) Потоци (Rev: 1.1) 8 май 2007 г. 1 / 52

2 Съдържание 1 Йерархия на потоците за вход/изход 2 Писане в поток 3 Четене от поток 4 Състояние на потока 5 Четене на символни низове 6 Изключения генерирани от входно/изходните операции 7 Форматиране при изходни операции 8 Манипулатори 9 Файлови потоци Л. Чорбаджиев (ELSYS) Потоци (Rev: 1.1) 8 май 2007 г. 2 / 52

3 Въведение Йерархия на потоците за вход/изход Входно/изходните потоци в C++ са обектно ориентирани. Входно/изходните операции в C++ са строго типизирани. Това позволява при обработването на данни с различен тип да се използва C++ механизмът за предефиниране на оператори и функции. Входно/изходните операции са разширяеми. Лесно се реализират входно/изходни операции за типове, дефинирани от потребителя. Л. Чорбаджиев (ELSYS) Потоци (Rev: 1.1) 8 май 2007 г. 3 / 52

4 Йерархия на потоците за вход/изход Йерархия на потоците за вход/изход Л. Чорбаджиев (ELSYS) Потоци (Rev: 1.1) 8 май 2007 г. 4 / 52

5 Йерархия на потоците за вход/изход Йерархия на потоците за вход/изход Потоците за вход/изход са организирани като йерархия от шаблонни класове. Потоците, които се използват обичайно са: ostream, istream, ofstream, ifstream. Тези потоци са 8 битови т.е. последователността от символи, които се четат/пишат са от типа char. Дефинициите на тези потоци са следните: t y p e d e f basic_ostream < char > ostream ; t y p e d e f basic_istream < char > istream ; t y p e d e f basic_ofstream < char > ofstream ; t y p e d e f basic_ifstream < char > ifstream ; t y p e d e f basic_fstream < char > fstream ; Л. Чорбаджиев (ELSYS) Потоци (Rev: 1.1) 8 май 2007 г. 5 / 52

6 Йерархия на потоците за вход/изход Йерархия на потоците за вход/изход В езика C++ освен типа char (8 битов символ) е дефиниран и типа wchar_t (16 битов символ); Потоците, които работят с типа wchar_t са: t y p e d e f basic_ostream <wchar_t > wostream ; t y p e d e f basic_istream <wchar_t > wistream ; t y p e d e f basic_ofstream <wchar_t > wofstream ; t y p e d e f basic_ifstream <wchar_t > wifstream ; t y p e d e f basic_fstream <wchar_t > wfstream ; Л. Чорбаджиев (ELSYS) Потоци (Rev: 1.1) 8 май 2007 г. 6 / 52

7 Йерархия на потоците за вход/изход Работа с потоците за вход/изход Всички потоци за вход/изход са дефинирани в пространството от имена std. Основните потоци са дефинирани в заглавния файл <iostream>. В него са дефинирани обектите: cin обект от класа istream, който е свързан със стандартния вход. cout обект от класа ostream, който е свързан със стандартния изход. cerr обект от класа ostream, който е свързан със стандартната грешка. Този поток е небуфериран. Л. Чорбаджиев (ELSYS) Потоци (Rev: 1.1) 8 май 2007 г. 7 / 52

8 Писане в поток Писане в поток За писане в изходен поток се използва операторът operator<<. В класа basic_ostream този оператор е дефиниран за всички примитивни типове: 1 template < c l a s s Ch, c l a s s Tr= char_traits <Ch > > 2 c l a s s basic_ostream : 3 v i r t u a l p u b l i c basic_ios <Ch, Tr > { 4 p u b l i c : 5 //... 6 basic_ostream & operator < <( s h o r t n); 7 basic_ostream & operator < <( i n t n); 8 basic_ostream & operator < <( long n); 9 basic_ostream & operator < <( unsigned s h o r t n); 10 // }; Л. Чорбаджиев (ELSYS) Потоци (Rev: 1.1) 8 май 2007 г. 8 / 52

9 Писане в поток Писане в поток Операторът operator<< връща псевдоним, насочен към използвания изходен поток ostream. Това дава възможност операторът за изход да се прилага каскадно. Изразът: cout << "x=" << x; е еквивалентен на: ( cout. operator < <("x=" )). operator < <(x); Л. Чорбаджиев (ELSYS) Потоци (Rev: 1.1) 8 май 2007 г. 9 / 52

10 Писане в поток Операции за изход, дефинирани от потребителя Да разгледаме клас point, определен от потребителя: 1 c l a s s point { 2 double x_, y_; 3 p u b l i c : 4 point ( double x, double y) 5 : x_(x), y_(y) 6 {} 7 double get_x ( v o i d ) { r e t u r n x_ ;} 8 double get_y ( v o i d ) { r e t u r n y_ ;} 9 v o i d set_x ( double x ) { x_=x;} 10 v o i d set_y ( double y ) { y_=y;} 11 // }; Л. Чорбаджиев (ELSYS) Потоци (Rev: 1.1) 8 май 2007 г. 10 / 52

11 Писане в поток Операции за изход, дефинирани от потребителя Операторът operator<< за този тип може да бъде дефиниран по следния начин: 1 ostream & operator < <( ostream & out, 2 const point & p ) { 3 out << ( 4 << p. get_x () < <, 5 << p. get_y () < < ) ; 6 r e t u r n out ; 7 } Л. Чорбаджиев (ELSYS) Потоци (Rev: 1.1) 8 май 2007 г. 11 / 52

12 Четене от поток Четене от поток За четене от входен поток се използва операторът operator>>. В класа basic_istream този оператор е дефиниран за всички примитивни типове: 1 template < c l a s s Ch, c l a s s Tr= char_traits <Ch > > 2 c l a s s basic_istream : 3 v i r t u a l p u b l i c basic_ios <Ch, Tr > { 4 p u b l i c : 5 //... 6 basic_istream & operator > >( s h o r t & n); 7 basic_istream & operator > >( i n t & n); 8 basic_istream & operator > >( long & n); 9 // }; Операторът operator>> пропуска символите разделители (, \n, \r, \t, \f, \v ). Л. Чорбаджиев (ELSYS) Потоци (Rev: 1.1) 8 май 2007 г. 12 / 52

13 Състояние на потока Състояние на потока Най-разпространената грешка при използване на потоци за вход istream: това, което е в потока се различава от това, което очакваме да бъде в потока. Например: искаме да прочетем променлива от типа int, а в потока има букви. За да се предпазим от този тип грешки е необходимо преди да се използват прочетените от потока данни да се провери състоянието на потока. Л. Чорбаджиев (ELSYS) Потоци (Rev: 1.1) 8 май 2007 г. 13 / 52

14 Състояние на потока Състояние на потока Всеки поток istream и ostream има свързано с него състояние. Състоянието на потока е дефинирано в базовия клас basic_ios<>. 1 template < c l a s s Ch, c l a s s Tr= char_traits <Ch > > 2 c l a s s basic_ios : p u b l i c ios_base { 3 p u b l i c : 4 //... 5 bool good ( v o i d ) const ; 6 bool eof ( v o i d ) const ; 7 bool fail ( v o i d ) const ; 8 bool bad ( v o i d ) const ; 9 // }; Л. Чорбаджиев (ELSYS) Потоци (Rev: 1.1) 8 май 2007 г. 14 / 52

15 Състояние на потока Състояние на потока good() предходните операции са изпълнени успешно; eof() вижда се краят на файла; fail() следващата операция няма да се изпълни успешно; bad() потокът е повреден. Л. Чорбаджиев (ELSYS) Потоци (Rev: 1.1) 8 май 2007 г. 15 / 52

16 Състояние на потока Състояние на потока Състоянието на потока представлява набор от флагове, които са дефинирани в базовия клас ios_base: 1 c l a s s ios_base { 2 p u b l i c : 3 //... 4 t y p e d e f... iostate ; 5 s t a t i c const iostate 6 badbit, // потокът е развален 7 eofbit, // вижда се краят на файла 8 failbit,// следващата операция няма да се изпълни 9 goodbit ;// потокът е наред 10 // }; Л. Чорбаджиев (ELSYS) Потоци (Rev: 1.1) 8 май 2007 г. 16 / 52

17 Състояние на потока Състояние на потока В класа basic_ios<> са дефинирани следните методи за манипулиране на състоянието на потока: 1 template < c l a s s Ch, c l a s s Tr= char_traits <Ch > > 2 c l a s s basic_ios : p u b l i c ios_base { 3 p u b l i c : // връща флаговете на състоянието на потока 6 iostate rdstate ( v o i d ) const ; 7 // установява флаговете на състоянието 8 v o i d clear ( iostate f= goodbit ); 9 // добавя f към флаговете на състоянието 10 v o i d setstate ( iostate f ) { 11 clear ( rdstate () f); 12 } 13 }; Л. Чорбаджиев (ELSYS) Потоци (Rev: 1.1) 8 май 2007 г. 17 / 52

18 Състояние на потока Състояние на потока 1 template < c l a s s Ch, c l a s s Tr= char_traits <Ch > > 2 c l a s s basic_ios : p u b l i c ios_base { 3 p u b l i c : o p e r a t o r v o i d * () const ; 6 }; Операторът, дефиниран в ред 5, е оператор за преобразуване към void*. Този оператор връща стойност, различна от NULL, ако потокът е наред. Този оператор за преобразуване позволява потоците да участват в условни оператори и оператори за цикъл. Например: w h i l e ( cin ){ cin >> i; } Л. Чорбаджиев (ELSYS) Потоци (Rev: 1.1) 8 май 2007 г. 18 / 52

19 Състояние на потока Операции за вход, дефинирани от потребителя Нека формата за въвеждане на променливи от типа point е (x,y), където x и y са числа с плаваща точка. Тогава дефиницията на оператор за четене на обекти от класа point може да бъде направена по следния начин: 1 istream & operator > >( istream & in, point & p ) { 2 double x,y; 3 char c; 4 in >> c; 5 i f (c!= ( ) { 6 in. clear ( ios_base :: badbit ); 7 r e t u r n in; 8 } 9 in >> x >> c; Л. Чорбаджиев (ELSYS) Потоци (Rev: 1.1) 8 май 2007 г. 19 / 52

20 Състояние на потока Операции за вход, дефинирани от потребителя 10 i f (c!=, ) { 11 in. clear ( ios_base :: badbit ); 12 r e t u r n in; 13 } 14 in >> y >> c; 15 i f (c!= ) ) { 16 in. clear ( ios_base :: badbit ); 17 r e t u r n in; 18 } 19 i f (in. good ()){ 20 p. set_x (x); 21 p. set_y (y); 22 } 23 r e t u r n in; 24 }; Л. Чорбаджиев (ELSYS) Потоци (Rev: 1.1) 8 май 2007 г. 20 / 52

21 Четене на символни низове Четене на символи Операторът operator>> е предназначен за форматиран вход т.е. за четене на обекти от някакъв очакван тип, в някакъв очакван формат. Когато предварително не се знае какви типове ще има във входния поток, то от входния поток обикновено се четат символни низове. За тази цел се използва семейството от методи get(), дефинирани в basic_istream<>. Л. Чорбаджиев (ELSYS) Потоци (Rev: 1.1) 8 май 2007 г. 21 / 52

22 Четене на символни низове Четене на символи char c; cin. get (c); char buf [100]; cin. get (buf,100); cin. get (buf,100, \n ); cin. getline (buf,100); cin. getline (buf,100, \n ); Л. Чорбаджиев (ELSYS) Потоци (Rev: 1.1) 8 май 2007 г. 22 / 52

23 Четене на символни низове Четене на символи Функциите in.get(buf,n) и in.get(buf,n,term) прочитат не повече от n 1 символа. Тези методи винаги поставят 0 след прочетените в буфера символи. Ако при четене с get е срещнат завършващият символ, то той остава в потока. Следващият фрагмент е пример за хитър безкраен цикъл: 1 char buf [256]; 2 w h i l e ( cin ) { 3 cin. get (buf,256); 4 cout < < buf ; 5 } Функцията getline() се държи аналогично на get(), но прочита от istream срещнатия завършващ символ. Л. Чорбаджиев (ELSYS) Потоци (Rev: 1.1) 8 май 2007 г. 23 / 52

24 Четене на символни низове Четене на символи in.ignore(max,term) пропуска следващите символи докато не срещне символа term или не прочете max символа. in.putback(ch) превръща ch в следващия непрочетен символ от потока in. in.peek() връща следващия символ от потока in, но не го изтрива от потока. Л. Чорбаджиев (ELSYS) Потоци (Rev: 1.1) 8 май 2007 г. 24 / 52

25 Изключения генерирани от входно/изходните операции Изключения Да се проверява за грешки след всяка входно/изходна операция е неудобно. Поради това е предвидена възможност да помолите потока да генерира изключения, когато се променя състоянието му. В базовия клас basic_ios<> са дефинирани две функции: void exceptions(iostate st) установява състоянията, при които трябва да се генерира изключение. iostate exceptions() const връща набора от флагове на състоянието, при които се генерира изключение. Основната роля на генерирането на изключения при вход/изход е да се обработват малко вероятни изключителни ситуации. Изключенията могат да се използват и за контролиране на входно-изходните операции. Л. Чорбаджиев (ELSYS) Потоци (Rev: 1.1) 8 май 2007 г. 25 / 52

26 Изключения генерирани от входно/изходните операции Пример: изключения 1 #i n c l u d e < iostream > 2 #i n c l u d e <list > 3 4 u s i n g namespace std ; 5 6 i n t 7 main ( i n t argc, char * argv []) { 8 list < i n t > result ; 9 ios_ base :: iostate oldstate = cin. exceptions (); 10 cin. exceptions ( ios_base :: eofbit 11 ios_base :: badbit 12 ios_base :: failbit ); Л. Чорбаджиев (ELSYS) Потоци (Rev: 1.1) 8 май 2007 г. 26 / 52

27 Изключения генерирани от входно/изходните операции Пример: изключения 14 t r y { 15 f o r (;;){ 16 i n t i; 17 cin >> i; 18 result. push_back (i); 19 } 20 } catch ( const ios_base :: failure & e ) { 21 cout <<" ios_base :: failure catched... " << endl ; 22 } r e t u r n 0; 25 } Л. Чорбаджиев (ELSYS) Потоци (Rev: 1.1) 8 май 2007 г. 27 / 52

28 Форматиране Форматиране при изходни операции Форматирането на входно/изходните операции се контролира чрез класовете basic_ios и ios_base. За управление на форматирането на входно/изходните операции се използва набор от флагове, определени в ios_base. Част от флаговете, определящи състоянието на формата са представени в следния фрагмент: Л. Чорбаджиев (ELSYS) Потоци (Rev: 1.1) 8 май 2007 г. 28 / 52

29 Форматиране Форматиране при изходни операции 1 c l a s s ios_base { 2 p u b l i c : 3 t y p e d e f implementation_dependent fmtflags ; 4 s t a t i c const fmtflags 5 skipws, // пропуска разделителите при четене 6 boolalpha, // типа boolean се представят 7 // като true и false 8 // целочислени типове 9 dec, // десетична система 10 hex, // шестнадесетична система 11 oct, // осмично система 12 showbase, // поставя префикс, 13 // обозначаващ системата Л. Чорбаджиев (ELSYS) Потоци (Rev: 1.1) 8 май 2007 г. 29 / 52

30 Форматиране Форматиране при изходни операции 1 // числа с плаваща запетая 2 scientific,// представяне във вида: d.dddddeddd 3 fixed, // представяне във вида: ddddd.dd 4 showpoint, // незначеща нула пред десетичната точка 5 showpos, // явен знак + пред положителните числа 6...; 7 }; Л. Чорбаджиев (ELSYS) Потоци (Rev: 1.1) 8 май 2007 г. 30 / 52

31 Форматиране при изходни операции Състояние на формата skipws boolalpha dec hex oct showbase scientific fixed showpoint showpos пропускане на разделителните символи представяне на типа boolean целочислени типове в каква бройна система да се извеждат представяне на бройната система как се извеждат типовете с плаваща точка Л. Чорбаджиев (ELSYS) Потоци (Rev: 1.1) 8 май 2007 г. 31 / 52

32 Форматиране Форматиране при изходни операции За манипулиране на състоянието на формата, в класа ios_base са дефинирани следните методи: 1 c l a s s ios_base { 2 p u b l i c : fmtflags flags () const ; 5 fmtflags flags ( fmtflags f); 6 fmtflags setf ( fmtflags f){ 7 r e t u r n flags ( flags () f); 8 } Л. Чорбаджиев (ELSYS) Потоци (Rev: 1.1) 8 май 2007 г. 32 / 52

33 Форматиране Форматиране при изходни операции 1 fmtflags setf ( fmtflags f, fmtflags mask ) { 2 r e t u r n flags (( flags ()&~ mask ) ( f& mask )); 3 } 4 v o i d unset ( fmtflags mask ) { 5 flags ( flags ()&~ mask ); 6 } 7 }; Л. Чорбаджиев (ELSYS) Потоци (Rev: 1.1) 8 май 2007 г. 33 / 52

34 Форматиране Форматиране при изходни операции Стандартната схема за работа с флаговете за форматиране е следната: запомняме състоянието на формата; променяме състоянието на формата и използваме потока; възстановяваме предишното състояние на потока. 1 v o i d foo ( v o i d ) { 2 ios_base :: fmtflags old_flags = cout. flags (); 3 cout. setf ( ios_base :: oct ); cout. flags ( old_flags ); 6 }; Л. Чорбаджиев (ELSYS) Потоци (Rev: 1.1) 8 май 2007 г. 34 / 52

35 Форматиране при изходни операции Извеждане на цели числа Добавянето на флагове чрез метода setf() или чрез побитово ИЛИ ( ) е удобно, само когато дадена характеристика на потока се управлява от един бит. Тази схема е неудобна в случаи като определяне на бройната система. В такива случаи състоянието на формата не се определя от един бит. Решението на този проблем, което се използва в <iostream>, е да се предостави версия на setf() с втори псевдо-аргумент : cout. setf ( ios_base :: oct, ios_base :: basefield ); cout. setf ( ios_base :: dec, ios_base :: basefield ); cout. setf ( ios_base :: hex, ios_base :: basefield ); Л. Чорбаджиев (ELSYS) Потоци (Rev: 1.1) 8 май 2007 г. 35 / 52

36 Форматиране при изходни операции Извеждане на цели числа: пример 1 #i n c l u d e < iostream > 2 u s i n g namespace std ; 3 4 i n t main ( i n t argc, char * argv []) { 5 cout. setf ( ios_base :: showbase ); 6 cout. setf ( ios_base :: oct, ios_base :: basefield ); 7 cout < < 1234 < < < < 1234 < < endl ; 8 cout. setf ( ios_base :: dec, ios_base :: basefield ); 9 cout < < 1234 < < < < 1234 < < endl ; 10 cout. setf ( ios_base :: hex, ios_base :: basefield ); 11 cout < < 1234 < < < < 1234 < < endl ; r e t u r n 0; 14 }; Л. Чорбаджиев (ELSYS) Потоци (Rev: 1.1) 8 май 2007 г. 36 / 52

37 Форматиране при изходни операции Извеждане на цели числа: пример x4d2 0x4d2 Л. Чорбаджиев (ELSYS) Потоци (Rev: 1.1) 8 май 2007 г. 37 / 52

38 Форматиране при изходни операции Извеждане на числа с плаваща точка Извеждането на числа с плаваща запетая се определя от формата и точността. Форматите, които се използват за извеждане на числа с плаваща запетая са: Универсален позволява на потока сам да реши в какъв вид да се представи извежданото число. По подразбиране потоците използват този формат. Научен представя числото като десетична дроб с една цифра преди десетичната точка и показател на степента. Фиксиран точността определя максималният брой цифри след десетичната точка. По подразбиране точността е 6 цифри. Л. Чорбаджиев (ELSYS) Потоци (Rev: 1.1) 8 май 2007 г. 38 / 52

39 Форматиране при изходни операции Извеждане на числа с плаваща точка: пример 1 #i n c l u d e < iostream > 2 u s i n g namespace std ; 3 i n t main ( i n t argc, char * argv []) { 4 cout < < < < < < < < endl ; 5 cout. setf ( ios_base :: scientific, 6 ios_ base :: floatfield ); 7 cout < < < < < < < < endl ; 8 cout. setf ( ios_base :: fixed, 9 ios_ base :: floatfield ); 10 cout < < < < < < < < endl ; 11 cout. setf ( s t a t i c _ c a s t < ios_base :: fmtflags >(0), 12 ios_ base :: floatfield ); 13 cout < < < < < < < < endl ; 14 r e t u r n 0; 15 } Л. Чорбаджиев (ELSYS) Потоци (Rev: 1.1) 8 май 2007 г. 39 / 52

40 Форматиране при изходни операции Извеждане на числа с плаваща точка: пример e e Л. Чорбаджиев (ELSYS) Потоци (Rev: 1.1) 8 май 2007 г. 40 / 52

41 Форматиране при изходни операции Извеждане на числа с плаваща точка За промяна на точността на работа с числа с плаваща запетая се използват следните методи: c l a s s ios_base { p u b l i c :... unsigned precision () const ; unsigned precision ( unsigned n);... }; Използването на precision() влияе на всички входно/изходни операции с потока и действа до следващото използване на метода. Л. Чорбаджиев (ELSYS) Потоци (Rev: 1.1) 8 май 2007 г. 41 / 52

42 Форматиране при изходни операции Извеждане на числа с плаваща точка: пример 1 #i n c l u d e < iostream > 2 u s i n g namespace std ; 3 i n t main ( i n t argc, char * argv []) { 4 cout. precision (12); 5 cout < < < < < < < < 6 < < < < endl ; 7 cout. precision (9); 8 cout < < < < < < < < 9 < < < < endl ; 10 cout. precision (4); 11 cout < < < < < < < < 12 < < < < endl ; 13 r e t u r n 0; 14 } Л. Чорбаджиев (ELSYS) Потоци (Rev: 1.1) 8 май 2007 г. 42 / 52

43 Форматиране при изходни операции Извеждане на числа с плаваща точка: пример Л. Чорбаджиев (ELSYS) Потоци (Rev: 1.1) 8 май 2007 г. 43 / 52

44 Форматиране при изходни операции Полета за изход 1 #i n c l u d e < iostream > 2 u s i n g namespace std ; 3 i n t main ( i n t argc, char * argv []) { 4 cout << ( ; 5 cout. width (5); 6 cout < < 12 < < ) << endl ;; 7 cout << ( ; 8 cout. width (5); cout. fill ( # ); 9 cout < < 12 < < ) << endl ;; 10 cout << ( ; 11 cout. width (5); cout. fill ( # ); 12 cout << "a" << ) << endl ;; 13 cout << ( ; Л. Чорбаджиев (ELSYS) Потоци (Rev: 1.1) 8 май 2007 г. 44 / 52

45 Форматиране при изходни операции Полета за изход 14 cout. width (0); cout. fill ( # ); 15 cout << "a" << ) << endl ;; 16 r e t u r n 0; 17 } ( 12) (###12) (####a) (a) Л. Чорбаджиев (ELSYS) Потоци (Rev: 1.1) 8 май 2007 г. 45 / 52

46 Манипулатори Манипулатори Да се променя състоянието на потока посредством флаговете на формата е неудобно. Стандартната библиотека предоставя набор от функции и обекти за манипулиране на състоянието на потока манипулатори. Л. Чорбаджиев (ELSYS) Потоци (Rev: 1.1) 8 май 2007 г. 46 / 52

47 Манипулатори Манипулатори Основният начин за използване на манипулатори може да се види от следния пример: cout << boolalpha << true << << noboolalpha << t r u e ; което извежда: true 1. Използват се и манипулатори с аргументи: cout < < setprecision (10) < < < < endl ; което извежда: Манипулаторите с аргументи са дефинирани в <iomanip>. Л. Чорбаджиев (ELSYS) Потоци (Rev: 1.1) 8 май 2007 г. 47 / 52

48 Манипулатори boolalpha noboolalpha представяне на типа boolean showbase noshowbase представяне на бройната система showpoint noshowpoint showpos noshowpos skipws noskipws пропускане на разделителните символи dec целочислени типове в каква hex бройна система да се извеждат oct fixed как се извеждат типовете scientific с плаваща точка setprecision(n) точност на извеждането setw(int n) ширина на полето за извеждане setfill(int c) символ за запълване на полето Л. Чорбаджиев (ELSYS) Потоци (Rev: 1.1) 8 май 2007 г. 48 / 52

49 Файлови потоци Файлови потоци Потоците за работа с файлове са дефинирани в <fstream>. Потокът за писане във файл е basic_ofstream. template < c l a s s Ch, c l a s s Tr= char_traits <Ch > > c l a s s basic_ofstream : p u b l i c basic_ostream <Ch,Tr > { p u b l i c : e x p l i c i t basic_ofstream ( const char * p, openmode m= out trunc ); bool is_open () const ; v o i d open ( const char * p, openmode m= out trunc ); v o i d close ();... }; Л. Чорбаджиев (ELSYS) Потоци (Rev: 1.1) 8 май 2007 г. 49 / 52

50 Файлови потоци Файлови потоци c l a s s ios_base { p u b l i c : t y p e d e f implementation_dependent1 openmode ; s t a t i c const openmode app, ate, binary, in, out, trunc ;... }; in out app ate trunc отваряне за четене отваряне за запис запис на данните в края на файла; предизвиква отваряне на файла в режим out запис на данните в края на файла унищожава предишното съдържание на файла Л. Чорбаджиев (ELSYS) Потоци (Rev: 1.1) 8 май 2007 г. 50 / 52

51 Файлови потоци Файлови потоци 1 #i n c l u d e < iostream > 2 #i n c l u d e < fstream > 3 #i n c l u d e < cstdlib > 4 v o i d error ( const char * p, const char * p2="" ) { 5 std :: cerr << p << << p2 << std :: endl ; 6 std :: exit (1); 7 } Л. Чорбаджиев (ELSYS) Потоци (Rev: 1.1) 8 май 2007 г. 51 / 52

52 Файлови потоци 8 i n t main ( i n t argc, char * argv []) { 9 i f ( argc!=3) 10 error (" bad number of arguments... "); 11 std :: ifstream from ( argv [1]); 12 i f (! from ) 13 error (" bad input file ", argv [1]); 14 std :: ofstream to( argv [2]); 15 i f (! to) 16 error (" bad output file :", argv [2]); 17 char ch; 18 w h i l e ( from. get (ch )) 19 to.put (ch ); 20 i f (! from. eof ()! to) 21 error (" something strange... "); 22 r e t u r n 0; 23 } Л. Чорбаджиев (ELSYS) Потоци (Rev: 1.1) 8 май 2007 г. 52 / 52

Входно/изходните операции са разширяеми. Лесно се реализират входно/изходни операции за типове, дефинирани от потребителя. Потоци (Rev: 1.1) Любомир Ч

Входно/изходните операции са разширяеми. Лесно се реализират входно/изходни операции за типове, дефинирани от потребителя. Потоци (Rev: 1.1) Любомир Ч Входно/изходните операции са разширяеми. Лесно се реализират входно/изходни операции за типове, дефинирани от потребителя. Потоци (Rev: 1.1) Любомир Чорбаджиев 1 lchorbadjiev@elsys-bg.org 8 май 2007 г.

Подробно

Предефиниране на оператори. Копиращ конструктор. Оператор за присвояване Любомир Чорбаджиев Технологическо училище Електронни системи Технически униве

Предефиниране на оператори. Копиращ конструктор. Оператор за присвояване Любомир Чорбаджиев Технологическо училище Електронни системи Технически униве Предефиниране на оператори. Копиращ конструктор. Оператор за присвояване Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София lchorbadjiev@elsys-bg.org Revision :

Подробно

Обработка на грешки Изключения Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София Re

Обработка на грешки Изключения Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София Re Обработка на грешки Изключения Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София lchorbadjiev@elsys-bg.org Revision : 1.1 27 февруари 2005 г. 1 #include < cstdio

Подробно

Дефиниране на шаблон Шаблони (Templates) Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София

Дефиниране на шаблон Шаблони (Templates) Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София Дефиниране на шаблон Шаблони (Templates) Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София lchorbadjiev@elsys-bg.org Revision : 1.1 9 март 2005 г. template< class

Подробно

Динамична памет. Конструктори и деструктори Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София

Динамична памет. Конструктори и деструктори Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София Динамична памет. Конструктори и деструктори Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София lchorbadjiev@elsys-bg.org Revision : 1.3 16 ноември 2004 г. Пример:

Подробно

При изпълнението на програма се извършват определени действия над данните, дефинирани в програмата.тези данни могат да бъдат постоянни ( константи ) и

При изпълнението на програма се извършват определени действия над данните, дефинирани в програмата.тези данни могат да бъдат постоянни ( константи ) и При изпълнението на програма се извършват определени действия над данните, дефинирани в програмата.тези данни могат да бъдат постоянни ( константи ) или изменящи се (променливи). Тези данни най-често бива

Подробно

C++

C++ Управляващи оператори в C++ Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, 2018/19 г. 18 30 октомври 2018 г. Трифон Трифонов (УП 18/19) Управляващи оператори в C++ 18 30 октомври

Подробно

Класове в C++ (Rev: 742) Любомир Чорбаджиев 1 20 октомври 2006 г. Съдържание Съдържание 1 Обектно-ориентирано програмиране 1

Класове в C++ (Rev: 742) Любомир Чорбаджиев 1 20 октомври 2006 г. Съдържание Съдържание 1 Обектно-ориентирано програмиране 1 Класове в C++ (Rev: 742) Любомир Чорбаджиев 1 lchorbadjiev@elsys-bg.org 20 октомври 2006 г. Съдържание Съдържание 1 Обектно-ориентирано програмиране 1 1.1 Модулност............................ 1 1.2 Обектно-ориентирана

Подробно

Както бе споменато в предходните части съществуват три основни вида алгоритми: линейни, разклонени и циклични. В тази част ще разгледаме линейните алг

Както бе споменато в предходните части съществуват три основни вида алгоритми: линейни, разклонени и циклични. В тази част ще разгледаме линейните алг Както бе споменато в предходните части съществуват три основни вида алгоритми: линейни, разклонени и циклични. В тази част ще разгледаме линейните алгоритми. При линейни алгоритми действията се изпълняват

Подробно

В тази част, ще разгледаме аритметичните и логически операции, както, и включването им в изрази. В следващата таблица са дадени всички възможни операц

В тази част, ще разгледаме аритметичните и логически операции, както, и включването им в изрази. В следващата таблица са дадени всички възможни операц В тази част, ще разгледаме аритметичните и логически операции, както, и включването им в изрази. В следващата таблица са дадени всички възможни операции в езикът C и С++. Символ Предназначение Аритметични

Подробно

Сериализация Калин Георгиев 13 май 2016 г. Калин Георгиев Обектно ориентирано програмиране 13 май 2016 г. 1 / 23

Сериализация Калин Георгиев 13 май 2016 г. Калин Георгиев Обектно ориентирано програмиране 13 май 2016 г. 1 / 23 Калин Георгиев 13 май 2016 г. Калин Георгиев Обектно ориентирано програмиране 13 май 2016 г. 1 / 23 f «data; f» data; Калин Георгиев Обектно ориентирано програмиране 13 май 2016 г. 2 / 23 Първо изискване:

Подробно

Структура на програма в C - Част 7 - масиви, оператор за индексиране, sizeof оператор

Структура на програма в C - Част 7 - масиви, оператор за индексиране, sizeof оператор Структура на програма в C Част 7 - масиви, оператор за индексиране, sizeof оператор Иван Георгиев, Христо Иванов, Христо Стефанов Технологично училище "Електронни системи", Технически университет, София

Подробно

Структура на програма в C - Част 2 - типове, функции

Структура на програма в C - Част 2 - типове, функции Структура на програма в C Част 2 - типове, функции Иван Георгиев, Христо Иванов, Христо Стефанов Технологично училище "Електронни системи", Технически университет, София 10 март 2019 г. И. Георгиев, Х.

Подробно

Програмен език C Пламен Танов Ненко Табаков Мартин Вачовски Технологично училище Електронни системи Технически университет София версия 0.5

Програмен език C Пламен Танов Ненко Табаков Мартин Вачовски Технологично училище Електронни системи Технически университет София версия 0.5 Програмен език C Пламен Танов Ненко Табаков Мартин Вачовски Технологично училище Електронни системи Технически университет София версия 0.5 Литература Необходими програми Kernighan & Ritchie - The C Programming

Подробно

Масиви и низове Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, 2018/19 г ноември 2018 г. Трифон Трифонов (УП 18/19) Ма

Масиви и низове Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, 2018/19 г ноември 2018 г. Трифон Трифонов (УП 18/19) Ма Масиви и низове Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, 2018/19 г. 15 29 ноември 2018 г. Трифон Трифонов (УП 18/19) Масиви и низове 15 29 ноември 2018 г. 1 / 16 Масиви Логическо

Подробно

Масиви и низове Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, спец. Софтуерно инженерство, 2016/17 г. 9 ноември 2016 г. Триф

Масиви и низове Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, спец. Софтуерно инженерство, 2016/17 г. 9 ноември 2016 г. Триф и низове Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, спец. Софтуерно инженерство, 2016/17 г. 9 ноември 2016 г. Трифон Трифонов (УП 16/17) и низове 9 ноември 2016 г. 1 / 5 Логическо

Подробно

Масиви и низове Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, 2018/19 г. 15 ноември 6 декември 2018 г. Трифон Трифонов (УП 1

Масиви и низове Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, 2018/19 г. 15 ноември 6 декември 2018 г. Трифон Трифонов (УП 1 Масиви и низове Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, 2018/19 г. 15 ноември 6 декември 2018 г. Трифон Трифонов (УП 18/19) Масиви и низове 15.11-6.12.2018 г. 1 / 17 Масиви

Подробно

Проф

Проф Утвърдил:.. / доц. д-р Е. Великова / Утвърден от Факултетен съвет с протокол... /... СОФИЙСКИ УНИВЕРСИТЕТ СВ. КЛИМЕНТ ОХРИДСКИ Факултет по Математика и Информатика Специалност: Компютърни науки М И К 0

Подробно

2. Наследяване в C++ Съдържание Съдържание Наследяване (Rev: 1.2) Любомир Чорбаджиев 1 1 февруари 2007 г. 1 Наследяване 1 2

2. Наследяване в C++ Съдържание Съдържание Наследяване (Rev: 1.2) Любомир Чорбаджиев 1 1 февруари 2007 г. 1 Наследяване 1 2 2. Съдържание Съдържание Наследяване (Rev: 1.2) Любомир Чорбаджиев 1 lchorbadjiev@elsys-bg.org 1 февруари 2007 г. 1 Наследяване 1 2 2 3 Полиморфизъм 9 1. Наследяване Наследяване UML UML unified modeling

Подробно

Указатели. Маисиви, указатели, параметри на функции Калин Георгиев 21 декември 2016 г. Калин Георгиев Увод в програмирането 21 декември 2016 г. 1 / 23

Указатели. Маисиви, указатели, параметри на функции Калин Георгиев 21 декември 2016 г. Калин Георгиев Увод в програмирането 21 декември 2016 г. 1 / 23 Указатели. Маисиви, указатели, параметри на функции Калин Георгиев 21 декември 2016 г. Калин Георгиев Увод в програмирането 21 декември 2016 г. 1 / 23 Указатели! Калин Георгиев Увод в програмирането 21

Подробно

2. Лексически анализ. Основни понятия и алгоритъм на лексическия анализ. Програмна структура на лексическия анализатор Цел на упражнението Упражнениет

2. Лексически анализ. Основни понятия и алгоритъм на лексическия анализ. Програмна структура на лексическия анализатор Цел на упражнението Упражнениет 2. Лексически анализ. Основни понятия и алгоритъм на лексическия анализ. Програмна структура на лексическия анализатор Цел на упражнението Упражнението представя кратко въведение в теорията на лексическия

Подробно

Програмиране на Паскал

Програмиране на Паскал Поради връзката на С++ с езика С в голяма част от литературата е прието записването С/С++. Това е найизползваният език за програмиране в света, поради което синтаксисът на някои от по-новите езици като

Подробно

МИНИСТЕРСТВО НА ОБРАЗОВАНИЕТО И НАУКАТА

МИНИСТЕРСТВО НА ОБРАЗОВАНИЕТО И НАУКАТА МИНИСТЕРСТВО НА ОБРАЗОВАНИЕТО И НАУКАТА У Ч Е Б Н А П Р О Г Р А М А ЗА ЗАДЪЛЖИТЕЛНА ПРОФЕСИОНАЛНА ПОДГОТОВКА ПО ПРОГРАМИРАНЕ И АЛГОРИТМИЧНИ ЕЗИЦИ ЗА ПРОФЕСИЯ: КОД 482010 ИКОНОМИСТ - ИНФОРМАТИК СПЕЦИАЛНОСТ:

Подробно

Структура на програма в C - Част 9 - низове от символи, C-string

Структура на програма в C - Част 9 - низове от символи, C-string Структура на програма в C Част 9 - низове от символи, C-string Иван Георгиев, Христо Иванов, Христо Стефанов Технологично училище "Електронни системи", Технически университет, София 15 май 2019 г. И. Георгиев,

Подробно

Маисви

Маисви МАСИВИ 1. Структурни типове данни Структура от данни - организирана информация, която може да бъде описана, създадена и обработена с помощта на програма. Скаларни типове данни: Целочислен int Реален double

Подробно

Lush Green

Lush Green Класове Какво са класовете? Основен инструмент на ООП Средство за дефиниране на абстрактни типове данни Синтактична конструкция, която позволява логическо групиране на данни и операциите над тях Дефиниция

Подробно

Лекции по Програмиране първа част I. Въведение в компютрите и програмирането КОМПЮТЪР = АПАРАТУРА + ПРОГРАМНО ОСИГУРЯВАНЕ Апаратна част Hardware(Харду

Лекции по Програмиране първа част I. Въведение в компютрите и програмирането КОМПЮТЪР = АПАРАТУРА + ПРОГРАМНО ОСИГУРЯВАНЕ Апаратна част Hardware(Харду Лекции по Програмиране първа част I. Въведение в компютрите и програмирането КОМПЮТЪР = АПАРАТУРА + ПРОГРАМНО ОСИГУРЯВАНЕ Апаратна част Hardware(Хардуер)Програмна част Software(Софтуер) Хардуерът включва:

Подробно

Mathematica CalcCenter

Mathematica CalcCenter Mathematica CalcCenter Основни възможности Wolfram Mathematica CalcCenter е разработен на базата на Mathematica Professional и първоначално е бил предназначен за технически пресмятания. Информация за този

Подробно

Виртуални функции

Виртуални функции Виртуални функции Статично свързване Как компилаторът избира кой метод или коя функция да бъде извикана? Прави се сравнение между формални и фактически параметри и се избира най-точното съвпадение в случай,

Подробно

Лабораторно упражнение 6 Тема: Оператори за цикли в езика C++. Реализиране на циклични алгоритми I. Цел на лабораторното упражнение Да се затвърдят зн

Лабораторно упражнение 6 Тема: Оператори за цикли в езика C++. Реализиране на циклични алгоритми I. Цел на лабораторното упражнение Да се затвърдят зн Лабораторно упражние 6 Тема: Оператори за цикли в езика C++. Реализира на циклични алгоритми I. Цел на лабораторното упражние Да се затвърдят знанията на студентите за организацията и синтаксиса на програми

Подробно

4

4 Наследяване и 4 Трифон Трифонов Обектно-ориентирано програмиране, спец. Компютърни науки, 1 поток, спец. Софтуерно инженерство, 2016/17 г. 11 май 2017 г. Трифон Трифонов (ООП 16/17) Наследяване и голямата

Подробно

Microsoft Word - Lection06.doc

Microsoft Word - Lection06.doc Лекция 6 (8. Ноември, 2011) Връзки http://www.cplusplus.com/doc/tutorial/files/ http://www.cplusplus.com/reference/clibrary/cstdio/fprintf/ http://www.cplusplus.com/reference/clibrary/cstdio/fscanf/ http://www.cplusplus.com/reference/clibrary/cstdio/freopen/

Подробно

Lush Green

Lush Green Конструктори Жизнен цикъл на обект За обекта се заделя памет и се свързва с неговото име Извиква се подходящ конструктор на обекта... (достъп до компоненти на обект, изпълняване на операции) Достига се

Подробно

Лабораторно упражнение 4 Тема : Реализиране на линейни програми.. I. Цел на лабораторното упражнение Аритметични и логически операции в програмният ез

Лабораторно упражнение 4 Тема : Реализиране на линейни програми.. I. Цел на лабораторното упражнение Аритметични и логически операции в програмният ез Лабораторно упражнение 4 Тема : Реализиране на линейни програми.. I. Цел на лабораторното упражнение Аритметични и логически операции в програмният език С. Реализиране на линейни програми. Математически

Подробно

В настоящата тема ще разгледаме представянето на числата в изчислителните устройства. Ще покажем представянето на числата в позиционните бройни систем

В настоящата тема ще разгледаме представянето на числата в изчислителните устройства. Ще покажем представянето на числата в позиционните бройни систем В настоящата тема ще разгледаме представянето на числата в изчислителните устройства. Ще покажем представянето на числата в позиционните бройни системи, като се акцентира на десетична, двоична и шестнадесетична

Подробно

Динамична памет Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, спец. Софтуерно инженерство, 2016/17 г. 21 декември 2016 г. Тр

Динамична памет Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, спец. Софтуерно инженерство, 2016/17 г. 21 декември 2016 г. Тр Динамична памет Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, спец. Софтуерно инженерство, 2016/17 г. 21 декември 2016 г. Трифон Трифонов (УП 16/17) Динамична памет 21 декември

Подробно

Структура на програма в C - Част 6 - goto, switch, break и continue клаузи

Структура на програма в C - Част 6 - goto, switch, break и continue клаузи Структура на програма в C Част 6 - goto, switch, break и continue клаузи Иван Георгиев, Христо Иванов, Христо Стефанов Технологично училище "Електронни системи", Технически университет, София 21 април

Подробно

-

- Лениво оценяване и програмиране от по-висок ред Трифон Трифонов Функционално програмиране, спец. Информатика, 2015/16 г. 7 януари 2016 г. Трифон Трифонов (ФП-И 15/16) Лениво оценяване 7 януари 2016 г.

Подробно

Slide 1

Slide 1 Списъци. Структура и синтаксис. Създаване и показване. Основни операции(добавяне, изваждане на елемент или цял подсписък; подреждане). Трансформации. проф. дмн С. Христова Списъци Списъците / list са основна

Подробно

Black and White

Black and White Advanced C++ Memory Management Йордан Димитър Зайков Трендафилов Memory Management Effective C++ 2 nd ed: 3, 5, 7, 8, 9, 10 More Effective C++: 1, 3, 8 Exceptional C++: 35, 36 Какво всъщност прави new?

Подробно

5

5 4. ОПЕРАТОР ЗА ИЗБОР НА ДАННИ ОТ ТАБЛИЦА За различните видове справки най-често се използва оператор SELECT. Обикновено резултатът от изпълнението му е таблица. Общ вид на оператора 1 : [ DISTINCT ]

Подробно

Допълнения в периода Версия Модул Документи Към Права на достъп до екземпляри документи е добавено право Изтриване на док

Допълнения в периода Версия Модул Документи Към Права на достъп до екземпляри документи е добавено право Изтриване на док Допълнения в периода 25.04.2019 28.05.2019 Версия 4.42.0 Модул Документи Към Права на достъп до екземпляри документи е добавено право Изтриване на документ. Новото право е с по-нисък приоритет от правото

Подробно

Пощенска Банка Формат на входни файлове за масови плащания Съдържание: 1. Общи характеристики Плащания с кредитен превод Плащания на з

Пощенска Банка Формат на входни файлове за масови плащания Съдържание: 1. Общи характеристики Плащания с кредитен превод Плащания на з Пощенска Банка Формат на входни файлове за масови плащания Съдържание: 1. Общи характеристики.... Плащания с кредитен превод... 3 3. Плащания на заплати с кредитен превод.... Плащания с директен дебит

Подробно

Ръководство за бързо стартиране Microsoft Outlook 2013 изглежда по-различно от предишните версии и затова създадохме този справочник, за да ви помогне

Ръководство за бързо стартиране Microsoft Outlook 2013 изглежда по-различно от предишните версии и затова създадохме този справочник, за да ви помогне Ръководство за бързо стартиране Microsoft Outlook 2013 изглежда по-различно от предишните версии и затова създадохме този справочник, за да ви помогнем да го усвоите по-лесно. Нека стане ваш Персонализирайте

Подробно

Slide 1

Slide 1 Обектът на това проучване са механизмите, чрез които мултисензорите събират информация от реалния свят и я трансформират в електронни сигнали, използвани в информационни и управляващи системи. Описана

Подробно

Wolfram Mathematica & SQL

Wolfram Mathematica & SQL Wolfram Mathematica & SQL Емил Тоцев Сп. Информатика, 4 курс, група 1 б ф. номер: 0801261034 Р-л: Гл.ас. Христина Кулина ФМИ на ПУ П. Хилендарски, 23.02.2012 - Пловдив Съдържание: Въведение в DatabaseLink

Подробно

1 КаБел ЕООД Документация за софтуерния продукт КаБел ЕООД, подпомагащ организация на складовата дейност в железария Автор: Румен Ангелов История на в

1 КаБел ЕООД Документация за софтуерния продукт КаБел ЕООД, подпомагащ организация на складовата дейност в железария Автор: Румен Ангелов История на в 1 КаБел ЕООД Документация за софтуерния продукт КаБел ЕООД, подпомагащ организация на складовата дейност в железария Автор: Румен Ангелов История на версиите 1.10 *подредба име, размер в наличност екран

Подробно

Синтаксис за дефиниране на функции Трифон Трифонов Функционално програмиране, спец. Информатика, 2015/16 г. 6 януари 2016 г. Трифон Трифонов (ФП-И 15/

Синтаксис за дефиниране на функции Трифон Трифонов Функционално програмиране, спец. Информатика, 2015/16 г. 6 януари 2016 г. Трифон Трифонов (ФП-И 15/ Синтаксис за дефиниране на функции Трифон Трифонов Функционално програмиране, спец. Информатика, 2015/16 г. 6 януари 2016 г. Трифон Трифонов (ФП-И 15/16) Синтаксис за дефиниране на функции 6 януари 2016

Подробно

Управление на перална машина с размита логика Пералните машини в наши дни са обикновен уред в дома. Най-голяма изгода, която потребителя получава от п

Управление на перална машина с размита логика Пералните машини в наши дни са обикновен уред в дома. Най-голяма изгода, която потребителя получава от п Управление на перална машина с размита логика Пералните машини в наши дни са обикновен уред в дома. Най-голяма изгода, която потребителя получава от пералната машина е, че имат почистване, центрофугиране

Подробно

ОСНОВИ НА ЕЗИКА С# Интеграция на езиците за програмиране Една от най-добрите черти на.net Framework е възможността за интеграция на множество езици за

ОСНОВИ НА ЕЗИКА С# Интеграция на езиците за програмиране Една от най-добрите черти на.net Framework е възможността за интеграция на множество езици за Интеграция на езиците за програмиране Една от най-добрите черти на.net Framework е възможността за интеграция на множество езици за програмиране. Тя позволява на програмиста да работи на предпочитания

Подробно

ИНТЕРНЕТ ПРОГРАМИРАНЕ - JAVA JAVA ОБЕКТИ Ненко Табаков Пламен Танов Технологическо училище Електронни системи Технически университет София 9 октомври

ИНТЕРНЕТ ПРОГРАМИРАНЕ - JAVA JAVA ОБЕКТИ Ненко Табаков Пламен Танов Технологическо училище Електронни системи Технически университет София 9 октомври JAVA ОБЕКТИ Ненко Табаков Пламен Танов Технологическо училище Електронни системи Технически университет София 9 октомври 2008 JAVA ОБЕКТИ Забележка: Тази лекция е адаптация на лекция от курса: 6.092 Java

Подробно