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 22:52] – 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... | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||