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

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

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

Препис

1 2. Съдържание Съдържание Наследяване (Rev: 1.2) Любомир Чорбаджиев 1 lchorbadjiev@elsys-bg.org 1 февруари 2007 г. 1 Наследяване Полиморфизъм 9 1. Наследяване Наследяване UML UML unified modeling language. Използва се за моделиране на обектно ориентирани програмни системи. Дефинира набор от различни видове диаграми. Най-често използваните диаграми са клас диаграмите. <class name> -<attribute name 1>: <type 1> +<attribute name 2>: <type 2> +<method name>(<argument name>:<type>): <return type> Клас Employee Employee 4 public: 5 Employee(string name,long id) 6 : name_(name),id_(id) 8 string get_name() const; 9 long get_id() const; Клас Manager 1 Grady Booch, Object Oriented Analysis and Design with Applications, Manager -level_: int +get_level(): int 1 2

2 1 class Manager { 4 int level_; 5 public: 6 Manager( string name, 7 long id, 8 int level) 9 :name_(name), id_(id), 10 level_(level) 11 {} 12 string get_name() const; 13 long get_id() const; 14 int get_level() const; 15 }; Класовете Employee и Manager Employee Manager -level_: int +get_level(): int Мениджърът (Manager) е вид работник (Employee). Класът Manager притежава всички атрибути и методи на класа Employee. Освен атрибутите и методите на класа Employee, класът Manager притежава някои допълнителни свойства: ниво в йерархията (level_); група от подчинени;... Наследяване 3 Employee Manager -level_: int +get_level(): int За да се моделира подобен вид отношение между класовете в обектноориентираното програмиране се използва наследяване. Класът Employee се нарича базов клас или супер клас. Класът Manager се нарича производен клас или наследник. 4 public: 5 Employee(string name,long id) 6 : name_(name),id_(id) 8 string get_name() const; 9 long get_id() const; 2 int level_; 5 : Employee(name,id), 8 int get_level( void) const; 9 }; Повторно използване на кода (code reuse). 4

3 Методите get_name() и get_id() са дефинирани само веднъж в класа Employee. Класът Manager също има методи get_name() и get_id(), наследени от Employee. 1 int main() { 2 Employee e1("иван Работников", ); 3 Manager m1("шеф Иванов", , 1); 4 //... 5 Employee* employee_ list[10]; 6 employee_list[0]=&e1; 7 employee_list[1]=&m1; 8 //... 9 Manager* manager_ list[10]; 10 manager_list[0]=&m1; 11 manager_list[1]=&e1;// error!!! return 0; 14 } Наследяването на Manager от Employee превръща Manager в подтип на Employee. Manager е Employee и поради това Manager* може да се използва навсякъде, където трябва да се използва Employee*. Обратното, обаче, не е вярно; не всеки Employee е Manager и следователно Employee* не може да замести използването на Manager*. 1 class Employee; 2 3 class Manager: public Employee { // error!!! 4 //... 5 }; За да може един клас да се използва като базов клас, той трябва да е дефиниран и неговата дефиниция да е видима при декларирането на производния клас. В ред 3 е допусната грешка: класът Employee само е деклариран, но неговата дефиниция липсва. Методи 4 public: 5 Employee(string name, long id) 6 : name_(name), id_(id) 8 string get_name(void) const; 9 long get_id( void) const; 10 void print( void) const; 11 }; Методи 2 int level_; 5 : Employee(name,id), 8 int get_level( void) const; 9 void print( void) const; Методи Ще разгледаме дефиницията на метода print() в класа Manager. Методите на класа наследник имат достъп до публичните (public) и защитените (protected) член-променливи и методи на базовият клас 1 void Manager::print( void) const { 2 cout<<"name: "<<get_name()<<endl; 3 } Методите на класа наследник нямат достъп до скритите (private) член-променливи и методи на базовият клас 5 6

4 1 void Manager::print( void) const { 2 cout<<"name: "<<name_<<endl;// грешка!! 3 }; Методи При реализацията на производен клас трябва да сее използват само публичните методи и член-променливи на базовия клас. Като компромис могат да се използват защитени (protected) членпроменливи и методи. Защитените членове на базовия клас се държат като публични (public) за членовете на производните класове и като скрити ( private) за всички останали функции. В базовия и производния класове може да се дефинират методи с еднакви имена. В класовете Employee и Manager е дефиниран метод с едно и също име print(). Когато в класа наследник искаме да използваме метода print(), дефиниран в базовият клас, трябва да използваме пълното му име. 1 void Manager::print( void) const { 2 Employee::print(); 3 //... 4 } Следната дефиниция е некоректна (безкрайна рекурсия): 1 void Manager::print( void) const { 2 print(); 3 //... 4 } Конструктори При създаване обект от производен клас: първо се създава базовият клас, след това се създават член-променливите на производния клас и след това самият производен клас. 5 : Employee(name,id), }; Конструктори В конструктора на производния клас могат да се инициализират член-променливите, които са декларирани в производния клас. Не е възможно да се инициализират директно член-променливите на базовия клас. Ако базовият клас няма конструктор по подразбиране, то в производния клас задължително трябва да се извика конкретен конструктор на базовият клас. Ако в производния клас не е изрично указано кой конструктор на базовия клас трябва да се извика, то ще се извика конструкторът по подразбиране на базовия клас. Конструктори 2 //... 3 }; 4 Manager::Manager(string name, long id, 5 int level) 6 : name_(name), 7 id_(id), 8 level_(level) 9 {...} Колко са грешките в дефиницията на конструктора на класа Manager? Йерархия от класове 2 int level_; 7 8

5 Заместване на функции 1 Employee e1("иван Работников", ); 2 Manager m1("шеф Иванов", , 1); 3 //... 4 vector < Employee* > employee_ list; 5 employee_list.push_back(&e1); 6 employee_list.push_back(&m1); 7 //... 8 employee_list[0]->print(); 9 employee_list[1]->print(); Кой метод се извиква в ред 9? Employee::print() или Manager::print()? Йерархия от класове 1 class Employee{/*...*/}; 2 class Temporary{/*...*/}; 3 class Manager: public Employee {/*...*/}; 4 class Director: public Manager {/*...*/}; 5 class Consultant: public Manager, 6 public Temporary{ 7 /*...*/}; 3. Полиморфизъм Заместване на функции void print( void) const; 6 }; void print( void) const; 6 }; Заместване на функции Трябва да се дефинира функция, която да разпечатва на стандартния изход данните за всички работници. Нека разгледаме следната примерна реализация: 1 vector<employee*> v; for(vector<employee*>::iterator it=v.begin(); 4 it!=v.end(); ++it){ 5 (*it)->print(); 6 } В тази функция в ред 5 винаги се извиква функцията Employee::print(). Такава реализация е неудовлетворителна, тъй като се губи спецификата на различните видове работници. Вариант за решаването на проблема е в класа Employee да се добави член-променлива, в която се помни типа на обекта. 2 public: 3 enum EmployeeType {E, M}; 4 EmployeeType employee_ type; 5 private:

6 1 public: 2 Employee(string name, long id) 3 : employee_type(e), 4 name_(name), 5 id_(id) 6 {} }; : Employee(name, id), 7 { 8 employee_ type= Employee:: M; 9 } Когато се добавя нов клас в йерархията трябва да се променят всички функции, които зависят от проверки за типа. Когато се добавя нов клас в йерархията трябва да се промени и базовият клас. Използването на член-променлива за типа противоречи на идеята за капсулиране на данните. 4 public: 5 Employee(string name, long id) 6 : name_(name), 7 id_(id) 8 {} 9 v i r t u a l void print(void) const{ 10 cout << name_ << " " 11 << id_ << endl; 12 } 13 }; 1 void print_all(vector<employee*>& v){ 2 for(vector<employee*>::iterator 3 it=v.begin(); 4 it!=v.end();++it){ 5 i f ((*it)->employee_type==employee::m){ 6 // print manager 7 } 8 else { 9 // print employee 10 } 11 } 12 } 2 int level_; 5 : Employee(name, id), 8 void print( void) const { 9 Employee::print(); 10 cout << "\tlevel:" << level_ << endl;; 11 } 12 }; Такова решение на проблема може да работи в малка програма, но когато йерархията от класове нараства, броят на проверките за типа на променливата също нараства void print_all(vector<employee*>& v){ 2 for(vector<employee*>::iterator 3 it=v.begin(); 12

7 4 it!=v.end();++it){ 5 (*it)->print(); 6 } 7 } 1 int main( int argc, char* argv[]){ 2 Employee e("brown", L); 3 Manager m("smith", L, 1); 4 5 vector < Employee* > employees; 6 employees. push_ back(& e); 7 employees. push_ back(& m); 8 9 print_ all( employees); 10 return 0; 11 } Поведението, при което конкретната функция, която се извиква, зависи от динамичния тип на обект, чрез който е извикана, се нарича полиморфизъм или динамично свързване. За да бъде една член-функция полиморфна в C++ е необходимо тя да се декларира като виртуална с помощта на модификатора virtual. Функцията Manager::print() замества (override) функцията в базовия клас Employee::print(); Функцията в базовия клас е дефинирана като виртуална. Това означава, че изборът, коя функция да се извика се определя по време на изпълнение на програмата, в зависимост от действителния тип на променливата. 1 void print_all(vector<employee*>& v){ 2 for(vector<employee*>::iterator 3 it=v.begin(); 4 it!=v.end();++it){ 5 (*it)->print(); 6 } 7 } Когато функция от производния клас, има същата сигнатура като виртуална функция в базовия клас, се казва че тя замества (override) виртуалната функция от базовия клас. Когато се извиква виртуална функция, то автоматично се използва най-подходящият ѝ заместник, в зависимост от действителния тип на извикващия обект class Shape { 2 public: 3 v i r t u a l void draw( void) const=0; 4 }; В ред 3 е дефинирана чисто виртуална функция. Класове, в които са дефинирани една или повече чисто виртуални функции се наричат абстрактни. Не е възможно да се създаде обект от абстрактен клас: Shape s; //error!!! Абстрактните класове се използват за дефиниране на интерфейса на йерархия от класове. 14

8 Чисто виртуалните функции, които не са определени в производните класове остават чисто виртуални. Това означава, че е възможно и базовият и производният клас да бъдат абстрактни. 1 class Shape { 2 public: 3 v i r t u a l void draw( void) const=0; 4 }; 5 6 class Circle: public Shape { 7 Point center_; 8 int radius_; 9 public: 10 Circle(const Point& center, int radius) 11 : center_(center), radius_(radius) 12 {} 1 void draw( void) const { 2 cout << "Circle::draw("; 3 center_.print(); 4 cout << ", " << radius_ << ")" << endl; 5 } 6 }; 7 class Rectangle: public Shape { 8 Point ul_; 9 Point br_; 10 public: 1 Rectangle(const Point& ul, const Point& br) 2 : ul_(ul), br_(br) 3 {} 4 void draw( void) const { 5 cout << "Rectangle::draw("; 6 ul_.print(); 7 cout << ", "; 8 br_.print(); 9 cout << ")" << endl; 11 }; 15 1 class Drawing { 2 list<shape*> shapes_; void draw( void) const { 6 for(list<shape*>::const_iterator 7 it=shapes_.begin(); 8 it!=shapes_.end();++it){ 9 (*it)->draw(); 10 } 11 }; 12 }; Динамично преобразуване C++ поддържа RTTI идентификация на типа по време на изпълнение. RTTI ни дава възможност да идентифицираме истинския тип, към който сочи даден указател. RTTI може да се използва по няколко начина единият е динамичното преобразуване на типовете dynamic_cast<...>(...). 1 void fun(shape* sh){ 2 Circle* pc=dynamic_cast<circle*>(sh); } Когато преобразуването е успешно операторът за динамично преобразуване на типа връща ненулев указател. Динамично преобразуване 1 void fun(shape* sh){ 2 Circle* pc=dynamic_cast<circle*>(sh); 3 i f (pc!=null){ 4 // it s a circle 5 return; 6 } 7 Rectangle* pr = dynamic_cast < Rectangle* >( sh); 8 i f (pr!=null){ 9 // it s a rectangle 10 } 11 } 16

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

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

Подробно

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

Подробно

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

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

Подробно

4

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

Подробно

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

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

Подробно

Lush Green

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

Подробно

Дефиниране на шаблон Шаблони (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

Подробно

Lush Green

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

Подробно

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

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

Подробно

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

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

Подробно

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

Подробно

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

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

Подробно

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

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

Подробно

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

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

Подробно

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

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

Подробно

C++

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

Подробно

НАУЧНИ ТРУДОВЕ НА РУСЕНСКИЯ УНИВЕРСИТЕТ , том 48, серия 3.2 Програмна реализация на средство за обработка и визуализация на данни от учебни сеси

НАУЧНИ ТРУДОВЕ НА РУСЕНСКИЯ УНИВЕРСИТЕТ , том 48, серия 3.2 Програмна реализация на средство за обработка и визуализация на данни от учебни сеси Програмна реализация на средство за обработка и визуализация на данни от учебни сесии Октай Кър, Ирина Желязкова Program Implementation of a Tool for for Processing and Visualization of Learning Session

Подробно

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

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

Подробно

036-B.dvi

036-B.dvi МАТЕМАТИКА И МАТЕМАТИЧЕСКО ОБРАЗОВАНИЕ, 2004 MATHEMATICS AND EDUCATION IN MATHEMATICS, 2004 Proceedings of the Thirty Third Spring Conference of the Union of Bulgarian Mathematicians Borovets, April 1

Подробно

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

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

Подробно

Потоци (Rev: 1.1)

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

Подробно

Маисви

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

Подробно

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

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

Подробно

СОФТУЕРНИЯТ ПРОЦЕС

СОФТУЕРНИЯТ ПРОЦЕС МИНИСТЕРСТВО НА ТРУДА И СОЦИАЛНАТА ПОЛИТИКА ЦЕНТЪР ЗА РАЗВИТИЕ НА ЧОВЕШКИТЕ РЕСУРСИ И РЕГИОНАЛНИ ИНИЦИАТИВИ София 1849, кв. Кремиковци,, тел./факс: +359 2 994 70 18, +359 882 82 66 83, +359 876 24 82 04

Подробно

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

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

Подробно

-

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

Подробно

Microsoft Word - VM22 SEC55.doc

Microsoft Word - VM22 SEC55.doc Лекция 5 5 Диференциални уравнения от първи ред Основни определения Диференциално уравнение се нарича уравнение в което участват известен брой производни на търсената функция В общия случай ( n) диференциалното

Подробно

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

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

Подробно

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

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

Подробно

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

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

Подробно

Slide 1

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

Подробно

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

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

Подробно

Уеб системи и технологии - Упражнение 4

Уеб системи и технологии - Упражнение 4 УПРАЖНЕНИЕ 4: ВИДОВЕ СИМВОЛИ И ТЯХНОТО ФОРМАТИРАНЕ. СТРУКТУРИРАНЕ И ОФОРМЯНЕ НА ТЕКСТОВЕ. СПИСЪЦИ. Какво се разглежда в тази тема: Параграфи: o Нов параграф ; o Нов ред в текущ параграф .

Подробно

Ст. Джиев, Индустриални мрежи за комуникация и управление Системноориентирани спецификации за изграждане на интегрирани индустриални мрежи 2.5.1

Ст. Джиев, Индустриални мрежи за комуникация и управление Системноориентирани спецификации за изграждане на интегрирани индустриални мрежи 2.5.1 2.5. Системноориентирани спецификации за изграждане на интегрирани индустриални мрежи 2.5.1. Спецификация CIP за индустриални мрежи - въведение Спецификацията Common Industrial Protocol (CIP) е пример

Подробно

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

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

Подробно

Microsoft Word - PRMAT sec99.doc

Microsoft Word - PRMAT sec99.doc Лекция 9 9 Изследване на функция Растене, намаляване и екстремуми В тази лекция ще изследваме особеностите на релефа на графиката на дадена функция в зависимост от поведението на нейната производна Основните

Подробно

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

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

Подробно

Microsoft Word - Glava24.doc

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

Подробно

Проектиране на непрекъснат ПИД - регулатор. Динамичните свойства на системите за автоматично регулиране, при реализация на първия етап от проектиранет

Проектиране на непрекъснат ПИД - регулатор. Динамичните свойства на системите за автоматично регулиране, при реализация на първия етап от проектиранет Проектиране на непрекъснат П - регулатор инамичните свойства на системите за автоматично регулиране, при реализация на първия етап от проектирането им, могат да се окажат незадоволителни по отношение на

Подробно

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

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

Подробно

Проф

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

Подробно

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

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

Подробно

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

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

Подробно