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

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

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

Препис

1 2. Лексически анализ. Основни понятия и алгоритъм на лексическия анализ. Програмна структура на лексическия анализатор Цел на упражнението Упражнението представя кратко въведение в теорията на лексическия анализ. Дадени са основните понятия и базовият алгоритъм на работа на лексическия анализатор. Обяснена е програмната структура на учебния лексически анализатор, най-важните методи и структури от данни, използвани за разпознаване на лексеми Лексически анализ - основни понятия Основната задача на лексическия анализ е разпознаване на лексеми (tokens) във входната програма. Модулът, който изпълнява тази задача, се нарича лексически анализатор (или скенер). На входа на лексическия анализатор се получава поток от символи. Този поток представлява текста на входната програма, в който обикновено предварително са премахнати символите за нов ред. В резултат от работата на лексическия анализатор на неговия изход се получава поток от лексеми. Лексемата се представя чрез структура от данни, която се състои от два основни елемента: - тип на лексемата (напр. ключова дума, оператор, разделител, константа) - стойност на лексемата, представляваща символ или символен низ (напр. if, >, {, 100) Освен разпознаването на лексемите на етапа на лексическия анализ се решават още следните задачи: - Откриване на лексически грешки във входната програма невалидна лексема, невалидна числова, символна или низова константа - Премахване на незначещи символи от входната програма интервал, табулация 2.2. Лексика на входния език Във входния език на учебния компилатор са дефинирани следните типове лексеми: - идентификатори (имена на променливи и функции) - ключови думи (напр. while, if, else, print, read, return) - целочислени, булеви, символни и низови константи (напр. 10, true, '1', "5") - едно и двусимволни оператори и разделители (напр. =, >, <, ==, >=, <=, {) Лексиката на всеки език за програмиране се дефинира чрез азбука и граматика Азбука на входния език

2 Азбуката на входния език включва следните символи: - малки и главни букви ('a'..'z', 'A'..'Z') - цифри ('0'..'9') - специални символи (например '+', '-', '%', ';') Граматика на входния език Граматиката се състои от правила, всяко от които има следния вид: лява страна : дясна страна Входният език на учебния компилатор е дефиниран чрез следната лексическа граматика: Ключови думи IF INT CHAR ELSE READ TRUE VOID FALSE WHILE PRINT LENGTH RETURN BOOLEAN PROGRAM : 'if' : 'int' : 'char' : 'else' : 'read' : 'true' : 'void' : 'false' : 'while' : 'print' : 'length' : 'return' : 'boolean' : 'program' Оператори PLUS MINUS : '+' : '-'

3 MUL DIV MOD BECOMES : '*' : '/' : '%' : '=' Релационни оператори NOT EQUALS NOTEQUALS GREATER LESS GREATER_EQ LESS_EQ : '!' : '==' : '!=' : '>' : '<' : '>=' : '<=' Логически оператори AND OR : '&&' : ' ' Специални символи LSQUARE RSQUARE LBRACKET RBRACKET LPAREN RPAREN SEMICOLON COMMA SINGLE_QUOTE : '[' : ']' : '{' : '}' : '(' : ')' : ';' : ',' : '''

4 DOUBLE_QUOTES ARROW AT : '"' : '->' : '@' Целочислени, булеви и символни константи INT_LITERAL : '0' [1-9]{1}[0-9]* CHAR_LITERAL BOOLEAN_LITERAL : any ascii character : 'true' 'false' Идентификатор IDENTIFIER : [A-Za-z]{1}[A-Za-z0-9]* В правилото за лексемата идентификатор (IDENTIFIER) е използван регулярен израз, който дефинира, че валиден идентификатор в езика започва с една буква (символ в диапазона a-z или A-Z ), следвана от произволен брой букви и/или цифри Работа на лексическия анализатор Работата на лексическия анализатор се състои в последователно прочитане на всички символи от входния поток и причисляване на поредния прочетен символ към текущо формираната лексема. По-долу е даден общият алгоритъм на работа на лексическия анализатор. Променливата currentchar съдържа поредния прочетен символ от входния текст. (1) while (currentchar!= Source.EOF) (2) { (3) switch (currentchar) { (4) case : case \t : (5) /* Премахване на незначещ символ интервал или табулация */ (6) break; (7) case a : case b : case z : (8) /* Разпознаване на идентификатор или ключова дума */

5 (9) break; (10) case 0 : case 1 : /*... */ case 9 : (11) /* Разпознаване на целочислена константа */ (12) break; (13) case \ : (14) /* Разпознаване на символна константа */ (15) break; (16) case : (17) /* Разпознаване на низова константа (символен низ) */ (18) break; (19) case - : case = : case > : case < : case! : case & : case : case / : (20) /* Разпознаване на двусимволни оператори */ (21) break; (22) case + : case [ : case ] : case { : case } : case ( : case ) : case ; : case * : case % : case, : : (23) /* Разпознаване на едносимволни оператори и разделители */ (24) break; (25) }; Идентификаторите и ключовите думи започват с буква, поради което разпознаването им става в една и съща case клауза (редове 7 и 8). За разграничаване на идентификатори от ключови думи думите се записват предварително в подходяща структура от данни (напр. таблица или списък). При разпознаването на ключова дума тази структура се претърсва за откриване на низа на ключовата дума Програмна структура на учебния лексическия анализатор На входа на лексическия анализатор се получава поток от символи. Този поток представлява входната програма, която е предварително преформатирана чрез премахване на символите за нов ред от входно-изходния интерфейс, реализиран в клас Source. В резултат лексическият анализатор получава входната програма като един символен низ.

6 В кода на лексическия анализатор лексемите са дефинирани в интерфейса Token (файл TokenImpl.java). public interface Token<Type> { } public Type gettokentype(); public String gettext(); public int getposition(); public int getline(); Този интерфейс описва тип на лексемата, низ на лексемата, номер на позиция и ред, на който се намира лексемата в текста на програмата Разпознаване на ключови думи Ключовите думи се записват в структура keywords от тип HashSet с цел да бъдат разграничавани от идентификаторите. private static Set<String> keywords = new HashSet<>(); static{ keywords.add(if.value); /* ToDo - Add all other keywords into the HashSet */ } Търсенето на ключова дума в структурата се изпълнява от метод iskeyword(); Разпознаване на оператори и разделители Разпознаването на оператори и раздели се изпълнява от метода nexttoken(). Този метод реализира основния алгоритъм на работа на учебния лексически анализатор. (1) public Token<TokenType> nexttoken() { (2) currentchar = source.getcurrentchar(); (3) line = source.getlinenumber(); (4) position = source.getposition() + 1; (5) while (currentchar!= Source.EOF) { (6) switch (currentchar) { (7) //space and tabs (8) case ' ' : case '\t' : handlespaceandtabs(); continue; (9) //2 character operators

7 (10) case '-' : return handletwocharop('>', TokenType.MINUS, TokenType.ARROW); (11) case '=' : /* ToDo handle operators '=' (BECOMES) and '==' (EQUALS) */ (12) case '>' : /* ToDo handle operators '>' (GREATER) and '>=' (GREATER_EQ) */ (13) case '<' : /* ToDo handle operators '<' (LESS) and '<=' (LESS_EQ) */ (14) case '!' : /* ToDo handle operators '!' (NOT) and '!=' (NOTEQUALS) */ (15) case '&' : /* ToDo handle operator '&&' (AND) or unknown symbol (OTHER) */ (16) case ' ' : /* ToDo handle operator ' ' (OR) or unknown symbol (OTHER) */ (17) case '/' : return handleslash(); (18) case '\'': return handlecharliteral(); (19) case '"' : return handlestringliteral(); (20) //1 character operators (21) case '+' : return rettokenandadvance(tokentype.plus); (22) case '[' : /* ToDo handle operator '[' (LSQUARE) */ (23) case ']' : /* ToDo handle operator ']' (RSQUARE) */ (24) case '{' : /* ToDo handle operator '{' (LBRACKET) */ (25) case '}' : /* ToDo handle operator '}' (RBRACKET) */ (26) case '(' : /* ToDo handle operator '(' (LPAREN) */ (27) case ')' : /* ToDo handle operator ')' (RPAREN) */ (28) case ';' : /* ToDo handle operator ';' (SEMICOLON) */ (29) case '*' : /* ToDo handle operator '*' (MUL) */ (30) case '%' : /* ToDo handle operator '%' (MOD) */ (31) case ',' : /* ToDo handle operator ',' (COMMA) */ (32) case '@' : /* ToDo handle operator '@' (AT) */ (33) default : (34) if (isletter(currentchar)) { return handleidentifier(); } (35) if (isdigit(currentchar)) { return handledigit(); } (36) return rettokenandadvance(tokentype.other, currentchar + "");

8 (37) } (38) } (39) return null; (40) } Методът прочита пореден символ от потока на входната програма в променливата currentchar, проверява кой тип лексеми започва с този символ, след което започва разпознаване на съответния тип лексема. Прочетеният символ и следващите символи след него формират низа на лексемата. Примери за едносимволни оператори са символите +, *, %. Едносимволни разделители са символите (, ), [, ], {,, },,, Примери за двусимволни оператори са ==, ->, <=, >=,!=,. - Разпознаване на едносимволни оператори и разделители Например символ + се разпознава като лексема с име PLUS със следното извикване на метода rettokenandadvance: (21) case '+' : return rettokenandadvance(tokentype.plus); - Разпознаване на двусимволни оператори и разделители При разпознаване на двусимволен оператор или разделител се проверява кой е следващият символ след поредния прочетен. В зависимост от следващия символ се формира съответен едно или двусимволен оператор или разделител. Нека например в променливат currentchar е прочетен пореден символ -. Този символ може да формира едносимволен оператор - или двусимволен разделител ->. Затова се проверява следващият символ. Ако той е >, то се разпознава двусимволен оператор -> (ARROW). Ако символът е друг, тогава се разпознава едносимволен оператор - (MINUS). Реализацията на този алгоритъм изглежда по следния начин: (10) case '-' : return handletwocharop('>', TokenType.MINUS, TokenType.ARROW); Разпознаване на лексически грешки Лексическият анализатор разпознава следните типове грешки: - Невалидна числена константа това са константи със стойност над Невалидна низова константа това е напр. низ aaa Обработването на лексически грешки се реализира чрез генериране на изключение LexicalException.

9 Контролни въпроси: 1. Какви задачи се решават в етапа на лексическия анализ? 2. Какво означава понятието лексема? 3. Какво представлява входа и изхода на лексическия анализатор? 4. Определете лексемите в следния програмен фрагмент: while ( i > 0) { } a = a + 1; Задачи: 1. Попълнете всички ключови думи в HashSet структурата keywords във файл TokenType.java на проекта. 2. Довършете фрагментите за разпознаване на едносимволни и двусимволни оператори и разделители във файл LexerImpl.java на проекта. 3. Създайте нов файл keywords.txt и го копирайте в директория resources на проекта. Запишете във файла всички ключови думи на езика. Стартирайте лексическия анализатор с този файл и проверете в изхода дали всяка ключова дума се разпознава правилно. Упътване: Името на входния файл се задава в метода main: public static void main(string[] args) throws IOException { Lexer<TokenType> lexer = new LexerImpl(new SourceImpl("resources/keywords.txt")); } System.out.println(CompilerTestHelper.getTokensAsString(lexer)); 4. Създайте нов файл operators.txt в директория resources на проекта. Запишете във файла всички оператори и разделители на езика. Стартирайте лексическия анализатор с този файл и проверете в изхода дали всички оператори и разделители се разпознават правилно. 5. В директория resources на проекта е дадена примерна входна програма (файл Fib.txt). Стартирайте лексическия анализатор с този файл. Проверете в изхода дали всички лексеми от програмата са разпознати правилно. 6. Да се променя входната програма и да се проверява изхода на лексическия анализатор.

10 Допълнителни задачи: 1. С помощта на инструмента Debug наблюдавайте четенето на символите от входния поток (т.е. стойностите на променливата currentchar по време на изпълнение). 2. С помощта на инструмента Debug наблюдавайте формирането на лексеми при изпълнение на лексическия анализатор.

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

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

Подробно

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

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

Подробно

C++

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

Подробно

Проф

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

Подробно

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

Подробно

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

Масиви и низове Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, 2018/19 г ноември 2018 г. Трифон Трифонов (УП 18/19) Ма Масиви и низове Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, 2018/19 г. 15 29 ноември 2018 г. Трифон Трифонов (УП 18/19) Масиви и низове 15 29 ноември 2018 г. 1 / 16 Масиви Логическо

Подробно

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

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

Подробно

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

Подробно

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

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

Подробно

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

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

Подробно

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

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

Подробно

Lush Green

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

Подробно

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

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

Подробно

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

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

Подробно

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

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

Подробно

5

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

Подробно

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

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

Подробно

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

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

Подробно

Маисви

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

Подробно

СУ ДИМИТЪР МАРИНОВ ГРАД ЛОМ ул. Дунавска 67, тел: 0971/60011, Утвърдил: Директор на СУ Димитър Марин УЧЕБНА ПРОГРАМА ПО

СУ ДИМИТЪР МАРИНОВ ГРАД ЛОМ ул. Дунавска 67, тел: 0971/60011,   Утвърдил: Директор на СУ Димитър Марин УЧЕБНА ПРОГРАМА ПО СУ ДИМИТЪР МАРИНОВ ГРАД ЛОМ ул. Дунавска 67, тел: 0971/60011, e-mail: sou_4emi_lom@yahoo.com Утвърдил: Директор на СУ Димитър Марин УЧЕБНА ПРОГРАМА ПО ДИГИТАЛНА КРЕАТИВНОСТ ЗА VIII КЛАС КРАТКО ПРЕДСТАВЯНЕ

Подробно

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

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

Подробно

Потоци (Rev: 1.1)

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

Подробно

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

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

Подробно

Kontrolno 5, variant 1

Kontrolno 5, variant 1 N P - П Ъ Л Н И З А Д А Ч И КОНТРОЛНО 5 ПО ДИЗАЙН И АНАЛИЗ НА АЛГОРИТМИ СУ, ФМИ ( ЗА СПЕЦИАЛНОСТ КОМПЮТЪРНИ НАУКИ, 1. ПОТОК; 3 МАЙ 018 Г. ) Задача 1. Разглеждаме задачата за разпознаване LongestCycle:

Подробно

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

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

Подробно

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

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

Подробно

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

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

Подробно

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

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

Подробно

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

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

Подробно

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

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

Подробно

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

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

Подробно

MSDOS1

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

Подробно

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

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

Подробно

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

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

Подробно

УЧЕБНА ПРОГРАМА ПО ВИЗУАЛНО ПРОГРАМИРАНЕ ЗА III КЛАС (ВЪВЕЖДАНЕ НА ДИСЦИПЛИНАТА ПО ПРОЕКТ ИНОВАТИВНО УЧИЛИЩЕ ) КРАТКО ПРЕДСТАВЯНЕ НА УЧЕБНАТА ПРОГРАМА

УЧЕБНА ПРОГРАМА ПО ВИЗУАЛНО ПРОГРАМИРАНЕ ЗА III КЛАС (ВЪВЕЖДАНЕ НА ДИСЦИПЛИНАТА ПО ПРОЕКТ ИНОВАТИВНО УЧИЛИЩЕ ) КРАТКО ПРЕДСТАВЯНЕ НА УЧЕБНАТА ПРОГРАМА УЧЕБНА ПРОГРАМА ПО ВИЗУАЛНО ПРОГРАМИРАНЕ ЗА III КЛАС (ВЪВЕЖДАНЕ НА ДИСЦИПЛИНАТА ПО ПРОЕКТ ИНОВАТИВНО УЧИЛИЩЕ ) КРАТКО ПРЕДСТАВЯНЕ НА УЧЕБНАТА ПРОГРАМА Обучението по Визуално Програмиране в начален етап

Подробно

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

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

Подробно

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

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

Подробно

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

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

Подробно

Slide 1

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

Подробно

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

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

Подробно

Машинно обучение Лабораторно упражнение 9 Класификация с множество класове. Представяне на невронна мрежа Упражнението демонстрира класификация в множ

Машинно обучение Лабораторно упражнение 9 Класификация с множество класове. Представяне на невронна мрежа Упражнението демонстрира класификация в множ Машинно обучение Лабораторно упражнение 9 Класификация с множество класове. Представяне на невронна мрежа Упражнението демонстрира класификация в множество класове чрез методи логаритмична регресия и невронни

Подробно

Lush Green

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

Подробно

Информатика

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

Подробно

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

Подробно

УЧЕБНА ПРОГРАМА ПО ВИЗУАЛНО ПРОГРАМИРАНЕ ЗА IV КЛАС (ВЪВЕЖДАНЕ НА ДИСЦИПЛИНАТА ПО ПРОЕКТ ИНОВАТИВНО УЧИЛИЩЕ ) КРАТКО ПРЕДСТАВЯНЕ НА УЧЕБНАТА ПРОГРАМА

УЧЕБНА ПРОГРАМА ПО ВИЗУАЛНО ПРОГРАМИРАНЕ ЗА IV КЛАС (ВЪВЕЖДАНЕ НА ДИСЦИПЛИНАТА ПО ПРОЕКТ ИНОВАТИВНО УЧИЛИЩЕ ) КРАТКО ПРЕДСТАВЯНЕ НА УЧЕБНАТА ПРОГРАМА УЧЕБНА ПРОГРАМА ПО ВИЗУАЛНО ПРОГРАМИРАНЕ ЗА IV КЛАС (ВЪВЕЖДАНЕ НА ДИСЦИПЛИНАТА ПО ПРОЕКТ ИНОВАТИВНО УЧИЛИЩЕ ) КРАТКО ПРЕДСТАВЯНЕ НА УЧЕБНАТА ПРОГРАМА Обучението по Визуално Програмиране в начален етап

Подробно

Microsoft Word - Primer3_1.doc

Microsoft Word - Primer3_1.doc 3.1.) Създаване на нов проект demultiplexor и нов файл demultiplexor.vhd в текстовия редактор Galaxy Стартирайте текстовия редактор Galaxy, използвайки опциите : Start > Programs > WARP > Galaxy 3.1.1.

Подробно

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?

Подробно

ИЗИСКВАНИЯ ЗА ДОКЛАДИТЕ А. ОБЩИ ИЗИСКВАНИЯ І. Докладът трябва да е написан на компютърна програма Microsoft Word. ІІ. Файлът да бъде записан като *.do

ИЗИСКВАНИЯ ЗА ДОКЛАДИТЕ А. ОБЩИ ИЗИСКВАНИЯ І. Докладът трябва да е написан на компютърна програма Microsoft Word. ІІ. Файлът да бъде записан като *.do ИЗИСКВАНИЯ ЗА ДОКЛАДИТЕ А. ОБЩИ ИЗИСКВАНИЯ І. Докладът трябва да е написан на компютърна програма Microsoft Word. ІІ. Файлът да бъде записан като *.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

Подробно

Разпределение ИУЧ МАТ 4. клас.

Разпределение ИУЧ МАТ 4. клас. УТВЪРДИЛ: Директор:... (Име, фамилия, подпис) ТЕМАТИЧНО РАЗПРЕДЕЛЕНИЕ ИУЧ по предмета Математика 4. клас 34 седмици х 1 ч. седмично = 34 ч. годишно Месец Седмица на тема Тема на урока Очаквани резултати

Подробно

Microsoft Word - KZ_TSG.doc

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

Подробно