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

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

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

Препис

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) Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София Дефиниране на шаблон Шаблони (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

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 Калин Георгиев 13 май 2016 г. Калин Георгиев Обектно ориентирано програмиране 13 май 2016 г. 1 / 23 f «data; f» data; Калин Георгиев Обектно ориентирано програмиране 13 май 2016 г. 2 / 23 Първо изискване:

Подробно

4

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

Подробно

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

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

Подробно

Потоци (Rev: 1.1)

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

Подробно

Lush Green

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

Подробно

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

Подробно

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

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

Подробно

Lush Green

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

Подробно

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

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

Подробно

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

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

Подробно

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

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

Подробно

Класове в 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 Обектно-ориентирана

Подробно

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

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

Подробно

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

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

Подробно

Маисви

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

Подробно

C++

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

Подробно

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

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

Подробно

Канонична форма на клас или 4 (голямата четворка) Трифон Трифонов Обектно-ориентирано програмиране, спец. Компютърни науки, 1 поток, спец. Софтуерно и

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

Подробно

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

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

Подробно

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

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

Подробно

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

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

Подробно

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

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

Подробно

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

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

Подробно

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

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

Подробно

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

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

Подробно

Slide 1

Slide 1 Въведение в VHDL Паралелни оператори Паралелни оператори Паралелен оператор оператор, който се изпълнява едновременно с другите оператори от този тип. Process - Процес

Подробно

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

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

Подробно

Масиви и низове Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 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 Масиви Логическо

Подробно

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

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

Подробно

Масиви и низове Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 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 Масиви

Подробно

3. Синтактичен анализ. Граматика на учебен програмен език STUDENT. Извеждане на изречения от правилата на граматиката Цел на упражнението Упражнението

3. Синтактичен анализ. Граматика на учебен програмен език STUDENT. Извеждане на изречения от правилата на граматиката Цел на упражнението Упражнението 3. Синтактичен анализ. Граматика на учебен програмен език STUDENT. Извеждане на изречения от правилата на граматиката Цел на упражнението Упражнението представя кратко въведение в синтактичния анализ.

Подробно

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

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

Подробно

-

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

Подробно

doll Механична кукла Механичните кукли автоматично повтарят предварително зададена последователност от движения. В Япония има традиции в изработката н

doll Механична кукла Механичните кукли автоматично повтарят предварително зададена последователност от движения. В Япония има традиции в изработката н doll Механична кукла Механичните кукли автоматично повтарят предварително зададена последователност от движения. В Япония има традиции в изработката на механични кукли, датиращи от древни времена. Движенията

Подробно

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

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

Подробно

Eclipse TUES 1 Кирил TUES

Eclipse TUES 1 Кирил TUES Eclipse JFace @ TUES 1 Същност SWT предоставя много възможности за развитие на потребителския интерфейс. Неудобството се изразява в това, че при представяне на данните се използват прости типове като низове,

Подробно

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/

Подробно

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

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

Подробно

Microsoft Word - Glava24.doc

Microsoft Word - Glava24.doc 2.4. Въведение в езика OQL Обектно ориентираният език на заявките OQL е един опит да се стандартизират обектноориентираните езици на заявките във форма на език, обединяващ в себе си декларативното SQL

Подробно

Title Tues 1 Кирил TUES

Title Tues 1 Кирил TUES Title Editors @ Tues 1 Editors Основният начин за създаване и модифициране на ресурси в Eclipse са Редакторите. Съществуват значителен брой редактори от найпростите текстови редактори до по-сложни редактори

Подробно

Анализ и оптимизация на софтуерни приложения

Анализ и оптимизация на софтуерни приложения Анализ и оптимизация на софтуерни приложения Александър Пенев Васил Василев Какво могат и какво не могат компилаторите Съдържание 1. Оптимизационен континуум 2. Някои известни видове оптимизации 2/49 Оптимизационен

Подробно