Summary Files Commits Branches @commit @diff @stats
diff options
context:
space:
mode:
2 files changed, 53 insertions, 53 deletions
-rw-r--r--src/teaching/oop-2023/week1/good-software.md86
-rw-r--r--src/teaching/oop-2023/week1/organization.md20
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 &&centered &&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!
&mdash; 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 &&centered &&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** минути след края на часа
- Както преди, не е нужно да присъствате, за да качвате решения
- Ако случайно някой не знае как се ползва:
-&&centered [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
+&]