结构化程序设计综合训练.ppt
《结构化程序设计综合训练.ppt》由会员分享,可在线阅读,更多相关《结构化程序设计综合训练.ppt(65页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、结构化程序设计综合训练结构化程序设计综合训练一、本课程的教学目的 结构化程序设计和面向对象程序设计是程序设计的两种典型结构化程序设计和面向对象程序设计是程序设计的两种典型的思想和方法。目前高校开设的程序设计课程也基本据此划的思想和方法。目前高校开设的程序设计课程也基本据此划分为两大系列。分为两大系列。C C语言以其支持结构化的设计和固有的语言特色语言以其支持结构化的设计和固有的语言特色兼具高兼具高级语言和低级语言的功能、丰富灵活的控制和数据结构、简级语言和低级语言的功能、丰富灵活的控制和数据结构、简洁而高效的语句表达、清晰的程序结构和良好的可移植性,洁而高效的语句表达、清晰的程序结构和良好的可
2、移植性,保持着旺盛的生命力,广泛应用于系统软件和应用软件的开保持着旺盛的生命力,广泛应用于系统软件和应用软件的开发中。发中。因此,本课程以因此,本课程以C C语言为工具,通过布置一些程序,进行结语言为工具,通过布置一些程序,进行结构化程序化设计的综合训练,该课程是计算机专业的一门实构化程序化设计的综合训练,该课程是计算机专业的一门实验课,通过该课程的学习,验课,通过该课程的学习,达到以下目的:达到以下目的:2 2课程目的课程目的1在软件工程生命周期开发方法的指导下,深入理解和真正掌握自顶向下、逐步求精的结构化程序设计方法;2.掌握良好的程序设计编码风格;3学习常用的算法设计的技术;4进一步提高
3、学生的程序调试能力;5提高学生的程序编程兴趣。3 3二、教材:本课程是实验课程,主要以学生三性实验为本课程是实验课程,主要以学生三性实验为主。主。实验指导书:实验指导书:ftp:/ 5班班6班班 7班班8班班4 4三、课时的安排序号内 容讲授(学时)实验1结构化程序方法的开发流程1.52管理系统的开发0.53.53游戏程序的开发0.53.54筛选的算法设计技术0.53.55归纳的算法设计技术0.53.56分治的算法设计技术0.53.57最优的算法设计技术0.53.58综合程序开发0.549总结2合计7255 5四、其它说明综合每个实验考核成绩(综合每个实验考核成绩(综合每个实验考核成绩(综合每
4、个实验考核成绩(80%80%),平时的考勤情),平时的考勤情),平时的考勤情),平时的考勤情况(况(况(况(20%20%)等,作为期末的成绩,成绩用五级制。)等,作为期末的成绩,成绩用五级制。)等,作为期末的成绩,成绩用五级制。)等,作为期末的成绩,成绩用五级制。从三个方面考核每个实验的成绩:功能完成情况、从三个方面考核每个实验的成绩:功能完成情况、从三个方面考核每个实验的成绩:功能完成情况、从三个方面考核每个实验的成绩:功能完成情况、实验报告以及程序风格、界面设计以及操作方便实验报告以及程序风格、界面设计以及操作方便实验报告以及程序风格、界面设计以及操作方便实验报告以及程序风格、界面设计以及
5、操作方便性。性。性。性。6 6结构化的开发方法 主要讲述结构化软件开发方法和流程,重点在于自顶向下、逐步求精的结构化程序设计方法和良好的程序设计编码风格,这些是一个优秀的软件开发人员应该具备的基本素质。具备这样的基本素质,无论采用何种程序设计语言,都能够写出结构清晰、易读易懂的好程序。1、结构化开发方法2、结构化方法的开发流程7 71、结构化开发方法 软件开发历史上的诸多惨痛教训使人们逐渐认识到,软件不软件开发历史上的诸多惨痛教训使人们逐渐认识到,软件不等于源代码,大型软件系统的开发与其他工程项目如建造桥等于源代码,大型软件系统的开发与其他工程项目如建造桥梁、制造飞机、轮船等一样,必须有计划进
6、行。梁、制造飞机、轮船等一样,必须有计划进行。软件工程正是随着软件的发展而诞生的一门学科,以提高软软件工程正是随着软件的发展而诞生的一门学科,以提高软件质量、降低开发成本为目的。软件工程将软件的开发视为件质量、降低开发成本为目的。软件工程将软件的开发视为一项工程,借鉴传统工程的原则和方法,将正确的管理方法一项工程,借鉴传统工程的原则和方法,将正确的管理方法和当前能够得到的最好的开发技术结合起来。和当前能够得到的最好的开发技术结合起来。软件工程采用的方法有两种:结构化开发方法和面向对象的软件工程采用的方法有两种:结构化开发方法和面向对象的开发方法,本课程主要介绍结构化开发方法。开发方法,本课程主
7、要介绍结构化开发方法。8 8软件有自己的“生命周期”。一个软件从定义、开发、使用和维护,直到最终被废弃,要经历一个漫长的时期,这就如同一个人要经历胎儿、儿童、青年、中年、老年,直到最终死亡的漫长时期一样。通常把软件经历的这个漫长的时期成为生命周期。9 9 人类在解决复杂问题时普遍采用的一个策略就是人类在解决复杂问题时普遍采用的一个策略就是“各个击破各个击破”,也就是对问题进行分解然后再分别解决各个子问题。,也就是对问题进行分解然后再分别解决各个子问题。结构化的开发方法就是从时间角度对复杂的软件问题进行分结构化的开发方法就是从时间角度对复杂的软件问题进行分解,把软件漫长的生命周期依次分为若干个阶
8、段,每个阶段解,把软件漫长的生命周期依次分为若干个阶段,每个阶段有独立的任务,然后逐步完成每个阶段的任务。前一个阶段有独立的任务,然后逐步完成每个阶段的任务。前一个阶段任务的完成是进行后一个阶段工作的前提和基础,而后一个任务的完成是进行后一个阶段工作的前提和基础,而后一个阶段任务的完成通常使前一个阶段提出的解法更进一步具体阶段任务的完成通常使前一个阶段提出的解法更进一步具体化,增加了更多的实现细节。在每一个阶段结束之前都必须化,增加了更多的实现细节。在每一个阶段结束之前都必须进行正式严格的技术审查和管理复审,若审查通不过,则必进行正式严格的技术审查和管理复审,若审查通不过,则必须进行必要的返工
9、,返工后还要进行审查。审查的一个主要须进行必要的返工,返工后还要进行审查。审查的一个主要标志就是每个阶段都应该提交与所开发的软件完全一致的高标志就是每个阶段都应该提交与所开发的软件完全一致的高质量的文档资料,从而保证在软件开发工程结束时有一个完质量的文档资料,从而保证在软件开发工程结束时有一个完整准确的软件配置交付使用。文档不仅是前后阶段的通信工整准确的软件配置交付使用。文档不仅是前后阶段的通信工具,而且是软件交付使用后进行维护的依据。具,而且是软件交付使用后进行维护的依据。采用结构化的开发方法,使软件开发的全过程以一种有条不采用结构化的开发方法,使软件开发的全过程以一种有条不紊的方式进行,保
10、证了软件的质量,特别是提高了软件的可紊的方式进行,保证了软件的质量,特别是提高了软件的可维护性。维护性。10102、结构化方法的开发流程 在结构化开发中,编码只是软件开发的一个很小的阶段,而在结构化开发中,编码只是软件开发的一个很小的阶段,而且是处在实现阶段。对于且是处在实现阶段。对于c c语言的初学者,由于没有正式接语言的初学者,由于没有正式接受系统化的开发方法的指导,往往会形成一个错误地认识:受系统化的开发方法的指导,往往会形成一个错误地认识:程序的开发就是编码。也就是说,拿到问题后,马上就开始程序的开发就是编码。也就是说,拿到问题后,马上就开始写程序。这种做法的不良后果初学者还无法体会,
11、因为他们写程序。这种做法的不良后果初学者还无法体会,因为他们所面临的需要解决的问题都比较小,但对于复杂的现实问题所面临的需要解决的问题都比较小,但对于复杂的现实问题的解决,即软件项目的开发是绝对行不通的。实际上,在初的解决,即软件项目的开发是绝对行不通的。实际上,在初学者直接编写程序的过程中,大脑已经让初学者无意识地完学者直接编写程序的过程中,大脑已经让初学者无意识地完成了对问题的分析和设计过程,只是没有文档化而已。但对成了对问题的分析和设计过程,只是没有文档化而已。但对于大型软件项目的开发,按步骤形成相应的文档是非常重要于大型软件项目的开发,按步骤形成相应的文档是非常重要的。的。结构化的开发
12、流程可以用如图的瀑布模型来模拟:结构化的开发流程可以用如图的瀑布模型来模拟:1111瀑布模型1212软件生命周期各阶段的主要任务 (1 1 1 1)问题定义:确定系统的目标、规模和基本任务。)问题定义:确定系统的目标、规模和基本任务。)问题定义:确定系统的目标、规模和基本任务。)问题定义:确定系统的目标、规模和基本任务。(2 2 2 2)可行性研究:从经济、技术、法律等方面分析确定系)可行性研究:从经济、技术、法律等方面分析确定系)可行性研究:从经济、技术、法律等方面分析确定系)可行性研究:从经济、技术、法律等方面分析确定系统是否值得开发,及时建议停止项目开发,避免人力、物力、统是否值得开发,
13、及时建议停止项目开发,避免人力、物力、统是否值得开发,及时建议停止项目开发,避免人力、物力、统是否值得开发,及时建议停止项目开发,避免人力、物力、时间的浪费。时间的浪费。时间的浪费。时间的浪费。(3 3 3 3)需求分析:确定软件系统应具备的具体功能。通常用)需求分析:确定软件系统应具备的具体功能。通常用)需求分析:确定软件系统应具备的具体功能。通常用)需求分析:确定软件系统应具备的具体功能。通常用数据流图、数据字典和简明算法描述表示系统的逻辑模型,数据流图、数据字典和简明算法描述表示系统的逻辑模型,数据流图、数据字典和简明算法描述表示系统的逻辑模型,数据流图、数据字典和简明算法描述表示系统的
14、逻辑模型,防止系统的设计与用户的实际需求不相符的后果。防止系统的设计与用户的实际需求不相符的后果。防止系统的设计与用户的实际需求不相符的后果。防止系统的设计与用户的实际需求不相符的后果。(4 4 4 4)概要设计:确定系统设计方案,软件的体系结构。确)概要设计:确定系统设计方案,软件的体系结构。确)概要设计:确定系统设计方案,软件的体系结构。确)概要设计:确定系统设计方案,软件的体系结构。确定软件由哪些模块组成以及这些模块之间的相互关系。定软件由哪些模块组成以及这些模块之间的相互关系。定软件由哪些模块组成以及这些模块之间的相互关系。定软件由哪些模块组成以及这些模块之间的相互关系。(5 5 5
15、5)详细设计:描述应该如何具体地实现系统。详细设计)详细设计:描述应该如何具体地实现系统。详细设计)详细设计:描述应该如何具体地实现系统。详细设计)详细设计:描述应该如何具体地实现系统。详细设计每个模块,确定实现模块所需要的算法和数据结构。每个模块,确定实现模块所需要的算法和数据结构。每个模块,确定实现模块所需要的算法和数据结构。每个模块,确定实现模块所需要的算法和数据结构。1313(6 6 6 6)软件实现阶段:进行程序设计(编码)和模块测试。)软件实现阶段:进行程序设计(编码)和模块测试。)软件实现阶段:进行程序设计(编码)和模块测试。)软件实现阶段:进行程序设计(编码)和模块测试。(7
16、7 7 7)综合测试阶段:通过各种类型的测试,查出软件设计)综合测试阶段:通过各种类型的测试,查出软件设计)综合测试阶段:通过各种类型的测试,查出软件设计)综合测试阶段:通过各种类型的测试,查出软件设计中的错误并改正,确保软件质量;还要在用户的参与下进行中的错误并改正,确保软件质量;还要在用户的参与下进行中的错误并改正,确保软件质量;还要在用户的参与下进行中的错误并改正,确保软件质量;还要在用户的参与下进行验收,才可交付使用。验收,才可交付使用。验收,才可交付使用。验收,才可交付使用。(8 8 8 8)软件运行、维护:软件运行期间,通过各种必要的维)软件运行、维护:软件运行期间,通过各种必要的
17、维)软件运行、维护:软件运行期间,通过各种必要的维)软件运行、维护:软件运行期间,通过各种必要的维护使系统改正错误、或修改扩充功能使软件适应环境变化,护使系统改正错误、或修改扩充功能使软件适应环境变化,护使系统改正错误、或修改扩充功能使软件适应环境变化,护使系统改正错误、或修改扩充功能使软件适应环境变化,以便延长软件的使用寿命,提高软件的效益。每次维护的要以便延长软件的使用寿命,提高软件的效益。每次维护的要以便延长软件的使用寿命,提高软件的效益。每次维护的要以便延长软件的使用寿命,提高软件的效益。每次维护的要求及修改步骤都应详细准确地记录下来,作为文档保存。求及修改步骤都应详细准确地记录下来,
18、作为文档保存。求及修改步骤都应详细准确地记录下来,作为文档保存。求及修改步骤都应详细准确地记录下来,作为文档保存。本课程虽然不是进行大型软件项目的开发,只是针对于较大本课程虽然不是进行大型软件项目的开发,只是针对于较大本课程虽然不是进行大型软件项目的开发,只是针对于较大本课程虽然不是进行大型软件项目的开发,只是针对于较大型的综合程序的开发,开发过程也应该遵循结构化的瀑布模型的综合程序的开发,开发过程也应该遵循结构化的瀑布模型的综合程序的开发,开发过程也应该遵循结构化的瀑布模型的综合程序的开发,开发过程也应该遵循结构化的瀑布模型的开发流程,遵循问题定义、程序分析、程序设计、编码、型的开发流程,遵
19、循问题定义、程序分析、程序设计、编码、型的开发流程,遵循问题定义、程序分析、程序设计、编码、型的开发流程,遵循问题定义、程序分析、程序设计、编码、测试和维护几个阶段,培养结构化方法的能力。测试和维护几个阶段,培养结构化方法的能力。测试和维护几个阶段,培养结构化方法的能力。测试和维护几个阶段,培养结构化方法的能力。14142.1 2.1 问题定义问题定义 问题定义阶段是整个过程中占用时间最少的阶段,在这个步问题定义阶段是整个过程中占用时间最少的阶段,在这个步骤中任务是明确要解决的问题是什么。在本课程中,要解决骤中任务是明确要解决的问题是什么。在本课程中,要解决的问题可以由教师提供或由学生自行选题
20、。在自行选题中,的问题可以由教师提供或由学生自行选题。在自行选题中,学生可以动动脑筋,寻找身边有哪些事情可以用计算机解决,学生可以动动脑筋,寻找身边有哪些事情可以用计算机解决,然后确定一个可行的题目,例如扫雷游戏、迷宫游戏等。有然后确定一个可行的题目,例如扫雷游戏、迷宫游戏等。有时可以对该题目进行一个简要的说明。例如迷宫游戏的问题时可以对该题目进行一个简要的说明。例如迷宫游戏的问题描述如下:描述如下:心理学家把一只老鼠从一个无顶盖的大盒子的入口处赶进迷心理学家把一只老鼠从一个无顶盖的大盒子的入口处赶进迷宫。迷宫中设置很多墙壁,对前进方向形成了多处障碍,心宫。迷宫中设置很多墙壁,对前进方向形成了
21、多处障碍,心理学家在迷宫的唯一出口放置了一块奶酪,吸引老鼠在迷宫理学家在迷宫的唯一出口放置了一块奶酪,吸引老鼠在迷宫中寻找通路以到达出口。用计算机求解迷宫中的一条路径。中寻找通路以到达出口。用计算机求解迷宫中的一条路径。15152.2 2.2 程序分析程序分析这个阶段的任务仍然不是具体地解决问题,而是理解问题和分析问题,主要是确定目标系统必须具备哪些功能,以及目标系统可能的输入和输出数据是什么。我们在问题定义阶段得到的问题,有时仅仅是一个抽象的题目,有时除了题目外还附一段简要的说明。无论问题以何种形式出现,都需要做进一步的分析,以获得系统必须实现哪些功能。1616例如对于迷宫游戏,可以分析系统
22、需要以下几个功能:1迷宫的设置,为了系统的适用性,迷宫不能固定,应该可以变化。2迷宫路径的寻找,该功能可以扩展,寻找一条路径、全部路径、最短路径。3迷宫路径的输出。到这里,程序分析的工作结束,接下来进入下一个阶段:程序设计。17172.3 2.3 程序设计程序设计经过程序分析阶段的工作,程序必须经过程序分析阶段的工作,程序必须“做什么做什么”已已经清楚了,现在是决定经清楚了,现在是决定“怎么做怎么做”的时候了。程序的时候了。程序这个阶段的设计工作,应该对要解决的问题设计出这个阶段的设计工作,应该对要解决的问题设计出具体的解决方案,得出对目标系统的精确描述,从具体的解决方案,得出对目标系统的精确
23、描述,从而在编码阶段可以把这个描述直接翻译成用而在编码阶段可以把这个描述直接翻译成用C C语言语言书写的程序。程序设计将采用结构化程序设计方法,书写的程序。程序设计将采用结构化程序设计方法,自顶向下逐步求精地设计出程序的实现自顶向下逐步求精地设计出程序的实现“蓝图蓝图”。下面,首先介绍结构化程序设计方法,然后列举描下面,首先介绍结构化程序设计方法,然后列举描述算法的常用工具,接着以迷宫游戏为例,详细说述算法的常用工具,接着以迷宫游戏为例,详细说明设计阶段的工作和结构化程序设计方法的应用。明设计阶段的工作和结构化程序设计方法的应用。18182.3.1结构化程序设计方法结构程序设计的概念最早是由结
24、构程序设计的概念最早是由E.W.DijkstraE.W.Dijkstra提出来的,提出来的,是为了解决程序可读性差的问题,创立一种新的程是为了解决程序可读性差的问题,创立一种新的程序设计思想、方法和风格,以显著提高软件生产率序设计思想、方法和风格,以显著提高软件生产率和质量。和质量。在软件发展的早期,即在软件发展的早期,即2020世纪世纪6060年代末到年代末到7070年代初,年代初,虽然科技在高速发展,程序规模越来越大,但是当虽然科技在高速发展,程序规模越来越大,但是当时的编程技术却停留在手工作业的方式:设计各自时的编程技术却停留在手工作业的方式:设计各自为政、滥用为政、滥用GOTOGOTO
25、语句造成程序效率低下、可读性语句造成程序效率低下、可读性差、无章可循、错误百出、调试困难。差、无章可循、错误百出、调试困难。在这种局面下,在这种局面下,DijkstraDijkstra提出结构化程序设计的理论。提出结构化程序设计的理论。经过多年的实践,结构化程序设计的理论和实践日经过多年的实践,结构化程序设计的理论和实践日益完善,成为现代程序设计的主流方法之一。益完善,成为现代程序设计的主流方法之一。1919那么什么是结构化程序设计呢?结构化程序设计是一种设计程序的技术,采用自顶结构化程序设计是一种设计程序的技术,采用自顶向下逐步求精的设计方法和单入口单出口的顺序、向下逐步求精的设计方法和单入
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 结构 程序设计 综合 训练
限制150内