首先這是一個非常復雜的問題,如果父母沒有掌握電腦,數學,英語就不要解釋。因為孩子問題很多,而且沒有常識。你要解釋清楚一個問題,就要把所有常識一並解釋。這些常識多半解釋完,你孩子就忘了,而沒什麽用。但如果你比較耐心,又有豐富的知識,才能很好的解釋這個問題。
數位容器
電腦的一切都可以想象成一個有自訂功能的容器。容器就是電腦的記憶體,而自訂功能就是各種函式等。容器和功能可以互相巢狀,組合,這就組成了各種各樣的程式。
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++。