IGCSE计算机科学辅导

IGCSE 计算机科学辅导: 指令集(instruction set)

周志高 提交于 周日, 04/27/2025 - 20:21

计算机的 CPU 其实只懂得一些最基本的指令,这些最基本的指令就是所谓的 instruction set. 不同架构的计算机会有不同的 instruction set. 我们编写的各种复杂的程序都是基于这些 instruction set. 这些指令是用二进制数字编写的,也就是 01011110001 这样的。这种代码成为“机器码” (machine code). 机器码极其难以记忆,它是亲机器的,但是是反人类的。所以早期的程序员用“汇编语言” assembly language 代替 machine code 来写代码。 汇编语言比机器码好懂一些。

IGCSE 计算机科学辅导:无损压缩和有损压缩

周志高 提交于 周日, 04/27/2025 - 11:18

在对文字信息进行压缩时,要采用无损压缩。因为如果对文本采用有损压缩,将导致意义改变。例如: I was born in 1976.  如果将这个压缩成 I was born in 197. 意义将大不一样。

在对图片、声音进行压缩时,可以采用有损压缩。因为人的肉眼和耳朵,并不是十分敏感,我们改变画质或声音采用频率,其实只要没有达到一定的程度,人的眼睛和耳朵其实是区分不了的。

无损压缩和有损压缩算法不一样。

IGCSE 计算机科学辅导:很多语言中数组的 index 是从 0 开始

周志高 提交于 周二, 04/22/2025 - 21:36

对于刚开始接触编程的学生,有个比较费解的点,就是在很多流行的编程语言中,数组的 index 是从 0 开始的,而不是从 1 开始。

可以让学生思考英国习惯上对楼层的叫法。英国人是把底楼称作 ground level, 再往上是 level 1, level 2, level 3...., 这里的 ground level 实际上就是 level 0. 也就是说,如果不考虑低下楼层,仅仅考虑地上楼层,那么,在英国楼层的 index 其实是从 0 开始的。

计算机科学里,很多高级语言里数组的 index 也是从 0 开始,雷同与英国对地上楼层的称呼。

至于计算机科学中,为什么一些高级语言中的数组的 index 要从 0 开始,这实际上是因为 数组的 index 反映的其实是数组中不同元素跟起始位置的 offset. 要这样来理解这个问题。而且 index 从 0 开始,便于计算机寻址。

IGCSE 计算机科学辅导:abstraction 究竟是指什么?

周志高 提交于 周一, 04/21/2025 - 11:26

在分析问题时,我们提倡 abstraction, 那么 abstraction 究竟是什么意思呢?

从构词法上分析,abstract,是有 ab + stract 组成,前缀 ab- 的意思是 "away from", 词根 -stract- 的意思是 "draw",所以 abstract 合起来的意思就是 "draw away from",其实就是“拖走”,拖走什么呢?拖走和要解决的问题无关的不重要的枝节,这就是 abstract 的本质涵义。

编程上的 abstraction 也就是只关注和解决问题有关的,凡是与解决问题无关的,都不用去考虑。例如,编程一个骰子程序,我们只需要关注骰子有 6 个面,各个面的值分别是 1, 2, 3, 4, 5, 6. 每投掷一次骰子,得到的数字是 这 6 个数字从的一个。其它的骰子是用什么材质做成的,骰子是什么颜色的,骰子的大小,这些我们都要忽略掉。这样忽略无关紧要的细节,只留下对解决问题有用的部分,这就是 abstraction.

IGCSE 计算机科学辅导:sorting 算法二 merge sorting

周志高 提交于 周日, 04/20/2025 - 20:23

对一组数据进行排序,我们如果不用“冒泡”算法,那么还可以采用其它的一些算法,例如 merge sorting.

1. Edexcel 教材仅仅只是讲了 merge sorting 的数学原理,没有讲计算机程序的流程图和伪代码。这部分如果有的学生追问,需补充资料。

 2. 这里其实还可以补充数学归纳法,从特殊推广到一般,怎样先用少量数据,理清楚算法的思路,然后推广到通式。

3. 每种算法需要多少 steps, 这里可以补充 steps 和 数据数量之间的函数关系。或者用几个实际的例子,让学生明白不同算法的 efficiency 是不一样的。