diff options
2 files changed, 53 insertions, 53 deletions
| -rw-r--r-- | src/teaching/oop-2023/week1/good-software.md | 86 | ||||
| -rw-r--r-- | src/teaching/oop-2023/week1/organization.md | 20 |
diff --git a/src/teaching/oop-2023/week1/good-software.md b/src/teaching/oop-2023/week1/good-software.md index 9e2e833..bd34bb2 100644 --- a/src/teaching/oop-2023/week1/good-software.md +++ b/src/teaching/oop-2023/week1/good-software.md @@ -4,21 +4,21 @@ Главния проблем, който забелязах, беше колко грозно и нагласено бяха написани решенията. Като въведение в ООП, ще поговорим по тази тема. -&&presentation +&.presentation -&&clide &¢ered &&font35 +&[title # Основни идеи<br>при добро писане на код -&&/font &&/centered &&/clide +&] -&&slide &&font35 +&[slide35 ## Какво прави програмиста с чужд код? -&&lineb4 +&.br4 1. Чете 2. Разучава как се ползва/какво прави @@ -26,15 +26,15 @@ Добър код прави тези задачи лесни! -&&/font &&/slide +&] -&&slide &&font35 +&[slide35 ## Подобряване на четене -&&lineb3 +&.br4 - Лично вярвам, че четимост е по-важна от конвенции - Човек вижда най-лесно "контрастни" шаблони @@ -47,7 +47,7 @@ .... 0....0 011110 511119 ``` -&&/font &&/slide +&] @@ -60,11 +60,11 @@ -&&clide +&[vcen Труден за четене код *(забелязвате ли грешките?)*: -&&font22 +&(font22 ``` int a, b; @@ -86,7 +86,7 @@ if (board[a][b][i] == ' ') { } ``` -&&/font &&/clide +&) &] @@ -97,11 +97,11 @@ if (board[a][b][i] == ' ') { -&&clide +&[vcen По-лесен за четене код *(а сега виждат ли се по-лесно?)*: -&&font18 +&(font18 ``` std::cout << "Enter coordinates" << std::endl; @@ -134,7 +134,7 @@ for (int i = 0; i < layers; i++) } ``` -&&/font &&/clide +&) &] @@ -144,23 +144,23 @@ for (int i = 0; i < layers; i++) -&&slide +&[slide ## Абстракцията - улеснява изучаване И употреба/модификация -&&lineb1 +&.br1 - Разделяме обработване на стойностите от директната имплементацията - Създаваме нови "машинни инструкции" -&&lineb1 +&.br1 - `doX()` е по-лошо от `do(X)` - можем да преизползваме `do()` за неща, различни от `X` - един път разбрано, всяка употреба на `do()` също е разбрана; този стил кара `do()` да бъде по-обща функция, което я прави по-лесна за разбиране - модификация на `do(X)` се свежда до заменяне на `do()` с `doOther()` или до заменяне на `X` с `Y`; променяме "инструкцията" или променяме данната -&&/slide +&] @@ -168,7 +168,7 @@ for (int i = 0; i < layers; i++) -&&clide +&[vcen ```cpp @@ -187,7 +187,7 @@ int fib5() │ int fib(int n) } │ } ``` -&&/clide +&] @@ -200,7 +200,7 @@ int fib5() │ int fib(int n) -&&slide +&[slide Лошо - `doX()` в тялото на функцията @@ -226,7 +226,7 @@ void tryTakeTile(char** board, int rows, int cols, } ``` -&&/slide +&] @@ -240,7 +240,7 @@ void tryTakeTile(char** board, int rows, int cols, Нека сега да пренапишем функцията, използвайки колкото се може повече абстракция. -&&clide +&[vcen Добро - `do(X)` @@ -264,7 +264,7 @@ void tryTakeTile(char** board, int rows, int cols, } ``` -&&/clide +&] @@ -279,7 +279,7 @@ void tryTakeTile(char** board, int rows, int cols, -&&slide +&[slide Лошо - всички цикли са `doX()` @@ -304,7 +304,7 @@ void generateLayer(char** layer, int rows, int cols, } ``` -&&/slide +&] @@ -321,7 +321,7 @@ void generateLayer(char** layer, int rows, int cols, -&&clide +&[vcen Добро - `do(X)` @@ -342,7 +342,7 @@ void generateLayer(char** layer, int rows, int cols, **Бонус:** работи по-коректно от преди -&&/clide +&] @@ -358,7 +358,7 @@ void generateLayer(char** layer, int rows, int cols, -&&clide +&[vcen Решения със слоеве правят същото. Лошо - `doX()` при циклите: @@ -374,7 +374,7 @@ void generate(char*** board, int rows, int cols, int layers, } ``` -&&/clide +&] @@ -384,7 +384,7 @@ void generate(char*** board, int rows, int cols, int layers, -&&slide +&[slide Добро - `do(X)` @@ -409,7 +409,7 @@ void generate(char*** board, int rows, int cols, int layers, } ``` -&&/slide +&] @@ -427,14 +427,14 @@ void generate(char*** board, int rows, int cols, int layers, -&&clide &&font35 +&[vcen35 ### Абстракцията - подобрява и коментари - Целта на коментарите е да направи разбиране и модификация на код по-лесни. - В повечето случаи, коментарът трябва да ни дава *нова* информация или да *свърже* парчета информация -&&/font &&/clide +&] @@ -442,7 +442,7 @@ void generate(char*** board, int rows, int cols, int layers, -&&clide +&[vcen Лошо: @@ -468,7 +468,7 @@ for (int i = 0; i < rows; i++) { ``` -&&/clide +&] @@ -482,17 +482,17 @@ for (int i = 0; i < rows; i++) { -&&clide +&[vcen > For practical reasons, the demonstration programs must be small, many times smaller than the "life-size programs" I have in mind. My basic problem is that precisely this difference in scale is one of the major sources of our difficulties in programming! — Edsger W. Dijkstra, [Notes on Structured Programming, On our inability to do much](https://www.cs.utexas.edu/users/EWD/ewd02xx/EWD249.PDF) -&&lineb1 +&.br1 Решение на цялото домашно, с описаните методи TODO -&&/clide +&] @@ -504,11 +504,11 @@ for (int i = 0; i < rows; i++) { -&&slide &&font35 +&[slide35 ## Изводи -&&lineb4 +&.br4 - Форматирайте/подравнявайте си кода, искате лесно четене - Вдигайте абстракция @@ -516,4 +516,4 @@ for (int i = 0; i < rows; i++) { - Преизползване на възможно най-много код - Коментари които дават или разширяват знание -&&/font &&/slide +&] diff --git a/src/teaching/oop-2023/week1/organization.md b/src/teaching/oop-2023/week1/organization.md index 866b93a..dfdeafa 100644 --- a/src/teaching/oop-2023/week1/organization.md +++ b/src/teaching/oop-2023/week1/organization.md @@ -1,12 +1,12 @@ # Организация - ООП, Седмица 1, 22.02.2024 -&&presentation +&.presentation -&&clide &¢ered &&font35 +&[title35 # Добре дошли в ООП -&&/font &&/centered &&/clide +&] @@ -14,13 +14,13 @@ -&&clide &&font35 +&[vcen35 - ООП практикум е избираема, която няма смисъл да не запишете - Само плюсове за вас - Оценката е според контролни/изпити по ООП -&&/font &&/clide +&] @@ -29,14 +29,14 @@ -&&clide &&font35 +&[vcen35 - Освобождаване от изпит според работата ви по време на практикум - Няма намаляване на оценка - Оценявам общите ви умения<br> Важното е да умеете да сте програмисти: коректност, брой и трудност на решени задачи се зачитат по-малко отколкото успех да напишете прилично-изглеждаща програма (дори с малко мой тласък) -&&/font &&/clide +&] @@ -44,16 +44,16 @@ -&&clide &&font35 +&[vcen35 - Зачитат се **единствено нещата, качени в GitHub classroom, качени в срок** - До **15** минути след края на часа - Както преди, не е нужно да присъствате, за да качвате решения - Ако случайно някой не знае как се ползва: -&¢ered [syndamia.com/upp-2023/week1/setup.html?a](../upp-2023/week1/setup.html?a) &&/centered +&(centered [syndamia.com/upp-2023/week1/setup.html?a](../upp-2023/week1/setup.html?a) &) -&&/font &&/clide +&] |