收藏 分享(赏)

程序设计实践第1章.ppt

上传人:dzzj200808 文档编号:5750921 上传时间:2019-03-15 格式:PPT 页数:40 大小:389.50KB
下载 相关 举报
程序设计实践第1章.ppt_第1页
第1页 / 共40页
程序设计实践第1章.ppt_第2页
第2页 / 共40页
程序设计实践第1章.ppt_第3页
第3页 / 共40页
程序设计实践第1章.ppt_第4页
第4页 / 共40页
程序设计实践第1章.ppt_第5页
第5页 / 共40页
点击查看更多>>
资源描述

1、第1章 大型程序的开发方法,软件工程开发方法的介绍 “扫雷”案例的讲解 开发方法的实践要求,第1章 大型程序的开发方法,软件工程开发方法的介绍,生命周期方法学:从时间角度对软件开发和维护的复杂问题进行分解,把软件生命的漫长周期依次划分为若干个阶段,每个阶段有相对独立的任务,然后逐步完成每个阶段的任务。前一个阶段任务的完成是开始进行后一个阶段工作的前提和基础,而后一阶段任务的完成通常是使前一阶段提出的解法更进一步具体化,加进了更多的实现细节。,第1章 大型程序的开发方法,软件工程开发方法的介绍:生命周期方法学,软件生命周期每个阶段及其解决的关键问题,第1章 大型程序的开发方法,瀑布模型,软件工程

2、开发方法的介绍:生命周期方法学,第1章 大型程序的开发方法,软件工程开发方法的介绍,结构化程序设计方法:是一种设计程序的技术,采用自顶向下逐步求精的设计方法和单入口单出口的顺序、选择和循环三种基本控制结构。它提出的原则可归纳为32字:“自顶向下,逐步细化;清晰第一,效率第二;书写规范,缩进格式;基本结构,组合而成。”,第1章 大型程序的开发方法,软件工程开发方法的介绍:结构化程序设计方法,某学院为准备参加网络工程师认证的人员开办了相应的培训课程。当首批培训人员参加了认证考试后,该学院自然想知道这些学生考得如何,以便调整教学方案和收费标准。现在需要编写一个统计考试结果的程序,能够显示出通过和没有

3、通过的人数,并且如果通过人数不低于总人数的70%,显示提高学费的建议。已知参加考试的人员有500名,并且已经在通过者的名字旁边标注了1,在未通过者的名字旁标注了2。,应用实例,问题描述,第1章 大型程序的开发方法,软件工程开发方法的介绍:结构化程序设计方法,程序必须要处理500个应试者的考试结果,所以要使用循环; 每个考试结果都是一个数,即1或2。程序每次读取一个结果后,必须确定该数是1还是2; 使用两个计数器。一个用于计算通过考试的人数,另一个用于计算没有通过的人数; 程序处理完所有结果后,必须判断是否有70%以上的人员通过了认证考试。,应用实例,问题分析,第1章 大型程序的开发方法,软件工

4、程开发方法的介绍:结构化程序设计方法,分析认证考试的结果并决定培训费是否提高,应用实例,问题的顶层表示,第1章 大型程序的开发方法,软件工程开发方法的介绍:结构化程序设计方法,初始化变量; 输入500个考试结果,统计通过和未通过的人数; 打印统计结果,并决定培训费是否提高。,应用实例,第一次求精结果,第1章 大型程序的开发方法,软件工程开发方法的介绍:结构化程序设计方法,“初始化变量”将变量passes初始化为0 将变量failures初始化为0 将变量counter初始化为1,应用实例,第二次求精的结果,第1章 大型程序的开发方法,软件工程开发方法的介绍:结构化程序设计方法,“输入500个考

5、试结果,统计通过和未通过的人数 ”While人员计数器counter小于等于500 输入下一个考试结果至变量resultIf此结果是通过变量passes加1Else变量failures加1人员计数器counter加1,应用实例,第二次求精的结果,第1章 大型程序的开发方法,软件工程开发方法的介绍:结构化程序设计方法,“打印统计结果,并决定培训费是否提高”打印通过认证的人数打印未通过认证的人数IF变量 passes的值除500大于等于0.7打印“提高培训费”,应用实例,第二次求精的结果,第1章 大型程序的开发方法,软件工程开发方法的介绍:结构化程序设计方法,求精结果 源程序,第1章 大型程序的开

6、发方法,软件工程开发方法的介绍,三种描述设计的图形工具:层 次 图用来描述软件层次结构程序流程图是历史最悠久、使用最广泛的描述软件设计的方法 盒 图是一种很好的支持结构化程序设计思想的图形工具,第1章 大型程序的开发方法,软件工程开发方法的介绍:描述设计的图形工具,应用实例,正文加工系统的层次图,第1章 大型程序的开发方法,软件工程开发方法的介绍:描述设计的图形工具,应用实例,程序流程图 相应的盒图,第1章 大型程序的开发方法,软件工程开发方法的介绍,编码时注意的问题:全局变量应该“有限制地使用全局变量”。使用全局变量过多,会降低程序的清晰性;降低函数的通用性;滥用全局变量会造成程序的混乱函

7、数“工欲善其事,必先利其器”。我们在编写大型程序时,要善于利用已有的函数,以减少重复编写程序段的工作量,第1章 大型程序的开发方法,软件工程开发方法的介绍,编码时注意的问题: 风格全局变量使用具有说明性的名字,局部变量用短名字表达式和语句采用一致的缩进风格、使用表达式的自然形式、分解复杂的表达式、当心具有副作用的运算符神秘的数最好要命名,利用语言去计算对象的大小除了定义符号常量外,最好避免使用宏 注释时要注意不要大谈明显的东西,要给函数和全局数据加注释,第1章 大型程序的开发方法,软件工程开发方法的介绍,测试和调试方法: 测试是在认为程序能工作的情况下,为发现其问题而进行的一整套确定的系统化的

8、实验 白盒测试相当于把程序看成装在一个透明的白盒子里,也就是完全了解程序的结构和处理方法。它根据程序内部的逻辑来设计测试用例,检查程序中的逻辑路径是否都按预定的要求正确地工作。常用的技术包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖、路径覆盖等。,第1章 大型程序的开发方法,软件工程开发方法的介绍,测试和调试方法: 测试是在认为程序能工作的情况下,为发现其问题而进行的一整套确定的系统化的实验 黑盒测试相当于把程序看成一个黑盒子,不考虑内部结构和处理过程。它根据规定的功能来设计测试用例,检查程序的功能是否符合要求。常用的技术包括等价类划分和边界值分析等。,第1章 大型程序的开发方

9、法,软件工程开发方法的介绍,测试和调试方法: 调试(即排错)是在已知程序有问题时要做的事情 寻找熟悉的模式检查最近的改动不要两次犯同样的错误现在排除,而不是以后 把你的代码解释给别人分而治之,搜索局部化,第1章 大型程序的开发方法,软件工程开发方法的介绍 “扫雷”案例的讲解 开发方法的实践要求,第1章 大型程序的开发方法,“扫雷”案例:选题,第1章 大型程序的开发方法,“扫雷”案例:分析,Windows扫雷游戏的游戏规则 : 在“游戏”菜单上,单击“开局”,出现的游戏界面中包括地雷计数器窗口、计时器窗口和雷区。开局后,单击雷区中的任何一个方块,便启动计时器。每标记一个地雷,地雷计数器减1; 用

10、鼠标左键单击某个方块,可挖开它。若所揭方块下有雷,则踩雷,此时所有含地雷的块都标记,这局游戏失败;如果方块上出现数字,它代表在它周围的八个方块中共有多少颗地雷; 用鼠标右键单击某个方块,则标记此块下埋着地雷(实际上可能是误标),显示为。每标记一个地雷,地雷计数器减1; 用鼠标右键击打某个方块两次,则在某块上面标一个问号(?),意味着没有把握判定它是否有雷。标记为?的块可在恰当的时候再击打鼠标右键两次或单击左键,将其标记为地雷或挖开; 如果某个数字方块周围的地雷全都标记完,可以同时单击鼠标左右键,将其剩下的方块挖开。如果挨着这个方块的地雷没有全部标记完,则未挖开的方块将闪烁。,第1章 大型程序的

11、开发方法,“扫雷”案例:分析,主要功能: 规则1)隐含初始化新游戏的开局功能; 规则2)隐含的挖雷功能; 规则3)对应的标记地雷功能; 规则4)对应的标记疑问功能; 规则5)的自动挖开功能。 操作手段:鼠标,第1章 大型程序的开发方法,“扫雷”案例:设计,第1章 大型程序的开发方法,“扫雷”案例:设计,自顶向下逐步求精: 继续分析已有功能,精化出所有子功能,确定 模块间接口; 描述精化后每个模块的处理过程; 确定主要的数据及其数据结构; 确定输入输出数据的内外部形式; 界面的设计,第1章 大型程序的开发方法,“扫雷”案例:设计界面,第1章 大型程序的开发方法,“扫雷”案例:设计操作方式,采用键

12、盘: 上,下,左,右键用来移动光标的位置; 回车或者空格键用来挖开光标当前指向的一个方块; F, f 标记当前光标指向的方块有地雷; Q, q 在光标指向方块打一个问号,表示可能有地雷; A , a 自动挖开光标周围的方块; ESC 退出游戏,第1章 大型程序的开发方法,“扫雷”案例:设计主要数据,雷区界面数据 # define ROW 16 /* 表示整个雷区的行数*/ # define COL 16 /* 表示整个雷区的列数*/ # define STARTX 50 /* 表示雷区在屏幕上的起始x坐标*/ # define STARTY 50 /* 表示雷区在屏幕上的起始y坐标*/ # d

13、efine SIZEX 20 /* 表示一个方块的长度*/ # define SIZEY 20 /* 表示一个方块的宽度*/,第1章 大型程序的开发方法,“扫雷”案例:设计主要数据,雷区内部数据 int totalMine; /* 整个雷区所含的地雷总数*/ int tableROWCOL; /* 数组table的每个元素值记录了雷区对应方块是否有雷:1有雷,0无雷*/ int numROWCOL; /* 数组num的每个元素值记录了雷区对应方块周围有多少个地雷*/ int flagROWCOL; /* 数组flag的每个元素值记录了雷区对应方块当前的状态*/,第1章 大型程序的开发方法,“扫

14、雷”案例:设计主要数据,方块(i,j)的状态取值 #define UNFLAG 0 /* 表示该方块还没有被打开或者标记*/ #define FLAGED 1 /* 标记该方块有地雷*/ #define QUESTION 20 /* 表示该方块可能有地雷*/ #define EXPLOD 30 /* 踩到地雷爆炸了*/ #define OPEN 40 /* 一个没有地雷的方块被打开*/,第1章 大型程序的开发方法,“扫雷”案例:设计主要数据,光标当前位置数据 int pi,pj; /* 记录光标的当前位置,初始时光标在(0,0)*/ int di8=-1,-1,0,1,1,1,0,-1; in

15、t dj8=0,1,1,1,0,-1,-1,-1; /*相对于当前方块而言,di8和dj8分别表示了它周围八个方块的行和列坐标偏移量。它们与当前光标坐标配合使用,可表示周围的方块,如(-1+pi,0+pj)表示当前方块的正上方方块的坐标。*/,第1章 大型程序的开发方法,“扫雷”案例:设计主要数据,游戏状态数据 int gameRes; /*记录游戏结束的结果状态,是输出数据的内部形式。值为0表示按esc键退出游戏;-1 表示游戏失败;1表示游戏胜利。*/,第1章 大型程序的开发方法,“扫雷”案例:设计主要数据,功能键的键值 /*上,下,左,右键*/ #define UP 0x4800 #de

16、fine DOWN 0x5000 #define LEFT 0x4b00 #define RIGHT 0x4d00 /*回车、空格键*/ #define ENTER 0x1c0d #define SPACE 0x3920 /*F, f */ #define UPPERF 0x2146 #define LOWERF 0x2166,/*Q, q*/ #define UPPERQ 0x1051 #define LOWERQ 0x1071 /*A , a*/ #define UPPERA 0x1e41 #define LOWERA 0x1e61 /*ESC*/ #define ESC 0x011b,第

17、1章 大型程序的开发方法,“扫雷”案例:设计功能求精,第1步:写出主程序的基本框架,确定各个内部模块的函数名和参数;,第2步:对“图形初始化”进一步求精;,第3步:对“初始化新游戏”进一步求精;,第4步:对“读入操作信息”进一步求精;,第5步:对“对其他key值进行判断处理”进一步求精;,第6步:对判断游戏是否胜利进一步求精。,第1章 大型程序的开发方法,软件工程开发方法的介绍 “扫雷”案例的讲解 开发方法的实践要求,第1章 大型程序的开发方法,实践要求,大型程序设计综合实验不仅是对程序设计能力的综合锻炼,更是对团队合作、软件开发与项目管理过程的训练。要求综合实验以团队合作形式,根据选题的难度

18、,每组2-3人。在确定题目后,确定小组长及每个人的分工,并制定项目开发进度表; 大型程序设计综合实验按照软件项目的开发过程进行。分以下几个阶段进行:开题、系统设计、系统编码实现、系统测试、系统评价与验收。,第1章 大型程序的开发方法,实践要求,递交的报告:“中期报告”和“总结报告”。前者的内容主要包括问题分析的陈述和系统初步设计的方案,以及可能的难点问题与关键技术等;后者是对整个开发进行全面的总结,内容包括系统功能说明、使用说明、程序结构说明、系统设计难点及解决方法、小组人员工作分工情况等。,第1章 大型程序的开发方法,实践要求,评价标准: 从四个方面考核一组程序设计综合实验的成绩:文档及程序风格(20%)、界面设计及操作方便性(20%)、功能完成情况及编程工作量(40%)、编程难度和程序亮点(20%); 若大型作业的选题新颖或实现了额外的特色功能,应予以适当加分。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 中等教育 > 职业教育

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报