程式設計師的數學(二) 邏輯,真與假的二元世界

2021-08-17 13:19:08 字數 1700 閱讀 6638

邏輯是消除自然語言的歧義、嚴密準確的記述事物的工具。

能夠判斷對錯的陳述句,叫做命題。

命題正確時,稱該命題為「真」

命題不正確時,稱該命題為「假」

具備完整性,說明該規則無論在什麼情況下都適用;

具備排他性,說明該規則不存在矛盾之處。

if語句的條件分支,體現了「兼顧完整性和排他性的分解」。

「不是......」的命題運算稱作非,英語中用not表示,假設某命題為a,則a的邏輯非表示式寫作:

﹁ a(not a)

● 命題a為true時,命題﹁ a為false,命題﹁ ﹁ a為true

● 命題a為false時,命題﹁ a為true,命題﹁ ﹁ a為false

「a並且b」的命題稱作邏輯與,英語中用and表示,命題「a並且b」用邏輯表示式寫作:

a∧b(a and b)

● 僅當a和b都為true時,a∧b才為true

「a或者b」的命題運算稱作邏輯或,英語中用or表示,命題「a或者b」用邏輯表示式寫作:

a∨b(a or b)

● a和b至少有乙個為true時,才為true

● 當a和b都為false時,才為false

「a或者b(但不是都滿足)」的運算稱作異或,英語中稱作exclusive or,它和邏輯或相似,但是在a和b都為true或者false的情況下有所不同,它的邏輯表示式寫作:

a⊕b● 當a和b不同時,才為true

它的邏輯表示式寫作:

a=b● 當a和b都為true時,a=b為true

● 當a和b都為false時,a=b為true

(﹁ a)∨(﹁ b)=﹁ (a∧b):「非a」或者「非b」和非「a與b」是等價的

(﹁ a)∧(﹁ b)=﹁ (a∨b):「非a」並且「非b」和非「a或b」是等價的

在邏輯表示式中分別將true和false、a和﹁ a、∧和∨進行互換,就能得到該邏輯表示式的否定式。如下:

true    ←→    false

a        ←→    ﹁ a

∧        ←→    ∨

它們相互成對,這稱作邏輯表示式的對偶性。

程式經常會因為發生錯誤,導致退出、崩潰等,得不到true和false中的任意乙個值,為了能表示這種得不到的值的情況,又新引入了乙個undefined的值。即true、false、undefined三值邏輯。

它使用運算子&&,將a和b的帶條件的邏輯與表示為:a&&b

● 不包含undefined的行,a&&b與和a ∧ b相等;

● a為true時,a&&b與b相等;

● a為false時,a&&b恒為false;

● a為undefined時,a&&b恒為undefined。

在判斷a與b的真假值時,應根據條件a看是否需要看b,因此稱為帶條件的邏輯與。

它使用運算子||,將a和b的帶條件的邏輯或表示為:a||b

● 不包含undefined時,a||b與a ∨ 相等;

● a為true時,a||b恒為true;

● a為false時,a||b與b相等;

● a為undefined時,a||b恒為undefined。

它的否定式寫作:!a

● 不包含undefined時,!a和﹁ a相等;

● 若a為undefined時,!a恒為undefined。

(!a)||(!b)=!(a&&b)

(!a)&&(!b)=!(a||b)

程式設計師的數學 《程式設計師的數學》第二章 邏輯

邏輯表示式在程式設計師眼裡是再常見不過的了。除了正常的業務邏輯處理之外,還有各種異常需要我們去捕獲。當然,能夠盡量做到考慮所有可能情況是自然要滿足的。也就應對了本書邏輯這一章節著重提出的 兼顧完整性和排他性 當然,要做到這些,有各種數學表達方式和影象法來輔助我們完善程式的健壯性。那麼下面針對具體的圖...

程式設計師面試題精選(27) 二元樹的深度

題目 輸入一棵二元樹的根結點,求該樹的深度。從根結點到葉結點依次經過的結點 含根 葉結點 形成樹的一條路徑,最長路徑的長度為樹的深度。例如 輸入二元樹 10 614 412 16 輸出該樹的深度3。二元樹的結點定義如下 struct sbinarytreenode a node of the bin...

程式設計師100題 15 求二元查詢樹的映象

題目 輸入一顆二元查詢樹,將該樹轉換為它的映象,即在轉換後的二元查詢樹中,左子樹的結點都大於右子樹的結點。用遞迴和迴圈兩種方法完成樹的映象轉換。例如輸入 8 610 57911 輸出 8 10 6 119 75 定義二元查詢樹的結點為 struct bstreenode a node in the ...