2-1 结构化程序设计基础
- 格式:doc
- 大小:388.00 KB
- 文档页数:10
用于结构化程序设计的三种基本结构
结构化程序设计是指一种面向过程的高级程序设计方法,它把程序的有机结构划分为独立的小步骤,每个步骤都可以独立考虑,用顺序、分支和循环等结构控制衔接这些步骤,从
而把一个复杂任务划分为一个个较容易解决的子任务。
在结构化程序设计中,主要有顺序、分支和循环三种基本结构,它们可以相结合使用,实现更复杂的功能。
首先,顺序结构是将一个任务分解成一系列步骤,按照一定顺序执行,每一步骤之间用流
程控制语句连接起来,组成一个完整的程序片段。
传统的程序实现大都依赖于这种结构,
它是最常用的编程基础,任何程序都要以它为主,以它为核心。
其次,分支结构可以让程序实现一种“判断并选择”的功能,它根据某种条件的真假来决
定程序的执行路径,有不同的分支结构,如IF-THEN-ELSE,SWITCH-CASE等等,它可以增强程序的复杂性。
最后,循环结构可以实现对一系列操作重复执行的功能,它通过循环控制语句对某些操作
重复执行,与此同时,循环控制语句也包含了循环终止的条件以及保证总有终止点的机制。
常见的循环结构有FOR,WHILE等,它们可以让程序更高效、更有弹性。
综上所述,结构化程序设计的三种基本结构分别为顺序结构、分支结构和循环结构,可以实现程序从简单到复杂的结构和功能,交织组合上述三种结构可以随意实现更加具体的程序功能。
所以,这三种基本结构,无论在程序设计的原理还是实际的应用中,都是至关重
要的!。
结构化程序设计的基本结构随着计算机技术的不断发展,程序设计也逐渐成为了现代社会不可或缺的一部分。
在程序设计的过程中,结构化程序设计是一种被广泛使用的设计方法。
它以清晰、简洁、易于理解和维护的代码为目标,被广泛应用于各种类型的软件开发中。
本文将介绍结构化程序设计的基本结构,以及如何使用它来编写高效的程序。
一、结构化程序设计的概念结构化程序设计是一种程序设计方法,它通过将程序分解成小的模块,然后按照一定的结构组合这些模块,从而构建出一个完整的程序。
结构化程序设计的目标是编写高效、可读性强、可维护性好的程序。
结构化程序设计的核心思想是分而治之。
将一个大的问题分解成多个小的问题,然后使用适当的算法解决这些小的问题。
这种方法可以使程序更加清晰、易于理解和维护。
同时,结构化程序设计还强调程序的模块化,也就是将程序分解成多个模块,每个模块只完成一个特定的任务。
二、结构化程序设计的基本结构结构化程序设计的基本结构包括三种控制结构:顺序结构、选择结构和循环结构。
1.顺序结构顺序结构是指程序按照编写的顺序依次执行每个语句。
程序从程序的入口开始执行,依次执行每个语句,直到执行完所有语句为止。
例如:```a = 10b = 20c = a + bprint(c)```以上代码中,程序按照编写的顺序执行每个语句,先给变量a 赋值,然后给变量b赋值,然后计算a和b的和,最后输出结果c。
2.选择结构选择结构是指程序根据条件选择执行不同的语句。
选择结构有两种形式:if语句和switch语句。
(1)if语句if语句的基本形式如下:```if condition:statementelse:statement```其中,condition是一个条件表达式,statement是要执行的语句。
如果condition为True,则执行if后面的语句;否则执行else后面的语句。
例如:```a = 10b = 20if a > b:print('a > b')else:print('a <= b')```以上代码中,如果a大于b,则输出'a > b';否则输出'a <= b'。
第二章程序设计基础2.1程序设计方法与风格程序设计是一门艺术,需要相应的理论、技术、方法和工具来支持。
就程序设计方法和技术的发展而言,主要经过了结构化程序设计和面向对象程序设计阶段。
除了好的程序设计方法和技术外,程序设计风格也是很重要的。
因为程序设计风格会深刻地影响软件的质量和可维护性,良好的程序设计风格可以使程序结构清晰合理,使程序代码便于维护,因此程序设计风格对保证程序的质量是很重要的。
一般来说,程序设计风格是指编写程序时所表现出的特点、习惯和逻辑思路。
程序是由人来编写的,为了测试和维护程序,往往还要阅读和跟踪程序,因此程序设计的风格总体而言应该强调简单和清晰,程序必须是可理解的。
可以认为,著名的“清晰第一,效率第二”的论点已成为当今主导程序设计风格。
要形成良好的程序设计风格,主要应注重和考虑下述一些因素。
1、源程序文档化源程序文档化应考虑如下几点:(1)符号名的命名:符号名的命名应具有一定实际意义,以便于对程序功能的理解。
(2)程序注释:正确的注释能够帮助读者理解程序。
注释一般包括序言性注释和功能性注释。
序言性注释通常位于每个程序的开头部分,它给出程序的整体说明,主要描述内容包括:程序标题、程序功能说明、主要算法、接口说明、程序位置、开发简历、程序设计者、复审者、复审日期、修改日期等。
功能性注释的位置一般嵌在源程序体之中,主要描述其后的语句或程序做什么。
(3)视觉组织:为使程序的结构一目了然,可以在程序中利用空格、空行、缩进等技巧使程序层次清晰。
2、数据说明的方法在编写程序时,需要注意数据说明的风格,以便使程序中的数据说明更易于理解和维护。
一般应注意以下几点:(1)数据说明的次序规范化。
鉴于程序理解、阅读和维护的需要,使数据说明次序固定,可以使数据的属性容易查找,也有利于测试、排错和维护。
(2)说明语句中变量安排有序化。
当一个说明语句说明多个变量时,变量按字母顺序排列为好。
(3)使用注释来说明复杂数据的结构。
第6章构造化程序设计根底在VFP交互方式下,除了通过命令窗口、系统菜单和工具对VFP进展操作外,还可以通过程序方式执行较复杂的数据处理任务。
VFP程序设计包括构造化程序设计和面向对象程序设计。
构造化程序设计是传统的程序设计方法,是面向对象程序设计的根底。
6.1 构造化程序样例分析程序是指可以完成一定任务的一组有序命令的集合。
程序中的命令也称为语句。
程序以文件形式保存在外部存储器中。
与命令方式相比,程序方式有如下优点:便于保存、编辑和运行:以程序文件形式保存一组语句;每次启动VFP后,不需要重复输入程序中的语句,只要翻开程序文件就可以对其进展修改;运行相应的程序文件就是执行程序中的相关语句,并且可以屡次执行一个程序。
层次明晰、功能模块化:允许在一个程序中调用其他子程序,构成程序系统,以便完成更复杂的处理任务。
【例 6.1 】编写求数N的阶乘程序,存于文件E6_1.PRG中。
操作步骤为:首先,在命令窗口中输入:Modify Command E6_1命令翻开程序编辑器。
然后,输入以下语句〔不输入行号〕,如图6.1。
1〕 * 求数N的阶乘,即 S=1×2×……×(N-1)×N2〕 Input 〞输入整数:〞To N && 执行程序时,用户输入的数保存在变量N中3〕 If N<1 && 假设N小于1,那么执行第4和 5行语句;否那么,转到第7行继续执行4〕? '输入的数:',N,'不能小于1'5〕Cancel6〕 EndIf7〕 Store 1 To M,S8〕 Do While M<=N && 当M小于或等于N时,执行第9和第10行语句&& 直到M大于N时,转到第12行继续执行9〕 S=S*M10〕 M=M+111〕 EndDo12〕 ? N,〞的阶乘是:〞,S图6.1 程序编辑器最后,单击“运行〞常用工具。
简述结构化程序设计方法的基本要点一、什么是结构化程序设计方法?结构化程序设计方法是一种软件开发的方法论,旨在通过划分问题为一系列小而简单的模块,从而使得程序更易于理解、维护和修改。
其基本思想是将程序划分为若干个逻辑上独立的模块,并采用模块化、自顶向下、逐步求精等技术手段进行程序设计和实现。
二、结构化程序设计方法的基本要点1. 自顶向下设计自顶向下设计是指从整体到部分的过程,即先考虑整个系统的框架和功能,再将其细分为多个子功能,并逐层细化直至最小单元。
这种方式可以使得整个系统更加清晰明了,便于后期开发和维护。
2. 模块化编程模块化编程是指将一个大型程序划分为多个独立的小模块,每个模块都有自己特定的功能,并且可以独立编译和测试。
这种方式可以提高代码重用性和可读性,减少出错概率。
3. 顺序、选择和循环三种基本结构顺序结构是指按照代码书写的顺序依次执行语句;选择结构是指根据条件判断执行不同的语句;循环结构是指重复执行一段代码直到满足某个条件。
这三种基本结构是编程中最常用的,也是结构化程序设计方法的基础。
4. 输入、处理和输出三个基本模块输入模块是指从外部获取数据的过程;处理模块是指对数据进行处理的过程;输出模块是指将处理结果输出到外部的过程。
这三个基本模块相互独立,可以分别设计和测试,便于程序开发和维护。
5. 数据流图和结构图数据流图和结构图是结构化程序设计方法中常用的两种图形化表示方式。
数据流图主要用于表示系统中数据流动和转换关系,而结构图则主要用于表示系统中程序模块之间的调用关系。
6. 程序测试和调试程序测试和调试是软件开发过程中必不可少的环节。
在采用结构化程序设计方法时,应尽可能地将各个模块独立开发、测试和调试,并且在整合时进行全面测试和调试,以确保系统能够正常运行。
三、如何实践结构化程序设计方法?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.教学后记(注:在此写上个人在授课过程中所遇到的教案中所没有涉及到的特殊问题及其解决方法或解决方案,也可以总结自己的授课体会,课程体系、教材的不足等。