Markdown高级使用之流程图
流程图在Markdown中的的表现形式就是代码块,代码块语言标记为mermaid。主要内容大体分为:方向、节点、节点间的连接关系,下面就围绕这三个点来整理。
mermaid支持流程图、甘特图和时序图,但是经过这次尝试,结论就是画图的话还是使用专业的画图工具,这个只能作为一种简单选项用在简单场景下。所以这里就只总结一下流程图的使用,其它两种就没必要了,不是怎么好用。
流程图方向
流程图总体分为横向和纵向两种。总共四个方向:T-上,B\D-下;L-左,R-右。使用方式就是横向的两两结合,纵向的两两结合。比如从左到右为LR,从上到下为TB或者TD。
从上到下演示:
~~~mermaid
graph TD
A --> B
~~~
从上到下的展示效果:
A --> B
从左到右演示:
~~~mermaid
graph LR
A --> B
~~~
从左到右展示效果:
A --> B
流程图节点
下面展示的流程图节点有矩形 '[]',圆角矩形 '()',不对称矩形 '>]',菱形 '{}',圆形 '(())'。在每个节点前面需要唯一标识该节点ID。如下示例:
~~~mermaid
graph TD
a1[带文本矩形]
a2(带文本圆角矩形)
a3>带文本不对称矩形]
b1{带文本菱形}
c1((带文本圆形))
~~~
其展示效果如下:
a1[带文本矩形]
a2(带文本圆角矩形)
a3>带文本不对称矩形]
b1{带文本菱形}
c1((带文本圆形))
节点间的连接关系
节点之间的连接线分为:实线 '---'、加粗实线 '==='、虚线 '-.-'。
带箭头的连接线分为:带箭头实线 '-->'、带箭头加粗实线 '==>',带箭头虚线 '-.->'。
如果要在连接线上加上备注,则上面两类加备注的方式如下:
实线备注 '--yes---',加粗实线备注 'yes=',虚线备注 '-.yes.-'。
带箭头实线备注 '--yes-->',带箭头加粗实线备注 'yes>',带箭头虚线备注 '-.yes.->'
其中,每种连接符号的左边是开始节点,右边是结束节点,可以由同一个节点指向不同节点,也可以由不同节点指向同一个节点,实现各种指向方式都是通过节点ID标注。
示例如下:
~~~mermaid
graph LR
A10[A10] --- A11[A11]
A20[A20] === A21[A21]
A30[A30] -.- A31[A31]
B10[B10] --> B11[B11]
B20[B20] ==> B21[B21]
B30[B30] -.-> B31[B31]
C10[C10] --yes--> C11[C11]
C20[C20] ==yes==> C21[C21]
C30[C30] -.yes.-> C31[C31]
~~~
其展示效果如下:
A10[A10] --- A11[A11]
A20[A20] === A21[A21]
A30[A30] -.- A31[A31]
B10[B10] --> B11[B11]
B20[B20] ==> B21[B21]
B30[B30] -.-> B31[B31]
C10[C10] --yes--> C11[C11]
C20[C20] ==yes==> C21[C21]
C30[C30] -.yes.-> C31[C31]
由同一个节点开始,使用方式如下,对于后面如果使用同一个节点,只用指明ID即可。
~~~mermaid
graph LR
A[开始节点] --> B[结束节点1]
A --> C[结束节点2]
~~~
A[开始节点] --> B[结束节点1]
A --> C[结束节点2]
冒泡排序流程图
在这里用一个冒泡排序来简单的练习一下上面的几个点,首先将冒泡排序的伪码粘贴上来:
BUBBLESORT(A)
for i = 1 to A.length-1
for j = A.length downto i + 1
if A[j] < A[j - 1]
exchange A[j] with A[j - 1]
演示代码如下:
~~~mermaid
graph TD
start([开始]) --> 赋值arr[赋值arr]
赋值arr --> 赋值len[len = arr.length]
赋值len --> 赋值i[i = 0]
赋值i --> 第一层循环{i < len}
第一层循环 --yes--> 赋值j[j = 1]
赋值j --> 第二层循环{"j < len - i ?"}
第二层循环 --yes--> 判断{"arr[j - 1] < arr[j] ?"}
判断 --yes--> 定义临时变量["int temp = arr[j - 1]"]
定义临时变量 --> 交换aj["arr[j - 1] = arr[j]"]
交换aj --> 交换aj-1["arr[j] = temp"]
交换aj-1 --> j自增["j++"]
j自增 --> 第二层循环
判断 --no--> j自增
第二层循环 --no--> i自增["i++"]
i自增 --> 第一层循环
第一层循环 --no--> endd([结束])
~~~
展示效果如下:
start([开始]) --> 赋值arr[赋值arr]
赋值arr --> 赋值len[len = arr.length]
赋值len --> 赋值i[i = 0]
赋值i --> 第一层循环{i < len}
第一层循环 --yes--> 赋值j[j = 1]
赋值j --> 第二层循环{"j < len - i ?"}
第二层循环 --yes--> 判断{"arr[j - 1] < arr[j] ?"}
判断 --yes--> 定义临时变量["int temp = arr[j - 1]"]
定义临时变量 --> 交换aj["arr[j - 1] = arr[j]"]
交换aj --> 交换aj-1["arr[j] = temp"]
交换aj-1 --> j自增["j++"]
j自增 --> 第二层循环
判断 --no--> j自增
第二层循环 --no--> i自增["i++"]
i自增 --> 第一层循环
第一层循环 --no--> endd([结束])
Markdown高级使用之流程图的更多相关文章
- 使用mermain用Markdown的语法画流程图和UML图
博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:使用mermain用Markdown的语法画流程图和UML图.
- 多年经验,教你写出最惊艳的 Markdown 高级用法
点赞再看,养成习惯,微信搜索[高级前端进阶]关注我. 本文 GitHub https://github.com/yygmind 已收录,有一线大厂面试完整考点和系列文章,欢迎 Star. 最近在学习的 ...
- 多年经验总结,写出最惊艳的 Markdown 高级用法
点赞再看,养成习惯,微信搜索[高级前端进阶]关注我. 本文 GitHub https://github.com/yygmind 已收录,有一线大厂面试完整考点和系列文章,欢迎 Star. 最近在学习的 ...
- Markdown Sublime flowchart.js 流程图
先亮出来一个 flowchart.js 的 Sample 给 Sublime 安装 MarkdownPreview,这个不必多说了 Sublime Text -> Preferences -&g ...
- MarkDown和流程图诠释你的代码
写在前面:首先感谢导师-猴哥对我的认可(求多分享点编程经验.工具.多开课),学习编程是一个痛苦和快乐的过程,希望大家共勉 本文介绍MarkDown的基本语法.使用MarkDown画简单的流程图.使用X ...
- Markdown语法大全
目录 前言: 1.Markdown基础用法 1.1 目录 1.2 标题 1.3 字体样式 1.4 引用 1.5 图片 1.6 超链接 1.7 列表 1.8 表格 1.9 代码 1.10 流程图 1.1 ...
- 打造自己的Markdown编辑器
原文链接: http://www.errdev.com/post/5/ Markdown以其简洁的语法赢得了广大程序猿的喜爱,搜了一下github上相关的web编辑器,星星比较多的 Stackedi ...
- CSDN Markdown简明教程4-UML画画
0.文件夹 文件夹 前言 序列图 1 序列图演示样例 2 序列图语法 流程图 1 流程图演示样例 2 流程图语法 节点定义 节点连接 Gravizo 声明 1. 前言 Markdown是一种轻量级的标 ...
- 在Ubuntu 14.04 64bit上安装Markdown和绘图软件Haroopad
简介 Haroopad:一款让你欲罢不能的Markdown编辑器 身为大程序员,我本来是不需要 Markdown 编辑器的,但是 Haroopad 让我简直欲罢不能,不能再爱更多.跨平台,代码高亮,V ...
随机推荐
- 17.java设计模式之观察者模式
基本需求: 气象站可以将每天测量到的温度,湿度,气压等等,以公告的形式发布出去(比如发布到自己的网站或第三方) 需要设计开放型API,便于其他第三方也能接入气象站获取数据 提供温度.气压和湿度的接口 ...
- PyQt(Python+Qt)学习随笔:Qt Designer中主窗口对象的toolButtonStyle属性
tooButtonStyle属性保存主窗口工具栏按钮的样式设置,用来表示工具栏按钮的文字和图标怎么显示. 该属性的可设置值类型为枚举类型Qt.ToolButtonStyle,它包含如下值: 该属性的缺 ...
- 基础篇——SpringCloudAlibaba分布式组件
官方文档:https://github.com/alibaba/spring-cloud-alibaba/blob/master/README-zh.md 想要使用SpringCloudAlibaba ...
- 堆叠注入tips
漏洞成因 使用mysqli_multi_query()这种支持多语句执行的函数 使用PDO的方式进行数据查询,创建PDO实例时PDO::MYSQL_ATTR_MULTI_STATEMENTS设置为tr ...
- Python自动发射弹幕
Python自动发射弹幕,弹幕护体 - 环境: Python3+Windows- 开发工具: PyCharm 学习效果:1. 学会使用Python刷弹幕2. 配置INI文件信息3. 掌握网络请求知识4 ...
- java的jdk8新特性optional怎么样使用
从 Java 8 引入的一个很有趣的特性是 Optional 类.Optional 类主要解决的问题是臭名昭著的空指针异常(NullPointerException) -- 每个 Java 程序员都 ...
- 团队作业part4--项目冲刺
七天敏捷冲刺汇总 1. Day1 Scrum 冲刺博客 2. Day2 Scrum 冲刺博客 3. Day3 Scrum 冲刺博客 4. Day4 Scrum 冲刺博客 5. Day5 Scrum 冲 ...
- 【APIO2018】选圆圈(平面分块 | CDQ分治 | KDT)
Description 给定平面上的 \(n\) 个圆,用三个参数 \((x, y, R)\) 表示圆心坐标和半径. 每次选取最大的一个尚未被删除的圆删除,并同时删除所有与其相切或相交的圆. 最后输出 ...
- 四、git学习之——分支管理、解决冲突
分支就是科幻电影里面的平行宇宙,当你正在电脑前努力学习Git的时候,另一个你正在另一个平行宇宙里努力学习SVN. 如果两个平行宇宙互不干扰,那对现在的你也没啥影响.不过,在某个时间点,两个平行宇宙合并 ...
- Day1 字符编码及编码函数
ord() 函数 获取字符的整数表示chr() 函数 把整数编码转换为对应字符'\十六进制编码\十六进制编码' 可以将字符的整数编码使用十六进制的方式这样写Python字符串类型为str,在内存中以u ...