结构化程序设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

四、结构化开发方法
例如设计房屋就采用了这种方法,先进行 整体规划,然后确定建筑物的方案,再进 行各部分的设计,最后进行门窗、楼道等 的细节设计。
例:要求用筛选法求100 以内的素数(筛 选法为:从2到100中去掉2,3,…,9,10 的倍数,剩下的就是100以内的素数)。
步骤一:
(1)建立2到100的数组A[ ],其中A[i] = i; (2)建立2到10的素数表B[ ],其中存放2到10以内的
伪代码
If 九点以前 do私人事务;
else 9点到18点 工作
else 下班;
六、编码应注意的问题
代码的问题
编码不规范
变量名和函数名经常取单个字母,M,N等等。 变量名字大小写不统一
StuNum,stu_num。
该缩进不缩进,所有的代码都写在同一列,行一 行之间没有空行
基本没有保护性的代码 基本上没有注释
尽量避免名字中出现数字编号,如Value1,Value2 等,除 非逻辑上的确需要编号。
变量的名字应当使用“名 词”或者“形容词+名 词”。 例如:
float value; float oldValue; float newValue;
全局函数的名字应当使用 “动词”或者“动词+名词” (动宾词组)。 例如: DrawBox(); // 全局函数
三、其它说明
教材:本课程是实验课程,主要以实验为 主。
综合每个实验考核成绩(80%),平时的 考勤情况(20%)等,作为期末的成绩, 成绩用五级制。
从三个方面考核每个实验的成绩:功能完 成情况、实验报告以及程序风格、界面设 计以及操作方便性。
四、结构化开发方法
在60年代计算机发展初期,产生了一堆问题:程 序质量低下,错误频出,进度延误,费用剧增……。 这些问题导致了“软件危机”。
合计
内容
结构化程序方法的开发流程
管理系统的开发 游戏程序的开发 筛选的算法设计技术 归纳的算法设计技术 分治的算法设计技术 贪心算法设计技术 综合程序开发 总结
讲授 (学时)
1.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 2 7
实验
3.5 3.5 3.5 3.5 3.5 3.5
4
25
全局变量
另外使用全局变量过多,会降低程序的清 晰性,人们往往难以清楚地判断出每个瞬 间每个全局变量的值。在各个函数执行时 都可能改变全局变量的值,程序容易出错。
对于大型程序,模块多,常常由不同的人 来完成不同的模块,如果全局变量随意使 用,更容易出现问题,造成程序的混乱。 因此,更应该限制使用全局变量。
起止端点
数据
处理
准备或预处理 预先定义的处理
条件判断
循环上界限
循环下界限
文档
虚线
省略符
并行方式
注释
流线
五、常用设计工具--盒图
是一种很好的支持结构化程序设计思想的图形工具,也称 为N-S图。
块1 块2
块3
块4 顺序结构
条件
T
F
块1 块2
选择结构
T Case I=1,2,3 F 块1 块2 块3
用来描述软件的层次结构,图中的一个矩 形框代表一个模块,方框之间的连线表示 调用关系。层次图很适合在自顶向下设计 软件的过程中使用。
正文加 工系统
输入 输出 编辑 加标题 存储 检索 编目录 格式化
添加
删除
插入
修改
合并
列表
五、ห้องสมุดไป่ตู้用设计工具--程序流程图
是历史最悠久使用最广泛的描述软件设计的方法。 它的主要优点是对控制流程的描述很直观,便于初 学者掌握。
变量的名字
一个名字应该是非形式的、简练的、易记忆的,若可能的话, 最好是能够拼读的。因此其名字应具有足够的说明性,以便 使读者能够记住它们是干什么的。给每个全局变量声明附一 个简短的注释也是非常有帮助的。
按常规方式使用的局部变量可采用极短的名字,如用i、j作 为循环变量,p、q作为指针,s、t表示字符串等。
(2) /* 建立2到10的素数表B[ ],其中存放2到10以内 的素数 */ B[1]=2 ; B[2]=3 ; B[3]=5 ; B[4]=7 ;
步骤二:前述框架中每一个加工语句 都可进一步细化成一个循环语句。
(3)/* 若A[i]=i 是B[ ]中的任一数的倍数,则剔除A[i] */
for (i = 2 ; i < =100 ; i++ ) {3.1 检查A[i ] 能否被B[ ]中任意数整除,并将能
编程技术方面
不会定位错误,也就是说出了错,束手无 策,不会调试,大部分同学不会用单步运 行或者打调试信息来确定错误。犯的是什 么错不是最重要的,重要的是,你是怎么 找到这个错误。
编程技术方面
不会分析题目,每拿到一个题目,无从下 手。
知识点不会融会贯通,触类旁通。
全局变量
全局变量的作用增加了函数间数据联系的 渠道。但是全局变量使函数的通用性降低了, 因为函数在执行时要依赖于其所在的全局变 量。如果将一个函数移到另一个文件中,还 要将有关的全局变量以及其值一起移过去。 但若该全局变量与其它文件的全局变量同名 时,就会出现问题,降低了程序的可靠性和 通用性。
结构化的开发流程可以用如图的瀑布模型来 模拟:
瀑布模型 概要设计:确定系统设计方 问题定义:确定系统的目标、
统3而件开案软些详体个要软计行测要原这至修录0综计 那 的 发,件模细地模的件(软%的试修有是升改下合~表些测步软由块设实块算实编件早阶改程就级步来4测明高试骤件哪之计现,法现码运0期段。序需。骤,%试,可所总的些间:系确和阶)行,没而可要每都作的阶软靠花和体模的统定数描段和、用有随能对次应为工段件性的的系块相。实据述模:维户发着已程维详文作:3开、时结组互详现结应块进护可现时满序护细档到量大发高间构成关细模构该测行:能的间足进的准保5花量组 安 更。以系设块。如试程倍在会错的不行要确存在的织全是确及。计所何。序。程发误推了修求地。测资将性其定这每需具设序现,移需改及记试料软它运在需,要甚上,。规段可法值开的可题解可究需务而么功准常明型防需模行律得发浪行,决行:求不是”能确用算。止求要经技法解性等开,费性而以性分是准这,、数法系不和完济术律决研方发避,研是及研析具确个对清据描统相基成可可可的究面,免并究确是究体回问目晰流述的符:本的行行行问分及人进的定否包的答题标、图表设的:需任工性性性题析时力行目问能括解“,系具、示计后从求务作是确建、方的题够四决系即统体数系与果经分或就什定议物案不是解个客统确提的据统用。济析者是么系停力选是否决方户必定出要字的户、阶说明”统止、择解值。面的须系完求典逻的技段这确。是项时。决得的问做统整。和辑实术的个“否目间问去研题什的、通简模际、任阶要, 方案的选择
被整除且商不等于1的数从A[ ]中剔除; } (4)/*输出A[ ]中所有没有被剔除的数 */
for (i = 2 ; i < = 100 ; i++ ) {4.1 若A[i]没有被剔除,则输出之; }
步骤三:将3.1,4.1进一步细化形成程序。
四、结构化开发方法
软件有自己的“生命周期”。一个软件从定义、开 发、使用和维护,直到最终被废弃,要经历一个漫 长的时期,通常把软件经历的这个漫长的时期称为 生命周期。
软件生命周期各阶段的主要任务
测试和调试常常被说成是一个回事,实际 上是测试阶段的不同任务。调试即排错, 是在已经知道程序有问题时要做的事情。 测试则是在认为程序能工作的情况下,为 发现问题而进行的一整套确定的系统化的 实验。
测试是为了发现BUG,调试是为了消除BUG
五、常用设计工具--层次图
现实中存在许多命名约定或者本地习惯。常见的如:指针采 用以ptr结尾的变量名;全局变量用大写开头变量名;常量用 完全由大写拼写的变量名等。命名约定能使代码更易理解。
变量的名字
例如Windows 应用程序的标识符通常采用“大小写”混 排的方式,如AddChild。
而Unix 应用程序的标识符通常采用“小写加下划线”的 方式,如add_child
软件工程的开发方法就是从时间角度对复杂的软件 问题进行分解,把软件漫长的生命周期依次分为若 干个阶段.
在每一个阶段结束之前都必须进行正式严格的技术 审查和管理复审,审查的一个主要标志就是每个阶 段都应该提交与所开发的软件完全一致的高质量的 文档资料。
四、结构化开发方法
在结构化开发中,编码只是软件开发的一个 很小的阶段,而且是处在实现阶段。
变量的名字
如果不得已需要全局变量,则使全局变量 加前缀g_(表示global)。
表达式和语句
同样,我们也应该以尽可能一目了然的形式写好表达式和 语句。
不要编写太复杂的复合表达式。 例如:i = a >= b && c < d && c + f <= g + h ; 不要把程序中的复合表达式与“真正的数学表达式”混淆。 例如:if (a < b < c) 当心副作用。像++这一类运算符具有副作用,它们除了返
1.在软件工程生命周期开发方法的指导下, 深入理解和真正掌握自顶向下、逐步求精 的结构化程序设计方法;
2. 掌握良好的程序设计编码风格; 3.学习常用的算法设计的技术; 4.进一步提高学生的程序调试能力; 5.提高学生的程序编程兴趣。
二、课时的安排
序号
1
2 3 4 5 6 7 8 9
在1968年,一群程序员、计算机科学家与工业界 人士聚集一起共商对策。通过借鉴传统工业的成功 做法,他们主张通过工程化的方法开发软件来解决 软件危机,并冠以“软件工程”这一术语。 软件工程主要讲述软件开发的道理,基本上是软 件实践者的成功经验和失败教训的总结。
四、结构化开发方法
结构化开发方法是一种设计程序的技术, 采用自顶向下逐步求精的设计方法和单入 口单出口的顺序、选择和循环三种基本控 制结构。 它提出的原则可归纳为32字:“自顶向下, 逐步细化;清晰第一,效率第二;书写规 范,缩进格式;基本结构,组合而成。”
回一个值外,还将隐含地改变变量的值。这类表达式有时 用起来很方便,但有时也会成为问题,因为变量的取值操 作和更新操作可能不是同时发生。
采用缩进程序结构,是使程序呈现出结构 清晰的最省力的方法。比较:
for (i=0;i<100;i++) { Int a=1; Int b=0; If a>1 a++; else if a=1 a=a--; else b++; }
for (i=0;i<100;i++) {
Int a=1; Int b=0; if a>1
a++; else if a=1
a=a+b; else
b++; }
使用表达式的自然形式。否定运算的条件 表达式比较难理解,比较:
if(!(block_id<actblks)||!(b if((block_id>=actblks)||(
多分支选择结构
当条件成立时 块 当型循环

直到条件成立时 直到型循环
伪代码
图形工具表示设计比较直观,但画起来比较费劲, 所以描述设计还可以使用伪代码这个常用的语言 工具。伪代码是一种“混合”语言,它使用一种 语言——通常是某种自然语言的词汇,同时却使 用某种结构化程序设计的语法。这样,它具有严 格的关键字外部语法,而表示实际操作和条件的 内部语法又是灵活自由的,书写方便,也比较好 懂。
lock_id>=unblocks))
block_id<unblocks))


分解复杂的表达式。C有很丰富的表达式语法结构和很丰 富的运算符,因此应该避免将一大堆东西塞进一个结构中。 比较:
一、本课程的教学目的
结构化程序设计和面向对象程序设计是程 序设计的两种典型的思想和方法。目前高 校开设的程序设计课程也基本据此划分为 两大系列。
本课程以C语言为工具,通过布置一些课题, 进行结构化程序设计的综合训练,该课程 是计算机专业的一门实验课,通过该课程 的学习,
达到以下目的:
课程目的
素数; (3) A[i]=i 是B[ ]中的任一数的倍数,则剔除A[i]; (4)输出A[ ]中所没有被剔除的数;
步骤二:前述框架中每一个加工语句 都可进一步细化成一个循环语句。
(1) /* 建立2到100的数组A[ ],其中A[i] =i */ for (i=2 ; i < = 100 ;i++ ) A[i] = i ;
相关文档
最新文档