zoukankan      html  css  js  c++  java
  • Markdown高级使用之流程图

    流程图在Markdown中的的表现形式就是代码块,代码块语言标记为mermaid。主要内容大体分为:方向、节点、节点间的连接关系,下面就围绕这三个点来整理。

    mermaid支持流程图、甘特图和时序图,但是经过这次尝试,结论就是画图的话还是使用专业的画图工具,这个只能作为一种简单选项用在简单场景下。所以这里就只总结一下流程图的使用,其它两种就没必要了,不是怎么好用。


    流程图方向

    流程图总体分为横向和纵向两种。总共四个方向:T-上,BD-下;L-左,R-右。使用方式就是横向的两两结合,纵向的两两结合。比如从左到右为LR,从上到下为TB或者TD。

    从上到下演示:

    ​~~~mermaid
    graph TD
    A --> B
    ​~~~
    

    从上到下的展示效果:

    graph TD A --> B

    从左到右演示:

    ​~~~mermaid
    graph LR
    	A --> B
    ​~~~
    

    从左到右展示效果:

    graph LR A --> B

    流程图节点

    下面展示的流程图节点有矩形 '[]',圆角矩形 '()',不对称矩形 '>]',菱形 '{}',圆形 '(())'。在每个节点前面需要唯一标识该节点ID。如下示例:

    ​~~~mermaid
    graph TD
        a1[带文本矩形]
        a2(带文本圆角矩形)
        a3>带文本不对称矩形]
        b1{带文本菱形}
        c1((带文本圆形))
    ​~~~
    

    其展示效果如下:

    graph TD 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]
    ​~~~
    

    其展示效果如下:

    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]

    由同一个节点开始,使用方式如下,对于后面如果使用同一个节点,只用指明ID即可。

    ​~~~mermaid
    graph LR
    	A[开始节点] --> B[结束节点1]
    	A --> C[结束节点2]
    ​~~~
    
    graph LR 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([结束])
    ​~~~
    

    展示效果如下:

    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([结束])
  • 相关阅读:
    信息安全系统设计基础第五周学习总结
    信息安全系统设计基础第四周学习总结
    信息安全系统设计基础第三周学习总结
    信息安全系统设计基础第二周学习总结
    信息安全系统设计基础第一周学习总结
    20135239益西拉姆第四次实验报告
    第三次实验报告 敏捷开发与XP实践
    20135239益西拉姆第二次实验报告
    20135239 第一次实验报告
    微信公众号方法(不定时更新)
  • 原文地址:https://www.cnblogs.com/mrxiaobai-wen/p/14215875.html
Copyright © 2011-2022 走看看