Microsoft Word - Glava24.doc

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

Download "Microsoft Word - Glava24.doc"

Препис

1 2.4. Въведение в езика OQL Обектно ориентираният език на заявките OQL е един опит да се стандартизират обектноориентираните езици на заявките във форма на език, обединяващ в себе си декларативното SQL програмиране от високо ниво с обектно-ориентираната парадигма на програмирането. В този раздел ще бъдат разгледани различни аспекти на програмирането на OQL. Важно е да се отбележи и това, че OQL е опит да се вкара SQL в обектно-ориентираната област. В същото време обаче, SQL3 пък е опит да се пренесе всичко най-добро на ООП в релационния свят. В този смисъл тези два езика се съгласувани като че ли, но в същото време между тях има съществена разлика. След като разгледаме по-долу ОО свойства на SQL3, ще имаме възможността да ги сравним. Двата подхода към обектната ориентация в тези езици се различават по отговорите в тях на въпроса: Колко важно в БД е отношението? Специалистите по ODL и OQL казват Отношението не е толкова важно. При такъв подход се използват обекти от всички типове, в това число множества или мултимножества от структури (т.е. отношения). За специалистите по SQL3 отношението остава фундаментално понятие при структурирането на данните. Затова и SQL3, както вече споменахме, често се нарича обектно-релационен. Този термин е приет и от известните компании, например ORACLE. В SQL3 релационният модел се разширява за сметка на въвеждането на по-сложни типове за кортежите на отношенията и за областите, принадлежащи на атрибутите на отношенията. Обектите и класовете се въвеждат в релационния модел само вътре в някакво отношение Свойства на ODL, свързани със заявките към ООБД Тук ще допълним някои от свойствата на езика ODL, разгледан в раздел 1.6. Най-напред ще отбележим, че определенията на ODL са свързани с главния си език (С++ или Smalltalk) още потясно, отколкото това има място на връзката на SQL с главния си език, например С. Това е така, защото ODL и С++ са по подразбиране достатъчно близки. Описанията на ODL директно могат да се превеждат в С++, а променливите на последния лесно могат да изразяват обекти, описани в операторите на ODL. Съединяването на главния език с описанията на ODL и заявките на OQL ще е още по-удобно. ODL допуска трети вид свойства (освен атрибути и връзки) методи. Методът е функция, свързана с класа. Тя е приложима към обекта на класа, но може и да има и други аргументи. Методите могат да се прилагат в ODL почти по същия начин, както когато те биха били атрибути на класа. Описание на сигнатурите на метода в ODL В ODL може да се опишат имената на методи, свързани с класа и типовете за въвеждане/извеждане на тези методи. Тези описания се наричат сигнатури и приличат на описанията на функциите в С++ (в отличие от определенията на функциите, представляващи програмите за реализация на тези функции). Реалната програма за метода се пише на главния език и не се явява част от ODL. Описанията на методите влизат заедно с атрибутите и връзките в описанието на интерфейса. В ОО езици всеки метод обикновено е свързан с класа (т.е. с интерфейса) и се извиква върху обекта от този клас. По такъв начин обектът се явява скрит аргумент на метода. Този подход позволява да се използва едно име на метод за няколко класа, поради това, че смисълът на конкретния метод се определя от обекта, за който се изпълнява операцията. Такова име на метода се нарича преопределено (то се появява в качеството на метод за няколко класа). Синтаксисът за описание на методите прилича на описанието на функции в езика С с две важни допълнения: 1. Параметрите на функциите се определят като in, out или inout. Това означава, че те се използват за вход и изход на параметри или и за двете съответно. Последните два типа параметри могат да се изменят с помощта на функции; параметърът in не се променя. Параметрите out и inout се предават с помощта на позоваване, а параметрите in с помощта на стойност. Функцията може да има възвръщаема стойност, което е начин за получаване на резултата на функцията, който се отличава от приписването на стойности на параметъра out или inout. 1

2 2. Функциите могат да пораждат изключения особени отговори, излизащи извън рамките на нормалното предаване на стойности и механизма на отговора, посредством който си взаимодействат функциите. Изключението обикновено изразява ненормални или неочаквано условие, което ще се използва от някаква извикваща го функция (възможно и косвено, чрез последователност от извиквания). Делението на нула е пример на условие, което може да се счита за изключение. В ODL след описанието на функция може да следва ключовата дума raises и затворен в скоби списък от изключения, които е способна да породи дадена функция. Сигнатурите имат определен смисъл, състоящ се в това, че при реализацията на схема в реален език за програмиране може автоматично да се провери съответствието на конкретната реализация на проекта, изразен в дадената схема. Не е възможно да се провери правилно ли е изразен в реализацията смисъла на операцията, но все пак може да се провери броя и типа на параметрите за вход и изход. Пример Нека имаме едно развитие на определението на интерфейса на класа обекти Flight, който беше показан в пример ) interface Flight 2) (extent Flights 3) (key (title)) { 4) attribute string title; 5) attribute integer length; 6) attribute Struct Addr {string airport, string city} address; 7) relationship Set <Passenger> flightredln inverse Passenger :: flights; 8) float lengthinhours() raises(nolengthfound); }; Тук имат място две добавки, които не са свързани с методите. а) В ред 2 има място описание extent, което представлява името на текущото множество обекти от този клас. По същество описанието на екстента на даден клас се осъществява непосредствено след името на класа (интерфейса), а смисълът му е аналогичен на името на отношение, а самото определение на класа е аналогично на описанието на типовете на атрибутите на това отношение. б) В ред 5 е добавен нов атрибут, разширяващ знанията за класа това е атрибутът length, който съдържа продължителността на полета в минути. В описанието на класа Flight е включен и метод на ред 8. Той поражда във вид на връщана стойност - продължителността на обекта полет, към който той и се прилага, но при това привежда минутите (представени в атрибута length) в часове, изразени в число с плаваща запетая. Тази функция не използва параметри. Обектът от отношението Flight, към който се прилага метода, се явява скрит аргумент и именно от него възможната реализация на lengthinhours получава продължителността на полета в минути. Тази функция може да поражда изключението nolengthfound. Вероятно то възниква тогава, когато атрибутът length на обекта, към който се прилага метода lengthinhours има неопределена стойност, което е неспособно да изрази правилно продължителността (например, числото е отрицателно или нула) OQL. Въведение. Типове Езикът OQL ще бъде разгледан не така подробно както SQL. Ще обсъдим само най-важните видове оператори и характерните особености на този език, въпреки че в него съществуват и множество други средства. Важно е веднага да посочим, че OQL не позволява да се изразят произволни функции, така, както това може да стане в обикновените езици за програмиране от типа на С, например. Той осигурява сходен начин за изразяване на конкретни заявки на по-високо ниво на абстракция, отколкото типичните оператори на обикновения език. Предполага се, че OQL се използва за разширение на главния обектно-ориентиран език С++, Smalltalk или Java. Възможността 2

3 да се съединят операторите на главния език със заявките на OQL, без явния пренос на стойностите между двата езика, има по-високо ниво, отколкото нивото на вграждане на SQL в главния език, което беше разгледано в раздела 2.3. Като един начален ОО пример може да се използва примера 1.6.5, но с добавките extent и за класовете Passenger и AirCompany, както това беше направено за класа Flight в примера Система типове в OQL Типовете в OQL се строят до голяма степен така, както това се прави в описанията на ODL (параграф ). Но в OQL съществува граница на влагане на конструкторите на типове. Когато се разглежда системата типове на език за програмиране е необходимо да се различава описанието на типа на променливата (наричано понякога изменчив обект) и изразяването на една постоянна стойност (наричана понякога неизменяем обект). Променливите, използвани в операторите на OQL се описват в обкръжаващия главен език с помощта на нотациите на ODL (параграф ) или нещо подобно. Като език за дефиниране на данни ODL не се нуждае от константи, но в програмите, написани на OQL те са нужни. Затова е необходимо да се знае как в OQL се създават константи от произволен тип. Те се строят върху описаната по-долу основа с помощта на конструктори на типове. 1. Базови типове: а) Естествените числа, числата с плаваща запетая, символите, низовете и булевите стойности се представят в OQL така, както в SQL, само че низовете се затварят в двойни кавички. б) Изброявания. Стойностите в изброяванията реално се описват в ОDL. Всяка от тези стойности може да се използва в качеството на константи. 2. Сложните типове се строят от следните конструктори на типове: a) Set(..) б) Bag(..) в) List(..) г) Array(..) д) Struct(..) Първите четири типа се наричат типове на множествата. Те, заедно със Struct, могат да се прилагат към всякакви стойности на подходящите базови или сложни типове. Когато се използва Struct следва да се определят и имената на полетата и съответните им стойности. След всяко име следва двоеточие и стойност, а двойки стойности се разделят със запетая. Пример Изразът bag(3,4,3) означава мултимножество, в което 3 влиза два пъти, а 4 само един. Изразът struct(rez: bag(3,4,3), grad: varna ) означава структура с две полета. Едното от тях е с име rez и заема стойности от споменатото мултимножество, а стойността на второто поле grad се явява низът varna Изрази от типа select-from-where в OQL Подобно на SQL, в езика OQL могат да се записват изречения с помощта на синтаксиса selectfrom-where. Пример Нека имаме следния пример на въпрос към ООБД за това, каква е продължителността в минути на полета с име BALKAN343 : SELECT m.length WHERE m.title = BALKAN343 Ако изключим това, че са използвани двойни кавички, в които е заграден низът-константа, то тази заявка ще бъде заявка на езика SQL, а не на OQL. Единственото несъответствие се състои в това, че частта от SQL-заявката пред ключовата дума FROM се записва така FROM Flight AS m 3

4 Обаче в OQL ключовата дума AS се използва по желание, както и в SQL. Оказва се, че в OQL е смислено да се пропуска тази ключова дума, тъй като израза Flights m означава, че m е променлива, указваща към всеки обект от степен Flights, т.е. от текущото множество от обектите на класа Flight. А що е то степен ще видим в следващото определение. В общия случай в изреченията на OQL от типа select-from-where влизат следните елементи: 1. Ключова дума SELECT, след която следват списък от изречения. 2. Ключова дума FROM, след която следва списък от описания на променливи, представени с помощта на: a) израз, стойността на който има тип множества, например множество или мултимножество; б) използвана по избор ключова дума AS; в) име на променлива. Обикновено в т. а) изразът се явява екстент (пространство, степен, размер от англ. extent) на някакъв клас, например Flights за класа Flight. Това е екстент, защото е аналог в частта FROM на SQL заявка. В описанието на променливата е допустим всякакъв израз, пораждащ множество, например друг израз от типа select-from-where. В SQL2 няма директен аналог на тази възможност, въпреки че някои комерсиални системи на SQL допускат подзаявки в частта FROM. 3. Ключовата дума WHERE и израз с булева стойност. В него, както и в израза, следващ след SELECT, в качеството на операнди се използват само константи и променливи, указани в частта FROM. Операторите за сравнения, са тези които са и в SQL, но за изразяване на се използва символа!=, а не <>. Логическите оператори AND, OR и NOT имат същия смисъл, както и в SQL Заявката поражда мултимножество от обекти. То се изчислява чрез разглеждане на възможните стойности на променливите в изречението FROM във вложените цикли. Ако всяка комбинация от стойности на тези променливи удовлетворява условията на израза WHERE, то обектът, описан чрез израза SELECT, се добавя към мултимножеството, явяващо се резултат от оператора select-from-where. Изразите в частта SELECT не е задължително да бъдат прости променливи. В тях могат да влизат други изрази, построени с конструктори на типове. Тогава се говори за сложни входни изрази в OQL. Например, може да се използва конструктора Struct към няколко израза и да се получи заявка от типа select-from-where, пораждаща множество или мултимножество от структури. Пример Нека предположим, че е необходимо да се намери множество от двойки служещи, живущи на един и същ адрес. Това може да стане с помощта на следната заявка: SELECT DISTINCT Struct(Sluj1: s1, Sluj2: s2) FROM SLUJs.s1, SLUJs.s2 WHERE s1.adr = s2.adr AND s1.name < s2.name Тук се разглеждат двойки служещи s1 и s2. Клаузата WHERE проверява имат ли те един и същ адрес, предшества ли по азбучен ред името на първия служещ, името на втория. Ето защо не е възможно да се получат чифтове служещи, където едно име влиза два пъти или две двойки, в които един и същи служещ влиза на различно място в тях. За всяка двойка, преминала проверката, се поражда структура запис. Типът на тази структура е запис с полета Sluj1 и Sluj2. Типът на всяко поле е SLUJ, тъй като това е типът на променливите s1 и s2, осигуряващи стойностите на двете полета. Формално типът на тази структура е от вида: Struct N {Sluj1: SLUJ, Sluj2: SLUJ} за някакво име N. Типът на резултата от заявката е множество от такива структури от типа N, или Set<Struct N {Sluj1: SLUJ, Sluj2: SLUJ}> Типът на резултата от дадената заявка е пример за тип, който може да се появи в програми на езика OQL, но той не може да се появи като тип на атрибут или връзка в описанията на езика ODL. Ключовата дума DISTINCT в примера отстранява дубликати в двойките. Това може да се случи и в други заявки от типа select-from-where, пораждащи мултимножество в качеството на 4

5 отговор. В OQL, както и в SQL, дубликатите не се отстраняват по премълчаване. Това може да стане само чрез ключовите думи DISTINCT и SELECT Създаване на нови обекти в OQL Особен интерес в OQL представляват възможностите за създаване на нови обекти чрез израза select-from-where, и с помощта на изчисления върху вече съществуващо множество обекти. Могат да се създават обекти и чрез обединение на константи или други изрази в структури и приложение към стойности на конструктори на типове. Вместо ъглови скоби, използвани за описание на типове, при конструирането на стойности се използват кръгли (обикновени) скоби. Такова съглашение е показано в последния пример , където, изречението SELECT DISTINCT Struct(Sluj1: s1, Sluj2: s2) означава, че резултатът от заявката е множество от обекти от типа Struct{Sluj1: SLUJ, Sluj2: SLUJ}. Имената на полетата Sluj1 и Sluj2 определят една структура, а типовете на тези полета могат да се изведат от имената на променливите s1 и s2. Сега ако се върнем към последния пример и си представим, че един тип SlujPair е определен така: Struct{Sluj1: SLUJ, Sluj2: SLUJ} то пример може да се презапише, използвайки този тип в частта SELECT, така: SELECT DISTINCT SlujPair(Sluj1: s1, Sluj2: s2) FROM SLUJs.s1, SLUJs.s2 WHERE s1.adr = s2.adr AND s1.name < s2.name Единственото изменение на старата заявка се състои в това, че резултатът от този нов неин вариант има тип Set<SlujPair> и може да бъде приписан на променлива от главния език, имаща същия тип Присвояване на стойности на променливи от главния език OQL се вписва естествено в главния език и затова не е необходим SQL-механизмът за предаване на данни между компонентите на кортежите и променливите от главния език. OQLизразите пораждат обекти във вид на стойности. На всяка променлива от главния език може да се присвои стойност, която е и резултат от OQL-израза. Пример Нека имаме следната OQL заявка: SELECT m WHERE m.length < 100; Тя поражда множество от полети, чиято продължителност е по малка от 100 минути. Неговият тип е Set<Flight>. Ако една променлива shortflight от главния език е от същия тип, то в един вариант на С++, разширен с OQL-възможности, може да се запише: ShortFlight = SELECT m WHERE m.length < 100; Стойността на shortflight ще бъде множеството от обекти от класа Flight, които са къси Извличане на елементи от множеството (Оператор ELEMENT) Тъй като изразите select-from-where пораждат множество или мултимножество от обекти, то за получаването на единствен елемент от множеството (мултимножеството) са нужни допълнителни средства. Това е вярно, даже когато точно е известно, че множеството се състои от един единствен елемент. Такъв е резултатът от примера , където полетът с даденото име ВАЛКАН343 е единствен. Операторът ELEMENT в OQL превръща едноелементното множество или мултимножество в единствен негов член. Този оператор може да се използва към резултат от заявка, който поражда действително едноелементно мултимножество. Пример Нека на променливата balk343 от типа Flight (т.е. нейният тип е класът Flight) е необходимо да се присвои обекта, представляващ дължината в минути на полета BAL- KAN343. Този обект и е резултат от заявката по пример Не е възможно директното 5

6 присвояване на това мултимножество на променливата balk343, тъй като това са различни типове. Ако обаче се приложи операторът ELEMENT така: balk343 = ELEMENT(SELECT m.length WHERE m.title = BALKAN343 ); то типовете на променливата и израза ще си съответстват един на друг и присвояването ще бъде допустимо Извличане на всеки елемент от едно множество (Оператор ORDER BY) Да се извлече всеки член на едно множество или мултимножество в OQL е достатъчно сложно. Но е по-просто, отколкото приложението на курсорите в SQL за целта. Най-напред множеството (мултимножеството) се преобразува в списък чрез select-from-where изречение и оператора ORDER BY. Резултатът е списък от избраните обекти или стойности. Пример Списъкът на всички обекти от класа Flight може да се получи като се използва названието на полетите - title, което е ключ за Flight. Ще имаме следния израз: FlightList = SELECT m ORDER BY m.title; Тук на променливата от главния език FlightList се присвоява списък от всички обекти от класа Flight, подредени по названието на полетите. Този списък по-нататък в главната програма може да се обработи. Всеки елемент от него може да се получи по неговия номер. В заключение на това кратко разглеждане на OQL следва да отбележим, че този език има и редица други възможности. Ето названията на някои от тях: - Подзаявки; - Подреждане на резултати; - Изрази с квантори; - Изрази с GROUP BY; - Оператори HAVING; Указаните средства могат да се видят в литературата, в частност в [4]. 6

5

5 4. ОПЕРАТОР ЗА ИЗБОР НА ДАННИ ОТ ТАБЛИЦА За различните видове справки най-често се използва оператор SELECT. Обикновено резултатът от изпълнението му е таблица. Общ вид на оператора 1 : [ DISTINCT ]

Подробно

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

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

Подробно

Slide 1

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

Подробно

Microsoft Word - KZ_TSG.doc

Microsoft Word - KZ_TSG.doc ПРИЛОЖЕНИЕ НА ТЕОРИЯТА НА СИГНАЛНИТЕ ГРАФИ ЗА АНАЛИЗ НА ЕЛЕКТРОННИ СХЕМИ С ОПЕРАЦИОННИ УСИЛВАТЕЛИ В теорията на електронните схеми се решават три основни задачи: ) анализ; ) синтез; ) оптимизация. Обект

Подробно

Microsoft Word - VM22 SEC55.doc

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

Подробно

Microsoft Word - PRMAT sec99.doc

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

Подробно

Microsoft Word - VM22 SEC66.doc

Microsoft Word - VM22 SEC66.doc Лекция 6 6 Теорема за съществуване и единственост Метричното пространство C [ a b] Нека [ a b] е ограничен затворен интервал и да разгледаме съвкупността на непрекъснатите функции f ( определени в [ a

Подробно

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

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

Подробно

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

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

Подробно

Lush Green

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

Подробно

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

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

Подробно

Microsoft Word - nbb2.docx

Microsoft Word - nbb2.docx Коректност на метода на характеристичното уравнение за решаване на линейно-рекурентни уравнения Стефан Фотев Пиша този файл, тъй като не успях да намеря в интернет кратко и ясно обяснение на коректността

Подробно

Mathematica CalcCenter

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

Подробно

Проф

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

Подробно

Homework 3

Homework 3 Домашно 3 по дисциплината Дискретни структури за специалност Информатика I курс летен семестър на 2015/2016 уч г в СУ ФМИ Домашната работа се дава на асистента в началото на упражнението на 25 26 май 2016

Подробно

Управление на перална машина с размита логика Пералните машини в наши дни са обикновен уред в дома. Най-голяма изгода, която потребителя получава от п

Управление на перална машина с размита логика Пералните машини в наши дни са обикновен уред в дома. Най-голяма изгода, която потребителя получава от п Управление на перална машина с размита логика Пералните машини в наши дни са обикновен уред в дома. Най-голяма изгода, която потребителя получава от пералната машина е, че имат почистване, центрофугиране

Подробно

Изследване на строежа и съответствието между формите на музика, слово и движения в упражнението Колко сме доволни Следователно, щом дойде Светлината,

Изследване на строежа и съответствието между формите на музика, слово и движения в упражнението Колко сме доволни Следователно, щом дойде Светлината, Изследване на строежа и съответствието между формите на музика, слово и движения в упражнението Колко сме доволни Следователно, щом дойде Светлината, тя създава образи, форми. Във формите се виждат вече

Подробно

Microsoft Word - MEIT_Burova-BD.doc

Microsoft Word - MEIT_Burova-BD.doc Утвърдил:.. Декан Дата... СОФИЙСКИ УНИВЕРСИТЕТ СВ. КЛИМЕНТ ОХРИДСКИ Факултет: Физически... Специалност: (код и наименование)... Магистърска програма: Микроелектроника и информационни технологии Дисциплина:

Подробно

4

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

Подробно

C++

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

Подробно

MSDOS1

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

Подробно

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

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

Подробно

Microsoft Word - stokdovo saprotivlenie.doc

Microsoft Word - stokdovo saprotivlenie.doc Движения при наличие на Стоксово съпротивление При един често срещан вид движения неподвижно тяло започва да се движи под действие на сила с постоянна посока Ако върху тялото действа и Стоксова съпротивителна

Подробно

Информатика

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

Подробно

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

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

Подробно

Microsoft Word - IGM-SER1111.doc

Microsoft Word - IGM-SER1111.doc Лекция Редове на Фурие поточкова сходимост Теорема на Дирихле Тук ще разглеждаме -периодична функция ( ) която ще искаме да бъде гладка по части Това означава че интервала ( ) може да се раздели на отделни

Подробно

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

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

Подробно

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

Microsoft Word - PMS sec1212.doc Лекция Екстремуми Квадратични форми Функцията ϕ ( = ( K се нарича квадратична форма на променливите когато има вида ϕ( = aij i j i j= За коефициентите предполагаме че a ij = a ji i j При = имаме ϕ ( =

Подробно

Лабораторно упражнение 6 Тема: Оператори за цикли в езика C++. Реализиране на циклични алгоритми I. Цел на лабораторното упражнение Да се затвърдят зн

Лабораторно упражнение 6 Тема: Оператори за цикли в езика C++. Реализиране на циклични алгоритми I. Цел на лабораторното упражнение Да се затвърдят зн Лабораторно упражние 6 Тема: Оператори за цикли в езика C++. Реализира на циклични алгоритми I. Цел на лабораторното упражние Да се затвърдят знанията на студентите за организацията и синтаксиса на програми

Подробно

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

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

Подробно

Класове в 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 : 1.3 16 ноември 2004 г. Пример:

Подробно

036v-b.dvi

036v-b.dvi МАТЕМАТИКА И МАТЕМАТИЧЕСКО ОБРАЗОВАНИЕ, 2010 MATHEMATICS AND EDUCATION IN MATHEMATICS, 2010 Proceedings of the Thirty Ninth Spring Conference of the Union of Bulgarian Mathematicians Albena, April 6 10,

Подробно