当前位置:文档之家› 2-1 结构化程序设计基础

2-1 结构化程序设计基础

《2.1 结构化程序设计基础》1. 目标概述[3分钟] (2)2. 回顾[5分钟] (2)3. 课程知识点讲解 (2)3.1. 算法[60分钟] (2)3.2. 结构化程序设计思想[20分钟] (8)4. 小结[2分钟] (9)5. 考核点 (9)6. 作业答案 (9)7. 扩展练习 (10)8. 学生问题汇总 (10)9. 教学后记 (10)本节目标⏹本节中将讲述如下主要内容:✧算法的概念✧常用流程图符号的介绍✧顺序结构、选择结构、循环结构的图形描述✧结构化程序设计思想⏹通过教学使学生理解结构化程序设计思想、掌握逻辑流程图的使用。

本节重点⏹算法的概念⏹常用流程图符号的介绍⏹顺序结构、选择结构、循环结构的图形描述⏹结构化程序设计思想本节难点⏹逻辑流程图的使用授课课时⏹2课时教法建议1.目标概述 [3分钟]本章主要讲述结构化程序设计基础概念、运用。

本节主要讲述结构化程序设计思想、逻辑流程图的使用。

2.回顾 [5分钟]回顾上一章的相关内容。

3.课程知识点讲解3.1.算法[60分钟]引入:什么是算法?主题:从第一章的学习中,我们已经看到编制一个程序,我们不仅要解决“做什么”的问题,更重要的是要明确指明具体的步骤,也就是“怎么做”的问题,同时还需要保证其正确性和高效性,这是程序设计方法学中“算法”要解决的问题。

在古代,人们把采用算术的方法求解未知问题的运算过程称为算法。

在近代,人们把采用科学的方法完成某项事务的执行过程称为算法。

在现代,特别是计算机诞生之后,人们把计算机解题步骤称为计算机算法。

[算法的描述]对于算法,需要选择一种合适的表达方式进行描述,现在常用的描述工具有:自然语言、流程图、伪代码、N-S图、PAD图等。

1. 用自然语言描述算法描述算法人们首先想到就是某种自然语言(如:汉语)。

使用自然语言描述算法的优点是描述自然、灵活和多样,其缺点是易产生二义性。

因此,在算法设计中应少用或不用自然语言描述算法。

有时在设计初步算法时可适当采用自然语言描述,然后用其它描述工具细化算法描述。

下面给出几个用自然语言描述的算法例子。

示例讲解:示例2.1.1接受一个数并使它加1,显示其结果,用自然语言描述其过程。

示例2.1.2到图书馆借书,用自然语言描述其过程。

示例2.1.3泡一杯茶,设计并用自然语言描述其过程。

示例2.1.4计算并输出1+2+3+ … +100之和,设计并用自然语言描述其算法。

[通过示例简单讲述用自然语言描述算法的使用]2.用流程图描述算法流程图是采用图形的方法来描述算法的一种算法描述工具,通常称框图。

流程图是目前使用较为普遍的算法描述工具,其优点是描述简洁、清晰、直观,缺点是由于转移箭头的无限制使用,影响算法的可靠性。

通过规范图形符号和对转移箭头的限制使用可削弱流程图的缺点,提高算法的可靠性。

由于流程图优点突出,所以至今仍是程序设计人员普遍采用的算法描述工具。

本书的后续章节均将采用流程图来描述问题的解决过程,以帮助大家熟悉流程图的使用。

使用流程图描述工具,应采用比较标准的图形符号,最好采用国家或国际标准。

下面我们将介绍一些常用的流程图符号。

示例讲解:用流程图描述顺序结构从上例中可以发现整个算法从开始符依次执行直到结束为止,我们把这种各框按顺序执行的线性结构称为顺序结构。

这是算法描述中最简单和最基本的结构,其流程图的基本形态如右图所示,语句的执行顺序为A→B→C。

练习:练习2.1.1:接受某一类型书的单价和数量,计算并显示其总价,请用流程图描述其过程(算法)。

解决:用流程图描述分支结构具体见P61练习:练习 2.1.2输入一个任意的年份,判定是否是闰年,并输出,用流程图描述其过程。

(提示:闰年的年份是可以被4整除,但不可以被100整除;或者是可以被400整除的整数)解决:用流程图描述循环结构示例2.1.7用流程图来描述示例2.1.3泡一杯茶的过程我们用循环结构来描述现实生活中这种重复执行某种动作的情况。

循环结构是三种基本结构中的最后一种,也是最复杂的一种,可以分为三种类型:当型循环、直到型循环、计数型循环。

当型循环:当条件成立时,重复执行某种动作,直到条件不满足时为止。

这类型的循环首先判断循环条件是否成立,再执行某种动作,并在执行过程中改变和影响条件,直到条件不成立,则结束循环。

直到型循环:先执行循环操作,直到条件满足时止。

此类型的循环和当型循环最大的区别有两点,一是当型循环先执行条件判断,再执行循环操;而直到型循环先执行循环操作,再执行条件判断。

二是当型循环通常是条件满足时(即为真时)执行循环操作,而直到型循环则是不满足条件时(即为假时)执行循环操作。

计数型循环:前面两种循环结构都是事先无法预知循环次数时使用的循环结构,在事先可以知道循环操作执行的确切次数时,我们使用计数型循环。

此类型循环通常有一个循环计数器,用于计算循环操作执行的次数,一旦达到事先设定的循环资料则结束循环。

练习:练习2.1.3用流程图描述示例2.1.4计算并输出1+2+3+ … +100之和的算法解决:3.用伪代码描述算法用流程图描述的算法直观易懂,但缺点是图形绘制比较费时费事,图形修改比较麻烦,所以图形工具也不是最理想的描述工具。

为了克服图形描述工具的缺点,现在也开始流行采用伪代码描述工具描述算法。

伪代码简称伪码,也称过程描述语言(PDL-Procedure Describe Language)。

伪代码是介于自然语言和高级程序设计语言之间的一种文字和符号描述工具,它不涉及图形,类似于写文章一样,一行一行,自上而下描述算法,书写方便,格式紧凑,言简意明,可实现半自动化描述。

伪代码自上而下顺序执行,算法判断结构和循环结构都有对应的伪代码描述语句。

伪代码算法描述工具的优点是:●可作为注释直接插入到源程序中间,能保持文档和程序的一致性●可用正文编辑器或文字处理器完成伪代码的书写和编辑工作●可借助软件自动生成程序代码示例讲解:示例2.1.8用伪代码描述示例2.1.4计算并输出1+2+3+ …+100之和的算法[详细讲述算法与算法的描述]3.2.结构化程序设计思想[20分钟]引入:在结构化程序设计方法出现以前,使用非结构化程序设计方法开发的软件往往无章可循,且常常带有强烈的个人色彩,程序可读性差,编写、调试和维护工作困难。

为了提高程序的可读性和程序质量,降低开发成本,荷兰教授Dijkstra在1969年首次提出了结构化程序设计的概念,强调从程序的结构上和风格上来研究程序设计方法,提倡利用三种基本结构进行规范化程序设计,使程序具有良好的结构框架。

主题:1.结构化程序设计的基本概念随着程序规模的扩大和复杂性的提高,程序的可读性、可维护性变得越来越重要,提高程序易读性、易维护性的途径之一是按照模块化、层次化的方法来设计程序,即结构化程序设计方法,这里的结构化主要体现在以下2个方面。

●自顶向下、逐步求精即从需要解决的问题出发,将复杂问题逐步细化成一个个相对简单的子问题,每个子问题可以再进一步细化,步步深入,逐层细分,直到问题简单到可以很容易地解决不再需要细化为止,细化的结果通常可以得到一个树型层次结构图。

第一次细化称为“顶层设计”,第二次,第三次细化则依次称为第二层、第三层设计。

●语句结构化结构化程序设计要求,每一个程序应该由顺序、分支和循环三种流程结构的语句组成,而不允许有goto之类的转移语句。

这三种流程结构的共同特点是:每种结构只有一个入口和一个出口,这对于保证程序的良好结构、检验程序正确性是十分重要的。

结构化程序设计方法可以提高程序编写的效率和质量。

自顶向下、逐步求精可以尽可能地在每一个抽象级别上保证设计过程的正确性及最终程序的正确性。

模块化的结构可以使得程序具有良好的可读性,从而提高程序的可维护性。

2.结构化程序设计的基本过程结构化程序设计一般需要两个基本过程:自顶向下、逐步求精的分析过程和自底向上、逐步实现的综合过程。

分析过程是指通过对需要解决的问题的详细分析,不断地将其进行分解,每分解一次都是对问题的进一步细化。

最后将较复杂的问题分解为几个相对简单、相对独立的子问题,并用不同的模块分别描述它们的求解过程。

实现过程与之相反,它从底层模块开始,每个模块都由顺序、选择、循环三种结构实现,底层模块同时也成为实现上层模块的基础。

示例讲解:示例2.1.9某班有50名学生,求不及格学生人数与90分以上学生人数之比值,并输出,用结构化程序设计方法设计算法。

(假定至少有一个学生的成绩在90分以上)解答:具体见P65练习:练习2.1.4用结构化的程序设计方法设计示例2.1.4计算并输出1+2+3+ (100)和的算法,要求要体现出自顶向下,逐步精化的过程。

解决:4.小结 [2分钟]通过本节的学习,您了解了算法的概念,掌握了描述算法的方法,初步理解了结构化程序设计的概念与方法,为后面的学习奠定了基础。

下面将本节主要内容归纳如下:1.算法的概念算法描述了解决问题的具体步骤,是程序设计的基础和精髓,算法的描述通常有以下几种方式:自然语言方式、流程图方式、伪代码方式。

2.结构化程序设计方法结构化程序设计方法指在设计上采用自顶向下,逐步求精的设计思路,在具体实现中只使用顺序,选择和循环三种基本结构来构成程序,以保证程序的可读性,可维护性的一种程序设计方法。

5.考核点考核点1:算法的基本概念和描述方式考核点2:结构化程序设计思想6.作业答案1:算法的描述可以有哪些基本方法?答:算法的描述通常有以下几种方式:自然语言方式、流程图方式、伪代码方式。

2:在结构化程序设计方法中,程序都可以由__顺序__、_选择_、__循环__三种基本结构组成。

3:结构化程序设计一般分为_自顶向下_、_逐步求精_两个基本过程。

4:输入学生成绩,评价成绩的优、良、中、及格和不及格,并输出。

成绩大于等于90分为优,成绩小于90分且大于等于80分为良,成绩小于80分且大于等于70分为中,成绩小于70分且大于等于60分为及格,成绩小于60分为不及格。

用流程图描述其算法。

答:5:求2到100之内的素数,并输出。

素数是只能被1和自身整除的数。

用流程图描述其算法。

答:6:统计1900年至2100年中闰年的年份,将具体的年份打印出来。

闰年的条件是:能被4整除,但不能被100整除的年份是闰年,或者能被100整除又能被400整除的年份也是闰年。

以结构化的程序设计方法,画出其流程图。

答:7:输入一个班30名学生的成绩,求其平均分、最高分、不及格人数和不及格率。

以结构化的程序设计方法,画出其流程图。

答:7.扩展练习8.学生问题汇总(注:汇总学生在学习过程中容易出现的问题)9.教学后记(注:在此写上个人在授课过程中所遇到的教案中所没有涉及到的特殊问题及其解决方法或解决方案,也可以总结自己的授课体会,课程体系、教材的不足等。

相关主题