diff options
| Commit | 2add046075b60072a61f175895e997dc74b4e725 (patch) | |
|---|---|---|
| Author | 2023-10-12 23:21:52 +0300 | |
| Committer | 2023-10-12 23:21:52 +0300 | |
| Files | ef4dae29244236e226128073219e5648ab5715c5 | |
| syndamia.com-2add046075b60072a61f175895e997dc74b4e725.tar syndamia.com-2add046075b60072a61f175895e997dc74b4e725.tar.gz syndamia.com-2add046075b60072a61f175895e997dc74b4e725.zip | ||
| Parent | e06ed6dcead883a02316f5cebb054a6cb000bd82 (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.md | 83 |
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) { |