伪代码与流程图的相关知识,内容包括抽象概念、逻辑、数据结构。
一、抽象概念
编程其实语法并不难,难的是抽象概念,有时候我们每句都懂,但是加在一起不懂。
编程语言也能抽象,各类编程语言其实都没有很大区别,JS、Python、Java、PHP 其实很多概念是类似的,它们都有这些:
声明
if...else...
函数
对象
复制代码
这意味着没有必要过分关注语言的细节,应该首先理解这些语言的不变之处,然后以不变应万变。
二、逻辑
所有编程,都在使用逻辑
1. 什么是逻辑
// 三段论逻辑(举例 1)
命题一:JS 有 7 种数据类型:stirng、number、bool、symbol、undefined、null、object
命题二:JS 的函数不属于前六种类型
推理:JS 的函数属于 object 类型
复制代码
// 三段论逻辑(举例 2)
命题一:JS 中所有函数都是由 Function 构造的
命题二:Function、Object、Array 是函数
推论:Function、Object、Array 是由 Function 构造的
复制代码
2. 逻辑 VS 直觉
直觉的好处: 直觉能让你快速学会一些东西,比如数字、字符串、数组、对象都可以靠直觉学会
直觉的坏处: 直觉却又能阻止你学会另一些东西,这时你就只能依靠逻辑说服自己,比如虽然不知道 Function 是如何构造 Function 的,但是逻辑告诉我们,确实如此
3. 用伪代码表示逻辑
例子 1 - 输出两个数中较大的一个数
// 如果第 1 个数大于第 2 个数,就输出第 1 个数
// 否则输出第 2 个数
a[12,32]
if a.get(0) > a.get(1)
print a.get(0)
else
print a.get(1)
// 用 if...else... 可以表示逻辑
复制代码
例子 2 - 输出 N 个数中最大的一个数
// 输出 N 个数中最大的一个数
// 找到第 1、2 个数字中较大的那一个,存入 max
// 找到 max 和 第 3 个数字中较大的那个,存入 max
// 找到 max 和 第 ... 个,存入 max
a [12,32,9,1,23,6]
max = a[0]
for i from 1 to a.length() - 1
if a.get(i) > max then max = a.get(i)
print max
// 用 for 循环可以表示逻辑
复制代码
表示逻辑需要多少语句?掌握了这些语句就能表达所有逻辑
4. 三种语句搞定所有逻辑
这是「结构化编程」理论,但结构化编程在某些情况下会变得麻烦,比如错误处理,那个时候可能要第四种语句 goto
1. 顺序执行语句
语句 1
语句 2
复制代码
if...then...else...
if...else if...else
复制代码
wihile...do...
for i from 1 to n...
复制代码