Обработка на грешки Изключения Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София Re
|
|
- Живко Мавродиев
- преди 4 години
- Прегледи:
Препис
1 Обработка на грешки Изключения Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София Revision : февруари 2005 г. 1 #include < cstdio > 2 using namespace std ; 3 4 int main (void ) { 5 FILE * infile = fopen (" temp1. txt ","r"); 6 i f ( infile == NULL ) { 7 printf (" error opening infile temp1. txt \n"); 8 return 1; 9 10 FILE * outfile = fopen (" temp2. txt ","w" ); 11 i f ( outfile == NULL ) { 12 printf (" error opening outfile temp2. txt \n" ); 13 fclose ( infile ); 14 return 1; 15 2 Обработка на грешки Има различни философски подходи към обработката на грешки. Това не може да се случи нека не се тревожим за ситуации, които не могат да се случат. Ненамеса нека другите се оправят с грешките. Обикновено води до ненормално състояние на програмата, поради което тя умира на друго място. Грешките са навсякъде вграждане на код за обработка на грешките навсякъде в програмата. Обработка на изключения грешките са изключения. Позволява да се оптимизира нормалното поведение на програмата. 16 int ch = -1; 17 while (( ch= fgetc ( infile ))!= EOF ){ 18 fputc (ch, outfile ); fclose ( infile ); 22 fclose ( outfile ); 23 return 0; 24 1
2 Обработка на изключения Механизмът на изключенията в C++ е: разработен за обработка на грешки и други изключителни ситуации; предназначен за обработка на синхронни изключения грешки при вход/изход, излизане извън границите на масив, и т.н.; не е предназначен за обработка на асинхронни събития движение на мишката, обработка на прекъсванията и т.н.; Изключенията не трябва да се използват като управляващи структури (не са оптимизарани за такава употреба); Развиване на стека (Stack Unwind) try{ fun1(); fun2(); catch(exception& tocatch){{ // exception handling fun1()definition fun2()definition if(bad_error) throw exception; 3 5 Обработка на изключения Обработката на изключенията в C++ е разделена на две части: Функцията, която открие грешка по време на изпълнението си, но не знае как да се справи с нея (как да я обработи) генерира изключение (throw); Функцията, която може да се справи с проблем от даден тип прихваща (catch) тези изключения и ги обработва; Генериране на изключения 1 void fun (void ) { 2 //... 3 i f ( bad_error ) 4 throw exception (); 5 //
3 Обработка на изключения 1 try { 2 //... 3 fun (); 4 // catch( exception ){ 7 // recovery/ clean up 8 9 catch( other_ exception ){ 10 // int main ( int argc, char* argv []){ 21 int n, d; 22 double result ; cout <<" Enter two ingegers ( EOF for end )" <<endl ; 25 while ( cin >> n >> d ){ 26 try { 27 result = quotient(n,d); 28 cout <<" quotient:" <<result << endl ; catch(const DivisionByZeroError & ex ){ 31 cout <<" exception catched : " <<ex. what ()<< endl ; cout <<" Enter two ingegers ( EOF for end )" << endl ; return 0; 36 7 Пример: Генериране и обработка на изключения 1 #include < iostream > 2 #include < string > 3 using namespace std ; 4 5 class DivisionByZeroError{ 6 string message_; 7 public : 8 DivisionByZeroError( void) 9 : message_(" division by zero ") 10 { 11 const string & what ( void ) const { 12 return message_; ; 15 double quotient( int n, int d){ 16 i f (d ==0) 17 throw DivisionByZeroError (); 18 return static_cast <double>( n)/ d; 19 ; Enter two ingegers (EOF for end) 5 7 quotient: Enter two ingegers (EOF for end) 7 0 exception catched: division by zero Enter two ingegers (EOF for end) 8 2 quotient:4 Enter two ingegers (EOF for end) 8
4 Генериране на изключения За генериране на изключение в C++ се използва ключовата дума throw; Обикновено throw има един операнд; в по-редки ситуации throw може да се използва без операнди; Най-често за операнди на throw се използват обекти; Генерираното изключение се прихваща от най-близкия catch блок; Изпълнението на блока, където е генерирано изключението, спира; Обработка на изключение Изключението се прихваща, само ако неговият тип съответства на дефинирания в catch блока тип на изключението (ExceptionType); Когато някое изключение не се прихване от нито един catch блок се извиква функцията terminate(); по подразбиране тази функция вика системната функция abort(); Управлението на програмата се предава на най-близкият catch блок, който успее да прихване изключението; 9 11 Обработка на изключение Обработка на изключение Обработката на изключение се извършва в catch блок; Кодът, който може да генерира изключение, трябва да бъде разположен в try блок; Синтаксиса на try catch блока е: try { // код, генериращ изключения ; catch( ExceptionType parameter ){ // код, обработващ изключенията ; Изключенията, които се прихващат от даден catch блок: catch( ExceptionType parameter ){ // exception handling code са: Типът на изключението съвпада напълно с типа на параметъра <ExceptionType> в catch блока; Типът на параметъра в catch блока <ExceptionType> е базов клас за типа на изключението; 10 12
5 Пример: Обработка на изключение 1 try { 2 // код, генериращ 3 // изключения от типовете 4 // A, B, C и D 5 catch(const B& tocatch ) { 6 //... 7 catch(const A& tocatch ) { 8 //... 9 Пример: Повторно генериране на изключение 1 #include < iostream > 2 #include < exception > 3 using namespace std ; 4 5 void fun (void ) { 6 try { 7 cout <<" Exception thrown in fun ()" << endl ; 8 throw exception (); 9 cout <<" This should not be printed " << endl ; catch( exception & ex ){ 12 cout <<" Exception handled in fun ()" << endl ; 13 throw; cout <<" This should not be printed " <<endl ; Повторно генериране на изключение Използва се, когато прихванатото изключение не може да бъде обработено; Синтаксис: catch( ExceptionType parameter ){ //... throw; Повторно генериране на изключение може да се изпълни само в рамките на catch-блок; Повторно генерираното изключение се обработва от следващият catch-блок; 17 int main ( int argc,char* argv []){ try { 20 fun (); 21 cout <<" This should not be printed " << endl ; catch(const exception & ex ){ 24 cout <<" Exception handled in main ()" <<endl ; cout <<" Program can continue" << endl ; return 0; 30 Exception thrown in function fun() Exception handled in function fun() Exception handled in main() Program can continue 14
6 Спецификация на изключенията Дефинира какви изключения могат да бъдат генерирани от дадена функция. Синтаксис: void fun ( void ) throw ( exception1, exception2 ) { /*... */ Функцията може да генерира изключения само от изброените в спецификацията типове или изключения, чийто тип е наследник на някой от специфицираните. Обработка на неочаквани изключения Функцията std::unexpected(): Вика се когато се генерира изключение, чийто тип не е включен в спецификацията на изключенията. По подразбиране, поведението на std::unexpected() е да извика std::terminate(). Поведението на std::unxpected() може да се промени чрез std::set_unexpected() Спецификация на изключенията Ако функцията генерира друг тип изключение (такъв който не е в спецификацията), се извиква функцията unexpected(). Ако спецификацията е throw(), то това означава, че функцията не трябва да генерира изключения; ако се генерира какво да е изключение се извиква функцията unexpected(). Ако функцията няма throw спецификация, то това означава, че тя може да генерира всякакви изключения. Обработка на неочаквани изключения Функцията std::terminate(): Вика се когато някое генерирано изключение не бъде обработено от нито един catch блок. По подразбиране поведението на std::terminate() е да извика abort(). Поведението на std::terminate() може да се промени чрез std::set_terminate()
7 Изключения в конструкторите Генерирането на изключения дава възможност да се предаде информация за грешка, при работата на конструктора. Ако в конструктора се генерира изключение, то автоматично се викат: деструкторите на всички член-променливи, които са инициализирани преди генерирането на изключение; деструкторите на базовите класове, чиито конструктори са завършили работата си преди генериране на изключението. Генерирането на изключения в копиращите конструктори и операторите за присвояване трябва да се избягва. 20 Изключения и управление на ресурсите Пример: 1 FILE * f= fopen ( filename,"w" ); 2 // code, throwing exceptions 3 fclose (f); Пример: 1 FILE * f= fopen ( filename,"w" ); 2 try { 3 // code, throwing exceptions 4 5 catch(...){ 6 fclose (f ); 7 throw; 8 9 // fclose (f); 22 Изключения в деструкторите Когато деструкторът се вика в процеса на обработка на някакво изключение, т.е. при развиване на стека, то деструкторът не трябва да генерира изключения. Ако в такъв случай деструкторът все пак генерира изключение, то автоматично се вика std::terminate(). Решение: в конструкторът заемаме ресурса, в деструктора го освобождаваме: 1 class File_ ptr { 2 FILE * pf_ ; 3 public : 4 File_ ptr(const char* name, const char* a){ 5 pf_ = fopen (name,a); 6 7 ~ File_ptr(void ){ 8 fclose ( pf_ ); 9 10 operator FILE *(){ return pf_ ; 11 ; 12 File_ptr f( filename,"w"); 13 // code, throwing exceptions 21
8 Изключения и управление на ресурсите Пример: 1 int * ptr =new[100]; 2 // code, throwing exceptions 3 delete [] ptr ; Стандартни изключения Дефинирани са в <exception>; std::exception Пример: 1 int * ptr =new[100]; 2 try { 3 // code, throwing exceptions 4 5 catch(...){ 6 delete [] ptr ; 7 throw; 8 9 // delete [] ptr ; std::logic_error std::bad_alloc std::runtime_error std::bad_cast Решение: в конструкторът заемаме ресурса, в деструктора го освобождаваме: 1 class Mem_ptr { 2 int * ptr_ ; 3 public : 4 Mem_ptr (unsigned size ){ 5 ptr_ =new[ size ]; 6 7 ~ Mem_ptr (void ){ 8 delete [] ptr_ ; 9 10 operator int *(){ return ptr_ ; 11 ; 12 Mem_ptr mptr (100); 13 // code, throwing exceptions Използване на изкключения: масив с проверка на границите 1 #include < iostream > 2 using namespace std ; 3 4 class IndexOutOfBounds {; 5 6 class Array { 7 unsigned int size_ ; 8 int * data_ ; 9 public : 10 Array (unsigned int size =10) 11 : size_ ( size ), data_ (new int [ size_ ]) 12 { 13 Array (const Array & other ) 14 : size_ ( other. size_ ), data_ (new int [ size_ ]) 15 { 16 for (unsigned int i =0; i < size_ ; i ++) 17 data_ [i]= other. data_ [i]; ~ Array (void ) { 20 delete [] data_ ; 21 25
9 22 unsigned size () const { 23 return size_ ; Array & operator=( const Array & other ) { 26 i f ( this!=& other ) { 27 delete [] data_ ; 28 size_ = other. size_ ; 29 data_ =new int [ size_ ]; 30 for (unsigned i =0;i< size_ ;i ++) 31 data_ [i ]= other. data_ [i]; return * this ; int & operator[]( unsigned int index ) 36 throw ( IndexOutOfBounds) 37 { 38 i f ( index >= size_ ) { 39 throw IndexOutOfBounds (); return data_ [ index ]; ; 44 int main ( void ) { 45 Array a1 (3), a2; 46 for ( int i =0;i <3;++ i ) { 47 a1[i]=i; a2=a1; 50 for ( int i =0;i <3; i ++) { 51 cout << "a2[" << i << "]=" << a2[i] < < endl ; try { 54 cout << "a2[" < < 3 < < "]=" << a2 [3] < < endl ; 55 catch( IndexOutOfBounds tocatch ) { 56 cerr < < " IndexOutOfBounds exception catched... " 57 << endl ; return 0; 60 lubo@dobby:~/school/cpp/notes>./a.out a2[0]=0 a2[1]=1 a2[2]=2 IndexOutOfBounds exception catched...
Дефиниране на шаблон Шаблони (Templates) Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София
Дефиниране на шаблон Шаблони (Templates) Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София lchorbadjiev@elsys-bg.org Revision : 1.1 9 март 2005 г. template< class
ПодробноДинамична памет. Конструктори и деструктори Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София
Динамична памет. Конструктори и деструктори Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София lchorbadjiev@elsys-bg.org Revision : 1.3 16 ноември 2004 г. Пример:
ПодробноПредефиниране на оператори. Копиращ конструктор. Оператор за присвояване Любомир Чорбаджиев Технологическо училище Електронни системи Технически униве
Предефиниране на оператори. Копиращ конструктор. Оператор за присвояване Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София lchorbadjiev@elsys-bg.org Revision :
Подробно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?
ПодробноСериализация Калин Георгиев 13 май 2016 г. Калин Георгиев Обектно ориентирано програмиране 13 май 2016 г. 1 / 23
Калин Георгиев 13 май 2016 г. Калин Георгиев Обектно ориентирано програмиране 13 май 2016 г. 1 / 23 f «data; f» data; Калин Георгиев Обектно ориентирано програмиране 13 май 2016 г. 2 / 23 Първо изискване:
Подробно4
Наследяване и 4 Трифон Трифонов Обектно-ориентирано програмиране, спец. Компютърни науки, 1 поток, спец. Софтуерно инженерство, 2016/17 г. 11 май 2017 г. Трифон Трифонов (ООП 16/17) Наследяване и голямата
ПодробноВиртуални функции
Виртуални функции Статично свързване Как компилаторът избира кой метод или коя функция да бъде извикана? Прави се сравнение между формални и фактически параметри и се избира най-точното съвпадение в случай,
ПодробноПотоци (Rev: 1.1)
Потоци (Rev: 1.1) Любомир Чорбаджиев 1 lchorbadjiev@elsys-bg.org 1 Технологическо училище Електронни системи Технически университет, София 8 май 2007 г. Л. Чорбаджиев (ELSYS) Потоци (Rev: 1.1) 8 май 2007
ПодробноLush Green
Конструктори Жизнен цикъл на обект За обекта се заделя памет и се свързва с неговото име Извиква се подходящ конструктор на обекта... (достъп до компоненти на обект, изпълняване на операции) Достига се
Подробно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
ПодробноВходно/изходните операции са разширяеми. Лесно се реализират входно/изходни операции за типове, дефинирани от потребителя. Потоци (Rev: 1.1) Любомир Ч
Входно/изходните операции са разширяеми. Лесно се реализират входно/изходни операции за типове, дефинирани от потребителя. Потоци (Rev: 1.1) Любомир Чорбаджиев 1 lchorbadjiev@elsys-bg.org 8 май 2007 г.
ПодробноLush Green
Класове Какво са класовете? Основен инструмент на ООП Средство за дефиниране на абстрактни типове данни Синтактична конструкция, която позволява логическо групиране на данни и операциите над тях Дефиниция
ПодробноСтруктура на програма в C - Част 9 - низове от символи, C-string
Структура на програма в C Част 9 - низове от символи, C-string Иван Георгиев, Христо Иванов, Христо Стефанов Технологично училище "Електронни системи", Технически университет, София 15 май 2019 г. И. Георгиев,
ПодробноВ тази част, ще разгледаме аритметичните и логически операции, както, и включването им в изрази. В следващата таблица са дадени всички възможни операц
В тази част, ще разгледаме аритметичните и логически операции, както, и включването им в изрази. В следващата таблица са дадени всички възможни операции в езикът C и С++. Символ Предназначение Аритметични
ПодробноСтруктура на програма в C - Част 7 - масиви, оператор за индексиране, sizeof оператор
Структура на програма в C Част 7 - масиви, оператор за индексиране, sizeof оператор Иван Георгиев, Христо Иванов, Христо Стефанов Технологично училище "Електронни системи", Технически университет, София
ПодробноКласове в 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 Обектно-ориентирана
ПодробноПрограмиране на Паскал
Поради връзката на С++ с езика С в голяма част от литературата е прието записването С/С++. Това е найизползваният език за програмиране в света, поради което синтаксисът на някои от по-новите езици като
ПодробноУказатели. Маисиви, указатели, параметри на функции Калин Георгиев 21 декември 2016 г. Калин Георгиев Увод в програмирането 21 декември 2016 г. 1 / 23
Указатели. Маисиви, указатели, параметри на функции Калин Георгиев 21 декември 2016 г. Калин Георгиев Увод в програмирането 21 декември 2016 г. 1 / 23 Указатели! Калин Георгиев Увод в програмирането 21
ПодробноМаисви
МАСИВИ 1. Структурни типове данни Структура от данни - организирана информация, която може да бъде описана, създадена и обработена с помощта на програма. Скаларни типове данни: Целочислен int Реален double
ПодробноC++
Управляващи оператори в C++ Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, 2018/19 г. 18 30 октомври 2018 г. Трифон Трифонов (УП 18/19) Управляващи оператори в C++ 18 30 октомври
ПодробноПри изпълнението на програма се извършват определени действия над данните, дефинирани в програмата.тези данни могат да бъдат постоянни ( константи ) и
При изпълнението на програма се извършват определени действия над данните, дефинирани в програмата.тези данни могат да бъдат постоянни ( константи ) или изменящи се (променливи). Тези данни най-често бива
ПодробноКанонична форма на клас или 4 (голямата четворка) Трифон Трифонов Обектно-ориентирано програмиране, спец. Компютърни науки, 1 поток, спец. Софтуерно и
Канонична форма на клас или 4 (голямата четворка) Трифон Трифонов Обектно-ориентирано програмиране, спец. Компютърни науки, 1 поток, спец. Софтуерно инженерство, 2016/17 г. 6 април 2017 г. Трифон Трифонов
ПодробноСтруктура на програма в C - Част 6 - goto, switch, break и continue клаузи
Структура на програма в C Част 6 - goto, switch, break и continue клаузи Иван Георгиев, Христо Иванов, Христо Стефанов Технологично училище "Електронни системи", Технически университет, София 21 април
Подробно2. Лексически анализ. Основни понятия и алгоритъм на лексическия анализ. Програмна структура на лексическия анализатор Цел на упражнението Упражнениет
2. Лексически анализ. Основни понятия и алгоритъм на лексическия анализ. Програмна структура на лексическия анализатор Цел на упражнението Упражнението представя кратко въведение в теорията на лексическия
ПодробноИНТЕРНЕТ ПРОГРАМИРАНЕ - JAVA JAVA ОБЕКТИ Ненко Табаков Пламен Танов Технологическо училище Електронни системи Технически университет София 9 октомври
JAVA ОБЕКТИ Ненко Табаков Пламен Танов Технологическо училище Електронни системи Технически университет София 9 октомври 2008 JAVA ОБЕКТИ Забележка: Тази лекция е адаптация на лекция от курса: 6.092 Java
ПодробноДинамична памет Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, спец. Софтуерно инженерство, 2016/17 г. 21 декември 2016 г. Тр
Динамична памет Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, спец. Софтуерно инженерство, 2016/17 г. 21 декември 2016 г. Трифон Трифонов (УП 16/17) Динамична памет 21 декември
ПодробноСтруктура на програма в C - Част 2 - типове, функции
Структура на програма в C Част 2 - типове, функции Иван Георгиев, Христо Иванов, Христо Стефанов Технологично училище "Електронни системи", Технически университет, София 10 март 2019 г. И. Георгиев, Х.
ПодробноПрограмен език C Пламен Танов Ненко Табаков Мартин Вачовски Технологично училище Електронни системи Технически университет София версия 0.5
Програмен език C Пламен Танов Ненко Табаков Мартин Вачовски Технологично училище Електронни системи Технически университет София версия 0.5 Литература Необходими програми Kernighan & Ritchie - The C Programming
ПодробноМасиви и низове Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, спец. Софтуерно инженерство, 2016/17 г. 9 ноември 2016 г. Триф
и низове Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, спец. Софтуерно инженерство, 2016/17 г. 9 ноември 2016 г. Трифон Трифонов (УП 16/17) и низове 9 ноември 2016 г. 1 / 5 Логическо
ПодробноSlide 1
Въведение в VHDL Паралелни оператори Паралелни оператори Паралелен оператор оператор, който се изпълнява едновременно с другите оператори от този тип. Process - Процес
ПодробноЛабораторно упражнение 4 Тема : Реализиране на линейни програми.. I. Цел на лабораторното упражнение Аритметични и логически операции в програмният ез
Лабораторно упражнение 4 Тема : Реализиране на линейни програми.. I. Цел на лабораторното упражнение Аритметични и логически операции в програмният език С. Реализиране на линейни програми. Математически
ПодробноМасиви и низове Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, 2018/19 г ноември 2018 г. Трифон Трифонов (УП 18/19) Ма
Масиви и низове Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, 2018/19 г. 15 29 ноември 2018 г. Трифон Трифонов (УП 18/19) Масиви и низове 15 29 ноември 2018 г. 1 / 16 Масиви Логическо
ПодробноМИНИСТЕРСТВО НА ОБРАЗОВАНИЕТО И НАУКАТА
МИНИСТЕРСТВО НА ОБРАЗОВАНИЕТО И НАУКАТА У Ч Е Б Н А П Р О Г Р А М А ЗА ЗАДЪЛЖИТЕЛНА ПРОФЕСИОНАЛНА ПОДГОТОВКА ПО ПРОГРАМИРАНЕ И АЛГОРИТМИЧНИ ЕЗИЦИ ЗА ПРОФЕСИЯ: КОД 482010 ИКОНОМИСТ - ИНФОРМАТИК СПЕЦИАЛНОСТ:
ПодробноМасиви и низове Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, 2018/19 г. 15 ноември 6 декември 2018 г. Трифон Трифонов (УП 1
Масиви и низове Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, 2018/19 г. 15 ноември 6 декември 2018 г. Трифон Трифонов (УП 18/19) Масиви и низове 15.11-6.12.2018 г. 1 / 17 Масиви
Подробно3. Синтактичен анализ. Граматика на учебен програмен език STUDENT. Извеждане на изречения от правилата на граматиката Цел на упражнението Упражнението
3. Синтактичен анализ. Граматика на учебен програмен език STUDENT. Извеждане на изречения от правилата на граматиката Цел на упражнението Упражнението представя кратко въведение в синтактичния анализ.
ПодробноКакто бе споменато в предходните части съществуват три основни вида алгоритми: линейни, разклонени и циклични. В тази част ще разгледаме линейните алг
Както бе споменато в предходните части съществуват три основни вида алгоритми: линейни, разклонени и циклични. В тази част ще разгледаме линейните алгоритми. При линейни алгоритми действията се изпълняват
Подробно-
Лениво оценяване и програмиране от по-висок ред Трифон Трифонов Функционално програмиране, спец. Информатика, 2015/16 г. 7 януари 2016 г. Трифон Трифонов (ФП-И 15/16) Лениво оценяване 7 януари 2016 г.
Подробноdoll Механична кукла Механичните кукли автоматично повтарят предварително зададена последователност от движения. В Япония има традиции в изработката н
doll Механична кукла Механичните кукли автоматично повтарят предварително зададена последователност от движения. В Япония има традиции в изработката на механични кукли, датиращи от древни времена. Движенията
ПодробноЛекции по Програмиране първа част I. Въведение в компютрите и програмирането КОМПЮТЪР = АПАРАТУРА + ПРОГРАМНО ОСИГУРЯВАНЕ Апаратна част Hardware(Харду
Лекции по Програмиране първа част I. Въведение в компютрите и програмирането КОМПЮТЪР = АПАРАТУРА + ПРОГРАМНО ОСИГУРЯВАНЕ Апаратна част Hardware(Хардуер)Програмна част Software(Софтуер) Хардуерът включва:
ПодробноEclipse TUES 1 Кирил TUES
Eclipse JFace @ TUES 1 Същност SWT предоставя много възможности за развитие на потребителския интерфейс. Неудобството се изразява в това, че при представяне на данните се използват прости типове като низове,
Подробно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/
ПодробноОСНОВИ НА ЕЗИКА С# Интеграция на езиците за програмиране Една от най-добрите черти на.net Framework е възможността за интеграция на множество езици за
Интеграция на езиците за програмиране Една от най-добрите черти на.net Framework е възможността за интеграция на множество езици за програмиране. Тя позволява на програмиста да работи на предпочитания
ПодробноMicrosoft Word - Glava24.doc
2.4. Въведение в езика OQL Обектно ориентираният език на заявките OQL е един опит да се стандартизират обектноориентираните езици на заявките във форма на език, обединяващ в себе си декларативното SQL
ПодробноTitle Tues 1 Кирил TUES
Title Editors @ Tues 1 Editors Основният начин за създаване и модифициране на ресурси в Eclipse са Редакторите. Съществуват значителен брой редактори от найпростите текстови редактори до по-сложни редактори
ПодробноАнализ и оптимизация на софтуерни приложения
Анализ и оптимизация на софтуерни приложения Александър Пенев Васил Василев Какво могат и какво не могат компилаторите Съдържание 1. Оптимизационен континуум 2. Някои известни видове оптимизации 2/49 Оптимизационен
Подробно