首先这是一个非常复杂的问题,如果父母没有掌握计算机,数学,英语就不要解释。因为孩子问题很多,而且没有常识。你要解释清楚一个问题,就要把所有常识一并解释。这些常识多半解释完,你孩子就忘了,而没什么用。但如果你比较耐心,又有丰富的知识,才能很好的解释这个问题。
数字容器
计算机的一切都可以想象成一个有自定义功能的容器。容器就是计算机的内存,而自定义功能就是各种函数等。容器和功能可以互相嵌套,组合,这就组成了各种各样的程序。
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++。