當前位置: 華文星空 > 親子

如何對一個孩子解釋「int a = 1」?

2020-03-21親子

首先這是一個非常復雜的問題,如果父母沒有掌握電腦,數學,英語就不要解釋。因為孩子問題很多,而且沒有常識。你要解釋清楚一個問題,就要把所有常識一並解釋。這些常識多半解釋完,你孩子就忘了,而沒什麽用。但如果你比較耐心,又有豐富的知識,才能很好的解釋這個問題。

數位容器

電腦的一切都可以想象成一個有自訂功能的容器。容器就是電腦的記憶體,而自訂功能就是各種函式等。容器和功能可以互相巢狀,組合,這就組成了各種各樣的程式。

int 整數是容器,float 浮點數是容器,object物件也是容器, class是自訂容器的制作手冊。根據容器的制作手冊,你就可以制作各種各樣的容器,容器本身也會佩戴你想要的功能。

解釋電腦語言就是講故事,下面是故事的幾個層次:

0. 微觀物理:用矽做主體,附上多一個電子的磷,和少一個電子的硼來實作一個材料的‘半導體’性質

1. 宏觀物理:電流,電壓,

2. 二元邏輯:0 和 1

3. 編譯邏輯:正規表式,語法分析,解析樹

4. 編程邏輯:浮點數,整數,物件

5. 抽象邏輯(產品經理邏輯):容器和功能

每一個故事都是對的,但在處理不同的事情的時候需要用不同的故事去描述事情。

為了方便,我就直接用普通人能理解的的第5層來解釋。即使到了指標,記憶體占用和釋放,fork,socket還是可以用容器解釋。只不過這個容器會超越一般人對容器的理解。

如題主給的這個程式碼

int a ← 1

int 是容器的型別,你的杯子是什麽型號的

a 是容器的名字,你這個杯子的的標簽是什麽

←是「把...放入容器"這個動作

1 是具體放入容器的東西,杯子裏放的東西

然後解釋為什麽用「=」

因為同為學術界,思維固化。亂用符號的現象比比皆是。只要自己知道符號的意思即可,別人看不懂無所謂。所以就用等於號代替了賦值。這個現象毫無疑問是錯誤的,只不過人們太懶所以不改了。=其實應該用← 代替。

然後認識‘a=b’的其他多種意思:

表示數值等價: a的數值和b的數值是相等的

表示行為: 構造一個a使其等於b的值

表示虛擬關系 :假設a=b,a也可能不等於b,但是我先假設a=b,看看發生什麽

表示判斷性問題 :問到底a等不等於b, 如C++中的‘ == ’就是這個作用,這裏的等於號是一個功能,應該寫成: 是否相等(a,b) 但是為了簡便人類使用了 == 這個符號

表示抽象等價: a和b不是一個東西,數值也不一樣,但是他們具有相同的性質。

完全一樣: a和b就是一種東西,a和b是一個東西的兩種叫法

等於號的意思還有很多,數學書和其他科學中經常會混用各種等於號的意思。

而在C++中,這個等於號的意思不是等於而是賦值。

解釋一下有評論說是初始化不是賦值的問題

int a = 1; 是一個縮寫,可以拆成兩行

int a; 和 a=1; 其中

int a 是初始化

a=1 是賦值

int是用來初始化變量的(一般預設是0),而=號是用來賦值的。當然編譯器可以進行最佳化,初始化和賦值一步到位。不過這就是編譯器的範疇了。

孩子應該學完初等代數,微積分,線代,統計之後在來學這個。因為C++在符號的使用上非常不嚴謹,不科學,亂用各種符號,給寫程式碼的人造成各種不便。

如果解釋得不好,或者孩子沒有理解,很可能會在數學作業上寫C++,這樣會給數學學習帶來不必要的麻煩。

最後 int a = 1 的後面不應該加 而是加 ; 註意不是 ;

然後就;和;的問題你又要解釋半天。然後你突發奇想說我來個macro,可以解決這個問題,你家孩子應該就禿了。

小孩子學編程就學python就可以了。C++用來圖形編程,C用來寫系統,如果不是用來處理這些對計算需求極高的工作,沒必要學C/C++。