Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
| informatyka:podstawy-dzialania-komputera:algebra_boola [2024/04/01 23:13] – kawcix | informatyka:podstawy-dzialania-komputera:algebra_boola [2024/04/07 00:34] (current) – kawcix | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== Wstęp | + | ====== |
| + | |||
| + | <callout type=" | ||
| Line 22: | Line 24: | ||
| Ta tabelka to tablica prawdy. A i B reprezentują zera i jedynki. | Ta tabelka to tablica prawdy. A i B reprezentują zera i jedynki. | ||
| W tabelkach prawdy mamy wszystkie możliwości. | W tabelkach prawdy mamy wszystkie możliwości. | ||
| + | |||
| + | <button collapse=" | ||
| + | |||
| + | < | ||
| + | <code cpp > | ||
| + | #include < | ||
| + | |||
| + | using namespace std; | ||
| + | |||
| + | string login, haslo; | ||
| + | |||
| + | int main() | ||
| + | { | ||
| + | cout << "Podaj login: "; | ||
| + | cin >> login; | ||
| + | cout << "Podaj haslo: "; | ||
| + | cin >> haslo; | ||
| + | |||
| + | if ((login==" | ||
| + | { | ||
| + | cout<<" | ||
| + | } | ||
| + | else | ||
| + | { | ||
| + | cout<<" | ||
| + | } | ||
| + | |||
| + | return 0; | ||
| + | } | ||
| + | |||
| + | </ | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| ===== Operacja OR ===== | ===== Operacja OR ===== | ||
| Line 29: | Line 66: | ||
| {{: | {{: | ||
| + | |||
| + | <button collapse=" | ||
| + | |||
| + | < | ||
| + | <code python > | ||
| + | # Sprawdzamy, czy podana liczba jest mniejsza od 5 lub większa od 10 | ||
| + | liczba = 3 | ||
| + | if liczba < 5 or liczba > 10: | ||
| + | print(" | ||
| + | else: | ||
| + | print(" | ||
| + | |||
| + | |||
| + | </ | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| ===== Operacja NOT ===== | ===== Operacja NOT ===== | ||
| Line 177: | Line 232: | ||
| Ten przykład miał pokazać, że możemy różnie manipulować wyrażeniami algebry boole' | Ten przykład miał pokazać, że możemy różnie manipulować wyrażeniami algebry boole' | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ===== Teoria - nie potrzebujemy operacji OR aby stworzyć wszystkie możliwe wyrażenia ===== | ||
| + | |||
| + | bardziej ciekawostka. | ||
| + | |||
| + | Każda funkcja boola może być stworzona tylko za pomocą AND i NOT | ||
| + | |||
| + | przypomina nam się prawo de morgana | ||
| + | |||
| + | (X OR Y) = NOT(NOT(X) AND NOT(Y)) | ||
| + | |||
| + | wyrażenie OR może być zaprezentowane przez operacje | ||
| + | |||
| + | Czy możemy " | ||
| + | |||
| + | {{: | ||
| + | |||
| + | Oto NAND, czyli negacja AND | ||
| + | |||
| + | Dzięki samemu NAND, jesteśmy w stanie skonstruować wszystkie funkcję boola... jak ? | ||
| + | |||
| + | |||
| + | (X NAND Y) = NOT ( X AND Y ) | ||
| + | |||
| + | wiemy że nand to negacja AND | ||
| + | |||
| + | |||
| + | Skoro dzięki, AND i NOT możemy zbudować każde wyrażenie boola, | ||
| + | musimy wymyśleć jak zrobić NOT używając samego NAND | ||
| + | |||
| + | NOT (X) = (X NAND X) | ||
| + | |||
| + | prostę ? możesz spojrzeć na tablicę prawdy dla NAND i udowodnić sobie, że tak jest. | ||
| + | |||
| + | A jak z nand zrobić AND ? | ||
| + | |||
| + | (x AND y) = NOT(X NAND Y) | ||
| + | |||
| + | Skoro wiemy jak zrobić not z nand wychodzi nam: | ||
| + | |||
| + | (x and y) = (x nand x)(x NAND Y) | ||
| + | |||
| + | Jeśli chcielibyśmy zbudować komputer tylko z funkcji nand. Jest to możliwe... | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||