Summary Files Commits Branches @commit @diff @stats
path: root / src / teaching
diff options
context:
space:
mode:
Commit8690e0df08702c559763756782e9429c515a6c5d (patch)
Author
 Syndamia <kamen@syndamia.com>
2026-04-07 21:57:58 +0300
Committer
 Syndamia <kamen@syndamia.com>
2026-04-07 21:57:58 +0300
Filesc7117a88aa44c95f2ef74143eb923b9cf9df4640 /src/teaching
syndamia.com-8690e0df08702c559763756782e9429c515a6c5d.tar
syndamia.com-8690e0df08702c559763756782e9429c515a6c5d.tar.gz
syndamia.com-8690e0df08702c559763756782e9429c515a6c5d.zip
Parent5dedf943b42eec21caa54d9eb7057b613d3dc48b (diff)
feat(teaching/oop-2025/w08): Add exercises
3 files changed, 84 insertions, 0 deletions
-rw-r--r--src/teaching/oop-2025/week08/img/formulas.pngbin0 -> 29252 bytes
-rw-r--r--src/teaching/oop-2025/week08/index.du80
-rw-r--r--src/teaching/oop-2025/week08/tex/formulas.tex4
diff --git a/src/teaching/oop-2025/week08/img/formulas.png b/src/teaching/oop-2025/week08/img/formulas.png
new file mode 100644
index 0000000..3f48e44
--- /dev/null
+++ b/src/teaching/oop-2025/week08/img/formulas.png
Binary files differ
diff --git a/src/teaching/oop-2025/week08/index.du b/src/teaching/oop-2025/week08/index.du
new file mode 100644
index 0000000..7b3b7e3
--- /dev/null
+++ b/src/teaching/oop-2025/week08/index.du
@@ -0,0 +1,80 @@
+# Задачи - ООП, Седмица 8, 08.04.2026
+
+'define expected-reading 3 min
+'define created 07 April 2026
+'define edited 07 April 2026
+[$pagenav]
+
+## За решаване
+
+### Задача 1
+
+.warn
+За всеки клас имплементирайте [=голяма петица!=]
+Всички методи трябва да достъпни и за константни обекти, когато е възможно.
+
+Реализирайте система за менажиране на многостепенни ракети.
+След изтрелване на ракетата, най-долната "степен" се активира.
+При изразходване на горивото, тя се откача от другите степени и следващата степен се активира.
+
+[image https://upload.wikimedia.org/wikipedia/commons/d/d6/Black_Brant.jpg]\n
+[*В тази ракета, степените са оцветени по различен начин: бяло, червено и черно.*]
+
+Всяка степен си има:
+.bulleted
+- име, низ с максимална дължина от 100 символа
+- височина в целочислени метри
+- тежест в килограми
+- тяга (lift force) в нютони
+- време на горене в секунди
+
+Една степен изразходва горивото си за "време на горене" секунди, като във всяка секунда прилага ускорение на себе си и товара с "тяга" нютони.
+Може да зачитаме праволинейно ускорение и да не изчисляваме промяната на количеството гориво.
+Това означава, че можем да използваме следните формули за дадена степен:
+
+[image ./img/formulas.png]
+
+Където:
+.bulleted
+- [`a`] е ускорението,
+- [`v[_0_]`] е началната скорост,
+ за първата степен тя ще е 0,
+ за втората тя ще е скоростта на първата степен,
+ на третата ще е скоростта на втората степен и так. нат.
+- [`x`] е разстояние в метри.
+
+Степените се комбинират в ракета.
+Всяка ракета си има име и неограничен брой степени.
+
+За една ракета имплементирайте методи, чрез които се намира:
+.bulleted
+- общата тежест на ракетата
+- общата височина на ракетата
+- финалната скорост на финалната степен
+- общото разстояние което ракетата може да измине, в километри
+- общото време в което ракетата ще гори
+
+Допълнително, имплементирайте методи [`Export`] и [`Import`], чрез които всички данни на една ракета се запазват или вземат в/от двоичен файл.
+
+Неограничено количество ракети и необвързани степени се съхраняват в хангари.
+Имплементирайте методи за добавяне на степени в хангара и [*преместване*] на степени в ракети.
+
+Освен това имаме площадки от които ракети могат да се изтрелват.
+Всяка площадка съдържа:
+.bulleted
+- име с максимална дължина от 250 символа
+- максимална тежест на ракета, която поддържа
+- максимална височина на ракета, която поддържа
+
+Финално, имаме космическа агенция, която съдържа неограничен брой хангари и площадки.
+Всички хангари в космическата агенция могат да се експортират и импортират в един двоичен файл и всички площадки в един текстови файл.
+
+Реализирайте конзолен интерфейс, който поддържа командите:
+.bulleted
+- [`new_hangar`], която по подадени данни добавя нов хангар
+- [`new_launch_site`], която по подадени данни добавя нова площадка
+- [`new_rocket_stage`], която по подадени данни добавя нова степен в избран хангар.
+ Ако такъв не съществува, да се добави в последния добавен хангар.
+- [`new_rocket`], която по подадени данни добавя нова ракета в хангар.
+ Степените ѝ трябва да са "пренесени" от хангар(и), [=не=] да се създадат наново.
+- [`can_launch`], която по подадени данни за площадка и ракета, връща дали ракетата може да бъде изтреляна от площадката
diff --git a/src/teaching/oop-2025/week08/tex/formulas.tex b/src/teaching/oop-2025/week08/tex/formulas.tex
new file mode 100644
index 0000000..b64232f
--- /dev/null
+++ b/src/teaching/oop-2025/week08/tex/formulas.tex
@@ -0,0 +1,4 @@
+% https://latexeditor.lagrida.com/
+a = & \frac{\text{liftForce}}{\text{totalWeight}} \\
+v = & v_0 + a \cdot \text{burnTime} \\
+x = & v_0 \cdot \text{burnTime} + \frac{a \cdot \text{burnTime}^2}{2}