程序员如何画图?

程序员如何画图?,第1张

经常写完文章, 收到的第一个问题是: 你的图是用啥画的其实自己也经常问别人. 最近强化了一下这方面的知识, 总结一下.

个人将画图的场景分为两种: PPT/文章中使用和系统中使用

可能有人觉得 系统中画图 需求不多, 个人感觉还是有必要的. 经常遇到费劲开发了一个系统, 遇到各路用户问问题. 如果有办法在系统中将执行流程直接生成流程图, 你好我好大家好.

GUI 画图工具有很多可选, 个人比较推荐的是 OmniGraffle , 在线工具推荐 lucidchart . 当然, 我也见过用 KeyNote 画出漂亮的系统图的, 工具不重要, 关键看人(说多了都是泪)

重点说一下程序画图. 最近反省了一下, 画图最多的就是那几个:

没了. 真的没了. 会这几个就可以行走江湖了.

然后, 推荐两个 library: blockdiag 和 graphviz .

blockdiag 是一个神奇的 python libary. 可以通过使用类似 graphviz 的语法, 画出 块图, 序列图, 网络图, 活动图. 还提供了一个 交互式的 shell , 用于调试上述几种图. 例如, shell 中输入:

立即的到如下图:

点击右上角切换成序列图, 输入如下内容:

有可以轻松得到如下序列图:

但是说好的 library 呢? 以 seqdiag 为例,

Graphviz 可谓是一代画图神器, 通过官网的示例图就知道有多强大. blockdiag 也是参考 Graphviz 的实现. 通过类似的语法描述, 生成所需的图形. 对于颜色的选择, 可以参考文档中 Colors 一节, 非常全面.

程序方面, 同名的 graphviz library 可以使用 pip install graphviz 安装, 非常方便. 示例python 程序如下:

既然有了 library 可以画图, 强烈建议在自己的系统中将一些复杂的流程化的事情通过根据当前系统状态画出图的方式展现给用户, 可以避免很多疑惑.

Word中如何绘制流程图

流程图可以给我们清楚的展现出一些复杂的数据,让我们分析或观看起来更加清楚明了。一般在企业、公司、医疗、教学、生产线上等都会派上非常大的作用,一个工场的生产流程,一个公司的运营模式都只需要用一张流程图就可以简单的概括出来,所以制作流程图是办公人员必备的武器之一。

工具/原料

word 2003

方法/步骤

1

新建一个word 文档,通过“视图”-“工具栏”-“绘图”,如下图1,显示“绘图工具栏”,如下图2;

2

单击“绘图”工具栏上的“自选图形”,然后选择“流程图”,这里就可以看到众多制作流程图时所用到的形状了,大家可以选择自己喜欢的的形状;

3

单击要绘制流程图的位置,此时会出现个虚框;

在绘图画布上插入你选择的图形,然后插入;

我们再重复上述步骤,插入多种不同的图形,(如下图,我已经插入了很多种不同的图形);

接下来,我们要建立各种图形之间的连接了。这里我们使用Word提供的一个非常好用的自选图形——连接符来建立连接。 连接符的选择见下图;

选择连接符自选图形后,将鼠标指针移动到对象上时,会在其上显示蓝色连接符位置,这些点表示可以附加连接符线的位置;

我们首先用带箭头的肘形线连接符和直线连接符将图形连接到一起,如图;

绘制折线箭头;

接下来,我们需要在图形中添加文字。用鼠标右键单击形状,单击“添加文字”并开始键入。

我们随便录入文字;

制作好后,我按住左键不放,框选所有图形,点击右键,组合;

一个简单的流程图就设计好了,大家可以按照自己的工作需要进行更复杂的设计。

-----------------------------

一、什么是程序流程图

“程序流程图”常简称为“流程图”,是一种传统的算法表示法,程序流程图是人们对解决问题的方法、思路或算法的一种描述。它利用图形化的符号框来代表各种不同性质的 *** 作,并用流程线来连接这些 *** 作。在程序的设计(在编码之前)阶段,通过画流程图,可以帮助我们理清程序思路。下图是一个简单的流程图,描述求两个数的最大公约数的算法(辗转相除法)。

勘误:最后的结果,该是output a。感谢8楼童鞋指出!

画流程图是每个程序员的基本功。流程图有其规范,这是用于技术人员之间交流的需要,并不是想怎么画就怎么画。流程图中常用的符号见右图,在前述求最大公约数的流程图中找出对应的部分。

二、三种控制结构的流程图表示

这部分不再写文字,各种程序设计的教材中都会写一些,至少在讲各种控制结构时,总时要讲的。请参考自己手头能找到的教材,认真品味。

我们直接提示若干任务,画一画,就会了。

三、练习题目(各部分分别至少选两个画一画,注意用一张质量好一些纸,书写整齐,确保越画越高兴)

1、热身

(1)将英尺转换为米

(2)输入两个点的坐标,求两点之间的距离并输出

2、分支程序

(1)描述一下今晚的计划:如果下雪,校园内玩雪;否则,在103上机(怀念)

(2)丢硬币决定今晚:正面,K歌;反面:逛街;立起来,学C++

(3)求函数值:

(4)输入一元二次方程ax^2+bx+c=0的各项系数,并根据各系数的值的情况,分别进行求解(考虑对系数的各种可能太复杂时,给自己降低些难度,先从不考虑系统直接求解开始)

(5)输入个人月收入总额,计算出他本月应缴税款和税后收入(税率等参考第9周任务)

3、循环结构

(1)求1+2+3+...+100(三种循环结构都画一画)

(2)输出1/3-3/5+5/7-7/9…+19/21的结果

(3)一个数如果恰好等于它的因子之和,这个数就称为“完数”。找出1000内的所有完数。

(4)输出1000以内的所有回文数

(5)鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,如何买?

4、复杂结构的程序

在解决问题中,利用函数可以让我们利用更“有序”的思维去想问题,“自顶向下,逐步求精”,真理。例:下面的流程图用于输出星号图,体现的是这种思维,右边的图可以嵌入到左边中,替代“输出第i行”的框子,也可以指导我们专门编成一个函数。

任务:

(1)输出10000以内的所有回文素数。将判断回文和判断素数分别单独画,对应将这两个功能用函数实现的方法。

(2)画出银行系统的流程图(各具体业务点到为止,不必全画)

注:在传统教学中,未学写代码,先学画流程。以前的实践中,感觉效果不好。控制结构为何物都晕,如何能画出来。有一定编程体验后再画,是改革的思路。这是编程的一项基本功,务必掌握!

------------------------

用什么绘制流程图

一、什么是程序流程图

“程序流程图”常简称为“流程图”,是一种传统的算法表示法,程序流程图是人们对解决问题的方法、思路或算法的一种描述。它利用图形化的符号框来代表各种不同性质的 *** 作,并用流程线来连接这些 *** 作。在程序的设计(在编码之前)阶段,通过画流程图,可以帮助我们理清程序思路。下图是一个简单的流程图,描述求两个数的最大公约数的算法(辗转相除法)。

勘误:最后的结果,该是output a。感谢8楼童鞋指出!

画流程图是每个程序员的基本功。流程图有其规范,这是用于技术人员之间交流的需要,并不是想怎么画就怎么画。流程图中常用的符号见右图,在前述求最大公约数的流程图中找出对应的部分。

二、三种控制结构的流程图表示

这部分不再写文字,各种程序设计的教材中都会写一些,至少在讲各种控制结构时,总时要讲的。请参考自己手头能找到的教材,认真品味。

我们直接提示若干任务,画一画,就会了。

三、练习题目(各部分分别至少选两个画一画,注意用一张质量好一些纸,书写整齐,确保越画越高兴)

1、热身

(1)将英尺转换为米

(2)输入两个点的坐标,求两点之间的距离并输出

2、分支程序

(1)描述一下今晚的计划:如果下雪,校园内玩雪;否则,在103上机(怀念)

(2)丢硬币决定今晚:正面,K歌;反面:逛街;立起来,学C++

(3)求函数值:

(4)输入一元二次方程ax^2+bx+c=0的各项系数,并根据各系数的值的情况,分别进行求解(考虑对系数的各种可能太复杂时,给自己降低些难度,先从不考虑系统直接求解开始)

(5)输入个人月收入总额,计算出他本月应缴税款和税后收入(税率等参考第9周任务)

3、循环结构

(1)求1+2+3+...+100(三种循环结构都画一画)

(2)输出1/3-3/5+5/7-7/9…+19/21的结果

(3)一个数如果恰好等于它的因子之和,这个数就称为“完数”。找出1000内的所有完数。

(4)输出1000以内的所有回文数

(5)鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,如何买?

4、复杂结构的程序

在解决问题中,利用函数可以让我们利用更“有序”的思维去想问题,“自顶向下,逐步求精”,真理。例:下面的流程图用于输出星号图,体现的是这种思维,右边的图可以嵌入到左边中,替代“输出第i行”的框子,也可以指导我们专门编成一个函数。

任务:

(1)输出10000以内的所有回文素数。将判断回文和判断素数分别单独画,对应将这两个功能用函数实现的方法。

(2)画出银行系统的流程图(各具体业务点到为止,不必全画)

注:在传统教学中,未学写代码,先学画流程。以前的实践中,感觉效果不好。控制结构为何物都晕,如何能画出来。有一定编程体验后再画,是改革的思路。这是编程的一项基本功,务必掌握!

——知乎


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8150028.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存