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

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

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

Препис

1 Дефиниране на шаблон Шаблони (Templates) Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София Revision : март 2005 г. template< class T > class stack { T data_ [128]; public : const T& //... }; pop ( void ) const; Префиксът template<class T> се използва за дефиниране на шаблон (template). При използване на шаблона на мястото на формалния параметър class T се предава фактическият тип. В дефиницията на шаблона T точно по същия начин, по който се използват и имената на другите типове. Областта на видимост за T завършва в края на обявата, започнала с template<class T>. В дефиницията template<class T> T е име на произволен тип; не е задължително T да бъде име на клас. 2 Екземпляри на шаблона Шаблони Шаблоните обезпечават непосредствената поддръжка на така нареченото обобщено програмиране, т.е. програмиране, при което като параметри се използват типове. Механизмът на шаблоните в C++ позволява използването на типове в качеството на параметри при дефинирането на функции и класове. Шаблонът зависи само от тези свойства на параметъратип, които той явно използва; поради това не е необходимо различните типове, които се използват като параметри на шаблона да бъдат свързани по какъвто и да било начин. stack <double> doublestack ; stack < int > intstack; Процесът на генериране на клас от (1) шаблон на клас и (2) аргумент на шаблона се нарича създаване на екземпляр на шаблона (template instantiation). Генерирането на клас от шаблон на клас се изпълнява от компилатора; Класът, генериран от шаблон на клас, е обикновен C++ клас. Използването на шаблони не предполага допълнителни механизми по време на изплънение на кода. Шаблоните обезпечават ефективен начин за генериране на код. 1

2 Параметри на шаблона Като параметри на даден шаблон могат да се използват и параметри, които не са типове: Пример: template< class T, int size > class Buffer { T data_ [ size ]; int size_ ; public : Buffer (void ) : size_ ( size ) {} //... }; Проверка на типовете: пример 1 template< class T > class stack { 2 T data_ [128]; int top_ ; 4 public : 5 stack (void ) : top_ ( -1) {} 6 //... 7 void print_ all ( void ) { 8 for ( int i =0;i <= top_ ;++ i) 9 cout << data_ [i] < < ; 10 cout < < endl ; 11 } 12 }; 1 class Rec { /*... */ }; 1 stack < int > intstack; 2 stack <Rec > recstack ; //?? error ; recstack. print_all (); // error ; Проверка на типовете Проверка в точката на дефиниция: проверка за синтактични грешки и грешки, които не зависят от фактическите параметри-типове на шаблона. Проверка при създаване на екземпляр на шаблона: проверка за съответствие на фактическите типове, предадени на шаблона. Проверка в момента на свързване. 4 5 Пример: стек 1 #ifndef STACK_ HPP 2 #define STACK_ HPP #include < exception > 4 template< class T > 5 class stack { 6 static const unsigned size_ =128; 7 T data_ [ size_ ]; 8 int top_ ; 9 public : 10 stack (void ); 11 const T& top ( void ) const; 12 void pop ( void ); 1 void push (const T& val ); 14 bool empty ( void ) const; 15 }; 16 template< class T > 17 stack <T >:: stack (void) 18 : top_ ( -1) 19 {} 20 template< class T > const T& 21 stack <T >:: top (void ) const { 22 i f ( top_ < 0) { 6 7

3 2 throw std :: exception (); 24 } 25 return data_ [ top_ ]; 26 } 27 template< class T > void 28 stack <T >:: pop (void ) { 29 i f ( top_ <0){ 0 throw std :: exception (); 1 } 2 top_ - -; } 4 template< class T > void 5 stack <T >:: push (const T& val ){ 6 i f ( size_ <= top_ +1 ) { 7 throw std :: exception (); 8 } 9 data_ [++ top_ ]= val ; 40 } 41 template< class T > bool 42 stack <T >:: empty (void ) const { 4 return top_ <0; 44 } 45 #endif 2 24 stack < stack < int > > ssi ; 25 for ( int i =0;i <5;++ i ){ 26 stack < int > temp ; 27 for ( int j =0;j <10;++ j){ 28 temp. push (i); 29 } 0 ssi. push ( temp ); 1 } 2 while (! ssi. empty ()){ 4 stack < int > ts= ssi. top (); 5 while (! ts. empty ()){ 6 std :: cout << ts. top () < < " "; 7 ts. pop (); 8 } 9 std :: cout << std :: endl ; 40 ssi. pop (); 41 } 42 4 return 0; 44 } Пример: стек 1 #include < iostream > 2 #include " stack. hpp " 4 int main (void ) { 5 stack < int > si; 6 for ( int i =0;i <10; ++ i){ 7 si. push (i); 8 } 9 while (! si. empty () ){ 10 std :: cout << si. top () < < " "; 11 si. pop (); 12 } 1 std :: cout << std :: endl ; 14 stack < float > sf; 15 for ( int i =0; i <10; ++ i){ 16 sf. push (10.0* i ); 17 } 18 while (! sf. empty () ){ 19 std :: cout << sf. top () < < " "; 20 sf. pop (); 21 } 22 std :: cout << std :: endl << std :: endl ; 8 Пример: стек Резултати:

4 Шаблони на функции Шаблони на функции Механизмът на шаблоните може да се ползва за обобщено дефиниране на фунции; Пример: 1 template< class R, class T > 2 const R & fun (T& a){ //... 4 } 1 template< class T > 2 void sort ( vector <T >& v){ //... 4 } 10 При шаблоните на функции съществен момент се явява възможността за извеждане (deduction) на типа на аргументите на шаблона. Пример: template< class T > T& fun (const T & val ) { /*... */} int i=0, p =10; i= fun (p ); template< class T > const T& fun1 (void ) { /*... */} int x= fun1 (); // error int y=fun1 < int >(); template< class R, class T > R fun2 (T& v ) { /*... */} int z =0; double w =0; w=fun2 <double, int >(z); w=fun2 <double>(z); w= fun2 (z ); // error!! 12 Използване на шаблони: масив с проверка на границите Шаблони на функции 1 template< class T > 2 void swap (T& a, T& b ) { T tmp =a; 4 a=b; 5 b= tmp ; 6 } 11 1 #include < iostream > 2 using namespace std ; class IndexOutOfBounds {}; 4 5 template< class T > 6 class Array { 7 unsigned int size_ ; 8 T* data_ ; 9 public : 10 Array (unsigned int size =10) 11 : size_ ( size ), data_ (new T[ size_ ]) 12 {} 1 Array (const Array & other ) 14 : size_ ( other. size_ ), data_ (new T[ size_ ]) 15 { 16 for (unsigned int i =0; i < size_ ; i ++) 17 data_ [i]= other. data_ [i]; 18 } 19 ~ Array (void ) { 20 delete [] data_ ; 21 } 1

5 22 unsigned size () const { 2 return size_ ; 24 } 25 Array & operator=( const Array & other ) { 26 i f ( this!=& other ) { 27 delete [] data_ ; 28 size_ = other. size_ ; 29 data_ =new int [ size_ ]; 0 for (unsigned i =0;i< size_ ;i ++) 1 data_ [i ]= other. data_ [i]; 2 } return * this ; 4 } 5 T& operator[]( unsigned int index ) 6 throw ( IndexOutOfBounds) 7 { 8 i f ( index >= size_ ) { 9 throw IndexOutOfBounds (); 40 } 41 return data_ [ index ]; 42 } 4 }; Използване на шаблони: динамичен стек 1 #include < iostream > 2 using namespace std ; class StackEmptyException {}; 4 5 template< class T > 6 class Stack { 7 const static unsigned int chunk_ =2; 8 int size_ ; 9 T * data_ ; 10 int top_ ; 11 public : 12 Stack (void) 1 : size_ ( chunk_ ), 14 data_ (new T[ size_ ]), 15 top_ ( -1) 16 {} 17 ~ Stack (void ) { 18 delete [] data_ ; 19 } 44 int main ( void ) { 45 Array < int > a1 (), a2; 46 for ( int i =0;i <;++ i ) { 47 a1[i]=i; 48 } 49 a2=a1; 50 for ( int i =0;i <; i ++) { 51 cout << "a2[" << i << "]=" << a2[i] < < endl ; 52 } 5 try { 54 cout << "a2[" < < < < "]=" << a2 [] < < endl ; 55 } catch( IndexOutOfBounds tocatch ) { 56 cerr < < " IndexOutOfBounds exception catched... " 57 << endl ; 58 } 59 return 0; 60 } lubo@dobby:~/school/cpp/notes>./a.out a2[0]=0 a2[1]=1 a2[2]=2 IndexOutOfBounds exception catched Stack (const Stack & other ) 21 : size_ ( other. size_ ), 22 data_ (new T[ size_ ]), 2 top_ ( other. top_ ) 24 { 25 for ( int i =0; i <= top_ ; i ++) 26 data_ [i]= other. data_ [i]; 27 } 28 Stack & operator=( const Stack & other ) { 29 i f ( this!=& other ) { 0 delete [] data_ ; 1 size_ = other. size_ ; 2 top_ = other. top_ ; data_ =new T[ size_ ]; 4 for ( int i =0;i <= top_ ;i ++) 5 data_ [i ]= other. data_ [i]; 6 } 7 return * this ; 8 } 14

6 9 void push (const T& v ) { 40 i f ( top_ >=( size_ -1)) { 41 resize (); 42 } 4 data_ [++ top_ ]=v; 44 } 45 T pop (void ) { 46 i f ( top_ <0){ 47 throw StackEmptyException (); 48 } 49 return data_ [top_ - -]; 50 } 51 private: 52 void resize ( void ) { 5 T * olddata = data_ ; 54 data_ =new T[ size_ + chunk_ ]; 55 for ( int i =0;i< size_ ;i ++) 56 data_ [i]= olddata [i]; 57 delete [] olddata ; 58 size_ += chunk_ ; 59 } 60 }; lubo@kid:~/school/cpp/notes$./a.out StackEmptyException catched int main ( void ) { 62 Stack < int > st; 6 st. push (1); 64 st. push (2); 65 st. push (); Stack < int > st1 =st; cout << st.pop () < < endl ; 70 cout << st.pop () < < endl ; 71 cout << st.pop () < < endl ; 72 7 cout << st1. pop () < < endl ; 74 cout << st1. pop () < < endl ; 75 cout << st1. pop () < < endl ; try { 78 cout << st1. pop () < < endl ; 79 } catch(const StackEmptyException & tocatch ) { 80 cout < < " StackEmptyException catched... " < < endl ; 81 } 82 return 0; 8 }

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

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

Подробно

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

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

Подробно

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

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

Подробно

Класове в 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

Подробно

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?

Подробно

Lush Green

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

Подробно

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

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

Подробно

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

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

Подробно

Потоци (Rev: 1.1)

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

Подробно

Сериализация Калин Георгиев 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 оператор Иван Георгиев, Христо Иванов, Христо Стефанов Технологично училище "Електронни системи", Технически университет, София

Подробно

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

Подробно

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

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

Подробно

Lush Green

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

Подробно

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

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

Подробно

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

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

Подробно

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

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

Подробно

Маисви

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

Подробно

C++

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

Подробно

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

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

Подробно

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

Подробно

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

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

Подробно

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

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

Подробно

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

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

Подробно

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

Подробно

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

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

Подробно

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

Анализ и оптимизация на софтуерни приложения Анализ и оптимизация на софтуерни приложения Александър Пенев Васил Василев (от гледна точка на производителността) Съдържание 1. Видове транслатори 2.Фази по време на компилация 3. Оптимизационна фаза

Подробно

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

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

Подробно

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

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

Подробно

4

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

Подробно

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

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

Подробно

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

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

Подробно

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

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

Подробно

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

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

Подробно

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

Анализ и оптимизация на софтуерни приложения Анализ и оптимизация на софтуерни приложения Александър Пенев Васил Василев Съдържание 1. Какво е векторизация? 2. Примери 3. на цикли 4. Масиви от структури или структури от масиви 5. на при различни

Подробно

КОНСПЕКТ ЗА ДЪРЖАВЕН ИЗПИТ

КОНСПЕКТ ЗА ДЪРЖАВЕН ИЗПИТ БУРГАСКИ СВОБОДЕН УНИВЕРСИТЕТ ЦЕНТЪР ПО ИНФОРМАТИКА И ТЕХНИЧЕСКИ НАУКИ Учебно помагало за държавен изпит спец Информатика и компютърни науки теми: - част автори: проф Лазаров теми - доц Гичев теми 3 -

Подробно

Slide 1

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

Подробно

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

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

Подробно

OpenGL

OpenGL OpenGL Изграждане на Геометрични обекти 2 гл. ас. А. Пенев Анимация (1/3) gluttimerfunc glutidlefunc glutpostredisplay glutpostwindowsredisplay + Промяна на визуализацията в display 2/32 Анимация (2/3

Подробно

Homework 2

Homework 2 Домашна работа 2 по Дизайн и анализ на алгоритми за специалност Компютърни науки, 2. курс, 1. поток СУ, ФМИ, летен семестър на 2017 / 2018 уч. г. СЪСТАВЯНЕ НА АЛГОРИТМИ Задача 1 2 3, а 3, б 3, в Общо получен

Подробно

-

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

Подробно