伪代码与流程图 Note-19

2020/3/6 11:31:27

本文主要是介绍伪代码与流程图 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...
复制代码

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

流程图、伪代码的好处是: 锻炼你的大脑,整理你的思路

三、数据结构

数据结构就是数据与数据之间的关系和结构

1. 举例子

如何表示两个数据

如果顺序有意义:[x,y] 表示第一个是 x,第二个是 y
比如坐标就是这样的数据,要提供 first 和 last 操作
————————————————————————————————————
如果顺序无意义:(x,y) 和 (y,x) 一样
比如血压值 (120,80) 和 (80,120) 没区别,不需要提供 first 和 last 操作
复制代码

如何表示 N 个数据

如果顺序有意义:数组表示 [a1,a2,...aN]
要提供索引操作 get(i),要提供 add / indexOf / delete 操作
——————————————————————————————
如果顺序无意义:集合表示 {a1,a3,...aN}
要提供 add / delete / has 操作
复制代码

如何表示 N 对 N 数据(比如学号)

用「哈希表」表示
hash = {1001 => '小方',1002 =>'小红'}
复制代码

2. 数据结构的作用

数据结构 = 数据形式 + 操作

有没有觉得很抽象,不同形式的数据暴露出不同的操作,数据结构都是抽象的

提前记住一些结构: 这些结构很常见,能让你很快理清思路,面试经常问

锻炼你的抽象能力: 一种数据结构往往能解决很多类似的问题,如果你选错了数据结构,你根本就想不出思路,牛逼的程序员更注重数据结构,而不是算法

「资料来源:©饥人谷」



这篇关于伪代码与流程图 Note-19的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程