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

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

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

Препис

1 Анализ и оптимизация на софтуерни приложения Александър Пенев Васил Василев Какво могат и какво не могат компилаторите

2 Съдържание 1. Оптимизационен континуум 2. Някои известни видове оптимизации 2/49

3 Оптимизационен континуум Статична Време на компилация Динамична Време на изпълнение Компилатор Линкер Loader Програма Среда за изпълнение 3/49

4 Оптимизационен континуум Време на компилация Време на изпълнение Компилатор Линкер Loader Програма Среда за изпълнение Знае цялата входна програма Лесно управляват трансформаците от високо ниво към ниско ниво Времето на компилация не е проблем Не вижда цялата програма Не знае (много) за средата на изпълнение Не знае (много) за архитектурата на изпълнение 4/49

5 Оптимизационен континуум Време на компилация Време на изпълнение Компилатор Линкер Loader Програма Среда за изпълнение Знае цялата входна програма Може да не вижда цялата програма Няма достъп до сорс кода Не знае (много) за средата на изпълнение Не знае (много) за архитектурата на изпълнение 5/49

6 Оптимизационен континуум Време на компилация Време на изпълнение Компилатор Линкер Loader Програма Среда за изпълнение Знае цялата входна програма Може да не вижда цялата програма Няма достъп до сорс кода Не знае (много) за средата на изпълнение Не знае (много) за архитектурата на изпълнение 6/49

7 Оптимизационен континуум Време на компилация Време на изпълнение Компилатор Линкер Loader Програма Среда за изпълнение Знае цялата входна програма Знае за средата на изпълнение Няма достъп до сорс кода Времето за оптимизации отнема от времето за изпълнение 7/49

8 Анализ на потока данни Data Flow Analysis Техниката се използва за събиране на информация за възможното множество от стойности, изчислени в различни точки на програмата По време на компилация получаваме информация за стойностите по време на изпълнение за променливи или изрази. Намира: Кои оператори за присвояване са били използвани за получаване на текущата стойност на променливата в дадената точка Кои променливи имат стойности, които не се използват от дадена точка нататък в програмата Какъв е множеството възможни стойности на променливата в дадената точка на програмата 8/49

9 Пример int x, y; y = 0; for (i = 0; i <= N; i++) x = x + (8*t2/t1)*i + (i+n)*(i+n); x = x + y*(t1+t2); return x; x++; 9/49

10 Пример **** 9.loc cfi_startproc 11 pushq %rbp 12.LCFI0: 13.cfi_def_cfa_offset cfi_offset 6, movq %rsp, %rbp 16.LCFI1: 17.cfi_def_cfa_register 6 18 movl %edi, -20(%rbp) 19 movl %esi, -24(%rbp) 20 movl %edx, -28(%rbp) **** 21.loc movl $0, -8(%rbp) **** y = 0; 23.loc movl $0, -4(%rbp) **** for (i = 0; i <= N; i++) 25.loc movl $0, -12(%rbp) 27 jmp.l2 28.L3: 29.loc discriminator 2 **** x = x + (8*t2/t1)*i + (i+n)*(i+n); 30 movl -28(%rbp), %eax 31 sall $3, %eax 32 movl %eax, %edx 33 sarl $31, %edx 34 idivl -24(%rbp) 35 movl %eax, %edx 36 imull -12(%rbp), %edx 37 movl -20(%rbp), %eax 38 movl -12(%rbp), %ecx 39 leal (%rcx,%rax), %esi 40 movl -20(%rbp), %eax 41 movl -12(%rbp), %ecx 42 addl %ecx, %eax 43 imull %esi, %eax 44 addl %edx, %eax 45 addl %eax, -8(%rbp) 46.loc discriminator 2 **** x = x + y*(t1+t2); 47 movl -28(%rbp), %eax 48 movl -24(%rbp), %edx 49 addl %edx, %eax 50 imull -4(%rbp), %eax 51 addl %eax, -8(%rbp) **** for (i = 0; i <= N; i++) 52.loc discriminator 2 53 addl $1, -12(%rbp) 54.L2: **** for (i = 0; i <= N; i++) 55.loc is_stmt 0 discriminator 1 56 movl -12(%rbp), %eax 57 cmpl -20(%rbp), %eax 58 jle.l3 **** **** return x; 59.loc is_stmt 1 60 movl -8(%rbp), %eax **** 10/49

11 Разпространение на константи Constant Propagation Анализ Ако при всички възможни пътища на изпълнение, стойността на променливата е константна за дадена точка на използване Трансформация Замества се променливата с тази константа Последствия: Няма нужда да се съхранява тази стойност в променлива Освобождава се памет или регистър Може да доведе до нужда от допълнителна оптимизация 11/49

12 Разпространение на константи int x, y; y = 0; for (i = 0; i <= N; i++) x = x + (8*t2/t1)*i + (i+n)*(i+n); x = x + y*(t1+t2); return x; x++; 12/49

13 Разпространение на константи int x, y; y = 0; for (i = 0; i <= N; i++) x = x + (8*t2/t1)*i + (i+n)*(i+n); x = x + y*(t1+t2); return x; x++; 13/49

14 Разпространение на константи int x, y; y = 0; for (i = 0; i <= N; i++) x = x + (8*t2/t1)*i + (i+n)*(i+n); x = x + y*(t1+t2); Не е константа при всички пътища на изпълнение return x; x++; 14/49

15 Разпространение на константи int x, y; y = 0; for (i = 0; i <= N; i++) x = x + (8*t2/t1)*i + (i+n)*(i+n); x = x + y*(t1+t2); return x; x++; Не е константа при всички пътища на изпълнение 15/49

16 Разпространение на константи int x, y; y = 0; for (i = 0; i <= N; i++) x = x + (8*t2/t1)*i + (i+n)*(i+n); x = x + y*(t1+t2); return x; x++; 16/49

17 Разпространение на константи int x, y; y = 0; for (i = 0; i <= N; i++) x = x + (8*t2/t1)*i + (i+n)*(i+n); x = x + 0*(t1+t2); return x; x++; 17/49

18 Опростяване на изрази Algebraic Simplification Анализ Ако даден израз е изчислим по време на компилация Ако могат да се използват по-бързи инструкции Трансформация X * 0 = 0; X * 1 = X; X * 32 = X << 4 X + 0 = X; X + X = X << 2 Последствия: По-малко работа по време на изпълнение Може да доведе до допълнителна оптимизация Машината, която изпълнява кода може да се държи различно от тази, на която е компилиран Например: underflow, overflow Проблеми с комутативността и транзитивността 18/49

19 Опростяване на изрази int x, y; y = 0; for (i = 0; i <= N; i++) x = x + (8*t2/t1)*i + (i+n)*(i+n); x = x + 0*(t1+t2); return x; x++; 19/49

20 Опростяване на изрази int x, y; y = 0; for (i = 0; i <= N; i++) x = x + (8*t2/t1)*i + (i+n)*(i+n); x = x + 0*(t1+t2); return x; x++; 20/49

21 Опростяване на изрази int x, y; y = 0; for (i = 0; i <= N; i++) x = x + (8*t2/t1)*i + (i+n)*(i+n); x = x + 0; return x; x++; 21/49

22 Опростяване на изрази int x, y; y = 0; for (i = 0; i <= N; i++) x = x + (8*t2/t1)*i + (i+n)*(i+n); x = x + 0; return x; x++; 22/49

23 Опростяване на изрази int x, y; y = 0; for (i = 0; i <= N; i++) x = x + (8*t2/t1)*i + (i+n)*(i+n); x = x; return x; x++; 23/49

24 Разпространение на копията Copy Propagation Анализ Ако се правят излишни копия на променливи Трансформация Y = X Z = 3 + X Z = 3 + Y Последствия: По-малко генерирани инструкции По-малко използвана памет/регистри Може да доведе до неправилно заделяне на регистри (register spills) 24/49

25 Разпространение на копията int x, y; y = 0; for (i = 0; i <= N; i++) x = x + (8*t2/t1)*i + (i+n)*(i+n); x = x; return x; x++; 25/49

26 Разпространение на копията int x, y; y = 0; for (i = 0; i <= N; i++) x = x + (8*t2/t1)*i + (i+n)*(i+n); return x; x++; 26/49

27 Елиминиране на общите подизрази Common Expression Elimination Анализ Ако един и същ подизраз се изчислява повече от един път Трансформация Подизразът се присвоява на променлива и се използва променливата на останалите места Последствия: По-малко генерирани инструкции По-малко изчисления Има нужда от допълнителна памет/регистри и може да доведе до неправилно заделяне на регистри (register spills) Може да възпрепятства паралелизацията като добави излишни зависимости 27/49

28 Елиминиране на общите подизрази int x, y; y = 0; for (i = 0; i <= N; i++) x = x + (8*t2/t1)*i + (i+n)*(i+n); return x; x++; 28/49

29 Елиминиране на общите подизрази int x, y; y = 0; for (i = 0; i <= N; i++) x = x + (8*t2/t1)*i + (i+n)*(i+n); return x; x++; 29/49

30 Елиминиране на общите подизрази int x, y, t; y = 0; Какво може да се направи още? for (i = 0; i <= N; i++) t = i+n; x = x + (8*t2/t1)*i + t*t; return x x++; 30/49

31 Елиминиране на мъртъв код Dead Code Elimination Анализ Ако резултатът от изчислението не се използва Dead store Ако няма път на изпълнение, по който да се стигне до оператора Unreachable code Трансформация Премахва се Последствия: По-малко генерирани инструкции Може да освободи ресурса по-рано По-малко памет/регистри (няма нужда от съхраняване на резултата) 31/49

32 Елиминиране на мъртъв код int x, y, t; y = 0; for (i = 0; i <= N; i++) t = i+n; x = x + (8*t2/t1)*i + t*t; return x x++; 32/49

33 Елиминиране на мъртъв код int x, y, t; y = 0; for (i = 0; i <= N; i++) t = i+n; x = x + (8*t2/t1)*i + t*t; return x x++; 33/49

34 Елиминиране на мъртъв код int x, t; for (i = 0; i <= N; i++) t = i+n; x = x + (8*t2/t1)*i + t*t; return x x++; 34/49

35 Елиминиране на мъртъв код int x, t; for (i = 0; i <= N; i++) t = i+n; x = x + (8*t2/t1)*i + t*t; return x x++; 35/49

36 Елиминиране на мъртъв код int x, t; for (i = 0; i <= N; i++) t = i+n; x = x + (8*t2/t1)*i + t*t; return x 36/49

37 Изваждане на инварианти от цикли Loop Invariant Removal Анализ Ако изчислението не зависи от итерациите на цикъла Трансформация Изважда се извън цикъла Последствия: Много по-малко работа в цикъла Трябва да съхрани в променлива извън цикъла, което увеличава областта на видимост и жизнения цикъл на променливата и може да доведе до неоптимално алокиране на регистрите (register spills) 37/49

38 Изваждане на инварианти от цикли int x, t; for (i = 0; i <= N; i++) t = i+n; x = x + (8*t2/t1)*i + t*t; return x 38/49

39 Изваждане на инварианти от цикли int x, t; for (i = 0; i <= N; i++) t = i+n; x = x + (8*t2/t1)*i + t*t; return x 39/49

40 Изваждане на инварианти от цикли int x, t, u; u = (8*t2/t1); for (i = 0; i <= N; i++) t = i+n; x = x + u*i + t*t; return x 40/49

41 Замяна на операции Strength Reduction Анализ Ако може да замени операция с друга изискваща по-малко изчисления Трансформация for(i=0) t=a*i; t=0; for(i=0) t=t+a; Последствия: По-малко изчисления Трябва да съхрани в променлива извън цикъла, което увеличава областта на видимост и жизнения цикъл на променливата и може да доведе до неоптимално алокиране на регистрите (register spills) Въвежда зависимост и паралелния цикъл става последователен. Оправя се с инверсната (обратната) оптимизация 41/49

42 Замяна на операции int x, t, u; u = (8*t2/t1); for (i = 0; i <= N; i++) t = i+n; x = x + u*i + t*t; return x 42/49

43 Замяна на операции int x, t, u; u = (8*t2/t1); for (i = 0; i <= N; i++) t = i+n; x = x + u*i + t*t; return x u*0 v = 0 u*1 v = v+u u*2 v = v+u u*3 v = v+u... 43/49

44 Замяна на операции int x, t, u, v; u = (8*t2/t1); v = 0; for (i = 0; i <= N; i++) t = i+n; x = x + v + t*t; v = v + u; return x 44/49

45 Какво спира оптимизациите Оптимизаторът трябва да гарантира еквивалентността на програмата: За всички възможни входни данни За всички възможни начини на изпълнение За всички възможни архитектури За да оптимизира програмата, компилаторът трябва да знае за и да разбира: Потока инструкции (Control Flow) Начинът на достъп до данните През повечето време компилаторът не разполага с цялата информация за програмата. Тогава той: Редуцира региона, където трансформацията е приложима Редуцира агресивността на трансформациите Не оптимизира 45/49

46 Анализ на потока инструкции Control Flow Analysis Техниката се използва за събиране на информация изпълнението на отделни оператори, инструкции или извиквания на подпрограми Представяния в компилатора: Граф на извикванията (Call graph) Граф на изпълнението (Control flow graph) Какво възпрепятства анализа: Указатели към функции Индиректни преходи Изчислими goto оператори Големи switch оператори Цикли с exit и break оператори Цикли с неизвестни граници Условия с непредвидими преходи 46/49

47 Анализ на достъпа до данни Data Accessors Analysis Кой още може да чете и пише по данните Представяния в компилатора: Дефинирай-използвай веригa (Def-Use chain) Вектор на зависимостите Какво възпрепятства анализа: Променливи по адрес Глобални променливи Параметри Масиви Указатели Volatile променливи 47/49

48 Instruction Scheduling Правилната последователност от инструкции, които биха използвали максимално възможностите на процесора Непоследователно изпълнение: Хардуера се опитва да разпредели инструкциите, които да бъдат изпълнени Компилаторът също може да помогне Хардуерът няма достатъчно време да оптимизира инструкциите, а и няма цялата информация Последователно изпълнение: Разпределението на инструкции е КРИТИЧНО 48/49

49 Ограничения при разпределяне на инстр. От данните Ако две инструкции използват една променлива те могат да зависят една от друга Видове зависимости: RAW/True: запис четене Когато инструкция 1 записва стойност и тя се използва от инструкция 2 WAR/Anti: четене запис Когато инструкция 1 чете стойност, която по-късно е презаписана от инструкция 2 WAW/Output: запис запис Когато инструкция 1 записва стойност и инструкция две записва стойност в една и съща променлива От последователността на изпълнение От ресурсите 49/49

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

Анализ и оптимизация на софтуерни приложения Анализ и оптимизация на софтуерни приложения Александър Пенев Васил Василев (от гледна точка на производителността) Съдържание 1. Видове транслатори 2.Фази по време на компилация 3. Оптимизационна фаза

Подробно

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

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

Подробно

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

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

Подробно

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

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

Подробно

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

Анализ и оптимизация на софтуерни приложения Анализ и оптимизация на софтуерни приложения Александър Пенев Васил Василев Съдържание 1. Производителност 2. Оптимизация 3. Методи за оптимизация 2/18 Защо производителността е важна? Дава възможност

Подробно

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

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

Подробно

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

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

Подробно

Lush Green

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

Подробно

Slide 1

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

Подробно

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

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

Подробно

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

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

Подробно

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

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

Подробно

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

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

Подробно

C++

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

Подробно

4

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

Подробно

Slide 1

Slide 1 Методи и алгоритми за моделиране, симулация и оптимизация на полупроводникови сензори Венцеслав Шопов E-mail: vkshopov@yahoo.com BG051PO001-3.3.06-0002 Цел на дисертационния труд е да се създаде софтуерна

Подробно

Проф

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

Подробно

Lush Green

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

Подробно

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

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

Подробно

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

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

Подробно

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

Подробно

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

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

Подробно

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

Подробно

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

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

Подробно

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

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

Подробно

Mathematica CalcCenter

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

Подробно

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

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

Подробно

Годишното тематично разпределение по Компютърно моделиране за 4. клас N седмица Тема очаквани резултати Методи бележки и коментари Първи учебен срок Т

Годишното тематично разпределение по Компютърно моделиране за 4. клас N седмица Тема очаквани резултати Методи бележки и коментари Първи учебен срок Т Годишното тематично разпределение по Компютърно моделиране за 4. клас N седмица Тема очаквани резултати Методи бележки и коментари Първи учебен срок Тема 1. Информация 1 1 Видове информация Познава начините

Подробно

Homework 3

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

Подробно

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

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

Подробно

Microsoft Word - nbb2.docx

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

Подробно

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

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

Подробно

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

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

Подробно

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

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

Подробно

-

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

Подробно

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

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

Подробно

Microsoft PowerPoint - Model_Dec_2008_17_21

Microsoft PowerPoint - Model_Dec_2008_17_21 Структура. Теория на графите общи понятия. Същност на мрежовите модели. Приложение на мрежови модели при управление на проекти и програми Общи понятия от Теорията на графите, използвани при мрежовите модели

Подробно

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

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

Подробно

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

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

Подробно

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

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

Подробно

Microsoft Word - VM22 SEC55.doc

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

Подробно

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

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

Подробно

Kontrolno 5, variant 1

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

Подробно

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

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

Подробно

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

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

Подробно