informatyka:podstawy-dzialania-komputera:algebra_boola

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
informatyka:podstawy-dzialania-komputera:algebra_boola [2024/04/01 22:30] kawcixinformatyka:podstawy-dzialania-komputera:algebra_boola [2024/04/07 00:34] (current) kawcix
Line 1: Line 1:
-====== Wstęp ======+====== Wstęp Algebra Boole'====== 
 + 
 +<callout type="danger" title="Strona w budowie!"></callout>
  
  
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="foo">Przykład użycia and w "programowaniu"</button>
 + 
 +<collapse id="foo" collapsed="true"><well>
 +<code cpp >
 +#include <iostream>
 +
 +using namespace std;
 +
 +string login, haslo;
 +
 +int main()
 +{
 +    cout << "Podaj login: ";
 +    cin >> login;
 +    cout << "Podaj haslo: ";
 +    cin >> haslo;
 +
 +    if ((login=="admin")&&(haslo=="szarlotka")) // && to AND, jeśli dwa warunki będą spełnione, kod się wykona
 +    {
 +        cout<<"Udalo sie zalogowac!";
 +    }
 +    else
 +    {
 +        cout<<"nie udalo sie zalogowac!";
 +    }
 +
 +    return 0;
 +}
 +
 +</code>
 +</well></collapse>
 +
 +
 +
  
 ===== Operacja OR ===== ===== Operacja OR =====
Line 29: Line 66:
  
 {{:informatyka:podstawy-dzialania-komputera:ortruthtable.png?200|}}  {{:informatyka:podstawy-dzialania-komputera:ortruthtable.png?200|}} 
 +
 +<button collapse="or_example">Przykład użycia OR w "programowaniu"</button>
 +
 +<collapse id="or_example" collapsed="true"><well>
 +<code python >
 +# Sprawdzamy, czy podana liczba jest mniejsza od 5 lub większa od 10
 +liczba = 3
 +if liczba < 5 or liczba > 10:
 +    print("Liczba jest mniejsza od 5 lub większa od 10.")
 +else:
 +    print("Liczba znajduje się między 5 a 10.")
 +
 +
 +</code>
 +</well></collapse>
 +
 +
 +
  
 ===== Operacja NOT ===== ===== Operacja NOT =====
Line 149: Line 204:
  
 ===== Przykład zastosowania praw ===== ===== Przykład zastosowania praw =====
 +
 +Możemy je wykorzystać do zmienienia formy wyrażenia, uproszczenia jej.
 +
 +przykład
 +
 +NOT( NOT( X ) AND NOT ( X OR Y ) )
 +
 +możemy użyć prawa De morgana aby zamienić NOT(X OR Y ) na  NOT(X) AND NOT(Y) więc: 
 +
 +NOT<color #ed1c24>(</color>NOT(X) AND <color #fff200>(</color>NOT(X) AND NOT(Y)<color #fff200>)</color><color #ed1c24>)</color>
 +
 +następnie możemy użyć prawa łączności mamy więc: 
 +
 +NOT <color #ed1c24>(</color> <color #fff200>(</color> NOT( X ) AND NOT( X ) <color #fff200>)</color> AND NOT(Y)<color #ed1c24>)</color>
 +
 +Następnie, nie zapisaliśmy tego "prawa", ale mamy NOT(X) AND NOT(X). Skraca się to do jednego NOT(X). Możesz sobie to rozpisać i jest to prawda. Więc: 
 +
 +NOT(NOT(X) AND NOT(Y))
 +
 +Znowu możemy użyć prawa De morgana
 +
 +NOT( NOT( X ) ) OR NOT(NOT(Y))
 +
 +Nie zapisaliśmy tego "prawa", ale not not x zawsze da nam x. NOT(NOT(Y)) również da nam y Czyli wychodzi nam: 
 +
 +X OR Y
 +
 +Ten przykład miał pokazać, że możemy różnie manipulować wyrażeniami algebry boole'a, upraszczać je itp.
 +
 +
 +
 +
 +
 +
 +===== 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  NOT I AND.
 +
 +Czy możemy "zejść jeszcze niżej ??"
 +
 +{{:informatyka:podstawy-dzialania-komputera:nandtruthtable.png?200|}}
 +
 +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...
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
    
  
  • informatyka/podstawy-dzialania-komputera/algebra_boola.1712003418.txt
  • Last modified: 2024/04/01 22:30
  • by kawcix