当前位置:文档之家› 结构化程序设计

结构化程序设计

用来描述软件的层次结构,图中的一个矩 形框代表一个模块,方框之间的连线表示 调用关系。层次图很适合在自顶向下设计 软件的过程中使用。
正文加 工系统
输入 输出 编辑 加标题 存储 检索 编目录 格式化Leabharlann 添加删除插入
修改
合并
列表
五、常用设计工具--程序流程图
是历史最悠久使用最广泛的描述软件设计的方法。 它的主要优点是对控制流程的描述很直观,便于初 学者掌握。
尽量避免名字中出现数字编号,如Value1,Value2 等,除 非逻辑上的确需要编号。
变量的名字应当使用“名 词”或者“形容词+名 词”。 例如:
float value; float oldValue; float newValue;
全局函数的名字应当使用 “动词”或者“动词+名词” (动宾词组)。 例如: DrawBox(); // 全局函数
lock_id>=unblocks))
block_id<unblocks))


分解复杂的表达式。C有很丰富的表达式语法结构和很丰 富的运算符,因此应该避免将一大堆东西塞进一个结构中。 比较:
软件工程的开发方法就是从时间角度对复杂的软件 问题进行分解,把软件漫长的生命周期依次分为若 干个阶段.
在每一个阶段结束之前都必须进行正式严格的技术 审查和管理复审,审查的一个主要标志就是每个阶 段都应该提交与所开发的软件完全一致的高质量的 文档资料。
四、结构化开发方法
在结构化开发中,编码只是软件开发的一个 很小的阶段,而且是处在实现阶段。
软件生命周期各阶段的主要任务
测试和调试常常被说成是一个回事,实际 上是测试阶段的不同任务。调试即排错, 是在已经知道程序有问题时要做的事情。 测试则是在认为程序能工作的情况下,为 发现问题而进行的一整套确定的系统化的 实验。
测试是为了发现BUG,调试是为了消除BUG
五、常用设计工具--层次图
回一个值外,还将隐含地改变变量的值。这类表达式有时 用起来很方便,但有时也会成为问题,因为变量的取值操 作和更新操作可能不是同时发生。
采用缩进程序结构,是使程序呈现出结构 清晰的最省力的方法。比较:
for (i=0;i<100;i++) { Int a=1; Int b=0; If a>1 a++; else if a=1 a=a--; else b++; }
被整除且商不等于1的数从A[ ]中剔除; } (4)/*输出A[ ]中所有没有被剔除的数 */
for (i = 2 ; i < = 100 ; i++ ) {4.1 若A[i]没有被剔除,则输出之; }
步骤三:将3.1,4.1进一步细化形成程序。
四、结构化开发方法
软件有自己的“生命周期”。一个软件从定义、开 发、使用和维护,直到最终被废弃,要经历一个漫 长的时期,通常把软件经历的这个漫长的时期称为 生命周期。
变量的名字
如果不得已需要全局变量,则使全局变量 加前缀g_(表示global)。
表达式和语句
同样,我们也应该以尽可能一目了然的形式写好表达式和 语句。
不要编写太复杂的复合表达式。 例如:i = a >= b && c < d && c + f <= g + h ; 不要把程序中的复合表达式与“真正的数学表达式”混淆。 例如:if (a < b < c) 当心副作用。像++这一类运算符具有副作用,它们除了返
(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[ ]中任意数整除,并将能
现实中存在许多命名约定或者本地习惯。常见的如:指针采 用以ptr结尾的变量名;全局变量用大写开头变量名;常量用 完全由大写拼写的变量名等。命名约定能使代码更易理解。
变量的名字
例如Windows 应用程序的标识符通常采用“大小写”混 排的方式,如AddChild。
而Unix 应用程序的标识符通常采用“小写加下划线”的 方式,如add_child
三、其它说明
教材:本课程是实验课程,主要以实验为 主。
综合每个实验考核成绩(80%),平时的 考勤情况(20%)等,作为期末的成绩, 成绩用五级制。
从三个方面考核每个实验的成绩:功能完 成情况、实验报告以及程序风格、界面设 计以及操作方便性。
四、结构化开发方法
在60年代计算机发展初期,产生了一堆问题:程 序质量低下,错误频出,进度延误,费用剧增……。 这些问题导致了“软件危机”。
一、本课程的教学目的
结构化程序设计和面向对象程序设计是程 序设计的两种典型的思想和方法。目前高 校开设的程序设计课程也基本据此划分为 两大系列。
本课程以C语言为工具,通过布置一些课题, 进行结构化程序设计的综合训练,该课程 是计算机专业的一门实验课,通过该课程 的学习,
达到以下目的:
课程目的
合计
内容
结构化程序方法的开发流程
管理系统的开发 游戏程序的开发 筛选的算法设计技术 归纳的算法设计技术 分治的算法设计技术 贪心算法设计技术 综合程序开发 总结
讲授 (学时)
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
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)||(
在1968年,一群程序员、计算机科学家与工业界 人士聚集一起共商对策。通过借鉴传统工业的成功 做法,他们主张通过工程化的方法开发软件来解决 软件危机,并冠以“软件工程”这一术语。 软件工程主要讲述软件开发的道理,基本上是软 件实践者的成功经验和失败教训的总结。
四、结构化开发方法
结构化开发方法是一种设计程序的技术, 采用自顶向下逐步求精的设计方法和单入 口单出口的顺序、选择和循环三种基本控 制结构。 它提出的原则可归纳为32字:“自顶向下, 逐步细化;清晰第一,效率第二;书写规 范,缩进格式;基本结构,组合而成。”
多分支选择结构
当条件成立时 块 当型循环

直到条件成立时 直到型循环
伪代码
图形工具表示设计比较直观,但画起来比较费劲, 所以描述设计还可以使用伪代码这个常用的语言 工具。伪代码是一种“混合”语言,它使用一种 语言——通常是某种自然语言的词汇,同时却使 用某种结构化程序设计的语法。这样,它具有严 格的关键字外部语法,而表示实际操作和条件的 内部语法又是灵活自由的,书写方便,也比较好 懂。
变量的名字
一个名字应该是非形式的、简练的、易记忆的,若可能的话, 最好是能够拼读的。因此其名字应具有足够的说明性,以便 使读者能够记住它们是干什么的。给每个全局变量声明附一 个简短的注释也是非常有帮助的。
按常规方式使用的局部变量可采用极短的名字,如用i、j作 为循环变量,p、q作为指针,s、t表示字符串等。
1.在软件工程生命周期开发方法的指导下, 深入理解和真正掌握自顶向下、逐步求精 的结构化程序设计方法;
2. 掌握良好的程序设计编码风格; 3.学习常用的算法设计的技术; 4.进一步提高学生的程序调试能力; 5.提高学生的程序编程兴趣。
二、课时的安排
序号
1
2 3 4 5 6 7 8 9
四、结构化开发方法
例如设计房屋就采用了这种方法,先进行 整体规划,然后确定建筑物的方案,再进 行各部分的设计,最后进行门窗、楼道等 的细节设计。
例:要求用筛选法求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。
该缩进不缩进,所有的代码都写在同一列,行一 行之间没有空行
基本没有保护性的代码 基本上没有注释
素数; (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 ;
起止端点
数据
处理
准备或预处理 预先定义的处理
条件判断
循环上界限
循环下界限
文档
虚线
省略符
相关主题