学习
从基础到排序、递归,每种语言都按同样的顺序学习;指针、类这类只有部分语言才有的内容,在对应的语言里学习。每一课都可以随时切换语言。
基础
4 课流程控制
4 课数据
5 课函数
2 课进阶
10 课- 16字典(映射)按键查找和修改值:统计单词、判断键是否存在、按键的顺序遍历。
- 17排序从小到大、从大到小,或按自己定的规则排列。
- 18二维列表(网格)由行和列组成的网格:读取、行和与列和,只在范围内查看相邻格子。
- 19字符串处理截取、查找、替换、去除首尾空白、比较、补齐对齐。
- 20整数与浮点数为什么 0.1 + 0.2 不等于 0.3,固定小数位输出,舍入规则,以及整数溢出。
- 21递归函数调用自己:终止条件、调用栈深度、循环与记忆化。
- 22常见错误与错误信息如何阅读错误信息,以及各种语言都会犯的错误:差一位、= 与 ==、整数除法、null、下标越界。
- 23绝对值、乘方、平方根去掉符号、连乘多次、求平方后等于某数的值。
- 24计数、累计、分组遍历一次:数出符合条件的个数,带着“到目前为止”的值,按键把数据归到一起。
- 25记录列表与枚举把记录收进列表,给固定的几种取值起名字。
算法
8 课各语言特有
10 课- 34指针C++ · C带着值所在的位置(地址)走,修改调用方的变量。
- 35动态内存C++ · C在运行时按需要的大小借用内存,用完一定要归还。
- 36结构体C# · C++ · C把相关的值打包成一个整体,并弄清这个整体是被复制还是被共享。
- 37类与对象Python · JavaScript · TypeScript · Java · C# · C++把数据(字段)和行为(方法)放进同一个模板,再用它创建多个对象。
- 38接口与泛型TypeScript · Java · C#用接口约定“有这些方法”,用泛型让一个函数适用于多种类型。
- 39LINQ 与流Java · C#把筛选、转换、分组、排序连成一条管道,代替手写循环。
- 40Python 风格的代码Python推导式、带步长的切片、解包、enumerate 和 zip、in、f 字符串,以及三个陷阱。
- 41JavaScript 的相等与真假JavaScript · TypeScript== 与 ===、假值、?? 与 ||、全是 double 的数字、undefined 与 null,以及 TypeScript 能拦住的问题。
- 42C++ 引用与 STLC++& 引用和 const 引用,vector、map、set、unordered_map,接收 lambda 的算法,以及复制、失效、自动插入三个陷阱。
- 43Craykon 独有的规则Craykon用母语写的关键字、会让计算停下的“空”、严格的 ==、不会往下贯穿的选择。