Summary Files Commits Branches @commit @diff @stats
diff options
context:
space:
mode:
diff --git a/src/teaching/upp-2023/additional1/index.md b/src/teaching/upp-2023/additional1/index.md
index cf1dfce..f366858 100644
--- a/src/teaching/upp-2023/additional1/index.md
+++ b/src/teaching/upp-2023/additional1/index.md
@@ -2,13 +2,13 @@
GitHub classroom: [classroom.github.com/a/nlFuKALw](https://classroom.github.com/a/nlFuKALw)
-При изображението &&question трябва да спрете, да помислите и да си отговорите на дадения въпрос.
+При изображението ![](/img/dialog-question.png) трябва да спрете, да помислите и да си отговорите на дадения въпрос.
Почти винаги ако не може да отговорите, ще имате проблеми в бъдеще с решаването.
Понякога ще ви спираме и ще ви питаме за тези въпроси.
## Задача - База гаднни
-&&warn **Нямате** право да използвате каквито и да е функции, които вие не сте написали, както и неизучаван материал като двуизмерни масиви или динамична памет.
+&:warn **Нямате** право да използвате каквито и да е функции, които вие не сте написали, както и неизучаван материал като двуизмерни масиви или динамична памет.
**Не** употребявайте търсачки, ако ви трябва информация за нещо, ще може да си я изкарате с една проста тестова програма или калкулатор.
<br>
@@ -18,7 +18,7 @@ GitHub classroom: [classroom.github.com/a/nlFuKALw](https://classroom.github.com
Таблица А има максимум 8 реда, като всеки ред е едно цяло число с 9 цифри.
Таблица Б има максимум 8 реда, като всеки ред е число между 1 и 4294967295.
-&&question В какъв тип ще запазим всяка таблица?
+&:question В какъв тип ще запазим всяка таблица?
В задачата винаги номерираме редовете (числата) на всяка таблица, започвайки от индекс 1.
Чрез различни комбинации на ред в таблица А и ред в таблица Б получаваме различни стойности.
@@ -39,11 +39,11 @@ GitHub classroom: [classroom.github.com/a/nlFuKALw](https://classroom.github.com
Стойностите от таблица А са винаги ограничени отгоре с най-големия брой битове, които комфортно може да поберем в 7 цифри.
Тоест 9999999 не е валидна стойност от таблица А, докато 8388608 e.
-&&question Колко най-много *битове* можем със сигурност да поберем в 7 цифри?
+&:question Колко най-много *битове* можем със сигурност да поберем в 7 цифри?
Понеже редовете са от 1 до 9, ако в таблица А имаме ред 0 правим нещо специално, но това ще видите в бъдеще.
-&&question Разбрахте ли как таблиците "изглеждат"?
+&:question Разбрахте ли как таблиците "изглеждат"?
### a) разделяне на реда от таблица А
@@ -52,7 +52,7 @@ GitHub classroom: [classroom.github.com/a/nlFuKALw](https://classroom.github.com
`getRow` - приема ред от таблица А и указатели към променливи за ред, тип и стойност; не връща нищо
В подадените указатели пази съответните стойности от реда
-&&question Защо приемаме указатели към променливи? Каква е "сигнатурата" на функцията?
+&:question Защо приемаме указатели към променливи? Каква е "сигнатурата" на функцията?
<br>
**Примери:**
@@ -68,7 +68,7 @@ GitHub classroom: [classroom.github.com/a/nlFuKALw](https://classroom.github.com
Ако типа е цифрата "0", тогава стойността в базата данни е някакво число с плаваща запетая.
Самото число е разделено на две части: цифрите преди запетаята се намират в стойността от таблица А, докато цифрите след запетаята са в реда от таблица Б.
-&&question В какъв тип данни трябва да запазим числото? Как ще "слепим" двете му части.
+&:question В какъв тип данни трябва да запазим числото? Как ще "слепим" двете му части.
Имплементирайте функция:
@@ -107,14 +107,14 @@ GitHub classroom: [classroom.github.com/a/nlFuKALw](https://classroom.github.com
Тоест ако в нашия тип данни запазваме само 10 бита, тогава числото "2" ще бъде `0000000010` и имаме низа "AC".
Игнорирайте старшите битове, които остават като "остатък" (по-малко от 5 бита ширина).
-&&question Колко бита наистина запазваме в нашия тип данни? Колко бита ще трябва да игнорираме? Колко най-много букви може да поберем?
+&:question Колко бита наистина запазваме в нашия тип данни? Колко бита ще трябва да игнорираме? Колко най-много букви може да поберем?
Имплементирайте функция:
`decodeNumberText` - приема ред от таблица Б и указател към "низ"; не връща нищо
Записва декодиран текстът от реда в указателя
-&&question Нарочно има кавички около думата "низ", какъв трябва наистина да е типа на указателя?
+&:question Нарочно има кавички около думата "низ", какъв трябва наистина да е типа на указателя?
<br>
**Примери:**
@@ -135,7 +135,7 @@ GitHub classroom: [classroom.github.com/a/nlFuKALw](https://classroom.github.com
Как декодираме?
Отместваме буквите назад, тоест ако имаме текста "KHOOR" и ви кажа, че съм го кодирал като съм отместил всяка буква напред с 3 позиции, тогава при декодиране от K става на H, от H става на E, от О става на L и от R става на O.
-&&question Какво става със знака "!"? Има ли лесен (математически) начин да дешифрираме всяка буква?
+&:question Какво става със знака "!"? Има ли лесен (математически) начин да дешифрираме всяка буква?
Текстът, преди да е въведен в нашата база данни, ще бъде кодиран с шифъра на Цезар, като броя позиции с които сме отместили буквите се намира в стойността в таблица А.
@@ -162,7 +162,7 @@ GitHub classroom: [classroom.github.com/a/nlFuKALw](https://classroom.github.com
Ако типа е "2", тогава в реда от Б сме вложили масив от стойности (числа).
Всеки 4 бита определят една стойност, като първия елемент е старшите (най-левите) битове, докато последния е младшите (най-десните) битове.
-&&question Коколо на брой елемента пазим в реда от Б?
+&:question Коколо на брой елемента пазим в реда от Б?
Имплементирайте функцията:
@@ -207,7 +207,7 @@ GitHub classroom: [classroom.github.com/a/nlFuKALw](https://classroom.github.com
Ако редът в таблица А е 0, тогава цялата стойност в базата данни е побрана в стойността на таблица А.
Очевидно само в стойност на таблица А имаме по-малко битове, отколкото в стойност на таблица А плюс ред в таблица Б, затова се налага по някакъв начин да "компресираме" информацията, така че да се побере.
-&&question Колко бита побираме в стойност на таблица А? Колко бита ни трябват общо, за да обработим една стойност в базата данни?
+&:question Колко бита побираме в стойност на таблица А? Колко бита ни трябват общо, за да обработим една стойност в базата данни?
Ще го направим така: в стойността от таблица А ще пазим индекси, и всеки индекс ще съответства на някакво по-голямо число, което се съдържа в друг масив, който ще наричаме криптографски ред.
@@ -225,7 +225,7 @@ GitHub classroom: [classroom.github.com/a/nlFuKALw](https://classroom.github.com
Първите (най-левите) три бита от стойността в таблица А не са индекси, а трябва да се копират дословно.
След тях има 4 индекса, всеки с по 5 бита.
-&&question Как е разделена побитово една стойност от таблица А? Кои индекси за кои стойности ще се ползват? Достатъчно ли е всеки индекс към криптографския ред да бъде само 5 бита (тоест може ли да има повече от 2&#8309; числа в реда)? Защо имаме само 4 индекса?
+&:question Как е разделена побитово една стойност от таблица А? Кои индекси за кои стойности ще се ползват? Достатъчно ли е всеки индекс към криптографския ред да бъде само 5 бита (тоест може ли да има повече от 2&#8309; числа в реда)? Защо имаме само 4 индекса?
Напишете функция:
@@ -266,4 +266,4 @@ GitHub classroom: [classroom.github.com/a/nlFuKALw](https://classroom.github.com
Пробвате се да я запазите, използвайки и двете таблици, но ако Б вече е запълнена, добавяте я като компресирана стойност в таблица А.
Ако и А е запълнена, изкарвате съобщение за запълнена база данни и не запазвате стойността.
-&&question Какво трябва да направите, ако получите компресирана стойност за таблица А?
+&:question Какво трябва да направите, ако получите компресирана стойност за таблица А?
diff --git a/src/teaching/upp-2023/additional2/index.md b/src/teaching/upp-2023/additional2/index.md
index 75530f8..d4e07b4 100644
--- a/src/teaching/upp-2023/additional2/index.md
+++ b/src/teaching/upp-2023/additional2/index.md
@@ -2,7 +2,7 @@
GitHub classroom: [classroom.github.com/a/CrerXpf6](https://classroom.github.com/a/CrerXpf6)
-&&important Следете внимателно дали триете всичката си динамична памет коректно на всяка подточка!
+&:important Следете внимателно дали триете всичката си динамична памет коректно на всяка подточка!
Случвало се е на контролни да се пишат двойки ако всичко друго е коректно, но има неизтрита памет!
## Задача - текстов редактор
@@ -18,7 +18,7 @@ GitHub classroom: [classroom.github.com/a/CrerXpf6](https://classroom.github.com
Като за начало, нека да имплементираме запазването на текст.
От конзолата ще получавате редове текст, всеки ред ще е с максимална дължина от 1024 знака, след това трябва да го запазите.
-&&important Може да използвате масив със статична дължина за буфер, обаче трябва да използвате възможно най-малко памет за "перманентното" запазване на реда текст във вашата програма.
+&:important Може да използвате масив със статична дължина за буфер, обаче трябва да използвате възможно най-малко памет за "перманентното" запазване на реда текст във вашата програма.
Използвайте многомерен масив за запазване на редовете, вместо всичко да се запазва в един голям низ.
Това е нужно за бъдещи подточки.
@@ -58,10 +58,10 @@ est. It was a high bank, and he paused to breathe at the top.
Ако низът е команда, тогава връща масив от низове, първия от които съдържа буквата, определяща командата, докато останалите низове са параметрите.
Ако низът не е команда, тогава връща празен масив.
-&&warn Какво означава празен масив зависи от имплементацията ви.
+&:warn Какво означава празен масив зависи от имплементацията ви.
За предпочитане е да не заделяте памет, когато не е нужно.
-&&question Как ще върнем масив? Нужно ли е да връщаме бройката елементи?
+&:question Как ще върнем масив? Нужно ли е да връщаме бройката елементи?
*Само за тестване*, след всеки въведен ред, ако е команда, изкарайте извлечените стойности от `extractCommand`, със запетайки след всяка.
Като при [подточка a)](#section), ако редът започва с `Q`, спирате приемане на вход и изкарвате запазения текст.
@@ -195,9 +195,9 @@ the man turned aside from the main Yukon trail. He climbed the high
Имплементирайте функцията `deleteRow`, която получава целия текст, въведен до сега, и номер на реда (редовете се индексират от 1 до N).
Тя променя текста, като премахва реда на дадения номер.
-&&important Не забравяйте да промените размера на масива с низове! Не е решение просто да промените указателя към дадения ред на `nullptr`, не искаме да използваме излишна памет.
+&:important Не забравяйте да промените размера на масива с низове! Не е решение просто да промените указателя към дадения ред на `nullptr`, не искаме да използваме излишна памет.
-&&question Какъв ще бъде типа на аргумента, който приема целия текст?
+&:question Какъв ще бъде типа на аргумента, който приема целия текст?
Добавете командата `D`, която приема един параметър - цяло положително число, и го прилага върху функцията `deleteRow`.
Ако номера на реда е невалиден, трябва да изкарате съобщение "; Invalid row number".
@@ -297,7 +297,7 @@ He excused
Ред N+1 се изтрива.
Ако N е 0 или номера на последния ред, не прави нищо.
-&&important Не забравяйте да промените размера на масива с низове! Не е решение просто да промените указателя към дадения ред на `nullptr`, не искаме да използваме излишна памет.
+&:important Не забравяйте да промените размера на масива с низове! Не е решение просто да промените указателя към дадения ред на `nullptr`, не искаме да използваме излишна памет.
Добавете команда `J`, която приема номер на ред - положително число.
Следващия ред ще се вмъкне в края на сегашния, с една шпация между тях, използвайки функцията `joinRows`.
@@ -372,7 +372,7 @@ est. It was a high bank, and he paused to breathe at the top.
Имплементирайте функция `substituteWord`, която приема целия текст и две думи (низове без шпации).
В текстът, всяко срещане на първата дума е заменено с втората дума.
-&&question Какво ще стане с размера на един ред, ако някоя дума/някои думи трябва да се заменят?
+&:question Какво ще стане с размера на един ред, ако някоя дума/някои думи трябва да се заменят?
Добавете команда `s`, която приема две думи - низове без шпации.
Използвайки функцията `substituteWord` замества всяко срещане на първата дума с втората.
diff --git a/src/teaching/upp-2023/index.md b/src/teaching/upp-2023/index.md
index 19199ec..624a312 100644
--- a/src/teaching/upp-2023/index.md
+++ b/src/teaching/upp-2023/index.md
@@ -2,7 +2,7 @@
Материали на проведените през 2023/2024 практикуми по Увод в програмирането на Компютърни науки (2 поток), 8 група.
-&&warn От сега нататък ще може да продължите да предавате решения след крайния срок в classroom.
+&:warn От сега нататък ще може да продължите да предавате решения след крайния срок в classroom.
Не мога да гарантирам кога ще погледна предадени решения след срока, но ще ги погледна!
**Зала:** ФМИ 309 ||
diff --git a/src/teaching/upp-2023/week1/setup.md b/src/teaching/upp-2023/week1/setup.md
index 73507a7..9327b2b 100644
--- a/src/teaching/upp-2023/week1/setup.md
+++ b/src/teaching/upp-2023/week1/setup.md
@@ -1,15 +1,16 @@
# Конфигуриране на GitHub classroom и Visual Studio - УПП, Седмица 1, 06.10.2023
-&&presentation
-&&clide &&centered
+&.presentation
+
+&[title
# Конфигуриране на GitHub classroom и Visual Studiо
-&&/centered &&/clide
+&]
-&&slide
+&[slide
## Теория относно GitHub classroom
@@ -26,15 +27,15 @@
- Обединението на труда на всички, особено в огромни екипи, става супер трудно
-&&/slide
+&]
-&&slide
+&[slide
### Git
-&&lineb1
+&.br1
git е програма (система) за [контрол на версиите](https://en.wikipedia.org/wiki/Distributed_version_control).
В един проект, git пази **списък от всички commit-и**.
@@ -47,15 +48,15 @@ git е програма (система) за [контрол на версииÑ
Така, когато смесваме кода от многото разработчици, ще можем да засечем **какви точно са различията** между работата на двама човека.
Често промените не си "противоречат" и могат да бъдат смесени директно, понякога се налага ръчно да решим какво точно да се случи с тези парчета код.
-&&/slide
+&]
-&&slide
+&[slide
### GitHub
-&&lineb5
+&.br5
Всички repository-та трябва да се пазят някъде и да може лесно да се споделят и гледат.
Има много сайтове за тази цел, най-популярния се нарича [GitHub](https://github.com).
@@ -63,11 +64,11 @@ git е програма (система) за [контрол на версииÑ
Напомням, че git и GitHub са напълно отделни неща, направени от различни хора с различни функционалности.
Свързаността с имената е както свързаността между думите "чар" и "чаршаф".
-&&/slide
+&]
-&&slide
+&[slide
## Сега всички трябва да си направят GitHub акаунти
@@ -75,24 +76,24 @@ git е програма (система) за [контрол на версииÑ
![](./img/github-signup.gif)
-&&/slide
+&]
-&&clide
+&[middle
След това, като влезете в акаунтите си (което става автоматично след регистрация), на заглавната страница ще имате нещо такова:
-&&width75 ![](./img/github-index.gif) &&/width
+&(width75% ![](./img/github-index.gif) &)
В горния десен ъгъл, където е иконката с квадрати на бял фон, след натискане получавате sidebar.
От него, може да достъпите профила си, repository-та които имате, и так. нат.
-&&/clide
+&]
-&&slide
+&[slide
### Проверете дали сте маркирани!
@@ -105,15 +106,15 @@ git е програма (система) за [контрол на версииÑ
![](./img/github-support-flagged.gif)
-&&/slide
+&]
-&&slide
+&[slide
## GitHub classroom
-&&lineb3
+&.br3
За всеки практикум ще ви направя линк, чрез който след малко кликане ще се създаде ново лично repository за всеки от вас.
@@ -124,38 +125,37 @@ GitHub предоставя лесни начини да правите пром
Те ще се намират в таба "Pull Requests" на конкретното repository.
Четете ги, отговаряйте, целта е да дискутираме какво сте направили.
-&&/slide
+&]
-&&slide
+&[slide
### Как ползваме GitHub classroom
За всяко упражнение ще има отделен линк.
Този за днеска е: [classroom.github.com/a/W7hZDMgC](https://classroom.github.com/a/W7hZDMgC)
-&&lineb1
+&.br1
-&&table
+&{row
След като го отворите, ще видите съобщение за разрешение, авторизирайте го.
![](./img/github-classroom-authorize.gif)
-&&/table
-
-&&/slide
+&}
+&]
-&&clide
+&[middle
-&&table
+&{row
-&&width60 ![](./img/join-the-classroom.gif) &&/width
+&(width60% ![](./img/join-the-classroom.gif) &)
-&&cont
+&{column
При първо влизане ще получите страница с имената и факултетните имена на всички студенти от групата.
@@ -163,30 +163,29 @@ GitHub предоставя лесни начини да правите пром
Това се прави само веднъж, и след това никога пак.
-&&/cont
-
-&&/table
+&}
-&&/clide
+&}
+&]
-&&slide
+&[slide
След това, би трябвало да видите страницата за "Приемане на заданието".
-&&width40 ![](./img/accept-assignment.gif) &&/width
+&(width40% ![](./img/accept-assignment.gif) &)
След като го приемете, на новата страница, изчакайте няколко секунди и презаредете.
Трябва да видите това:
-&&width40 ![](./img/ready-to-go.gif) &&/width
+&(width40% ![](./img/ready-to-go.gif) &)
-&&/slide
+&]
-&&clide
+&[middle
Сега сте готови, кликнете върху синия линк и ще стигнете във вашето GitHub repository.
@@ -197,28 +196,28 @@ GitHub предоставя лесни начини да правите пром
В края на презентация показвам как точно е най-лесно да качите работата си.
-&&/clide
+&]
-&&slide
+&[slide
В таба "Pull requests", още от началото, ще имате едно "Feedback".
В него ще ви връщам отзиви относно работата ви, и вие също можете да пишете неща и да ми отговаряте.
Целта е да видя какво правите и да ви помогна, моля проверявайте какво съм ви писал, по подразбиране би трябвало да получавате известия на имейл-а.
-&&centered &&width80 ![](./img/feedback.gif) &&/width &&/centered
+&(centered &(width80% ![](./img/feedback.gif) &) &)
-&&/slide
+&]
-&&slide
+&[slide
## Къде пишем код?
-&&lineb2
+&.br2
**Кодът е чисто и просто текст**, компилаторът е специалната програма, която превръща този текст в нещо, което може компютъра да изпълни.
@@ -228,11 +227,11 @@ GitHub предоставя лесни начини да правите пром
За някои и това не е било достатъчно удобно, затова са създадени **Integrated Development Environment** (IDE), програми които съдържат в себе си всичко нужно за разработка на код.
Тоест, те са текстови редактори, но "вградено" могат да компилират код, да менижират сегашното repository, ...
-&&/slide
+&]
-&&clide
+&[middle
Главно очакваме да пишете на IDE-то наречено Visual Studio.
Разработено е от Microsoft и е едно от най-използваните и развитите IDE-та на пазара.
@@ -246,15 +245,15 @@ GitHub предоставя лесни начини да правите пром
Извън това, по лично желание, с мен може да говорите за vim, а за neovim може би ще мога да ви насоча към някой с опит.
-&&/clide
+&]
-&&slide
+&[slide
### Инсталация
-&&lineb1
+&.br1
Намираме се в компютърна зала, така че всички предоставени компютри би трябвало вече да са налични на предоставените компютри.
За ваши лични машини, ще минем набързо през информацията тук.
@@ -265,79 +264,79 @@ GitHub предоставя лесни начини да правите пром
- Ако искате да ползвате по-стара ОС, като Windows 8.1 или Windows 7 ще трябва да използвате "Community 2019"[^vs-2022-old-win], разликата между версиите не е съществена, затова не се притеснявайте.
-&&/slide
+&]
-&&slide
+&[slide
След като изтеглите инсталатора за Visual Studio и след като изчакате да заредят работи, би трябвало да имате прозорец на име "Installing - Visual Studio Community 2022".
Единствено избирате "Desktop development with C++" в таба Worloads, и натискате "Install".
Би трябвало да заема към 11 GB памет и в моето тестване се инсталира за 10тина минути.
-&&centered &&width80 ![](./img/vs-install.gif) &&/width &&/centered
+&(centered &(width80% ![](./img/vs-install.gif) &) &)
-&&/slide
+&]
-&&slide
+&[slide
Когато е готово, би трябвало да се включи автоматично и да имате прозорец с име "Sign in to Visual Studio".
За сега това не е нужно, спокойно изберете "Not now, maybe later."
След това, на "Start with a familiar environment", отново, не е нужно да променяте нищо, просто натиснете "Start Visual Studio".
-&&centered &&width75 &&table
+&(centered &(width75% &{row
![](./img/vs-signin.gif)
![](./img/vs-start-env.gif)
-&&/table &&/width &&/centered
+&} &) &)
-&&/slide
+&]
-&&slide
+&[slide
### Как да създадем проект с Visual Studio
Това е първия прозорец, който се отваря.
В лявата колона имате скорошни проекти, в дясната имате начини да създадете нов проект.
-&&centered &&width80 ![](./img/vs-open-recent.gif) &&/width &&/centered
+&(centered &(width80% ![](./img/vs-open-recent.gif) &) &)
-&&/slide
+&]
-&&slide
+&[slide
Нека да направим нов проект, кликнете "Create a new project".
В този прозорец избирате началната "конфигурация" на проекта.
В този курс ще работим само и единствено с "Console App", затова изберете него и кликнете "Next".
-&&centered &&width75 ![](./img/vs-create-project.gif) &&/width &&/centered
+&(centered &(width75% ![](./img/vs-create-project.gif) &) &)
-&&/slide
+&]
-&&slide
+&[slide
Последния прозорец преди писането на код е за конфигурация на проекта.
Тук единствено може да искате да промените Project Name и Location, другото не е важно.
-&&centered &&width80 ![](./img/vs-configure-project.gif) &&/width &&/centered
+&(centered &(width80% ![](./img/vs-configure-project.gif) &) &)
-&&/slide
+&]
-&&slide
+&[slide
#### Бърза вметка, какво и защо конзолата?
@@ -351,50 +350,50 @@ GitHub предоставя лесни начини да правите пром
Чисто практически, ние това знаем като конзолата: устройство (или в модерно време, програма) което може да получи входен текст и да изкара текст.
-&&/slide
+&]
-&&slide
+&[slide
### Как да компилираме с Visual Studio
След малко чакане, най-после ще се намираме в средата за писане на код.
-&&centered &&width60 ![](./img/vs-general.gif) &&/width &&/centered
+&(centered &(width60% ![](./img/vs-general.gif) &) &)
В Solution Explorer имате всички файлове от проекта (Visual Studio позволява да групирате няколко проекта в едно, наречено Solution, не е нужно да се занимавате).
Тук **единственото важно за вас се намира в папката "Source Files"**.
В нея ще се намира вашия код, всичко останало са допълнителни неща, които са релевантни за по-големи проекти.
-&&/slide
+&]
-&&slide
+&[slide
-&&table
+&{row
Компилирането на код става от менюто "Debug" най-отгоре, и след това избиране на "Start Without Debugging".
-&&width50 &&fright ![](./img/vs-debug-menu.gif) &&/fright &&/width
+&(width50% &(fright ![](./img/vs-debug-menu.gif) &) &)
-&&/table
+&}
След малко чакане, би трябвало да излезе един прозорец, който изглежда горе-долу така:
![](./img/vs-console.gif)
-&&/slide
+&]
-&&slide
+&[slide
### Как да дебъгваме с Visual Studio
-&&lineb1
+&.br1
Bug е когато нещо непланирано се случи в кода.
Debuging е глаголът за откриване на причината за един bug.
@@ -406,11 +405,11 @@ Visual Studio предоставя много функционалности, к
![](./img/vs-build-errors.gif)
-&&/slide
+&]
-&&slide
+&[slide
Нека да натиснем "No" и да погледнем Visual Studio.
@@ -419,13 +418,13 @@ Visual Studio предоставя много функционалности, к
Грешки също се виждат в така наречения "Error List", който се намира директно под кода.
Той се появява когато при компилиране получим грешки и изчезва когато няма.
-&&centered &&width70 ![](./img/vs-errors.gif) &&/width &&/centered
+&(centered &(width70% ![](./img/vs-errors.gif) &) &)
-&&/slide
+&]
-&&slide
+&[slide
### Качване на решенията
@@ -443,14 +442,14 @@ Visual Studio предоставя много функционалности, к
Горе в дясно натискате "Commit changes...", в pop-up-a после пак натискате "Commit changes" (ако искате, променяйте "Commit message" и "Extended description", но не е нужно) и сте готови с този файл/задача.
-&&/slide
+&]
-&&clide
+&[middle
## Вече имате достатъчно информация да пишете код сами, [време е за задачи](./)
-&&/clide
+&]
[^vs-2022-old-win]: Може би има трикове с които да инсталирате 2022 версията, но те не са официални и затова няма да го преподам
diff --git a/src/teaching/upp-2023/week1/welcome.md b/src/teaching/upp-2023/week1/welcome.md
index dfa46f0..a1cb6a0 100644
--- a/src/teaching/upp-2023/week1/welcome.md
+++ b/src/teaching/upp-2023/week1/welcome.md
@@ -1,52 +1,52 @@
# Добре дошли - УПП, Седмица 1, 06.10.2023
-&&presentation
+&.presentation
-&&slide &&centered &&font35
+&[title35
# Добре дошли
-&&width65
+&(width65%
[![](https://upload.wikimedia.org/wikipedia/commons/3/3c/Chimpanzee_seated_at_typewriter.jpg)](https://en.wikipedia.org/wiki/Infinite_monkey_theorem)
-&&/width
+&)
-&&/font &&/centered &&/slide
+&]
-&&slide
+&[slide
## Кой съм аз
-&&lineb2
+&.br2
-&&font35
+&(font35
Казвам се Камен (моля не ми говорете на Вие), в момента съм третокурсник в КН2.
-&&lineb1
+&.br1
Ще водя практикуми - давам ви задачи, вие ги решавате и на живо оправяме проблеми.
-&&lineb1
+&.br1
Също ще проверявам част от домашните и контролните през семестъра.
-&&/font
+&)
-&&/slide
+&]
-&&slide
+&[slide
## Кои сте вие
Айде сега, ред по ред:
-&&lineb2
+&.br3
-&&font35
+&(font35
- Име
- Едва ли ще го запомня сега, не ми се сърдете :)
@@ -56,24 +56,24 @@
- в какво IDE/текстов редактор?
- как сте се научили (чрез интернет, курсове, ...)? Ходили ли сте на курсове? Къде?
-&&/font
+&)
-&&/slide
+&]
-&&slide
+&[slide
## Чисто организационно
-&&lineb3
+&.br3
-&&centered &&font35
+&(centered35
Задачи, презентации, ...
[syndamia.com/teaching/upp-2023](/teaching/upp-2023)
-&&/font &&/centered
+&)
-&&lineb3
+&.br3
- Не сме в училище, ако трябва да излезете за разговор или до тоалетна, просто си излезте (за предпочитане по-тихичко).
@@ -82,11 +82,11 @@
- Оценяване: ще разберете на първата лекция
-&&/slide
+&]
-&&slide
+&[slide
## Как можете да се свържете
@@ -101,11 +101,11 @@
Директни линкове към Facebook и Discord има на [профила ми в мудъл](https://learn.fmi.uni-sofia.bg/user/profile.php?id=23229).
-&&/slide
+&]
-&&slide
+&[slide
## Как ще протичат практикумите
@@ -121,11 +121,11 @@
- Ще качвам решения на задачите, заедно с подробно коментари върху тях, тук: [github.com/Syndamia/upp-2023-solutions](https://github.com/Syndamia/upp-2023-solutions).
Това ще се случва в началото на следващия практикум, тоест ще имате една седмица, от деня в който ви давам задачите, през която няма да имате решения.
-&&/slide
+&]
-&&clide
+&[middle
- Ще използваме GitHub classroom, където ще трябва да качите работата си през упражнението.
Целта е да видя какво сте правили и да връщам обратна връзка на всеки.
@@ -136,11 +136,11 @@
- Обратна връзка със сигурност ще правя за нещата, предадени по време на практикума.
Окуражавам ви да си решите всички задачи и след упражнението, обаче все пак имам лимитирано време, ако искате можете да се свържете с мен за работата ви по някоя от тях, но не гарантирам кога ще мога да го видя.
-&&/clide
+&]
-&&slide
+&[slide
## Оплаквайте се!
@@ -149,7 +149,7 @@
Ако задачите са трудни, зле направени, ако нещо не обяснявам като хората, изобщо ако нещо не е ок, свържете се с мен, ще го обсъдим.
-&&lineb3
+&.br3
## Помагайте си!
@@ -159,17 +159,17 @@
Със сигурност няма да успея да помогна на всеки по всяко време от практикума, не се страхувайте да питате съседите си за помощ.
-&&/slide
+&]
-&&slide
+&[slide
## Няколко съвета в позицията ми на третокурсник
-&&lineb2
+&.br2
-&&font35
+&(font35
- **НЕ плагиатствайте!**
**НЕ си качвайте решенията на контролни или домашни онлайн!**
@@ -179,47 +179,47 @@
За хората с опит, ще дойде време когато ще искате да приложите лични знания и практики.
Ако не е казано някъде, не го правите и не го обмисляте!
-&&/font &&/slide
+&) &]
-&&clide &&centered
+&[title
# Въпроси ?
-&&/centered &&/clide
+&]
-&&clide &&centered
+&[title
# ФМИ в контекста на програмирането
Или защо учим толкова много математика
-&&lineb2
+&.br2
-&&font22
+&(font22
Ще си позволя едно отклонение.
Искам да обясня как **аз лично** виждам
математиката в компютърния свят.
-&&/font
+&)
-&&/centered &&/clide
+&]
-&&slide
+&[slide
## В КН2 има много и трудна математика
-&&table
+&{row
-&&width35
+&(width35%
![](./img/u4-mat-hard.gif)
-&&/width
+&)
-&&cont
+&{column
- Жълто - математически предмет
- Червено - проблемни предмети
@@ -230,14 +230,14 @@
- Към половината предмети са математики
- Почти всички проблемни са наблъскани в 1ви курс
-&&/cont
+&}
-&&/table
-&&/slide
+&}
+&]
-&&slide
+&[slide
## Защо учим толкова много математика?
@@ -248,40 +248,38 @@
Смесица на уводите в няколко предмета:
-&&table
+&{row
-&&font35
+&(font35
![](https://upload.wikimedia.org/wikipedia/commons/9/99/ClaudeShannon_MFO3807.jpg?20190622223728)
Claude Shannon
-&&/font
+&)
-&&cont
+&{column
- **Булева алгебра**: как работим с истина/лъжа, с 0/1
- Доказана е [еквивалентност между ел. вериги и булевата алгебра](https://en.wikipedia.org/wiki/A_Symbolic_Analysis_of_Relay_and_Switching_Circuits).
- Много типове данни и математически операции могат да се сведат до булева алгебра и работа с памет.
-&&/cont
+&}
+&} &]
-&&/table &&/slide
-
-
-&&slide
+&[slide
### Дискретни структури (продължение)
-&&lineb1
+&.br1
- **Теория на множествата**: множество е някаква съвкупност от обекти
- Позволява ни да третираме колекция от математически обекти като математически обект[^importance-of-sets].
Използва се в основата на много математики; колкото са полезни те, толкова са и множествата.
-&&lineb2
+&.br2
- **Комбинаторика**[^importance-of-combinatorics]: изследва бройки на неща
@@ -289,55 +287,55 @@ Claude Shannon
- Употребява се при оптимизации и теория на кодирането (компресиране на данни, отстраняване на грешки, криптография)
- Есенциална в теория на графите
-&&/slide
+&]
-&&slide
+&[slide
### Дискретни структури (продължение)
-&&lineb5
+&.br5
- **Теория на графите**: граф е съвкупност от някакви обекти и връзки между тях.
- Позволява моделиране на много естествени структури: интернет мрежите, географски карти (места и пътищата между тях), йерархии, биологически мрежи и так. нат.
- Използва се във важни структури от данни като [heap](https://en.wikipedia.org/wiki/Heap_%28data_structure%29) (и интересната [fibonacci heap](https://www.youtube.com/watch?v=6JxvKfSV9Ns)) и [trie](https://en.wikipedia.org/wiki/Trie)
-&&/slide
+&]
-&&slide
+&[slide
### Езици, автомати и изчислимост
-&&lineb5
+&.br5
-&&table
+&{row
-&&font35
-&&width85 ![](https://upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Kleene.jpg/421px-Kleene.jpg?20230630215747) &&/width
+&(font35
+&(width85% ![](https://upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Kleene.jpg/421px-Kleene.jpg?20230630215747) &)
Stephen Kleene
-&&/font
+&)
-&&cont
+&{column
Това е част от материала в по-общото "theoretical computer science".
Можем формално да опишем и работим с теоретични компютри и програми.
- Позволява ни да използваме математика за създаване, обработка и доказване на програми
-&&/cont
+&}
-&&/table
-&&/slide
+&}
+&]
-&&slide
+&[slide
-&&lineb1
+&.br1
### Алгебра 1
@@ -347,7 +345,7 @@ Stephen Kleene
- Основоположна в компютърната графика
- Много използвана в machine learning
-&&lineb3
+&.br3
### Диференциално и интегрално смятане
@@ -357,11 +355,11 @@ Stephen Kleene
- Напреднал machine learning, главно заради употребата на статистиката (която на свой ред се основава на линейната алгебра)
- Анализ на алгоритми
-&&/slide
+&]
-&&slide &&font35
+&[slide35
## В по-общ план
@@ -378,11 +376,11 @@ Stephen Kleene
Математиката е **неразделима** част от софтуера!
Друг е въпросът дали на вас лично ще ви се налага да я използвате...
-&&/font &&/slide
+&]
-&&slide
+&[slide
## Какво означава да пишеш софтуер?
@@ -394,32 +392,32 @@ Stephen Kleene
- Най-великият труд на тази дисциплина е постигнат чрез **синхрон** между тези три предмета
- &&centered &&width60 &&table
+ &(centered &(width60% &{row
![](https://upload.wikimedia.org/wikipedia/commons/thumb/4/4f/Black_hole_-_Messier_87_crop_max_res.jpg/600px-Black_hole_-_Messier_87_crop_max_res.jpg)
![](https://upload.wikimedia.org/wikipedia/commons/thumb/d/d2/Internet_map_1024.jpg/600px-Internet_map_1024.jpg?20121030160606)
- &&/table &&/width &&/centered
+ &} &) &)
-&&/slide
+&]
-&&clide &&centered &&font35
+&[title35
# Означава да създадеш<br>deus ex machina
С други думи, позволява ни да разрешим неразрешими проблеми
-&&/font &&/centered &&/clide
+&]
-&&clide &&centered &&font35
+&[title35
# [Достатъчно философия, сега ще конфигурираме всичко нужно за първото ни упражнение](./setup.html)
-&&/font &&/centered &&/clide
+&]
### Употреба на изображения
diff --git a/src/teaching/upp-2023/week10/index.md b/src/teaching/upp-2023/week10/index.md
index 043d913..722e705 100644
--- a/src/teaching/upp-2023/week10/index.md
+++ b/src/teaching/upp-2023/week10/index.md
@@ -2,7 +2,7 @@
GitHub classroom: [classroom.github.com/a/EJcTQRz4](https://classroom.github.com/a/EJcTQRz4)
-&&important Във всички задачи **трябва** да използвате рекурсия!
+&:important Във всички задачи **трябва** да използвате рекурсия!
## Задача 1
diff --git a/src/teaching/upp-2023/week11/index.md b/src/teaching/upp-2023/week11/index.md
index d19f0d2..92ce89e 100644
--- a/src/teaching/upp-2023/week11/index.md
+++ b/src/teaching/upp-2023/week11/index.md
@@ -2,9 +2,9 @@
GitHub classroom: [classroom.github.com/a/cZRnZj9y](https://classroom.github.com/a/cZRnZj9y)
-&&important Във всички задачи **трябва** да използвате рекурсия!
+&:important Във всички задачи **трябва** да използвате рекурсия!
-&&warn Някои задачи се повтарят с тези от миналия път, ако преди не сте ги решили, сега ги решете
+&:warn Някои задачи се повтарят с тези от миналия път, ако преди не сте ги решили, сега ги решете
## Алтернативни задачи
diff --git a/src/teaching/upp-2023/week12/index.md b/src/teaching/upp-2023/week12/index.md
index a4be259..d914431 100644
--- a/src/teaching/upp-2023/week12/index.md
+++ b/src/teaching/upp-2023/week12/index.md
@@ -2,7 +2,7 @@
GitHub classroom: [classroom.github.com/a/KEDSxDjl](https://classroom.github.com/a/KEDSxDjl)
-&&important Във всички задачи **трябва** да използвате рекурсия!
+&:important Във всички задачи **трябва** да използвате рекурсия!
## Алтернативни задачи
@@ -86,11 +86,11 @@ GitHub classroom: [classroom.github.com/a/KEDSxDjl](https://classroom.github.com
Направете програма, която чисто рекурсивно изчислиява изрази в обратен полски запис, който поддържа цели числа и операциите събиране, умножение, деление, изваждане и степенуване (за степенуване ще използваме знакът `^`).
-&&important Обаче, за едно извикване на рекурсивната функция, може да пазите само един елемент на израза (число или оператор)!
+&:important Обаче, за едно извикване на рекурсивната функция, може да пазите само един елемент на израза (число или оператор)!
Изразът винаги завършва на знака `$`.
-&&warn Относно вход/изход, понеже няма как да знаем дали i-тата стойност е число или знак (операция), трябва да използваме функцията `std::cin.fail()`, която връща булева стойност, която ни казва дали записването на входа е било успешно.<br>
+&:warn Относно вход/изход, понеже няма как да знаем дали i-тата стойност е число или знак (операция), трябва да използваме функцията `std::cin.fail()`, която връща булева стойност, която ни казва дали записването на входа е било успешно.<br>
Тоест, може винаги да запазвате входа в целочислен тип, когато стигнете до знак `std::cin.fail()` ще върне `true`.
След това трябва да "забравите" за грешката чрез `std::cin.clear()` и може втори път да запазите входа (провалените данни ще се препрочетат) в променлива от знаков тип.<br>
Но това поражда друг проблем, понеже записваме в целочислен тип, когато въведем `+` или `-`, `std::cin` ще очаква това да е водещ знак на число, и ще продължи да чака входа докато не въведем друг знак, тоест `+` и `-` ще бъдат пропуснати.
diff --git a/src/teaching/upp-2023/week13/index.md b/src/teaching/upp-2023/week13/index.md
index 4608c3b..f0e4b9a 100644
--- a/src/teaching/upp-2023/week13/index.md
+++ b/src/teaching/upp-2023/week13/index.md
@@ -37,7 +37,7 @@ GitHub classroom: [classroom.github.com/a/bgiFD6SB](https://classroom.github.com
Използвайте **само една функция за сортиране!**
Като подсказка, използвайте указатели към функции за да променяте как тя работи.
-&&question Какво свойство трябва да е изпълнено за сортиращата функция?
+&:question Какво свойство трябва да е изпълнено за сортиращата функция?
**Примери:**
@@ -136,7 +136,7 @@ A .
Накрая трябва да изкарате всички стойности от последния израз.
-&&warn Погледнете пояснението за вход/изход от [последната задача от миналия път](../week12/#4).
+&:warn Погледнете пояснението за вход/изход от [последната задача от миналия път](../week12/#4).
**Пример:**
diff --git a/src/teaching/upp-2023/week2/revision.md b/src/teaching/upp-2023/week2/revision.md
index ebf6db6..73e897f 100644
--- a/src/teaching/upp-2023/week2/revision.md
+++ b/src/teaching/upp-2023/week2/revision.md
@@ -1,20 +1,20 @@
# Преговор - УПП, Седмица 2, 13.10.2023
-&&presentation
+&.presentation
-&&clide &&centered
+&[title
# Конвертиране на данни, побитови оператори, условни оператори
-&&/centered &&/clide
+&]
-&&slide
+&[slide
## Конвертиране на данни
-&&lineb3
+&.br3
- Неявно (скрито, експлицитно): компилаторът сам се досеща да промени типа
@@ -30,13 +30,13 @@
int m = (int)a + (int)b;
```
-&&/slide
+&]
-&&slide
+&[slide
-&&lineb5
+&.br5
- Със загуба на информация (от по-голям тип в по-малък)
@@ -52,11 +52,11 @@
long b = a;
```
-&&/slide
+&]
-&&slide
+&[slide
## Побитови оператори
@@ -67,7 +67,7 @@
**Означавам побитовите числа с водеща буква "b"!**
Тоест, числото `b1001` е двоичното число `1001`, което е десетичното число `9`.
-&&lineb3
+&.br3
- Отрицание/негация, `~`: обръща 0 в 1 и 1 в 0
@@ -75,11 +75,11 @@
~ b0010 = b1101
```
-&&/slide
+&]
-&&slide
+&[slide
- Побитово "и", `&`: за два бита, ако и двете са 1, връща 1, иначе връща 0
@@ -102,11 +102,11 @@
b0011 ^ b0101 = b0110
```
-&&/slide
+&]
-&&clide &&font27
+&[middle27
- Побитово отместване на ляво, `<<`: отмества всеки бит с n позиции на ляво
Винаги "запълва" с нули (няма разлика между логическо и аритметично ляво отместване)
@@ -128,11 +128,11 @@
b1010 >> 3 = b0001 или пък b1111
```
-&&/font &&/clide
+&]
-&&clide
+&[middle
Примери с код:
@@ -156,19 +156,19 @@ int r4 = (unsigned int)b >> 1; // 2
int r5 = (unsigned int)-b >> 1; // 2147483645
```
-&&/clide
+&]
-&&slide
+&[slide
## Логически оператори
Много приличат на побитовите, обаче побитовите работят върху битове, докато логическите работят върху bool.
-&&lineb4
+&.br4
- `!`: обръща `true` във `false` и обратно
@@ -177,11 +177,11 @@ int r5 = (unsigned int)-b >> 1; // 2147483645
! false // true
```
-&&/slide
+&]
-&&clide
+&[middle
- `&&`: "логическо и", ако и двете стойности са `true`, тогава и резултатът е `true`
@@ -199,11 +199,11 @@ int r5 = (unsigned int)-b >> 1; // 2147483645
false || false // false
```
-&&/clide
+&]
-&&slide
+&[slide
## Условни конструкции
@@ -225,11 +225,11 @@ int r5 = (unsigned int)-b >> 1; // 2147483645
dootherthing;
```
-&&/slide
+&]
-&&clide &&font25
+&[middle25
- `if-else`: работи като `if`, обаче след къдравите скоби добавяме `else { ... }`.
@@ -256,11 +256,11 @@ int r5 = (unsigned int)-b >> 1; // 2147483645
dootherthing;
```
-&&/font &&/clide
+&]
-&&slide &&font25
+&[slide25
- благодарение на изпускането на къдрави скоби, можем да пишем
@@ -290,11 +290,11 @@ int r5 = (unsigned int)-b >> 1; // 2147483645
}
```
-&&/font &&/slide
+&]
-&&slide
+&[slide
- `expression` винаги се конвертира до тип `bool` (ако е нужно)
**Никога не правете такива неща:**
@@ -320,11 +320,11 @@ int r5 = (unsigned int)-b >> 1; // 2147483645
Просто правите `bool a = ! expression;`
-&&/slide
+&]
-&&slide
+&[slide
- Тернарен оператор: ако искате да имате такава условна конструкция като част от израз (който взема стойност) използвате
@@ -348,11 +348,11 @@ int r5 = (unsigned int)-b >> 1; // 2147483645
std::cout << ((grade < 300) ? 2.0 : grade / 100.0);
```
-&&/slide
+&]
-&&clide &&font27
+&[middle27
- `switch`: приема стойност и изпълнява случая, при който стойността съвпада с определената
@@ -377,12 +377,12 @@ int r5 = (unsigned int)-b >> 1; // 2147483645
Без `break` изпълнението продължава към следващия `case`
-&&/font &&/clide
+&]
-&&clide
+&[middle
```cpp
char characterInput;
@@ -395,4 +395,4 @@ switch(characterInput) {
}
```
-&&/clide
+&]
diff --git a/src/teaching/upp-2023/week3/revision.md b/src/teaching/upp-2023/week3/revision.md
index cb0ac61..6e684cc 100644
--- a/src/teaching/upp-2023/week3/revision.md
+++ b/src/teaching/upp-2023/week3/revision.md
@@ -2,16 +2,16 @@
&&presentation
-&&clide &&font35 &&centered
+&[title35
# Цикли, assert
-&&/centered &&/font &&/clide
+&]
-&&slide &&font25
+&[slide25
## Бележки от миналия път
@@ -42,11 +42,11 @@
bool b = !condition;
```
-&&/font &&/slide
+&]
-&&clide
+&[middle
- второ:
@@ -64,15 +64,15 @@
a >= '0' && a <= '9'
```
-&&/clide
+&]
-&&slide
+&[slide
## С/без загуба на данни
-&&lineb3
+&.br3
Получи се малко разногласие между това, което Ивана ви е казала и това което аз ви казах.
В края на деня, **конвертиране от int към unsigned int не губи информация!**
@@ -83,11 +83,11 @@
Тоест, конвертирания при които не губиш битове, нямаш загуба на данни.
-&&/slide
+&]
-&&slide
+&[slide
## 2s compliment
@@ -109,11 +109,11 @@
000 0
```
-&&/slide
+&]
-&&clide
+&[middle
Това работи, обаче имаме един гигантски проблем: събирането не работи!
От математика знаем, че "2 - 1 = 2 + (-1)", тоест би трябвало да можем да съберем побитово 2 и -1 и да получим 1.
@@ -133,11 +133,11 @@
Да не говорим, че ние имаме -0, което не ни трябва много.
-&&/clide
+&]
-&&clide
+&[middle
Нека да помислим пак, да вземем само положителните:
@@ -156,11 +156,11 @@
Нека тогава "-1 = 111".
-&&/clide
+&]
-&&slide
+&[slide
Правейки същото за "2 + -2", намираме че
@@ -186,11 +186,11 @@
100 не сме го използвали, обаче намерихме отрицателното число за всяко положително.
Да видим как работим с него, побитово "100 + 001 = 101", тоест "x + 1 = -3", следователно x ще бъде -4.
-&&/slide
+&]
-&&clide
+&[middle
Това е идеята на "complements", дефинираме отрицателни числа, така че да използваме едно и също събиране между положителни и отрицателни.
@@ -212,15 +212,15 @@
11111111111111111111111111111110
```
-&&/clide
+&]
-&&slide
+&[slide
## Цикли
-&&lineb4
+&.br4
- `while` цикъл
@@ -232,11 +232,11 @@
"условие" е булева стойност, като ако е `false` цикъла спира, докато ако е `true` "тяло" се изпълнява и после пак се проверява условие
-&&/slide
+&]
-&&clide
+&[middle
- Може да си го представите като
@@ -258,11 +258,11 @@
...
```
-&&/clide
+&]
-&&slide
+&[slide
- `do-while` цикъл, като `while`, но "тяло" се изпълнява поне един път
@@ -289,11 +289,11 @@
...
```
-&&/slide
+&]
-&&clide
+&[middle
- `for` цикъл
@@ -307,11 +307,11 @@
"условие" се изпълнява преди всяка итерация, като ако е `false` цикъла спира, докато ако е `true` продължава
"инкрементация" се изпълнява след края на всяка итерация
-&&/clide
+&]
-&&slide
+&[slide
- Може да си представяте, че това на практика извършва:
@@ -336,11 +336,11 @@
...
```
-&&/slide
+&]
-&&clide
+&[middle
- или използвайки `while` цикъл:
@@ -352,36 +352,36 @@
}
```
-&&/clide
+&]
-&&slide
+&[slide
### Ключови думи
-&&lineb3
+&.br3
- `break`: моментално прекратява изпълнението на цикъла
При `for` цикли инкрементацията не се изпълнява след `break`
-&&lineb2
+&.br2
- `continue`: продължи след края на сегашната итерация; тоест изпълнението на тяло се прекратява и започваме нова итерация
При `for` цикли директно отива на инкрементация
-&&/slide
+&]
-&&slide
+&[slide
## Assert
-&&lineb3
+&.br3
Понякога е полезно да тестваме нашия код вътре в самия код.
Тоест, искаме на конкретно място в кода да проверим нещо.
@@ -394,4 +394,4 @@ assert(condition);
Използва се повече като програмистки уред, тоест ако програмата спре заради `assert`, това е защото има някаква програмистка грешка.
-&&/slide
+&]
diff --git a/src/teaching/upp-2023/week4/revision.md b/src/teaching/upp-2023/week4/revision.md
index b5de82d..3650875 100644
--- a/src/teaching/upp-2023/week4/revision.md
+++ b/src/teaching/upp-2023/week4/revision.md
@@ -1,16 +1,16 @@
# Преговор - УПП, Седмица 4, 27.10.2023
-&&presentation
+&.presentation
-&&clide &&font35 &&centered
+&[title35
# Функции и алгоритмични задачи
-&&/centered &&/font &&/clide
+&]
-&&slide &&font27
+&[slide27
## От сега нататък ще направим няколко промени
@@ -26,7 +26,7 @@
- Ще може да предавате задания след срока!
Искам да решите колкото се може повече вкъщи.
-&&/font &&/slide
+&]
@@ -34,7 +34,7 @@
-&&slide
+&[slide
## 2s compliment
@@ -56,11 +56,11 @@
000 0
```
-&&/slide
+&]
-&&clide
+&[middle
Това работи, обаче имаме един гигантски проблем: събирането не работи!
От математика знаем, че "2 - 1 = 2 + (-1)", тоест би трябвало да можем да съберем побитово 2 и -1 и да получим 1.
@@ -80,11 +80,11 @@
Да не говорим, че ние имаме -0, което не ни трябва много.
-&&/clide
+&]
-&&clide
+&[middle
Нека да помислим пак, да вземем само положителните:
@@ -103,11 +103,11 @@
Нека тогава "-1 = 111".
-&&/clide
+&]
-&&slide
+&[slide
Правейки същото за "2 + -2", намираме че
@@ -133,11 +133,11 @@
100 не сме го използвали, обаче намерихме отрицателното число за всяко положително.
Да видим как работим с него, побитово "100 + 001 = 101", тоест "x + 1 = -3", следователно x ще бъде -4.
-&&/slide
+&]
-&&clide
+&[middle
Това е идеята на "complements", дефинираме отрицателни числа, така че да използваме едно и също събиране между положителни и отрицателни.
@@ -159,7 +159,7 @@
11111111111111111111111111111110
```
-&&/clide
+&]
diff --git a/src/teaching/upp-2023/week6/index.md b/src/teaching/upp-2023/week6/index.md
index 991f987..34c3f53 100644
--- a/src/teaching/upp-2023/week6/index.md
+++ b/src/teaching/upp-2023/week6/index.md
@@ -189,7 +189,7 @@ $ 1 1
|6 1 3 7 3 0 958|959|
|17 5 9 8 6 1 8 3 9 5 9 9 2 7 8 0 91461 772000|863461|
-&&question Какво прави последната програма?
+&:question Какво прави последната програма?
**Бонус:** направете програми за симулаторния компютър, които
diff --git a/src/teaching/upp-2023/week7/index.md b/src/teaching/upp-2023/week7/index.md
index 329581c..b216992 100644
--- a/src/teaching/upp-2023/week7/index.md
+++ b/src/teaching/upp-2023/week7/index.md
@@ -10,7 +10,7 @@ GitHub classroom: [classroom.github.com/a/m5M2_CWD](https://classroom.github.com
Направете функция, която получава два двуизмерни координата, покомпонентно ги сумира и връща резултатните координати.
Няма как функцията да върне две стойности, затова добаваете още два аргумента, които да са указатели към променливи в които да запазим сумираните координати.
-&&warn **Трябва** да използвате референции вместо указатели!
+&:warn **Трябва** да използвате референции вместо указатели!
От входа получавате два координата, след това връщате тяхната покомпонентна сума **използвайки функцията**.
@@ -31,7 +31,7 @@ GitHub classroom: [classroom.github.com/a/m5M2_CWD](https://classroom.github.com
Ако буквата е `a`, `b` или `c`, тогава този продукт става "сегашния" продукт.
Ако буквата е `S`, тогава намаляте бройката на сегашния продукт с 1, а ако е `R` - увеличаваме с 10.
-&&warn **НЕ** може да използвате масиви! **Трябва** действията на `S` и `R` да се изкарат във функции!
+&:warn **НЕ** може да използвате масиви! **Трябва** действията на `S` и `R` да се изкарат във функции!
Когато получите `$`, изкарвате броя на всеки продукт и спирате програмата.
@@ -46,7 +46,7 @@ GitHub classroom: [classroom.github.com/a/m5M2_CWD](https://classroom.github.com
В началото получавате буква - тя съответства на дадена **функция**, след това получавате 5 числа с плаваща запетая.
След всяко въведено трябва да изкарате резултата от съответната функция при подадено входното число.
-&&warn **Трябва** да използвате указател към функция!
+&:warn **Трябва** да използвате указател към функция!
Буквите съответстват на следните функции:
diff --git a/src/teaching/upp-2023/week8/index.md b/src/teaching/upp-2023/week8/index.md
index f3ab415..561dc71 100644
--- a/src/teaching/upp-2023/week8/index.md
+++ b/src/teaching/upp-2023/week8/index.md
@@ -2,7 +2,7 @@
GitHub classroom: [classroom.github.com/a/Big7FRUG](https://classroom.github.com/a/Big7FRUG)
-&&warn **Трябва** да използвате възможно най-малко памет във всички задачи!
+&:warn **Трябва** да използвате възможно най-малко памет във всички задачи!
## Задача 1
@@ -77,7 +77,7 @@ GitHub classroom: [classroom.github.com/a/Big7FRUG](https://classroom.github.com
Друг начин по който да го разберем, е че първото число е на първа позиция, второто число е на последната, третото число е на втора позиция, четвъртото е на предпоследна и так. нат.
Обаче ние не знаем финалния размер на масива, затова се нуждаем от логиката с чертата.
-&&important Моля не правете решенето със запазване на входа и разместване на елементите
+&:important Моля не правете решенето със запазване на входа и разместване на елементите
Напомням, че тази права само си я представяте.
В началото масива е с размер 2.
diff --git a/src/teaching/upp-2023/week9/index.md b/src/teaching/upp-2023/week9/index.md
index 86e7cca..557b89a 100644
--- a/src/teaching/upp-2023/week9/index.md
+++ b/src/teaching/upp-2023/week9/index.md
@@ -2,7 +2,7 @@
GitHub classroom: [classroom.github.com/a/lGXxCRZO](https://classroom.github.com/a/lGXxCRZO)
-&&warn Освен ако не е казано друго, може да зачитате, че максималната дължина на един низ е 1024 знака.
+&:warn Освен ако не е казано друго, може да зачитате, че максималната дължина на един низ е 1024 знака.
## Задача 1
@@ -21,7 +21,7 @@ GitHub classroom: [classroom.github.com/a/lGXxCRZO](https://classroom.github.com
Изкарайте на екрана втората половина от низа и след това директно долепена първата половина.
Ако низа е с нечетна дължина, зачитаме средния елемент като част от втората половина.
-&&important Трябва да използвате динамична памет
+&:important Трябва да използвате динамична памет
**Примери:**