专栏名称: 浪里淘沙的小法师
null
目录
相关文章推荐
政事堂2019  ·  本轮复苏,会持续多久? ·  昨天  
人民日报评论  ·  经济大省何以挑大梁 | 人民时评 ·  昨天  
主编温静  ·  主编温静丨今天发生了什么? ·  2 天前  
51好读  ›  专栏  ›  浪里淘沙的小法师

伪代码与流程图 Note-19

浪里淘沙的小法师  · 掘金  ·  · 2020-03-06 02:49

正文

阅读 64

伪代码与流程图 Note-19

伪代码与流程图的相关知识,内容包括抽象概念、逻辑、数据结构。

一、抽象概念

编程其实语法并不难,难的是抽象概念,有时候我们每句都懂,但是加在一起不懂。

编程语言也能抽象,各类编程语言其实都没有很大区别,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
复制代码

顺序执行语句
2. 条件判断语句

if...then...else...
if...else if...else
复制代码

条件判断语句
3. 循环语句

wihile...do...
for i from 1 to n...
复制代码

所有复杂的算法都能用这三种语句描述 -- 多么简洁







请到「今天看啥」查看全文