天天看點

帶你讀《Blockly創意趣味程式設計》之二:Blockly程式設計基礎與順序結構02

點選檢視第一章 點選檢視第三章

02

Blockly程式設計基礎與順序結構

● 學習目标

了解資料的含義、表示形式。

了解Blockly中的資料類型。

了解變量的定義,掌握變量的建立和初始化。

了解運算符及其優先級。

掌握順序結構。

● 知識圖譜

帶你讀《Blockly創意趣味程式設計》之二:Blockly程式設計基礎與順序結構02

在本章中,我們将學習Blockly程式設計的基礎知識,包括資料的類型、變量的建立以及常用的運算符,如算術運算符、關系運算符、邏輯運算符和指派運算符。此外,我們還将了解什麼是順序結構,并學習幾種順序執行的語句,如指派語句、輸入與輸出語句。順序結構是最常用的程式結構,對我們今後學習其他程式設計語言至關重要。

2.1 資料類型

2.1.1 資料的含義

在計算機的世界裡,程式的基本任務就是處理資料,無論是數值、文字、圖像,還是聲音、視訊等,都必須轉換成數字資訊才能在計算機中處理,因為計算機中隻能存儲數字,甚至連計算機程式都是由數字組成的。如果要處理圖像資訊,可以把一幅圖像看作由m行n列的點組成的,每一個點具有一種顔色,每一種顔色可以使用3個資料(R、G、B)來表示:R表示紅色的比例、G表示綠色的比例、B表示藍色的比例,這樣就可以用m×n×3個資料表示一幅圖像了。如果需要處理文字資訊,例如英文,那麼需要用數字來表示英文中出現的每個字母或标點符号,正如在ASCII(美國标準資訊交換代碼)編碼标準中,用65表示字母A,用66表示字母B等,隻要把用到的每個符号都進行編碼(數字化),就可以在計算機中處理文字資訊了。那麼在Blockly中可以使用哪些種類的資料?每種類型的資料的表示形式是怎樣的?下面将詳細讨論這些問題。

2.1.2 資料的表示形式

在計算機系統中,常見的資料表示形式有二進制、八進制、十進制和十六進制。進制也就是進位計數制,是人為定義的一種計數方法,對于進制,要明确兩個基本概念:基數和運算規則。基數也稱為底數,表示組成一種進制的基本數字的個數,例如二進制的基數為2,采用0和1這2個數字,八進制的基數為8,采用0~7這8個數字;運算規則規定了如何進位,例如二進制的運算規則為“逢二進一,借一當二”,十進制的運算規則為“逢十進一,借一當十”。

1.二進制

衆所周知,計算機中采用二進制代碼表示字母、數字字元以及各種各樣的符号、漢字等。在處理資訊的過程中,可将若幹位的二進制代碼組合起來表示各種資訊。但由于二進制數不直覺,人們在計算機上實際操作時,輸入、輸出數值時多采用十進制,而具體轉換成二進制編碼的工作則由計算機軟體系統自動完成。字母和各種字元在計算機中的傳輸普遍采用ASCII碼,它用7位二進制數來表示字母和各種常用字元。對于漢字資訊的表示則比較複雜,漢字有幾萬個,常用的漢字也有7000多個,為了統一,我國制定了漢字編碼标準,規定了一、二級漢字共6763個,用兩個位元組來表示一個漢字。

2.十進制

十進制是我們最熟悉的數值表示形式,其書寫規則是由正号或負号開頭,後接一個自然數,如果是正數,那麼正号可以省略。例如,-213、0、415、76、+83都是合法的十進制表示。在Blockly中,如不特殊定義,一般預設數字采用十進制表示。

3.八進制

一些程式設計語言中,常常以數字0作為開頭來表明該數字采用八進制表示。用八進制表示整數的書寫規則是:以數字0開頭,後接一個八進制形式的數,如果是負數,則以負号開頭。例如,0123、-087、00、+0327等都是合法的八進制形式。

4.十六進制

十六進制的書寫規則是以0x開頭,後接一個十六進制數,例如,0xFF03、0x123、0xAC7等都是合法的十六進制形式,而x37、287都是非法的十六進制形式。

2.1.3 Blockly中的資料類型

程式中所有資料都有特定類型,資料的表示方式、取值範圍以及對資料可以使用的操作都由資料所屬的類型決定。類型可以幫助編譯程式生成高效的目标代碼,編譯程式在生成目标代碼時,可按需配置設定存儲空間并明确如何引用這個資料。确定一個資料屬于某個特定的類型後,可對該資料進行哪些運算也就确定了。例如,對整數可以做四則運算;對字元串則可以進行比較、連接配接、判斷子串等操作,但不能做四則運算。下面一起來了解一下Blockly中的資料類型。

1.數字

Blockly提供了數字輸入子產品?,它可以存儲一定長度的數字,預設值為0。在一些計算公式中也提供了的數字輸入子產品,如圖2-1所示。

帶你讀《Blockly創意趣味程式設計》之二:Blockly程式設計基礎與順序結構02

各資料輸入子產品隻區分數字、字元類型,也就是說在允許輸入數字的子產品中,可以輸入任何數字,但不允許輸入字元。在程式執行過程中,程式會對輸入數字類型的合法性進行檢查,如圖2-2和圖2-3所示。

帶你讀《Blockly創意趣味程式設計》之二:Blockly程式設計基礎與順序結構02

2.字元

Blockly中的字元輸入子產品為,其中輸入的應是字元的ASCII編碼值。由于字元資料存儲的就是一個字元的編碼數值,是以也可将字元資料當作一個整數。在Blockly中的基本表示形式是用雙引号(“”)引用,比如“A”“Q”“a”“b”“#”“-”

“。”等。當雙引号中是一個數字時,依然表示該數字,例如“65”和65的意義相同,但是同一個字母的大寫和小寫對應的ASCII碼不同,是以為不同的字元,例如“A”“a”為不同字母。

在Blockly的字元輸入子產品中,允許輸入任何形式的字元和數字,隻要不超出特定的長度,那麼都是合法的,隻有在程式執行時才會檢查輸入是否正确。

3.字元串

在Blockly中字元串的表示和單個字元的表示形式是一樣的,輸入子產品也是?。如圖2-4所示即為Blockly提供的字元串輸入子產品。

帶你讀《Blockly創意趣味程式設計》之二:Blockly程式設計基礎與順序結構02

2.1.4 資料的使用

前面講過,在Blockly的資料和字元定義過程中,程式獲得了一定的存儲空間,Blockly不計較輸入資料或字元的類型和長度,程式員不需要考慮非法輸入帶來的麻煩,這給程式員帶來了極大的便利。例如,程式員可以輸入不同類型的資料,如圖2-5~圖2-7所示。

帶你讀《Blockly創意趣味程式設計》之二:Blockly程式設計基礎與順序結構02

但是,在程式運作過程中,如果資料的長度超過程式可表示的範圍或資料輸入錯誤,那麼運算結果将會出現差錯。

圖2-8中展示了一次乘法運算,輸入資料為1111111111111111200和2,正确的輸出結果應為2222222222222222400,但實際的輸出結果為2222222222222222300。這是由于輸入資料過長,16位後的資料将不再進行計算,并且輸入資料超過16位後,運算結果将出現差錯。

帶你讀《Blockly創意趣味程式設計》之二:Blockly程式設計基礎與順序結構02

圖2-9中使用了循環語句,在該循環語句的重複次數輸入子產品中,預設輸入的資料為正整數;如果輸入負數,那麼程式預設為0;如果輸入小數,則預設在其整數部分加1,如圖2-10和圖2-11所示。

帶你讀《Blockly創意趣味程式設計》之二:Blockly程式設計基礎與順序結構02
帶你讀《Blockly創意趣味程式設計》之二:Blockly程式設計基礎與順序結構02

2.2 變量

2.1節中介紹了數字和字元,當給定一個值後,這個值在程式中将是确定的、不能改變的量,我們稱之為常量,而與之對應的就是變量。顧名思義,變量就是在程式中可以根據需要改變的量。

2.2.1 變量的建立

初次打開Blockly,可以在“變量”子產品中建立變量,如圖2-12所示。

帶你讀《Blockly創意趣味程式設計》之二:Blockly程式設計基礎與順序結構02

單擊“建立變量”按鈕後,會彈出定義變量名稱的對話框,如圖2-13所示,變量的命名方式不受限于數字或字元,但是為了使用友善,應盡量選用簡單明了的字元,避免與程式中的其他名稱重複,并且Blockly提供的變量定義不區分類型,隻是在記憶體中配置設定一定的存儲空間。

帶你讀《Blockly創意趣味程式設計》之二:Blockly程式設計基礎與順序結構02

2.2.2 變量的初始化

初始化在計算機程式設計中是指第一次為新建立的變量指派,如何初始化則取決于所用的程式設計語言以及所要初始化的對象的存儲類型等。在彙編語言中,變量的初值即初始化後的變量的值,會占用一定空間,是以不必要的初始化會造成磁盤空間的浪費,但初始化變量在一定程度上可以降低出現漏洞的可能性。是以,是否對變量進行初始化操作需要依情況而定。Blockly提供的變量初始化子產品為

帶你讀《Blockly創意趣味程式設計》之二:Blockly程式設計基礎與順序結構02

,可以在規定的長度内輸入任意數字、漢字、字母或符号。

2.3 運算符及其優先級

運算符是指用來表示在資料上執行某些特定操作的符号,而參與運算的資料稱為操作數。根據參與運算的操作數的個數是一個、兩個或三個,運算符分為一進制運算符、二進制運算符和三元運算符。使用運算符把常量、變量和函數等運算成分連接配接起來,組合成的有意義的式子稱作表達式。單個常量、變量和函數也都可以看作一個表達式。表達式經過計算後會得到一個确定的值,這個值就是表達式的值。每個表達式都具有唯一确定的值和唯一确定的類型。

Blockly中涵蓋了日常使用的所有運算符,此處主要介紹常用的幾類運算符:算術運算符、關系運算符、邏輯運算符和指派運算符。

1.算術運算符

算術運算有6種運算符,如表2-1所示。

帶你讀《Blockly創意趣味程式設計》之二:Blockly程式設計基礎與順序結構02

算術運算表達式的值為其運算結果。如3+2、5-6、4*8,值分别為5、-1、32。算術運算符的表達式格式為“<操作數>運算符<操作數>”。Blockly中給出的算術運算符子產品如圖2-14所示。

帶你讀《Blockly創意趣味程式設計》之二:Blockly程式設計基礎與順序結構02

2.關系運算符

關系運算是邏輯運算中比較簡單的一種,實際上就是比較運算,将兩個值進行比較,進而判斷比較的結果是否符合給出的條件,比如關系表達式a>5,如果a為6,那麼表達式成立,結果為真,如果a為-1,那麼表達式不成立,結果為假。關系運算符共有6種,如表2-2所示。

帶你讀《Blockly創意趣味程式設計》之二:Blockly程式設計基礎與順序結構02

在這6種關系運算符中,>、<、≥、≤的優先級相同,=、≠的優先級相同,且>、<、≥、≤的優先級順序高于=、≠的優先級。

關系運算表達式的值隻有兩個:1和0,分别表示真和假。例如,4<2、2>1、1=2,其值分别為0、1、0。關系運算符的表達式格式為“<操作數>運算符<操作數>”。Blockly中給出的子產品如圖2-15所示。

帶你讀《Blockly創意趣味程式設計》之二:Blockly程式設計基礎與順序結構02

3.邏輯運算符

邏輯運算符有3種,如表2-3所示。

帶你讀《Blockly創意趣味程式設計》之二:Blockly程式設計基礎與順序結構02

3種運算符在Blockly中分别表示為與、或、非,其中,“!”的優先級最高,“&&”和“||”優先級相等,且低于非邏輯。

邏輯運算表達式的值隻有兩個:1和0(真或假)。例如(5<10)||(5>20)、!(3>2),其值分别為1、0。邏輯運算符的表達式格式為“<操作數>運算符<操作數>”和“運算符<操作數>”兩種形式。Blockly中給出的子產品如圖2-16所示。

帶你讀《Blockly創意趣味程式設計》之二:Blockly程式設計基礎與順序結構02

小提示

如果學完了上文中關于邏輯運算符的介紹,但還是不了解其中的含義,沒關系,可以對照表2-4來了解Blockly中的邏輯運算符。

帶你讀《Blockly創意趣味程式設計》之二:Blockly程式設計基礎與順序結構02

4.指派運算符

指派運算的值即為所賦的值。例如a=3、b=6,表示a和b值分别為3、6。Blockly中指派運算與變量初始化的表達式相同。建立變量後使用變量指派子產品可以對變量進行指派。例如建立了變量k,使用圖2-17所示的變量指派子產品把10賦給k。

帶你讀《Blockly創意趣味程式設計》之二:Blockly程式設計基礎與順序結構02

如果你以前接觸過程式設計,看到這裡你也許會疑惑,為什麼判斷兩個操作數是否相等的表達式與指派運算的表達式一樣?計算機又是如何區分兩者的呢?

細心的同學可能已經發現了,Blockly可以把我們搭建好的子產品轉換成代碼,而在代碼當中,判斷兩個操作數是否相等與指派是有差別的。“=”表示指派語句,比如a = 5,是把5指派給變量a;而“==”是邏輯判斷,比如a == 5,是表示變量a的值是否和5相等,如果相等就傳回真,否則傳回假。Blockly中把邏輯判斷“==”寫成了“=”,是為了友善大家去了解,但實際上我們需要知道“=”和“==”是不一樣的。

Blockly與其他程式設計語言不同,不需要過多考慮運算符的優先級問題,因為Blockly将不同的運算符內建在不同的子產品中,在使用時以子產品嵌套的形式出現,是以其運算順序隻能是由内到外。

2.4 順序結構

順序結構是最簡單的程式結構,也是最常用的程式結構,隻要按照解決問題的順序寫出相應的語句即可,它的執行順序是自上而下依次執行的,流程圖如圖2-18所示。本章将學習幾種順序執行的語句,在這些語句的執行過程中不會發生流程控制的轉移,比如指派語句、輸入輸出語句。

帶你讀《Blockly創意趣味程式設計》之二:Blockly程式設計基礎與順序結構02

2.4.1 指派

在Blockly中,指派語句由語句塊

帶你讀《Blockly創意趣味程式設計》之二:Blockly程式設計基礎與順序結構02

構成,其中i指一個變量,也可以用其他字母代替,該語句塊後面接的是要賦給i的值。同樣地,這個指派表達式也可以包括在其他表達式中,例如,“如果”後面接的是一個條件,其作用是當i大于0時,将一個值賦給i,如圖2-19所示。

帶你讀《Blockly創意趣味程式設計》之二:Blockly程式設計基礎與順序結構02

2.4.2 輸入與輸出

當計算機用于與外界互動時才是最有趣的,所謂的輸入與輸出是以計算機主機為主體而言的。輸入就是将資料從輸入裝置(如鍵盤、磁盤、CD光牒、掃描器等)傳入計算機;輸出就是将資料從計算機發送到外部輸出裝置(如顯示屏、列印機、磁盤等),輸入與輸出有時并稱為I/O。目前I/O的種類有很多,包括人機界面、網絡接口、儲存設備接口和自動機器接口。那麼在Blockly中如何進行輸入與輸出呢?

1.Blockly的輸出子產品

Blockly中的輸出子產品為

帶你讀《Blockly創意趣味程式設計》之二:Blockly程式設計基礎與順序結構02

。輸出子產品後面可以接各種類型的子產品進而輸出不同的資料。

如果輸出子產品後接運算表達式,例如1+1,那麼運作後輸出的答案就為1+1的結果2,如圖2-20所示。

如果輸出子產品後接字元串,例如“Hello World!”,那麼最終将會在螢幕上輸出這一段文本,如圖2-21所示。

帶你讀《Blockly創意趣味程式設計》之二:Blockly程式設計基礎與順序結構02

輸出子產品後也可拼接多個子產品的組合,之前我們輸出了一段文本,在這一段文本的前面加上另一個子產品将會得到另外一種效果,如圖2-22所示,輸出子產品後還接了計算字元串長度的子產品,最終輸出的結果為這段文本的長度。

帶你讀《Blockly創意趣味程式設計》之二:Blockly程式設計基礎與順序結構02

使用不同的浏覽器打開離線版的Blockly,部分子產品的表述可能會有不同,例如使用360浏覽器和火狐浏覽器打開Blockly的離線版,輸出子產品顯示為之前介紹的效果,而使用IE浏覽器打開,則為

帶你讀《Blockly創意趣味程式設計》之二:Blockly程式設計基礎與順序結構02

效果。

2.Blockly的輸入子產品

在Blockly中,輸入子產品如圖2-23所示,在輸入子產品中既可以輸入文本,也可以輸入數字,通過子產品後面的下拉按鈕可以進行選擇。

帶你讀《Blockly創意趣味程式設計》之二:Blockly程式設計基礎與順序結構02

當運作這個子產品時,會彈出一個對話框,如圖2-24所示,在其中輸入需要的資料,單擊“确定”按鈕後,輸入的資料将會進入已設定的變量中,圖2-24所示為用于輸入資料的界面。

帶你讀《Blockly創意趣味程式設計》之二:Blockly程式設計基礎與順序結構02

通過上面簡單的介紹,大家對輸入的了解可能還不夠深刻,下面我們舉一個具體的例子。

首先,設定一個變量a,然後将上面的輸入語句塊連接配接在設定變量語句塊的後面并運作,在出現的對話框中輸入所需資料,單擊“确定”按鈕,資料就會被指派給a了,如果想确認a的值是否為我們所輸入的資料,可以在這段搭建好的子產品下面加上輸出資料塊,将a的資料輸出到螢幕上,這樣就能确認a的值了,如圖2-25所示。

帶你讀《Blockly創意趣味程式設計》之二:Blockly程式設計基礎與順序結構02

2.4.3 順序結構程式設計舉例

現在,我們對順序結構、指派語句以及輸入輸出已經有了初步了解,接下來就讓我們一起來學習兩個順序結構的例子來鞏固一下學到的基礎知識吧。

【例2-1】 從鍵盤輸入一個大寫字母,要求将這個大寫字母改用小寫字母輸出。

【解答】 看到這個題目,首先想到的是什麼呢?我們用哪個子產品來實作這一功能?在第1章介紹的文本子產品中就有一個語句塊是用來轉換大小寫的:

帶你讀《Blockly創意趣味程式設計》之二:Blockly程式設計基礎與順序結構02

這個語句塊使用起來相當簡單,隻需要将要轉換的文本連接配接在此語句塊的後面即可,此語句塊同樣能根據需求的不同産生3種不同的效果,可以根據需要選擇。

既然已經找到了解決這個問題所需要的核心語句塊,那麼後面的問題就簡單了,不難看出這個題目同時用到了輸入和輸出,是以隻需要設定一個變量用來存放所輸入的資料,然後将輸入的資料轉化成小寫并輸出即可。所組成的子產品及運作結果如圖2-26所示。

帶你讀《Blockly創意趣味程式設計》之二:Blockly程式設計基礎與順序結構02

練一練

從鍵盤輸入一個小寫字母,要求改用大寫字母輸出。

【例2-2】 輸入一個兩位數,如果這兩位上的數相乘大于二者相加,則輸出“大”。

【解答】 第一次見到這個題目時,你可能會感到有點手足無措,但逐漸分析一下就會發現這個題目并不難。在解決此問題前,首先要明确如何得到這個兩位數的個位數和十位數。如果大家曾經接觸過其他程式設計語言,就會知道兩位數除以10得到的商就是十位上的數字,而得到的餘數就是個位上的數字,弄清楚這個問題後,這個題目是不是就簡單了許多呢?具體資料塊如圖2-27所示。

帶你讀《Blockly創意趣味程式設計》之二:Blockly程式設計基礎與順序結構02

在這個拼接好的子產品裡,首先将輸入的兩位數存儲到ab這個變量中,然後将計算得出的個位數和十位數分别指派給b和a,再利用前面提到的邏輯子產品中的if語句塊判斷大小,最後輸出。運作過程與結果如圖2-28所示。

輸入一個三位數,如果這個三位數百位上的數與十位上的數相加大于十位上的數與個位上的數相加,那麼輸出“大”,如果小于則輸出“小”,如果相等則輸出“等于”。

帶你讀《Blockly創意趣味程式設計》之二:Blockly程式設計基礎與順序結構02

通過本節的講解,相信大家對Blockly語言的順序結構程式設計有了大概的了解,也對輸入輸出有了清晰的認識,語言的順序結構在大家今後的語言學習中起着相當重要的作用,希望能引起重視。

2.5 小試牛刀—遊戲:電影

下面通過一個遊戲來鞏固大家對本章知識的掌握。遊戲位址如下:

http://cooc-china.github.io/pages/blockly-games/zh-hans/movie.html?lang=zh-hans

遊戲規則:

① 遊戲開始前,需要觀看示例。遊戲任務是編寫代碼,實作與示例相同的視覺效果。

② 單擊按鈕後,執行玩家搭建好的代碼塊,當達到與示例相同的視覺效果後,遊戲結束,順利通關。

通關詳解:

第1關:調節參數,畫出與示例形狀、大小相同的圖形,如圖2-29所示。

帶你讀《Blockly創意趣味程式設計》之二:Blockly程式設計基礎與順序結構02

第2關:繪制半徑為10的圓,圓心的初始位置在x=0,y=50處,如圖2-30所示,使其移動到x=100,y=50的位置。

帶你讀《Blockly創意趣味程式設計》之二:Blockly程式設計基礎與順序結構02

第3關:嘗試與第2關相反的移動路徑,使圓心從x=100,y=50的位置移動至x=0,y=50處,如圖2-31所示。

帶你讀《Blockly創意趣味程式設計》之二:Blockly程式設計基礎與順序結構02

第4關:按照示例在如圖2-32所示位置畫出4個圓,分别按照各自箭頭所指的方向移動,最終位置為對面圓的起始位置,例如,右邊圓的起始位置是左邊圓的最終位置。

帶你讀《Blockly創意趣味程式設計》之二:Blockly程式設計基礎與順序結構02

第5關:按照示例用3個圓拼出米老鼠的頭部形狀,按照箭頭所指方向向上移動,如圖2-33所示。

帶你讀《Blockly創意趣味程式設計》之二:Blockly程式設計基礎與順序結構02

第6關:在起始時刻一條線與x軸重疊,另一條線在界面的對稱軸上,仔細觀察兩條線的運動軌迹,拼接代碼塊,達到與示例相同的效果,如圖2-34所示。

帶你讀《Blockly創意趣味程式設計》之二:Blockly程式設計基礎與順序結構02

第7關:觀看示例,使圓按照示例中的抛物線軌迹移動,如圖2-35所示。可以先計算出抛物線方程,這樣更容易拼接代碼塊。

帶你讀《Blockly創意趣味程式設計》之二:Blockly程式設計基礎與順序結構02

第8關:使右上角藍色的圓(初始時界面中顯示為扇形)和左下角紅色的圓(初始時界面中顯示為扇形)按照箭頭所指方向移動,完全重合後變成綠色的圓,如圖2-36所示。

帶你讀《Blockly創意趣味程式設計》之二:Blockly程式設計基礎與順序結構02

第9關:觀看示例,使圓按照圖中給出的軌迹移動,如圖2-37所示。

帶你讀《Blockly創意趣味程式設計》之二:Blockly程式設計基礎與順序結構02

第10關:自由發揮,利用子產品畫出你想要的圖形,如圖2-38所示。

帶你讀《Blockly創意趣味程式設計》之二:Blockly程式設計基礎與順序結構02

2.6本章練習

1.對于計算機而言,無論是數字、字母、符号,在計算機中都是以0、1的形式存儲和計算,但是它們在Blockly中有不同的運算規則,為什麼?

2.分别求出a=3、b=a+3、b>a這3個表達式的值和變量a或b的值,認真思考表達式的值和變量的值有什麼差別?

3.對兩個整數變量的值進行互換。

4.如果是做單項選擇題,請根據給定的選項,輸出對應的結果。例如總共有4個字元A、B、C、D。如果給出字元A,則輸出“你選擇了A”;如果給出字元B,則輸出“你選擇了B”;依次類推。

5.根據輸入的值,判斷是星期幾。例如,輸入1,則輸出“星期一”。

2.7課外拓展

二進制的由來與應用

二進制的提出者是戈特弗裡德·威廉·萊布尼茨(Gottfried Wilhelm Leibniz,1646—1716),他的手迹“1與0,一切數字的神奇淵源”現在儲存在德國著名的郭塔王宮圖書館。

萊布尼茨被譽為17世紀的亞裡士多德,是曆史上少見的通才,在數學史和哲學史上都占有重要地位。在數學上,他不僅獨立發現了微積分,而且他所發明的符号更被大衆所接受和使用;在哲學上,萊布尼茨的樂觀主義廣為流傳,他被認為是17世紀三位最偉大的理性主義哲學家之一。除此之外,萊布尼茨在曆史學、語言學、神學、政治學、哲學、政治學諸多方向都留下了著作。

1679年,萊布尼茨發明了一種計算法,用兩位數(即1和0)代替原來的十位數。法國漢學大師若阿基姆·布韋(Joachim Bouvet,漢名白晉,1662—1732)曾經向萊布尼茨介紹了《周易》和八卦,八卦是表示事物自身變化的陰陽系統,用“—”代表陽,用“- -”代表陰,用這兩種符号,按照大自然的陰陽變化平行組合,組成8種不同形式。有人說萊布尼茨發現二進制是受到了中國文化的影響,也有學者認為萊布尼茨先發現了二進制,後來才看到傳教士帶回的八卦系統,并發現八卦可以用他的二進制來解釋,認為“陰”與“陽”基本上就是他的二進制的中國版。

現在,我們使用的計算機都是采用二進制代碼來表示數字、圖檔、文本、視訊等資料,但為什麼一定要使用二進制代碼來表示資料呢?原因很簡單:

1)計算機是由邏輯電路組成,邏輯電路通常隻有接通與斷開兩種狀态,這兩種狀态正好可以用1和0表示;邏輯代數是邏輯運算的理論依據,二進制隻有兩個數位,正好與邏輯代數中的“真”和“假”相吻合。

2)二進制運算規則簡單,有利于簡化計算機内部結構,提高運算速度,而且二進制與十進制等其他進制數之間易于互相轉換。

3)用二進制表示資料具有可靠性高、抗幹擾能力強的優點。

繼續閱讀