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

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

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

Препис

1 Интеграция на езиците за програмиране Една от най-добрите черти на.net Framework е възможността за интеграция на множество езици за програмиране. Тя позволява на програмиста да работи на предпочитания от него език и да не губи възможността за използване на други езици в рамките на неговото решение. Интеграцията на различни езици в.net Framework е възможна благодарение на три важни стандарта: Common Language Specification (CLS) Intermediate Language (IL) Common Type System (CTS) Common Language Specification (CLS) CLS дефинира общите и задължителни характеристики, които един програмен език трябва да притежава, за да бъде съвместим с останалите.net езици. CLS, например, налага ограничението да се прави разлика межди малки и главни букви в имената на типовете и техните публични членове, методи, свойства и събития. Друго ограничение e езиците да бъдат обектно-ориентирани. Повечето.NET езици поддържат много повече възможности от тези, които изисква CLS. Поради това трябва да сме внимателни при създаването на класове и други типове и да подхождаме с ясната идея дали искаме те да са CLS съвместими или не.

2 Intermediate Language (IL) Междинният език Intermediate Language (IL), е език за програмиране от ниско ниво, подобен на асемблерните езици, но стои по-високо, защото е обектно-ориентиран език. Тъй като не е процесорно-специфичен, IL предоставя голяма гъвкавост и възможност за изпълнение на кода върху различни платформи чрез компилиране до съответния за платформата машинен език. Имплементацията на IL в.net Framework се нарича MSIL (Microsoft Intermediate Language). IL може да има и други имплементации в други платформи и среди за изпълнение на.net код. Езикът IL е стандартизиран от организацията ECMA и в съответния стандарт се нарича CIL (Common Intermediate Language). Common Type System (CTS) Общата система от типове в.net Framework представлява формална спецификация на типовете данни, използвани в различните.net езици за програмиране. CTS описва различните.net типове (примитивни типове данни, класове, структури, интерфейси, делегати, атрибути и др.). В CTS се описват съдържанието и начина на дефиниране на типовете, модификаторите за достъп, начините за наследяване, времето на живот на обектите и много други технически характеристики. CTS ни гарантира съвместимостта на данните между отделните езици за програмиране. Например типът String в С# е същия като String във Visual Basic.NET. Това позволява кодът, писан на различни езици, да си обменя свободно данни, защото данните са съвместими с CTS.

3 Същностни черти на езика C# Компонентно-ориентиран Езикът C# е насочен към компонентно-ориентирано програмиране, при което софтуерът се изгражда чрез съединяване на различни готови компоненти и описание на логиката на взаимодействие между тях. Обектно-ориентиран В него залягат основните принципи на обектно-ориентираното програмиране, като капсулация на данните, наследяване и полиморфизъм. В.NET Framework всички типове данни наследяват системния System. Object тип и придобиват от него някои общи методи, свойства и други характеристики, поради което в C# всички данни се третират като обекти. Сигурност и надеждност на кода.net Framework предоставя среда за контролирано изпълнение на управляван код, с което прави невъзможно възникването на някои от найнеприятните проблеми, свързани с управлението на паметта, неправилното преобразуване на типове и др. C# наследява всички тези характеристики от.net Framework и добавя към тях някои допълнителни механизми за предпазване на програмистите от често срещани грешки.

4 Силна типизираност и типова безопасност С# е силно типизиран и типово обезопасен. В него не се използват указатели към паметта, които създават много проблеми в по-старите езици за програмиране. Вместо тях се използват специални силно типизирани указатели, които се наричат референции (references). Използването на референции вместо указатели решава проблемите, които възникват от неправилната работа с указатели и директния достъп до паметта. В.NET Framework управлението на паметта се извършва почти изцяло от CLR. В С# не може да се излезе от границите на масив или символен низ. При опит да бъде направено това, се получава изключение, което може да бъде прихванато и обработено. В езици като C, C++ и Pascal излизането от границите на масив води до достъп до памет, използвана от други данни и най-често пъти предизвиква сривове или неочаквано поведение на програмата. При създаване на клас, структура или друг тип C# компилаторът не позволява да останат неинициализирани член-данни. Това защитава програмиста от възможността да работи с неинициализирани данни.

5 Преобразуването на типове също е безопасно. CLR не позволява да се извърши невалидно преобразуване на типове да се преобразува променлива от даден тип към променлива от тип, който не е съвместим с първия. При опит да бъде направено това, възниква изключение. Неявното преобразуване на типове е разрешено само за съвместими типове, когато не е възможна загуба на информация. Автоматично управление на паметта и ресурсите В.NET Framework заделянето и използването на паметта се управлява автоматично от CLR (Common Language Runtime). Стойностните типове се пазят в стека, докато референтните в т. нар. "динамична памет" (managed heap), за която се грижи системата за почистване на паметта (garbage collector). Системата за почистване на паметта е част от CLR и нейна задача е да освобождава периодично паметта и ресурсите, заделени за обекти, които не се използват повече от приложението. Такива обекти могат да бъдат най-разнообразни: данни в динамичната памет, масиви, символни низове, а също и файлове, буфери в паметта, връзки към бази данни и др. Грижата за паметта е трудна и сложна задача, но благодарение на CLR тя не е задължение на.net програмистите.

6 Широко използване на изключения Обработката на грешки, които могат да възникнат по време на изпълнение на програмата, в.net Framework се реализира чрез използване на изключения. Изключенията представляват обекти от клас Exception или производен на него и съдържат информация за грешката, която е възникнала. Например, при опит за деление на нула CLR предизвиква изключението DivideByZeroException, а при опит за излизане от границите на масив - ArgumentOutOfRangeException. Вградени механизми за сигурност на кода В.NET Framework са въведени т. нар. сигурност на ниво достъп до кода (code access security) и сигурност, базирана на роли (role-based security). Чрез тях се осъществява контрол на достъпа до ресурси от програмата. Например, ако трябва да се извика системна функция или да се пише във файл, кодът трябва да има права да го направи. Сигурността на ниво достъп до кода оставя CLR да взима решения, докато при сигурност, базирана на роли, програмата може да реагира различно спрямо ролята и правата на потребителя. Всичкият код е на едно място В С# няма разделяне на хедър файлове и файлове с имплементация, както в C и C++. Това спестява много проблеми и улеснява поддръжката на сорс кода. В C# всичкият програмен код на даден клас е в един файл.

7 Програмите на C# Програмите на С# представляват съвкупност от дефиниции на класове, структури и други типове. Във всяка C# програма някой от класовете съдържа метод Main() входна точка за програмата. Приложенията могат да се състоят от много файлове, а в един файл може да има няколко класове, структури и други типове. Класовете логически се разполагат в пространства от имена (namespaces). Те от своя страна могат да се систематизират в йерархия, т.е. едно пространство от имена може да съдържа както класове, така и други пространства от имена. Едно пространство от имена може да е разположено в няколко файла и дори в няколко асемблита. Например, в пространството от имена System се съдържа пространството от имена Xml. Пространството System.Xml от своя страна е разделено в две различни асемблита - System.Xml.dll и System.Data.dll. Във Visual Studio.NET има инструмент, наречен "Object Browser", чрез който могат да се разгледат йерархиите на пространствата от имена в проекта, какво съдържат те и в кои файлове се намират. Имената на файловете съответстват на класовете Всяка C# програма се състои от един или няколко класа. Прието е всеки клас да се дефинира в отделен файл с име, съвпадащо с името на класа и разширение.cs. При неизпълнение на тези изисквания програмата пак ще работи, но ориентацията в кода ще е затруднена.

8 ЕЛЕМЕНТИ НА ЕЗИКА С# Градивни символи: големи и малки латински букви, цифри, _ Служебни символи:.,:;?!<>()[]+-*/\=%& ~ {}#$ Резервирани думи : специални комбинации от градивни символи. Идентификатори (имена): комбинации от градивни символи, започващи с буква. Коментари: //текст или /*текст*/ Основни обекти Операнд-Константа = именувана (с идентификатор) или неименувана постоянна величина Операнд-Променлива = именувана непостоянна величина (атомарна или структурирана), с принадлежност към даден тип, с възможност да приема стойност Оператор = комбинация от служебни символи Израз = комбинация от операнди и оператори Инструкция = комбинация от резервирани думи и/или изрази, която завършва с ;. Остойностяването й зависи от стойностите на операндите в изразите, а типът - от типа на същите операнди Структурирана инструкция (клауза) = комбинация от резервирани думи и инструкции Зона-инструкции = линейна последователност от една или много инструкции и/или клаузи и/или коментари Блок-инструкции = зона-инструкции, заградени от { и } Функция = самостоятелно обособена и логически завършена, именована програмна конструкция от инструкции, клаузи и коментари

9 ОСНОВНИ ТИПОВЕ ДАННИ. АТОМАРНИ ОПЕРАНДИ В С# ТИП НА ДАННИ (или само тип данни ) ще наричаме всяко множество от еднородни дадености (факти) на някаква основна предметна област, които споделят едни и същи общи характеристики (свойства) или параметри и се подчиняват еднакво на едни и същи закони на действие и взаимодействие, но са различими по конкретното проявление на тези свои общи характеристики или параметри. Типовете данни се характеризират с: Име например int (= множеството на целите числа); Размер (колко памет заема конкретен преставител на типа) например 4 байта за тип данни int в 32битовите компютри; Стойност съдържание на заетата памет от конкретен представител на типа.

10 Видове типове данни По отношение на своя генезис типовете данни в С# са примитивни (вградени, built-in) и потребителски (дефинирани от потребителя). По отношение на своето проявление биват два вида типове по стойност (value types) и типове по референция (reference types). Типовете по стойност (стойностни типове) директно съдържат своята стойност и се съхраняват в стека. Те се предават по стойност. Типовете по стойност са всички примитивни типове (без string и object), както и потребителските типове struct (структура) и enum (изброител). int x; // примитивен тип int enum Colors { Cyan, Magenta, Yellow, Key } // изброен тип (enum) struct Point { int x, y; } // структура (struct) Типовете по референция (референтни типове) представляват силно типизирани указатели към стойност в динамичната памет. Те се предават по референция (адрес) и се унищожават от garbage collector, когато не се използват повече от програмата. Типовете по референция са потребителските типове class (клас), interface (интерфейс), delegate (делегат), както и примитивни типове string (символен низ) и object (обект). Масивите също се реализират като референтни типове. string[] a = new string[5]; delegate void Empty(); // масив // делегат

11 Вградени типове данни Базовите типове данни в C# се разделят на следните видове: - Целочислени типове sbyte, byte, short, ushort, int, uint, long, ulong; - Реални типове с плаваща запетая float, double; - Реални типове с десетична точност decimal; - Булев тип bool; - Символен тип char; - Символен низ (стринг) string; - Обектен тип object. Тези типове данни се наричат примитивни (built-in types), тъй като са вградени в езика C# на най-ниско ниво. Тип данни Defaul t value Min. Value Max. Value sbyte byte short ushort int uint 0u long 0L -9,22337E+18 9,22337E+18 ulong 0u 0 1,84467E+19 float 0.0f ± ± double 0.0d ± ± decimal 0.0m ± ± boolean FALSE Възможни стойности true или false char '\u0000' '\u0000' '\uffff' string null - - object null - - Примитивните типове данни в C# имат директно съответствие с типове от общата система от типове (CTS) от.net Framework. Например типът int в C# съответства на типа System.Int32 от CTS и на типа Integer в езика VB.NET, a типът long в C# съответства на типа System.Int64 от CTS и на типа Long в езика VB.NET.

12 Стойности на данни и техните носители СТОЙНОСТ НА ДАННА ще наричаме количественото, символното или образното изразяване на съдържателността на конкретен факт, принадлежащ към даден ТИП ДАННИ. Стойността на данни се оповестява чрез числа (за числови типове на данни), чрез думи (за логически или символни типове на данни), чрез изображения или чрез комбинация между тях. Носител на стойности на данни са променливите. Те могат да се разглеждат като контейнери за данни, които могат да променят стойността си. Променливите се оповестяват чрез идентификатори (имена). Идентификаторите в С# се състоят от последователности от букви, цифри и знак за подчертаване като винаги започват с буква или знак за подчертаване. В тях малките и главните букви се различават. Освен това, имената на променливите не могат да съвпадат със служебна дума (keyword) от C#.

13 Служебни думи (keywords) в С# abstract as base bool break byte case catch char checked class const continue decimal default delegate do double else enum event explicit extern FALSE finally fixed float for foreach goto if implicit in in (generic) int interface internal is lock long namespace new null object operator out out (generic) override params private protected public readonly ref return sbyte sealed short sizeof stackalloc static string struct switch this throw TRUE try typeof uint ulong unchecked unsafe ushort using virtual void volatile while

14 Деклариране на данни При изпълнението на една програма, написана на С# се извършват определени действия над стойностите на данните, които се използват в програмата. Тези данни могат да бъдат постоянни (константи) или изменящи се (променливи). За удобство, ние ще ги наричаме операнди, защото те са основните участници в процесите на обработка (операциите) в резултат на което се генерира информация. Символите, които интерпретират процесите на тази обработка ще наричаме оператори. Алгоритмичните програмните езици, какъвто е С#, позволяват структуриране на операндите по тип. Това структуриране определя размера на паметта, отделена за всеки операнд и позволява де се генерира найефективния код за изпълнение на операции с него. Но преди да се използва в програмата, всеки операнд в езика С# трябва да се декларира (опише).

15 Деклариране на данни Kогато се декларира променлива, трябва да се посочи типа на данните, които тя ще съхранява, заедно с идентификатора (името) на самата променлива. Деклариране на операнд-променливи type varname1 [,varname2,,varnamen]; type=тип на данни, varnamei=име на i-та променлива, i=1,n; Compile-time константите се декларират със запазената дума const. Те задължително се инициализират в момента на декларирането им и не могат да се променят след това. Деклариране на операнд-константи (compile-time) const type constname1=val1,,constnamen=valn; const= модификатор за константа, type=тип на данни, constnamei=име на i-та константа, i=1,n. vali=i-та стойност Run-time константите се декларират като полета с модификатора readonly (само за четене). Инициализират се по време на изпълнение на програмата и не могат да се променят след това. Деклариране на операнд-константи (run-time) modificator readonly type constname=value;

16 Аритметични оператори + Събиране - Изваждане * Умножение / Деление % Делене по модул ++ Инкрементиране -- Декрементиране Релационни оператори < По-малко <= По-малко или равно > По-голямо >= По-голямо или равно == Равно!= Не равно ОПЕРАТОРИ В С# Разбира се, всичко щеше да е безинтересно, ако нямахме възможност да манипулираме данните, с които работим. Затова в езика С# са налични операторите. Те са много близки до операторите в C++ и Java и имат същите действие и приоритет. Присвояващи оператори = Присвоява (директно) += Увеличава с число и присвоява -= Намалява с число и присвоява *= Умножава с число и присвоява /= Дели на число и присвоява %= дели по модул и присвоява <<= Измества в ляво и присвоява >>= Измества в дясно и присвоява &= Двоично АND с присвояване ^= ХОR с присвояване = Двоично ОR с присвояване Логически оператори && Логическо АND Логическо ОR! Логическо NОТ ^????????????

17 ОПЕРАТОРИ В С# Побитови оператори & Побитово АND ^ Побитово ХОR Побитово ОR << Преместване наляво >> Преместване надясно ~ По битово NОТ Адресни оператори & Адрес на променлива * Деклариране на указател ** Деклариране на указател към указател :> Базов адрес Специални оператори?: Логическо присвояване, списък от изрази () Групиране в изрази или описание на функции [] Индексиране на масиви. Избор на елемент от структура -> клас чрез указател (tуре) Промяна на тип sizеоf Размер в байтове :: Деклариране на принадлежност & Псевдоним.* Указател към член-функция ->* Указател към член-функция

18 Оператори в С# За инициализиране на променливи се използва операторът за присвояване =. Инициализиране на операнди constnamei = израз ; varnamei=израз; Операторът за присвояване на стойност използва стойността отдясно на него за да я присвои на инстанцията, намираща се в ляво на него. За промяна на променливи се използват математическите оператори, подпомогнати и от присвояващи оператори, а за сравняване на техните стойности се използват релационни оператори. Инициализирането на операнди може да се реализира едновременно с декларирането им. int x= 10; bool logvalue = true; char symbol = x'; string firstname = Maria"; Пример

19 Оператори в С# Според броя на своите аргументи операторите се делят на едноаргументни (унарни), двуаргументни (бинарни) и триаргументни (тернарни). Всички двуаргументни оператори в C# са ляво-асоциативни, т.е. изразите, в които участват се изчисляват от ляво на дясно, освен операторите за присвояване на стойности. Всички оператори за присвояване на стойности и условните оператори?: и?? са дясно-асоциативни (изчисляват се от дясно на ляво). Едноаргументните оператори нямат асоциативност. В C# операторите могат да се предефинират. Някои от тях имат вградена контекстна предефинираност. Например операторът + извършва операцията математическо събиране когато се използва върху числени типове данни (int, long, float и др.). Когато обаче се използва върху символни низове, той слепва съдържанието им и връща новополучения низ.

20 Аритметични оператори примери double triangleside= 10.0; double triangleheight = 12.5; double trianglearea = triangleside * triangleheight/2; Console.WriteLine(triangleArea); // int a = 3; int b = 7; Console.WriteLine(a + b); // 10 Console.WriteLine(a + b++); // 10 Console.WriteLine(a + b); // 11 Console.WriteLine(a + (++b)); // 12 Console.WriteLine(14 / a); // 4 Console.WriteLine(14 % a); // double nonzeronumber = 5.0; double zeronumber = 0.0; Console.WriteLine(nonzeroNumber / zeronumber ); // -Infinity

21 Логически оператори примери X Y! X X && Y X Y X ^ Y 1 True 1 True 0 False 0 False 1 True 0 False 1 True 0 False 0 False 0 False 1 True 1 True 1 True 0 False 0 False 0 False 1 True 1 True 1 True 0 False 0 False 1 True 1 True 0 False bool a = true; bool b = false; Console.WriteLine(a && b); Console.WriteLine(a b); Console.WriteLine(! b); Console.WriteLine(b true); Console.WriteLine((5 > 7) ^ (a == b)); Логическите оператори приемат булеви стойности и връщат булев резултат (true или false). Основните булеви оператори са "И" (&&), "ИЛИ" ( ), изключващо "ИЛИ" (^) и логическо отрицание (!). // False // True // True // True // False

22 Побитови оператори Побитов оператор (bitwise operator) означава оператор, който действа над двоичното представяне на числовите типове. В компютрите всички данни и в частност числовите данни се представят като поредица от нули и единици (двоична бройна система). Двоичното представяне на данните е удобно, тъй като нулата и единицата в електрониката могат да се реализират чрез логически схеми, в които нулата се представя като "няма ток" или примерно с напрежение -5V, а единицата се представя като "има ток" или примерно с напрежение +5V. Побитовите оператори много приличат на логическите. Всъщност можем да си представим, че логическите и побитовите оператори извършат едно и също нещо, но върху различни типове данни. Логическите оператори работят над стойностите true и false (булеви стойности), докато побитовите работят над числови стойности и се прилагат побитово над тяхното двоично представяне, т.е. работят върху битовете на числото (съставящите го цифри 0 и 1). Също както при логическите оператори, в C# има оператори за побитово "И" (&), побитово "ИЛИ" ( ), побитово отрицание (~) и изключващо "ИЛИ" (^).

23 Побитови оператори X Y ~X X & Y X Y X ^ Y В програмирането има още два побитови оператора, които нямат аналог при логическите. Това са побитовото изместване в ляво (<<) и побитовото изместване в дясно (>>). Използвани над числови стойности те преместват всички битове на стойността, съответно на ляво или надясно, като цифрите, излезли извън обхвата на числото, се губят и се заместват с 0. Както виждаме, побитовите и логическите оператори си приличат много. Разликата в изписването на "И" и "ИЛИ" е че при логическите оператори се пише двоен амперсанд (&&) и двойна вертикална черта ( ), а при битовите единични (& и ). Побитовият и логическият оператор за изключващо или е един и същ "^". За логическо отрицание се използва "!", докато за побитово отрицание (инвертиране) се използва "~".

24 Побитови оператори примери Например 3 << 2 означава, че искаме да преместим два пъти наляво битовете на числото 3. Числото 3 представено в битове изглежда така: " ". Когато го преместим два пъти в ляво неговата двоична стойност ще изглежда така: " ", а на тази поредица от битове отговаря числото 12. Ако се вгледаме в примера можем да забележим, че реално сме умножили числото по 4. byte a = 3; // = 3 byte b = 5; // = 5 Console.WriteLine(a b); // = 7 Console.WriteLine(a & b); // = 1 Console.WriteLine(a ^ b); // = Console.WriteLine(~a & b); // = 4 Console.WriteLine(a << 1); // = 6 Console.WriteLine(a << 2); // = 12

25 Условни оператори? : и?? Условният оператор?: използва булевата стойност от един израз, за да определи кой от други два израза да бъде пресметнат и върнат като резултат. Операторът работи над 3 операнда и за това се нарича тернарен. Символът "?" се поставя между първия и втория операнд, а ":" се поставя между втория и третия операнд. Първият операнд (или израз) трябва да е от булев тип, а другите два операнда трябва да са от един и същ тип, например числа или стрингове. int a = 6; int b = 4; Console.WriteLine(a > b? "a>b" : "b<=a"); // a>b int num = a == b? 1 : -1; // num ще има стойност -1 Операторът?? е подобен на условния оператор?:. Разликата е в това, че този оператор се поставя между два операнда и връща левия операнд само ако този операнд няма стойност null, в противен случай връща десния. int a = 5; Console.WriteLine(a?? -1); // 5 string name = null; Console.WriteLine(name?? "(no name)"); // (no name)

26 Други оператори Операторът за достъп "." (точка) се използва за достъп до член променливите или методите на даден клас или обект. Квадратни скоби [] се използват за достъп до елементите на масив по индекс и затова се нарича още индексатор. Индексатори се ползват още за достъп до символите в даден стринг! Операторът за преобразуване на типове (type) се използва за преобразуване на променлива от един тип в друг. Операторът as също се използва за преобразуване на типове, но при невалидност на преобразуването връща null, а не изключение. Операторът new се използва за създаването и инициализирането на нови обекти. Операторът is се използва за проверка дали даден обект е съвместим с даден тип.

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

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

Подробно

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

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

Подробно

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

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

Подробно

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

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

Подробно

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

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

Подробно

Проф

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

Подробно

C++

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

Подробно

Lush Green

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

Подробно

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

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

Подробно

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

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

Подробно

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

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

Подробно

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

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

Подробно

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

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

Подробно

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

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

Подробно

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

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

Подробно

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

Подробно

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

Подробно

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

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

Подробно

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

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

Подробно

Информатика

Информатика ХИМИКОТЕХНОЛОГИЧЕН И МЕТАЛУРГИЧЕН УНИВЕРСИТЕТ - СОФИЯ ИНФОРМАТИКА част първа лектор: доц. д-р Атанас Атанасов Катедра Програмиране и използване на компютърни системи Лекция 3 ЛОГИЧЕСКИ ОСНОВИ НА КОМПЮТЪРНИТЕ

Подробно

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

Подробно

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

Подробно

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?

Подробно

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

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

Подробно

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

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

Подробно

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

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

Подробно

В настоящата тема ще разгледаме представянето на числата в изчислителните устройства. Ще покажем представянето на числата в позиционните бройни систем

В настоящата тема ще разгледаме представянето на числата в изчислителните устройства. Ще покажем представянето на числата в позиционните бройни систем В настоящата тема ще разгледаме представянето на числата в изчислителните устройства. Ще покажем представянето на числата в позиционните бройни системи, като се акцентира на десетична, двоична и шестнадесетична

Подробно

Mathematica CalcCenter

Mathematica CalcCenter Mathematica CalcCenter Основни възможности Wolfram Mathematica CalcCenter е разработен на базата на Mathematica Professional и първоначално е бил предназначен за технически пресмятания. Информация за този

Подробно

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

Подробно

Lush Green

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

Подробно

Microsoft Word - Glava24.doc

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

Подробно

MSDOS1

MSDOS1 ПРИЛОЖЕНИЕ C ANSI ESCAPE последователности Забележка Информацията в това приложение зависи от инсталацията и може да не се прилага в машините на всички производители. ANSI ESCAPE последователността представлява

Подробно

4

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

Подробно

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

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

Подробно

Потоци (Rev: 1.1)

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

Подробно

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

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

Подробно

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

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

Подробно

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

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

Подробно

Маисви

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

Подробно

Microsoft Word - VM22 SEC55.doc

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

Подробно

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

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

Подробно

Упражнение 3. Основни елементи на РНР синтаксис на езика, константи, променливи, изрази, оператори... Показване на текст в браузъра Да се създаде една

Упражнение 3. Основни елементи на РНР синтаксис на езика, константи, променливи, изрази, оператори... Показване на текст в браузъра Да се създаде една Упражнение 3. Основни елементи на РНР синтаксис на езика, константи, променливи, изрази, оператори... Показване на текст в браузъра Да се създаде една PHP страница, със стандартни HTML ,

Подробно

Microsoft PowerPoint - Ppt ppt [Read-Only]

Microsoft PowerPoint - Ppt ppt [Read-Only] ТЕХНИЧЕСКИ УНИВЕРСИТЕТ ВАРНА КАТЕДРА АВТОМАТИЗАЦИЯ НА ПРОИЗВОДСТВОТО ЦИФРОВИ СИСТЕМИ ЗА УПРАВЛЕНИЕ - ЧАСТ 2 Янко Янев ВИДОВЕ ТЕХНОЛОГИИ ЗА ИЗГРАЖДАНЕ НА ЦИФРОВИ СИСТЕМИ ЗА УПРАВЛЕНИЕ микропроцесори микроконтролери

Подробно