源程序过程分析与数据分析 源程序过程分析与数据分析

源程序过程分析与数据分析

  • 期刊名字:电脑编程技巧与维护
  • 文件大小:478kb
  • 论文作者:林榕慧
  • 作者单位:仰恩大学计算机与信息学院
  • 更新时间:2020-09-25
  • 下载次数:
论文简介

实用第一/智慧密集源程序过程分析与数据分析林榕慧(仰恩大学计算机与信息学院,泉州福建362000)摘要: 源程序分析的实质是程序的过程分析和数据分析,目的是提供一种程序阅读的方法,实现程序理解。方法是详细分析复杂程序的执行过程,关键语句的结构与功能,建立变量、数组、二维数组或者辅助数组3个层次的程序数据的处理架构,并且用数据行和一维数据集合表示。源程序分析的5个规范使过程分析和数据分析有章可循。程序的功能分析是更进一步的分析方法,发现源程序的具有不可分割性的功能块,以此建立程序的功能结构,掌握高级编程方法。关键词:过程分析与数据分析;程序数据;数组;辅助数组;原子功能if(b>c) {t=b;b=c;c=t;//比较语句31概述print(%5.2f,%5.2f,%5.2f ,a,b,c);}源程序分析与现有的程序分析不同。现有程序分析分为静{a,b,c}元素的组合(a,b) , (a,c) , (b,e) 是全部有效的对比态分析和动态分析两类,作用是(1)发现程序语句的错误;数,经过3次比较和交换,得到三元组。(2)精炼程序流程图,例如:路径分析; (3) 编译,可称为数据分析与过程分析,如表1所示。代码分析; (4) 代码查询,分析程序的结构和元素值,当作表1比较 3个数程序的数据分析与过程分析中间结果供查询,属于动态分析。此外,动态分析还包括按代变量对关键语句(3个if语句)目标数据:码段执行,输出变量值等。(m1.m2)a>ba>eb>cMinSecond源程序分析目的是用数据分析和过程分析的方法,使人们(a,b)a能很好地实现“程序理解",程序员则能够发现关键语句、程序ae;数据处理架构、程序的主要结构。过程分析选择关键语句,记,e)b录程序数据在程序执行过程中的完整存在形式。程序数据有3个层次:变量、数组、二维数组或者存储数组与辅助数组的组程序2:在[100,200]区间选择素数合。数据分析在点、一维、二维程序数据空间的标识遵循相同main(){int m,k,n=0;的规则。1. for(m= 101;m<200;m=m+2)2源程序数据分析与过程分析2. { k=sqr(m); :3.for(i=2;i<=k;i++)源程序分析技术以数据驱动为最基本特征。程序处理的数4.if(m%i==0) break;据有变量、数组、矩阵(= 维数组),称为程序数据。稀疏矩阵//第2层for循环的存储结构用存储数组data []与辅助数组的组合表示,辅助5.if(>=k+1){ printf(" %d" m); n=n+1;数组cpot[、num []、rpos 0表示稀疏矩阵的层次结构。在这if(n% 10==0)? pritf(" ");}3个数据层次的基础上,展开程序数据分析和过程分析的进8. }/第一层for循环结束化,形成5个初步的规范形式。9. printf(" ");2.1 程序数据是变量t10.}这一类程序大致上是实现在- -定条件下对变量的选择。程序2是两层循环语句构成。第一层for循环判断程序变程序1:比较3个数的大小作者简介:林榕慧(1973-), 硕士,教师,研究方向:高等数main){float a,b,c,t;学计算文法、功能式程序设计方法,英语结构文法、分布与紧scanf(" %f, %f, %f" ,&a,&b,&c);致并存的高性能计算系统、全功能结点与分层调度方法、数字if(a>b) {t=a;a=b;b=;/比较语句1电路系统设计的数理决极理入出笛tn网络与通信数据高速同if(a>c) {t=a;a=c;=://比较语句2步传输网。中国煤化工YHCNMHG40电脑鹅核万与维护动2014. 11...AABASE量m是否在100到200之间,循环边界[01,199]。 第二层循程序3部分数组逆置环判断每--个数m是不是素数。设置第二层循环依据素数的void resort(int arraylI,int where,int amount)数学算法,循环的判断范围是[2, sqrt (m)]。{ int *p1,*p2,temp;p1=&array[where-1]; /p1 是首指针过程分析与数据分析如表2所示。p2=&larraylwhere- 2+amount;表2求素数程序 的数据分析与过程分析//p2是尾指针for(;p1<8arraylwhere-1]+amount/2;p1++;p2--)程序数据第-层循环第二层循环循环结果输出格式//用首尾指针的方式,实现swap。mm<200[2sqnt (m)]i>=k+1n%10==0{temp=*p1;100*p1=*p2;1*p2=temp;103p1=&array [where-1], 是首指针,p2=&array [where -2+200amount],是尾指针。用首尾指针的方式,实现swap。输人数据的元素:从表2可知:678 910111213 1415(1)程序2的两层循环语句用数据表的2、3两列表示。第where=6;二个循环语句的循环体有条件语句,因此需要设置循环语句的amount=10;值,为0表示没有在[2sqnt (m)的数被整除,则m是素数;为根据规范形式2,数组元素6~11排列在第一列,指针1表示m不是素数。第4列i>=k+1是判断第二个循环的结果,*p1= [6,11] ,*p2= [15,10] 表示交换操作,将数组元素15~10不可省略。n%10==0仅仅设置输出格式,可选。对应排列在第4列。第-行的p1, p2表示指针初始值。p1++,准定义1循环语句的值p2--另起一行,表示指针的工作方法。循环语句用条件表达式在源程序数据分析与过程分析中,逻辑值{0,1} 表示循环表示,必须列出,如表3所示。语句的值,为1表示循环语句得到与目标相同的结果,为0表表3部分数组逆置的过程 分析和数据分析示没有得到目标结果。用循环语句的上下两个边界作为所在列的判断标志。操作数1双操作数操作操作数2循环停止的 条件(2) 每-一个程序变量m对应一个数据行。若只看数据行,PIpI<&array [5] +5当m=101时,有数据集合{m=101,1,0,1,0。PI=&array [5] P2=&array [14]1:规范形式1根据数据驱动的原则,将变量的全部值设置P1++p2-在第一列。变量的每-一个值有一个数据行,表示程序目标功能PI=&aray [6] p2=larray [13]| 14的- -次执行。数据行包括变量值、关键语句。数据行的值用数PI=array [7] p2-8aray [12]| 13据集合表示。程序目标功能的一次执行,用以实现编程的目标,可用数Pl=&aray [8] p2-=&aray [11]| 12据行标识。例如:求素数程序功能的- -次执行,能判断- -个数P=&array [9] p2-array [10] 1m是否符合素数的定义。11PI=&array [10] p2=&array [9](3)源程序数据分析与过程分析对条件语句的路径选择并不重视,重视的是程序目标功能的一次执行的完整表示,与现main)程序4简单选择排序有程序分析的条件语句路径分析不同。int al,jk,x;2.2程序数据是数组printf('Input 8 numbers: ");数组的操作有(1) 数组元素的交换,用在数组逆置运算、for(i=1;i<9;i++)简单选择排序等程序。(2) 数组遍历。(3) 有选择地对元素scanf("%d",&ali);printf(" ");用表达式赋值。for(i=1;i<8;++)规范形式2当程序数据是数组元素时,将数组元素构成{ k=i;第- -列。 若程序的操作是双操作数,则将数组元素分成两列,for(j=i+ 1中国煤化工另一列放在操作语句的右边,与第-列对应。/比较ali-MHCNM HG2014. 11电脑纳技巧与维护41)实用第一/智慧密集if(a[j]MAXSIZE) returm ERROR;16. Q.data[Q.tu]=(arow,col,templcoll);的一个值,因此遵守了一个数组元素只有一-个数据行, - -个数}/if据行标识程序目标功能的一次执行的原则。}//for arrow第一列的i表示比较次数,标识第- -层循环语句for (i=1;i<9;i++),而且是数组的下标。它的右边对应的输人数组元素,是每一次比较的驱动元素。在选择排序过程中,输人数组因交}//MultSMatrix换发生变更,第三列标识新的输人数组的元素a [i]。a [i] ~a稀疏矩阵的并行乘法算法关键是游标之间的关系,用3个[8]表示第二层循环语句的比较范围。k记录最小值的下标,表达式说明,如表5所示。第7列表示a问和a[k]交换,正确的a [k]保存在存储单元表5稀疏矩阵并行乘法的数据分析和过程分析a[i]中。矩阵M的行矩阵N的行计算线索四元组计算结果目标元素规范形式3在输出单元素的数组程序中,每一个数组元M行数组M.data [.]N.data [..4] (rowp.prow.w Clemp (co]Q.daa [1.].素对应- -个数据行,用数据行的一个项表示产生目标数据的主可.3). ( 1.1.1.1)(1-51)9.2)(.2.)"[2] =3*2+0 |[1]= (1.2.6)结构循环,而且循环中的全部数据元素排列在单个数据集中。(2].-1) (1] ,1)(23.2.2川=-1 [2] = (.1.-1)程序4的{k,a [k])} 表示第二层循环的数据集合,而第二[1] ,2)_(3.4.1,1)[2]=2*2 [31 = (3.2.4)层循环是选择排序程序的主结构循环。中国煤化工规范形式1.1数组的元素等价-个变量的值,当输入数组元brow=MYHCNMHG2014.11电脑体疆技巧与维护气实用第一/智慧密集} FRAME_ QUEUE ;定显存地址,如果已知显存地址,也可以将该地址直接作为写4.2播放器工作机制显存数据的起始地址来使用。播放器软件启动后,首先初始化各种数据结构,然后分别(2)控制区启动播放器任务和解码器任务。播放器任务和解码器任务通过点击“播放"按钮后,先获得视频文件的大小信息,再清信号量同步。空播放器的缓冲区,然后向解码器发送解码信号量。初始化工作包括:创建信号量,填充播放器数据结构,初点击“暂停”按钮后,将播放器状态设置为暂停状态,使始化帧队列,设置辅助时钟定时器等。播放器暂停向缓存输出帧图像,同时阻塞解码器解码。播放器任务的工作机制为:等待辅助时钟释放信号量,点击“停止”按钮后,将播放器状态设置为停止状态,然然后从帧队列中获取帧,并在屏幕上显示释放信号量给解后销毁播放器的帧缓冲区。码器。点击“快放”则减小向显卡缓存输出帧图像的时间间隔,4.3播放器界面点击“慢放”则增大向显卡缓存输出帧图像的时间间隔,点击播放器包括视频显示区和控制区。如图1所示。“恢复正常”按钮后,则进行正常播放。通过拖动“播放进度条”亮块,可以实现视频的定位播放。5结语通过将通用的移植MPEG4视频解码源码移植到VxWorks的方法实现了对Mpeg4视频的解码;通过C语言编程实现了播放器功能函数和数据结构的设计,并在VxWorks自带的WindMl的基础上,进一步编程完成视频播放器的界面设计;使用互斥信号量来编写同步程序实现Mpeg4解码器和视频播放器的协同工作。在本视频播放器的基础上进行扩展,通过较小改动就可将其应用与其他基于UNIX的操作系统上。图1播放器播放界面设计图(1)视频显示区参考文献考虑到VxWorks实时操作系统下WindMl图形库的局限[1] Wind River Systems Ine. WindMLSDK pg:pdf .2002.性,在播放器显示区设计中,采用将解码后的帧图像直接写显2] Wind River Systems Ine. WindMLDDK_ pg.pdf. 2002.存的方式来实现,该方法既节省了系统资源,又提高了视频播[3] 动态图像专家组. ISO-IEC- 14496-2, 1999.放程序的实时性。[4] 孔祥营,柏桂枝.嵌人式实时操作系统VxWorks及其开发要将解码后的图像放入显存中显示,首先要确定显存的起环境Tomado.中国电力出版社,2002.始地址。根据显卡型号,可以采用显存起始地址检测函数来确(收稿日期: 2014-02-10)女业县丝华华女业业姚业姚姚姚姚姐业姚业女业业业业与业奴业业处业业她驰业业业业业业姚姚业姚业姚姚(上接第43页)分析和数据分析读懂复杂程序,依据5个规范形式,构造程序表7图的层次优先遍 历的原子功能与程序原语数据的分析过程。原子功能程序原语1.建立邻接点队列(图的首结点、连通子图的首结点)1.1, 1.2. 1.3[1] 谭浩强. C程序设计[M] .清华大学出版社,1999.2.回潮(出队)2.1, 2.2[2]严蔚敏,吴伟民.数据结构(C 语言版) [M]. 清华大学3.扩展邻接点的索引结构(邻接点队列)3.1出版社,2007.3] 冯树樁,徐六通.程序设计方法学[M]. 浙江大学出版4结语社,1988.高级语言课程首先是掌握程序阅读的方法。用源程序过程(收稿日期: 2014-02-15)中国煤化工MYHCNM HG2014. 11电脑纳技巧与雄护与

论文截图
版权:如无特殊注明,文章转载自网络,侵权请联系cnmhg168#163.com删除!文件均为网友上传,仅供研究和学习使用,务必24小时内删除。