Summary Files Commits Branches @commit @diff @stats
path: root / src / teaching / upp-2023 / week3 / revision.du
diff options
context:
space:
mode:
1 files changed, 39 insertions, 32 deletions
-rw-r--r--src/teaching/upp-2023/week3/revision.du71
diff --git a/src/teaching/upp-2023/week3/revision.du b/src/teaching/upp-2023/week3/revision.du
index bcbdafa..99875e2 100644
--- a/src/teaching/upp-2023/week3/revision.du
+++ b/src/teaching/upp-2023/week3/revision.du
@@ -1,8 +1,11 @@
-# Преговор - УПП, Седмица 3, 20.10.2023
+'def title Преговор - УПП, Седмица 3, 20.10.2023
+'def desc Преговор на материала
+
+# {title}
\n
-[$presentation-controller]
+{presentation-controller}
:title_slide35
@@ -20,7 +23,7 @@
bool b;
if (condition) b = true;
- Грешно е, понеже [`condition`] сам по себе си е от тип bool, с този [`if`] буквално не правите нищо.
+ Грешно е, понеже {` condition} сам по себе си е от тип bool, с този {` if} буквално не правите нищо.
Правилния вариант е:
```cpp
@@ -48,7 +51,7 @@
.p
Всяка буква действително съответства на определено число, дефинирано от ASCII стандарта.
- Наистина '0' е 48 и '9' е 57, обаче от вас [=не=] се очаква да помните ASCII таблицата!
+ Наистина '0' е 48 и '9' е 57, обаче от вас {b не} се очаква да помните ASCII таблицата!
Също, ако не знаеш наизуст кои буква са тези числа, този израз е много неясен.
.p
@@ -63,11 +66,11 @@
## С/без загуба на данни
-[$br3]
+{br3}
.p
Получи се малко разногласие между това, което Ивана ви е казала и това което аз ви казах.
-В края на деня, [=конвертиране от int към unsigned int не губи информация!=]
+В края на деня, {b конвертиране от int към unsigned int не губи информация!}
.p
Цитирайки 4то издание на "The C++ Programming Language" глава 10.5:
@@ -88,7 +91,7 @@ A conversion is value-preserving if you can convert a value and then convert the
.p
Как бихме ги използвали, за да представим отрицателните числа?
-Най-лесния начин е да погледнем най-левия (старшия) бит, ако е 0 значи е положително, ако е 1 значи е отрицателно, тоест [`010`] е 2, докато [`110`] е -2.
+Най-лесния начин е да погледнем най-левия (старшия) бит, ако е 0 значи е положително, ако е 1 значи е отрицателно, тоест {` 010} е 2, докато {` 110} е -2.
Ако разпишем всичките ни числа:
```
@@ -175,17 +178,17 @@ A conversion is value-preserving if you can convert a value and then convert the
Това е идеята на "complements", дефинираме отрицателни числа, така че да използваме едно и също събиране между положителни и отрицателни.
.p
-Още от много старите "калкулатори" ([url https://en.wikipedia.org/wiki/Adding_machine сумиращи машини]), изваждането се е свеждало до събиране на положително и отрицателно число.
+Още от много старите "калкулатори" ({url сумиращи машини;https://en.wikipedia.org/wiki/Adding_machine}), изваждането се е свеждало до събиране на положително и отрицателно число.
.p
-И това е причината защо [`~ 2`] връща [`-3`]:
+И това е причината защо {` ~ 2} връща {` -3}:
```
~ 00000000000000000000000000000010
──────────────────────────────────
11111111111111111111111111111101
-И затова при [`>>`] със знаков тип имаме аритметическо отместване:
+И затова при {` >>} със знаков тип имаме аритметическо отместване:
```
11111111111111111111111111111101 >> 1
@@ -197,17 +200,17 @@ A conversion is value-preserving if you can convert a value and then convert the
## Цикли
-[$br4]
+{br4}
:unordered
-- [`while`] цикъл
+- {` while} цикъл
```cpp
while (условие) {
тяло
}
- "условие" е булева стойност, като ако е [`false`] цикъла спира, докато ако е [`true`] "тяло" се изпълнява и после пак се проверява условие
+ "условие" е булева стойност, като ако е {` false} цикъла спира, докато ако е {` true} "тяло" се изпълнява и после пак се проверява условие
@@ -215,7 +218,7 @@ A conversion is value-preserving if you can convert a value and then convert the
- Може да си го представите като
- :code_cpp
+ ````cpp
if (условие) {
тяло
}
@@ -229,14 +232,15 @@ A conversion is value-preserving if you can convert a value and then convert the
else {
спри
}
- ...
+ \...
+
:slide
:unordered
-- [`do-while`] цикъл, като [`while`], но "тяло" се изпълнява поне един път
+- {` do-while} цикъл, като {` while}, но "тяло" се изпълнява поне един път
```cpp
do {
@@ -245,7 +249,7 @@ A conversion is value-preserving if you can convert a value and then convert the
Нашият аналог е:
- :code_cpp
+ ````cpp
тяло
if (условие) {
@@ -256,14 +260,15 @@ A conversion is value-preserving if you can convert a value and then convert the
}
if (условие) {
- ...
+ \...
+
:middle_slide
:unordered
-- [`for`] цикъл
+- {` for} цикъл
```cpp
for (инициализация; условие; инкрементация) {
@@ -271,7 +276,7 @@ A conversion is value-preserving if you can convert a value and then convert the
}
"инициализация" се изпълнява само веднъж, преди всичко останало в цикъла\n
- "условие" се изпълнява преди всяка итерация, като ако е [`false`] цикъла спира, докато ако е [`true`] продължава\n
+ "условие" се изпълнява преди всяка итерация, като ако е {` false} цикъла спира, докато ако е {` true} продължава\n
"инкрементация" се изпълнява след края на всяка итерация
@@ -280,7 +285,7 @@ A conversion is value-preserving if you can convert a value and then convert the
:unordered
- Може да си представяте, че това на практика извършва:
- :code_cpp
+ ````cpp
инициализация
if (условие) {
@@ -298,14 +303,15 @@ A conversion is value-preserving if you can convert a value and then convert the
else {
спри
}
- ...
+ \...
+
:middle_slide
:unordered
-- или използвайки [`while`] цикъл:
+- или използвайки {` while} цикъл:
```cpp
инициализация
@@ -320,18 +326,18 @@ A conversion is value-preserving if you can convert a value and then convert the
### Ключови думи
-[$br3]
+{br3}
:unordered
-- [`break`]: моментално прекратява изпълнението на цикъла
+- {` break}: моментално прекратява изпълнението на цикъла
- .p При [`for`] цикли инкрементацията не се изпълнява след [`break`]
+ .p При {` for} цикли инкрементацията не се изпълнява след {` break}
-[$br2]
+{br2}
-- [`continue`]: продължи след края на сегашната итерация; тоест изпълнението на тяло се прекратява и започваме нова итерация
+- {` continue}: продължи след края на сегашната итерация; тоест изпълнението на тяло се прекратява и започваме нова итерация
- .p При [`for`] цикли директно отива на инкрементация
+ .p При {` for} цикли директно отива на инкрементация
@@ -339,17 +345,18 @@ A conversion is value-preserving if you can convert a value and then convert the
## Assert
-[$br3]
+{br3}
.p
Понякога е полезно да тестваме нашия код вътре в самия код.
Тоест, искаме на конкретно място в кода да проверим нещо.
+
```cpp
assert(condition);
.p
-Ако [`condition`] е [`true`], нищо не се случва, обаче ако е [`false`] програмата моментално прекратява изпълнение.
+Ако {` condition} е {` true}, нищо не се случва, обаче ако е {` false} програмата моментално прекратява изпълнение.
.p
-Използва се повече като програмистки уред, тоест ако програмата спре заради [`assert`], това е защото има някаква програмистка грешка.
+Използва се повече като програмистки уред, тоест ако програмата спре заради {` assert}, това е защото има някаква програмистка грешка.