diff options
16 files changed, 306 insertions, 309 deletions
| -rw-r--r-- | src/teaching/upp-2023/additional1/index.md | 28 | ||||
| -rw-r--r-- | src/teaching/upp-2023/additional2/index.md | 16 | ||||
| -rw-r--r-- | src/teaching/upp-2023/index.md | 2 | ||||
| -rw-r--r-- | src/teaching/upp-2023/week1/setup.md | 175 | ||||
| -rw-r--r-- | src/teaching/upp-2023/week1/welcome.md | 180 | ||||
| -rw-r--r-- | src/teaching/upp-2023/week10/index.md | 2 | ||||
| -rw-r--r-- | src/teaching/upp-2023/week11/index.md | 4 | ||||
| -rw-r--r-- | src/teaching/upp-2023/week12/index.md | 6 | ||||
| -rw-r--r-- | src/teaching/upp-2023/week13/index.md | 4 | ||||
| -rw-r--r-- | src/teaching/upp-2023/week2/revision.md | 74 | ||||
| -rw-r--r-- | src/teaching/upp-2023/week3/revision.md | 78 | ||||
| -rw-r--r-- | src/teaching/upp-2023/week4/revision.md | 30 | ||||
| -rw-r--r-- | src/teaching/upp-2023/week6/index.md | 2 | ||||
| -rw-r--r-- | src/teaching/upp-2023/week7/index.md | 6 | ||||
| -rw-r--r-- | src/teaching/upp-2023/week8/index.md | 4 | ||||
| -rw-r--r-- | src/teaching/upp-2023/week9/index.md | 4 |
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 трябва да спрете, да помислите и да си отговорите на дадения въпрос. +При изображението  трябва да спрете, да помислите и да си отговорите на дадения въпрос. Почти винаги ако не може да отговорите, ще имате проблеми в бъдеще с решаването. Понякога ще ви спираме и ще ви питаме за тези въпроси. ## Задача - База гаднни -&&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⁵ числа в реда)? Защо имаме само 4 индекса? +&:question Как е разделена побитово една стойност от таблица А? Кои индекси за кои стойности ще се ползват? Достатъчно ли е всеки индекс към криптографския ред да бъде само 5 бита (тоест може ли да има повече от 2⁵ числа в реда)? Защо имаме само 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 &¢ered +&.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 е програма (система) за [контрол на версииÑ  -&&/slide +&] -&&clide +&[middle След това, като влезете в акаунтите си (което става автоматично след регистрация), на заглавната страница ще имате нещо такова: -&&width75  &&/width +&(width75%  &) В горния десен ъгъл, където е иконката с квадрати на бял фон, след натискане получавате sidebar. От него, може да достъпите профила си, repository-та които имате, и так. нат. -&&/clide +&] -&&slide +&[slide ### Проверете дали сте маркирани! @@ -105,15 +106,15 @@ git е програма (система) за [контрол на версииÑ  -&&/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 След като го отворите, ще видите съобщение за разрешение, авторизирайте го.  -&&/table - -&&/slide +&} +&] -&&clide +&[middle -&&table +&{row -&&width60  &&/width +&(width60%  &) -&&cont +&{column При първо влизане ще получите страница с имената и факултетните имена на всички студенти от групата. @@ -163,30 +163,29 @@ GitHub предоставя лесни начини да правите пром Това се прави само веднъж, и след това никога пак. -&&/cont - -&&/table +&} -&&/clide +&} +&] -&&slide +&[slide След това, би трябвало да видите страницата за "Приемане на заданието". -&&width40  &&/width +&(width40%  &) След като го приемете, на новата страница, изчакайте няколко секунди и презаредете. Трябва да видите това: -&&width40  &&/width +&(width40%  &) -&&/slide +&] -&&clide +&[middle Сега сте готови, кликнете върху синия линк и ще стигнете във вашето GitHub repository. @@ -197,28 +196,28 @@ GitHub предоставя лесни начини да правите пром В края на презентация показвам как точно е най-лесно да качите работата си. -&&/clide +&] -&&slide +&[slide В таба "Pull requests", още от началото, ще имате едно "Feedback". В него ще ви връщам отзиви относно работата ви, и вие също можете да пишете неща и да ми отговаряте. Целта е да видя какво правите и да ви помогна, моля проверявайте какво съм ви писал, по подразбиране би трябвало да получавате известия на имейл-а. -&¢ered &&width80  &&/width &&/centered +&(centered &(width80%  &) &) -&&/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тина минути. -&¢ered &&width80  &&/width &&/centered +&(centered &(width80%  &) &) -&&/slide +&] -&&slide +&[slide Когато е готово, би трябвало да се включи автоматично и да имате прозорец с име "Sign in to Visual Studio". За сега това не е нужно, спокойно изберете "Not now, maybe later." След това, на "Start with a familiar environment", отново, не е нужно да променяте нищо, просто натиснете "Start Visual Studio". -&¢ered &&width75 &&table +&(centered &(width75% &{row   -&&/table &&/width &&/centered +&} &) &) -&&/slide +&] -&&slide +&[slide ### Как да създадем проект с Visual Studio Това е първия прозорец, който се отваря. В лявата колона имате скорошни проекти, в дясната имате начини да създадете нов проект. -&¢ered &&width80  &&/width &&/centered +&(centered &(width80%  &) &) -&&/slide +&] -&&slide +&[slide Нека да направим нов проект, кликнете "Create a new project". В този прозорец избирате началната "конфигурация" на проекта. В този курс ще работим само и единствено с "Console App", затова изберете него и кликнете "Next". -&¢ered &&width75  &&/width &&/centered +&(centered &(width75%  &) &) -&&/slide +&] -&&slide +&[slide Последния прозорец преди писането на код е за конфигурация на проекта. Тук единствено може да искате да промените Project Name и Location, другото не е важно. -&¢ered &&width80  &&/width &&/centered +&(centered &(width80%  &) &) -&&/slide +&] -&&slide +&[slide #### Бърза вметка, какво и защо конзолата? @@ -351,50 +350,50 @@ GitHub предоставя лесни начини да правите пром Чисто практически, ние това знаем като конзолата: устройство (или в модерно време, програма) което може да получи входен текст и да изкара текст. -&&/slide +&] -&&slide +&[slide ### Как да компилираме с Visual Studio След малко чакане, най-после ще се намираме в средата за писане на код. -&¢ered &&width60  &&/width &&/centered +&(centered &(width60%  &) &) В Solution Explorer имате всички файлове от проекта (Visual Studio позволява да групирате няколко проекта в едно, наречено Solution, не е нужно да се занимавате). Тук **единственото важно за вас се намира в папката "Source Files"**. В нея ще се намира вашия код, всичко останало са допълнителни неща, които са релевантни за по-големи проекти. -&&/slide +&] -&&slide +&[slide -&&table +&{row Компилирането на код става от менюто "Debug" най-отгоре, и след това избиране на "Start Without Debugging". -&&width50 &&fright  &&/fright &&/width +&(width50% &(fright  &) &) -&&/table +&} След малко чакане, би трябвало да излезе един прозорец, който изглежда горе-долу така:  -&&/slide +&] -&&slide +&[slide ### Как да дебъгваме с Visual Studio -&&lineb1 +&.br1 Bug е когато нещо непланирано се случи в кода. Debuging е глаголът за откриване на причината за един bug. @@ -406,11 +405,11 @@ Visual Studio предоставя много функционалности, к  -&&/slide +&] -&&slide +&[slide Нека да натиснем "No" и да погледнем Visual Studio. @@ -419,13 +418,13 @@ Visual Studio предоставя много функционалности, к Грешки също се виждат в така наречения "Error List", който се намира директно под кода. Той се появява когато при компилиране получим грешки и изчезва когато няма. -&¢ered &&width70  &&/width &&/centered +&(centered &(width70%  &) &) -&&/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 &¢ered &&font35 +&[title35 # Добре дошли -&&width65 +&(width65% [](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 -&¢ered &&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 &¢ered +&[title # Въпроси ? -&&/centered &&/clide +&] -&&clide &¢ered +&[title # ФМИ в контекста на програмирането Или защо учим толкова много математика -&&lineb2 +&.br2 -&&font22 +&(font22 Ще си позволя едно отклонение. Искам да обясня как **аз лично** виждам математиката в компютърния свят. -&&/font +&) -&&/centered &&/clide +&] -&&slide +&[slide ## В КН2 има много и трудна математика -&&table +&{row -&&width35 +&(width35%  -&&/width +&) -&&cont +&{column - Жълто - математически предмет - Червено - проблемни предмети @@ -230,14 +230,14 @@ - Към половината предмети са математики - Почти всички проблемни са наблъскани в 1ви курс -&&/cont +&} -&&/table -&&/slide +&} +&] -&&slide +&[slide ## Защо учим толкова много математика? @@ -248,40 +248,38 @@ Смесица на уводите в няколко предмета: -&&table +&{row -&&font35 +&(font35  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  &&/width +&(font35 +&(width85%  &) 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 - Най-великият труд на тази дисциплина е постигнат чрез **синхрон** между тези три предмета - &¢ered &&width60 &&table + &(centered &(width60% &{row   - &&/table &&/width &&/centered + &} &) &) -&&/slide +&] -&&clide &¢ered &&font35 +&[title35 # Означава да създадеш<br>deus ex machina С други думи, позволява ни да разрешим неразрешими проблеми -&&/font &&/centered &&/clide +&] -&&clide &¢ered &&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 &¢ered +&[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 &¢ered +&[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 &¢ered +&[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 Трябва да използвате динамична памет **Примери:** |