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

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

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

Препис

1 Динамична памет. Конструктори и деструктори Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София Revision : ноември 2004 г. Пример: стек Основните операции, които се извършват със стека са: push() поставя елемент на върха на стека; pop() изтрива последният елемент, поставен на върха на стека и го връща като резултат от операцията. Има различни начини да се реализира стек. Нека разгледаме някои от тях. 1

2 Пример: стек 1 #include < iostream > 2 using namespace std ; 3 4 class Stack { 5 const static int size_ =2; 6 int data_ [ size_ ]; 7 int top_ ; 8 public : 9 Stack (void) 10 : top_ ( -1) 11 {} void push ( int v ) { 14 i f ( top_ >=( size_ -1)) { 15 cout << " ERROR : stack is full... " << endl ; 16 return ; 17 } 18 data_ [++ top_ ]=v; 19 } 2 20 int pop (void ) { 21 i f ( top_ <0) { 22 cout << " ERROR : stack is empty... " << endl ; 23 return 0; 24 } 25 return data_ [top_ - -]; 26 } 27 }; int main (void ) { 30 Stack st; 31 st. push (1); 32 st. push (2); 33 st. push (3); cout << st.pop () < < endl ; 36 cout << st.pop () < < endl ; 37 cout << st.pop () < < endl ; 38 return 0; 39 }

3 Пример: стек Резултатът от изпълнението на програмата е следния: g++ code/lecture05-stack01.cpp a.out ERROR: stack is full ERROR: stack is empty Пример: стек Основният недостатък на представената реализация е, че размерът на стека (броят не елементите, които можем да поставим в стека), се определя по време на компилация на програмата. Това се дължи на факта, че при представената реализация на стек се използва масив, чийто размер се определя по време на компилация на програмата и не може да бъде променян по време на изпълнение на програмата. За да се реши този проблем трябва да се използва механизмите за динамично управление на паметта. 4

4 Динамична памет: C стил В езика C за динамично управление на паметта се използват функциите malloc() и free(). Работата на malloc() е да задели парче от динамичната памет, а с помощта на free() заделеното парче памет се освобождава. В езика C++ програмистите могат да използват тези функции, но тяхното използване е неудобно. Проблемът е че при използването на функцията malloc() не се извикват конструктори. Динамична памет: C стил 5 1 #include < cstdlib > 2 using namespace std ; 3 class Foo { 4 int bar_ ; 5 public : 6 Foo (void ) : bar_ (0) {} 7 }; 8 int main () { 9 Foo * ptr =( Foo *) malloc ( sizeof ( Foo )); 10 // free ( ptr ); 12 return 0; 13 } В ред 9 се заделя памет за обект от типа Foo. Този обект, обаче, не са инициализира правилно, тъй като за него не се извиква конструктора Foo(). Нужен е механизъм, който да обединява заделянето на динамична памет с извикването на конструктор. 6

5 Динамична памет В езика C++ за работа с динамичната памет се използват операторите new и delete. Нека е дефиниран класът Foo, който има два конструктора конструктор по подразбиране и конструктор, който приема един аргумент. 3 class Foo { 4 int bar_ ; 5 public : 6 Foo (void ) : bar_ (0) {} 7 Foo ( int v, int w ): bar_ (v+w ) {} 8 int get_bar () const { return bar_ ;} 9 }; 7 Динамична памет Ако искаме да създадем обект от типа Foo в динамичната памет, трябва да използваме оператора new. Операторът new заделя необходимата за обекта памет и извиква конструктор, така че създаденият обект е правилно инициализиран. 11 Foo * ptr1 =new Foo ; 12 Foo * ptr2 =new Foo (21,21); 13 Foo * arr1 =new Foo [10]; Когато new се използва по начина показан в ред 11, конструкторът, който се извиква, е конструкторът по подразбиране (конструктор без аргументи). Ако конструктор по подразбиране не е дефиниран, то ред 11 ще предизвика грешка при компилация. 8

6 Динамична памет Другата форма, за използване на оператора new, показана в ред 12, позволява да се извика конкретен конструктор и да му се предадат необходимите аргументи. 12 Foo * ptr2 =new Foo (21,21); Третият начин за извикване на оператора new е показан на ред 13: 13 Foo * arr1 =new Foo [10]; При тази употреба се създава масив от обекти от типа Foo. Размера на масива се предава в квадратни скоби. Конструкторът, който се извиква за всеки един от създадените обекти е конструкторът по подразбиране. 9 Динамична памет За унищожаване на динамично създадени обекти се използва операторът delete. 17 delete ptr1 ; 18 delete ptr2 ; 19 delete [] arr1 ; Когато трябва да се унищожи единичен обект, се използва операторът delete. Когато трябва да се унищожи масив от обекти се използва операторът delete []. 10

7 Динамична памет 1 #include < iostream > 2 using namespace std ; 3 class Foo { 4 int bar_ ; 5 public : 6 Foo (void ) : bar_ (0) {} 7 Foo ( int v, int w ): bar_ (v+w ) {} 8 int get_bar () const { return bar_ ;} 9 }; 10 int main () { 11 Foo * ptr1 =new Foo ; 12 Foo * ptr2 =new Foo (21,21); 13 Foo * arr1 =new Foo [10]; 14 cout <<"ptr1 -> get_bar (): " <<ptr1 -> get_bar ()<< endl ; 15 cout <<"ptr2 -> get_bar (): " <<ptr2 -> get_bar ()<< endl ; 16 cout <<"arr1 -> get_bar (): " <<arr1 -> get_bar ()<< endl ; 17 delete ptr1 ; 18 delete ptr2 ; 19 delete [] arr1 ; 20 return 0; 21 } 11 Динамична памет Изходът на представената програма е следният: lubo@dobby:~/school/cpp/notes> g++ code/lecture05-new01.cpp lubo@dobby:~/school/cpp/notes> a.out ptr1->get_bar():0 ptr2->get_bar():42 arr1->get_bar():0 12

8 Конструктори и деструктори Нека разгледаме следният пример: 1 class Foo { 2 int * bar_ ; 3 int size_ ; 4 public : 5 Foo ( int size ) 6 : size_ ( size ), bar_ (new int [ size ]) 7 {} 8 //... 9 }; 10 int main () { 11 Foo foo (100); 12 // return 0; 14 } При създаването на обекта foo в ред 11 динамично се заделя памет за масив от 100 цели. Тази памет не се освобождава никъде. Конструктори и деструктори Нека разгледаме следният пример: 1 #include < cstdio > 2 using namespace std ; 3 class Foo { 4 FILE * bar_ ; 5 public : 6 Foo (const char* filename ) : bar_ (0) { 7 bar_ = fopen ( filename,"rw"); 8 } 9 // }; 11 int main () { 12 Foo foo (" temp. txt "); 13 // return 0; 15 } 13 При създаването на обекта foo в ред 12 се отваря файл, който не се затваря никъде. 14

9 Конструктори и деструктори Основната задача на конструкторът е да инициализира обекта за да може член-функциите на обекта да работят правилно. Коректната инициализация на даден обект понякога включва заделянето на динамична памет (като в разгледаният пример), отварянето на файлове или използването на някакъв друг ресурс, който изисква да бъде освободен след приключване на употребата му. 15 Деструктори Именно поради това такива класове се нуждаят от член-функция, която гарантирано се извиква при унищожаването на обектите. Тази функция се нарича деструктор. Основната задача на деструкторите е да освободят ресурсите, използвани от обекта. Деструкторите се извикват автоматично при унищожаването на обекта при излизането му от областта на действие или при изтриване на обекта от динамичната памет. Най-честата употреба на деструктора е да освободи заделената в конструктора динамична памет. 16

10 Пример: Деструктор 1 class Foo { 2 int * bar_ ; 3 int size_ ; 4 public : 5 Foo ( int size ) 6 : size_ ( size ), bar_ (new int [ size ]) 7 {} 8 ~ Foo (void ) { 9 delete [] bar_ ; 10 } 11 // }; 13 int main () { 14 Foo foo (100); 15 // return 0; 17 } 17 Пример: Деструктор 1 #include < cstdio > 2 using namespace std ; 3 class Foo { 4 FILE * bar_ ; 5 public : 6 Foo (const char* filename ) : bar_ (0) { 7 bar_ = fopen ( filename,"rw"); 8 } 9 ~ Foo (void ) { 10 fclose ( bar_ ); 11 } 12 // }; 14 int main () { 15 Foo foo (" temp. txt "); 16 // return 0; 18 } 18

11 Пример: стек 1 #include < iostream > 2 using namespace std ; 3 4 class Stack { 5 const static int chunk_ =2; 6 int size_ ; 7 int * data_ ; 8 int top_ ; 9 public : 10 Stack (void) 11 : size_ ( chunk_ ), 12 data_ (new int [ chunk_ ]), 13 top_ ( -1) 14 {} 15 ~ Stack (void ) { 16 delete [] data_ ; 17 } void push ( int v ) { 19 i f ( top_ >=( size_ -1)) { 20 resize (); 21 } 22 data_ [++ top_ ]=v; 23 } 24 int pop (void ) { 25 i f ( top_ <0){ 26 cout << " ERROR : stack is empty... " << endl ; 27 return 0; 28 } 29 return data_ [top_ - -]; 30 }

12 31 private: 32 void resize ( void ) { 33 cout << " Stack :: resize () called... " << endl ; 34 int * temp = data_ ; 35 data_ =new int [ size_ + chunk_ ]; 36 for ( int i =0;i< size_ ;i ++) 37 data_ [i]= temp [i ]; 38 delete [] temp ; 39 size_ += chunk_ ; 40 cout << " Stack :: resize () new size is <" 41 << size_ << " >..." << endl ; 42 } 43 }; 44 int main (void ) { 45 Stack st; 46 st. push (1); 47 st. push (2); 48 st. push (3); cout << st.pop () < < endl ; 51 cout << st.pop () < < endl ; 52 cout << st.pop () < < endl ; 53 return 0; 54 }

13 Пример: стек 1 #include < iostream > 2 using namespace std ; 3 4 class Stack { 5 struct Elem { 6 Elem * next_ ; 7 Elem * prev_ ; 8 int data_ ; 9 10 Elem ( int v) 11 : next_ (0), 12 prev_ (0), 13 data_ (v) 14 {} 15 }; Elem * first_ ; 18 Elem * last_ ; void appendelem ( Elem * newelem ) { 20 i f ( last_ ==0) { 21 first_ = newelem ; 22 last_ = newelem ; 23 } 24 else { 25 last_ -> next_ = newelem ; 26 newelem -> prev_ = last_ ; 27 last_ = newelem ; 28 } 29 }

14 30 Elem * removelastelem ( void ) { 31 i f ( last_ ==0) 32 return 0; 33 i f ( last_ == first_ ) { 34 Elem * res = last_ ; 35 last_ =0; 36 first_ =0; 37 return res ; 38 } Elem * res = last_ ; 41 last_ =res -> prev_ ; 42 last_ -> next_ =0; res -> prev_ =0; 45 res -> next_ =0; 46 return res ; 47 } 48 public : 49 Stack (void) 50 : first_ (0), 51 last_ (0) 52 {} ~ Stack (void ) { 55 while ( last_!=0){ 56 Elem * el = removelastelem (); 57 delete el; 58 } 59 } 60 void push ( int val ) { 61 Elem * newelem =new Elem ( val ); 62 appendelem ( newelem ); 63 } int pop (void ) { 66 Elem * elem = removelastelem (); 67 i f ( elem ==0){ 68 cout << " ERROR : stack empty... " << endl ; 69 return 0; 70 } 71 int res =elem -> data_ ;

15 72 delete elem ; 73 return res ; 74 } 75 }; int main (void ) { 78 Stack st; 79 st. push (1); 80 st. push (2); cout << st.pop () < < endl ; 83 cout << st.pop () < < endl ; 84 cout << st.pop () < < endl ; 85 return 0; 86 }

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

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

Подробно

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

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

Подробно

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

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

Подробно

Lush Green

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

Подробно

4

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

Подробно

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

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

Подробно

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

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

Подробно

Класове в 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 - Част 7 - масиви, оператор за индексиране, sizeof оператор

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

Подробно

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

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

Подробно

Lush Green

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

Подробно

Сериализация Калин Георгиев 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 Първо изискване:

Подробно

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. Структурни типове данни Структура от данни - организирана информация, която може да бъде описана, създадена и обработена с помощта на програма. Скаларни типове данни: Целочислен int Реален double

Подробно

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

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

Подробно

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

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

Подробно

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

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

Подробно

Потоци (Rev: 1.1)

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

Подробно

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

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

Подробно

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

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

Подробно

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

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

Подробно

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

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

Подробно

C++

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

Подробно

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

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

Подробно

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

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

Подробно

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

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

Подробно

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

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

Подробно

-

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

Подробно

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

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

Подробно

Системи за управление на версии - Работа с git

Системи за управление на версии - Работа с git Системи за управление на версии Работа с git Иван Георгиев, Христо Иванов, Христо Стефанов Tехнологическо училище "Електронни системи", Технически университет, София 28 февруари 2019 г. И. Георгиев, Х.

Подробно

ПРОГРАМНО ОСИГУРЯВАНЕ НА КОМПЮТЪРА

ПРОГРАМНО ОСИГУРЯВАНЕ НА КОМПЮТЪРА СРЕДИ ЗА ПРОГРАМИРАНЕ ПРОГРАМНО ОСИГУРЯВАНЕ НА КОМПЮТЪРА Същност на програмното осигуряване За да могат компютрите да разбират описаните на езика за програмиране алгоритми, те трябва да бъдат преведени

Подробно

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

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

Подробно

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

Подробно

Homework 2

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

Подробно

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

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

Подробно

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

Подробно

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/

Подробно

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

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

Подробно

Slide 1

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

Подробно

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

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

Подробно

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

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

Подробно