Summary Files Commits Branches @commit @diff @stats
diff options
context:
space:
mode:
Commit2add046075b60072a61f175895e997dc74b4e725 (patch)
Author
 Syndamia <kamen@syndamia.com>
2023-10-12 23:21:52 +0300
Committer
 Syndamia <kamen@syndamia.com>
2023-10-12 23:21:52 +0300
Filesef4dae29244236e226128073219e5648ab5715c5
syndamia.com-2add046075b60072a61f175895e997dc74b4e725.tar
syndamia.com-2add046075b60072a61f175895e997dc74b4e725.tar.gz
syndamia.com-2add046075b60072a61f175895e997dc74b4e725.zip
Parente06ed6dcead883a02316f5cebb054a6cb000bd82 (diff)
(te/upp-2023/w2) Minor wording changes and added logical operators
1 files changed, 63 insertions, 20 deletions
-rw-r--r--src/teaching/upp-2023/week2/revision.md83
diff --git a/src/teaching/upp-2023/week2/revision.md b/src/teaching/upp-2023/week2/revision.md
index 2e5c285..e42062c 100644
--- a/src/teaching/upp-2023/week2/revision.md
+++ b/src/teaching/upp-2023/week2/revision.md
@@ -81,14 +81,14 @@
&&slide
-- Дизюнкция/побитово "и", `&`: за два бита, ако и двете са 1, връща 1, иначе връща 0
+- Побитово "и", `&`: за два бита, ако и двете са 1, връща 1, иначе връща 0
```
3 & 5 = 1
b0011 & b0101 = b0001
```
-- Конюнкция/побитово "или", `|`: за два бита, ако и двете са 0, връща 0, иначе връща 1
+- Побитово "или", `|`: за два бита, ако и двете са 0, връща 0, иначе връща 1
```
3 | 5 = 7
@@ -119,8 +119,8 @@
(приемаме, че типа данни съхранява само 4 бита данни)
- Побитово отместване на дясно, `>>`: отмества всеки бит с n позиции на дясно
- При аритметичното отместване, дупките се запъляват с предходната стойност на старшия бит
- При логичесткото отместване, винаги запълваме с 0
+ При аритметичното отместване, дупките се запълват с предходната стойност на старшия бит
+ При логическото отместване, винаги запълваме с 0
В C++ има един оператор, дали е аритметическо или логическо се определя от типа
```
@@ -160,26 +160,69 @@ int r5 = (unsigned int)-b >> 1; // 2147483645
+
+&&slide
+
+## Логически оператори
+
+Много приличат на побитовите, обаче побитовите работят върху битове, докато логическите работят върху bool.
+
+
+&&lineb4
+
+- `!`: обръща `true` във `false` и обратно
+
+ ```cpp
+ ! true // false
+ ! false // true
+ ```
+
+&&/slide
+
+
+
+&&clide
+
+- `&&`: "логическо и", ако и двете стойности са `true`, тогава и резултатът е `true`
+
+ ```cpp
+ true && true // true
+ false && true // false
+ false && false // false
+ ```
+
+- `||`: "логическо или", само ако и двете са `false`, тогава е `false`
+
+ ```cpp
+ true || true // true
+ false || true // true
+ false || false // false
+ ```
+
+&&/clide
+
+
+
&&slide
-## Условни оператори
+## Условни конструкции
-- Условен оператор `if`: приема булева стойност, ако е `true`, изпълнява кода в къдравите скоби, ако е `false` ги пропуска
+- `if`: приема булева стойност, ако е `true`, изпълнява кода в къдравите скоби, ако е `false` ги пропуска
```cpp
if (expression) {
- dosomething
+ dosomething;
}
- dootherthing
+ dootherthing;
```
`expression` се конвертира към типа `bool`
- Ако `dosomething` е само един израз (тоест е само един ред код, завършващ на ;) можем да пропуснем кдърваите скоби.
+ Ако в къдравите скоби имаме един израз (тоест е само един ред код, завършващ на `;`) можем да ги пропуснем.
```cpp
- if (expression) dosomething
- dootherthing
+ if (expression) dosomething;
+ dootherthing;
```
&&/slide
@@ -188,16 +231,16 @@ int r5 = (unsigned int)-b >> 1; // 2147483645
&&clide &&font25
-- Условен оператор `if-else`: работи като `if`, обаче след къдравите скоби добавяме `else { ... }`.
+- `if-else`: работи като `if`, обаче след къдравите скоби добавяме `else { ... }`.
```cpp
if (expression) {
- dothing1
+ dothing1;
}
else {
- dothing2
+ dothing2;
}
- dootherthing
+ dootherthing;
```
Ако `expression` е истина, `dothing1` се изпълнява и `dothing2` се пропуска изцяло.
@@ -207,10 +250,10 @@ int r5 = (unsigned int)-b >> 1; // 2147483645
```cpp
if (expression) {
- dothing1
+ dothing1;
}
- else dothing2
- dootherthing
+ else dothing2;
+ dootherthing;
```
&&/font &&/clide
@@ -289,7 +332,7 @@ int r5 = (unsigned int)-b >> 1; // 2147483645
(expression) ? valueA : valueB
```
- Ако `expression` е истинта, връща се `valueA`, иначе се връща `valueB`
+ Ако `expression` е истина, връща се `valueA`, иначе се връща `valueB`
```cpp
int grade;
@@ -311,7 +354,7 @@ int r5 = (unsigned int)-b >> 1; // 2147483645
&&clide &&font27
-- Оператор `switch`: приема стойност и изпълнява случая, при който стойността съвпада с определената
+- `switch`: приема стойност и изпълнява случая, при който стойността съвпада с определената
```cpp
switch (value) {