没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收稿日期 :2011‐07‐26 网络出版时间 :2012‐09‐12
基金项目 :国家自然科学基金资助项目(60903198)
作者简介 :王黎明(1982 - ) ,男 ,讲师 ,西安电子科技大学博士研究生 ,E‐m ail :w anglm @ mail .xidian .edu .cn .
网络出版地址 :http ://w w w .cnki .net /kcm s/detail /61 .1076 .T N .20120912 .1012 .201206 .83惨012 .ht ml
doi :10 .3969/ j .issn .1001‐2400 .2012 .06 .012
程 序 流 程 图 到 代 码 的自 动 生成 算 法
王 黎 明 , 王 帼 钕 , 周 明 媛 , 褚 艳 利 , 陈 科 , 陈 平
(西安电子科技大学 软件工程研究所 ,陕西 西安 710071)
摘要 : 提出了一种从标准程序流程图到结构化代码生成的新算法 .该算法通过对程序流程图结构的分析
与识别 、循环结构的线性化以及对分支结构域的确定等过程 ,能够生成符合程序流程图语义的结构化 C 代
码(包括 continue/break/return) ;同时 ,能够识别出非结构化的程序流程图 .
关键词 : 可视化编程 ;程序流程图 ;模型驱动 ;代码生成
中图分类号 :T P311 .5 文献标识码 :A 文章编号 :1001‐2400(2012)06‐0070‐08
Research on and implementation of the algorithm from
the program flowchart to the code
W A NG L im in
g
, W A NG
Guonü
, Z H OU M in
gy
uan ,
C H U Y anli , C H E N K e , C H E N Pin
g
(
Research Inst . of Sof tw are Engineering , Xidian U niv . , Xi摧an 710071 , China)
Abstract : A new method for generating the structural code from the standard program flowcharts is
p
resented . By analyzing the flowchart , linearizing the cycle structure and delimiting the branch structure ,
the structual C code agreeing w ith the semanteme of the flowchart is generated . A t the same time , the
unstructural flowchart is recognized .
Key Words : visual programming ; flowcharting ; model
‐
based ; code generation
嵌入式领域中模型驱动开发技术日益成熟并广泛应用 ,国内外很多学者都对模型驱动技术进行了大量
研究
[1‐6]
,其中有很多是对程序流程图到代码的自动生成技术的研究
[7‐12 ]
.然而现有的程序流程图到代码的
自动生成工具
[7‐9]
对流程图有着各种限制 ,并不是基于标准的程序流程图 ,而是提供了结构化程序流程图中
的多种基本控制结构组件 ,如不同类型的循环结构 、分支结构等 .另外 ,这些工具
[10‐12 ]
大多是针对不含
cotinue/break/return 语义的结构化的程序流程图 ,而针对含有 continue/break/return 语义的程序流程图的
研究则较少 .而笔者在文中实现的程序流程图到代码的自动生成技术是针对标准的程序流程图设计的 ,并且
对于含有 continue/break/return 语义的程序流程图也能够很好地识别并生成相应的代码 .
1 算法中的定义
(1) 结构化程序设计 : ① 这种设计是一种进行程序设计的原则和方法 ,它采用自顶向下逐步求精的方
法和单入口单出口的控制结构 ,按照这种原则和方法设计出的程序具有结构清晰 、容易阅读 、容易修改 、容易
验证等特点 .② 这种设计讨论了如何将任何大规模和复杂的流程图转换成一种标准形式 ,使用程序设计语言
中的顺序 、分支 、循环等有限的控制结构 ,通过组合或嵌套来表示程序的控制逻辑 .③ 这种设计是避免使用
2012 年 12 月
第 39 卷 第 6 期
西安电子科技大学学报(自然科学版 )
JOURNAL OF XIDIAN UNIV ERSITY
Dec .2012
Vol .39 N o .6
http ://www .xdxb .net
GO T O 语句的一种程序设计 .
(2) 结构化程序流程图 :这种流程图是由顺序 、分支和循环 3 种基本控制结构通过各种复杂的组合 、嵌
套关系构成的 ,并且各种基本控制结构是单入单出的 ,不会出现带有 GO T O 含义的元素的程序流程图 .
(3) 半结构化程序流程图 :这种流程图在结构化流程图的基础上引入了受限制的半结构化元素 ,如带
有 continue/break/return 语义的控制流线 .这些半结构化的元素在规范的限制条件下 ,扩展了基本控制结
构单入单出的特性 ,既保留了结构化的清晰性和安全性 ,又不失灵活性 .
2 算法描述
流程图代码自动生成算法包括 :(1)程序流程图的结构分析与识别 .(2)循环结构的线性化 .(3)分支结
构域的确定 .(4)结构化 C 代码的生成 .其中 ,在前 3 个阶段中嵌入了对程序流程图结构化的检测 ,整个过程
首先根据一定的准则 ,识别出流程图确定的结构 ,对于无法初步识别的特殊结构采用回溯算法 :初步假设一
种结构 ,然后进行结构化验证 ,如果符合结构化准则 ,则表示识别正确 ;否则 ,进行回溯 .
2畅1 程序流程图的结构分析与识别
2 .1 .1 循环与分支结构的识别
标准的程序流程图中矩形框均为顺序结构不需要识别 ,只需要区分流程图中的菱形框所构成的是循环
还是分支结构 .从图论角度分析 ,流程图是有向图 ,其中的每个外层循环结构形成了有向图中的极大强连通
子图 ,多个外层循环结构组合在一起形成非强连通有向图中的强连通分量(所有极大强连通子图) .根据这个
原则找出程序流程图中的所有最大强连通子图 ,就可以识别出流程图中最外层所有的循环结构 .当识别出最
外层的循环结构后 ,需要将构成循环的回边消掉 ,这样就可以继续判断该循环内层是否还存在嵌套的循环结
构 .找出所有的循环结构后 ,其余的菱形结点引领的结构即为分支结构 .具体算法见算法 1 .
2 .1 .2 半结构化程序图元素的识别
对于 continue/break/return 这种半结构化元素 ,则根据程序流程图的控制流流向信息来识别 .标识
continue 的流程线把控制流引向了循环的判断结点 ,标识 break 的流程线把控制流引向了循环结束后的第 1
个结点 ,标识 return 的流程线把控制流引向了结束结点 .在识别出半结构化的流程线之后 ,把流程线指向虚
拟的标识此元素的结点 ,后继悬空 ,留待第 3 阶段处理 .具体算法见算法 1 .
算法 1 流程图结构的识别 .
输入 :最外层强连通子图即整幅程序流程图 .
输出 :true 为符合结构化准则 ,完成结构识别 ;false 为流程图非结构化 .
方法 :使用递归的方法 ,从最外层最大强连通子图开始判断流程图结构 ,并消去构成循环的回边 ,再递
归地判断里层的结构 .
bool RecognizeStructure(FlowChartSCG scg)
{
计算当前层的最大强连通子图集合
对于每个最大强连通子图进行如下操作
{
if (构成最大强连通子图的结点数为 1)
{
识别分支结构或顺序结构
跳出此次循环
}
判断构成最大强连通子图的循环类型
if (判断过程中出现异常)
return 非结构化结论
17
第 6 期 王黎明等 :程序流程图到代码的自动生成算法
剩余7页未读,继续阅读
资源评论
weixin_38715019
- 粉丝: 6
- 资源: 935
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于mpc的道五次多项式道 simulink和carsim联合仿真 有详细的说明文档
- 车险理赔信息管理系统修改代码pf-springboot毕业项目,适合计算机毕-设、实训项目、大作业学习.rar
- 光影视频-springboot毕业项目,适合计算机毕-设、实训项目、大作业学习.zip
- 华府便利店信息管理系统-springboot毕业项目,适合计算机毕-设、实训项目、大作业学习.zip
- 毕业设计成绩管理系统的设计与实现-springboot毕业项目,适合计算机毕-设、实训项目、大作业学习.zip
- 大学生就业需求分析系统-springboot毕业项目,适合计算机毕-设、实训项目、大作业学习.zip
- iClient for Classic加载wmts山东天地图
- 德普微一级代理 DP038N04DGL TO-252 DPMOS N-MOSFET 40V 106A 3.5mΩ
- 高校学生饮食推荐系统_02187-springboot毕业项目,适合计算机毕-设、实训项目、大作业学习.zip
- 大学生心理健康管理系统的设计与实现-springboot毕业项目,适合计算机毕-设、实训项目、大作业学习.rar
- 高校教师电子名片系统-springboot毕业项目,适合计算机毕-设、实训项目、大作业学习.zip
- 画师约稿平台-springboot毕业项目,适合计算机毕-设、实训项目、大作业学习.zip
- 3b012运动会成绩管理系统_springboot+vue0.zip
- 3b011高校学生评教系统_springboot+vue.zip
- it职业生涯规划系统--论文pf-springboot毕业项目,适合计算机毕-设、实训项目、大作业学习.zip
- 3b013社区疫苗接种管理系统_springboot+vue0.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功