第3章结构化程序设计
- 格式:ppt
- 大小:1.89 MB
- 文档页数:171
任何复杂的算法,都可以由顺序结构、选择(分支)结构和循环结构三种基本结构组成。
在构造算法时,也仅以这三种结构作为基本单元,同时规定基本结构之间可以并列和互相包含,不允许交叉和从一个结构直接转到另一个结构的内部去。
结构清晰,易于正确性验证和纠正程序中的错误,这种方法就是结构化方法,遵循这种方法的程序设计,就是结构化程序设计。
遵循这种结构的程序只有一个输入口和一个输出口。
结构化程序的概念首先是从以往编程过程中无限制地使用转移语句而提出的。
转移语句可以使程序的控制流程强制性的转向程序的任一处,在传统流程图中,用"很随意"的流程线来描述转移功能。
如果一个程序中多处出现这种转移情况,将会导致程序流程无序可寻,程序结构杂乱无章,这样的程序是令人难以理解和接受的,并且容易出错。
尤其是在实际软件产品的开发中,更多的追求软件的可读性和可修改性,象这种结构和风格的程序是不允许出现的。
为此提出了程序的三种基本结构。
在讨论算法时我们列举了程序的顺序、选择和循环三种控制流程,这就是结构化程序设计方法强调使用的三种基本结构。
算法的实现过程是由一系列操作组成的,这些操作之间的执行次序就是程序的控制结构。
1996年,计算机科学家Bohm和Jacopini证明了这样的事实:任何简单或复杂的算法都可以由顺序结构、选择结构和循环结构这三种基本结构组合而成。
所以,这三种结构就被称为程序设计的三种基本结构。
也是结构化程序设计必须采用的结构。
结构化程序中的任意基本结构都具有唯一入口和唯一出口,并且程序不会出现死循环。
在程序的静态形式与动态执行流程之间具有良好的对应关系。
2.结构化程序设计早期的计算机存储器容量非常小,人们设计程序时首先考虑的问题是如何减少存储器开销,硬件的限制不容许人们考虑如何组织数据与逻辑,程序本身短小,逻辑简单,也无需人们考虑程序设计方法问题。
与其说程序设计是一项工作,倒不如说它是程序员的个人技艺。
结构化的程序设计方法
结构化的程序设计方法是一种组织思路、清晰明了的编程方法。
它强调将程序分解成较小的、可重复使用的代码段,以便程序员可以更容易地阅读、修改和维护程序。
常见的结构化编程技术包括模块化、层次化、控制流程图等。
下面是结构化的程序设计方法应遵循的指导原则:
1. 将程序分解成小的独立的模块,每个模块只包含一个功能,这样可以提高可复用性和可维护性。
2. 避免使用嵌套层次太深的条件语句,这样可以提高代码的可读性和可维护性。
3. 使用简单的控制流程结构,如顺序结构、循环结构、分支结构等,避免使用复杂的控制结构。
4. 将相似的数据和代码放在同一个模块中,这样可以避免代码重复和混乱。
5. 编写注释和文档,以便于其他程序员理解代码的功能和实现方式。
6. 使用规范的命名和格式,使代码易于阅读和理解。
结构化的程序设计方法可以提高程序的可读性、可维护性和可重用性,从而减少
编程错误和加速开发过程。
实验3 结构化程序设计初步1.实验目的(1)掌握C++赋值语句与输入输出语句的使用方法,区别C语言的输入输出语句(2)掌握关系运算符、逻辑运算符与条件运算符的运算规则并能熟练计算由这些运算符构成的表达式(3)深入掌握C++各种流程控制语句(选择语句、循环语句和跳转语句)的要点和使用方法(4)能够灵活地运用C++各种语句进行综合程序设计2.实验内容2.1程序分析题。
分析下面程序的运行结果,上机运行程序,观察其输出结果与你的分析结果是否相同?(1)有如下程序,从键盘输入123456.78↙后,变量c1、c2、a、b的值分别是多少?#include <iostream.h>void main( ){char c1,c2;int a;float b;cin>>c1>>c2>>a>>b;cout<<c1<<" "<<c2<<" "<<a<<" "<<b<<'\n';}(2)#include <iostream.h>#include <iomanip.h>void main( ){double a=123.456789012345;cout<<a<<endl;cout<<setprecision(9)<<a<<endl;cout<<setprecision(6)<<a<<endl;cout<<setiosflags(ios::fixed)<<a<<endl;cout<<setiosflags(ios::fixed)<<setprecision(8)<<a<<endl;}(3)#include <iostream.h>#include <iomanip.h>void main( ){double a=123.456789012345;cout<<setiosflags(ios::scientific)<<a<<endl;cout<<setiosflags(ios::scientific)<<setprecision(4)<<a<<endl;}#include <iomanip.h>void main( ){int b=123456;cout<<b<<endl;cout<<hex<<b<<endl;cout<<setiosflags(ios::uppercase)<<b<<endl;cout<<dec<<setw(10)<<b<<','<<b<<endl;cout<<setfill('*')<<setw(10)<<b<<endl;cout<<setiosflags(ios::showpos)<<b<<endl;}(5)有如下程序,从键盘输入86 24 75↙后,程序的输出结果为多少,为什么?#include <iostream.h>void main( ){int a,b,c;cin>>a>>oct>>b>>hex>>c;cout<<a<<" "<<b<<" "<<c<<endl;}(6)#include <iostream.h>#include <iomanip.h>void main( ){short a=-1;cout<<dec<<a<<" "<<oct<<a<<" "<<hex<<a<<endl;}(7)#include <stdio.h>void main( ){int a=-1;printf("dec:%d,oct:%o,hex:%x,unsigned:%u\n",a,a,a,a);}(8)以下程序中,为了给整型变量k1,k3赋值为10,给k2,k4赋值为20,如何输入数据?#include <stdio.h>void main( ){int k1,k2,k3,k4;scanf("%d%d",&k1,&k2);scanf("%d,%d",&k3,&k4);printf("k1=%d,k2=%d,k3=%d,k4=%d\n",k1,k2,k3,k4);}void main( ){int a=3,b=4,c=5,d=6,e,f;e=a>b&&(c=8);cout<<c<<" "<<e<<endl;f=a<b&&(e=c<d);cout<<e<<" "<<f<<endl;f=a<b||(d>0?d++:d--);cout<<d<<" "<<f<<endl;}(10)#include <iostream.h>void main( ){int x,y,z,w;z=(x=-1)?(y=-1,y+=x+5):(x=7,y=9);w=y*'a'/4;cout<<x<<" "<<y<<" "<<z<<" "<<w<<endl;}(11)#include <iostream.h>void main( ){int a=5,b=7,c=3,t;if(a= -1) cout<<"Yes"<<endl;else cout<<"No"<<endl;if(a>b) { t=a;a=b;b=t; }if(a>c) { t=a;a=c;c=t; }if(b>c) { t=b;b=c;c=t; }cout<<a<<" "<<b<<" "<<c<<endl;}解析:a被赋值为-1,输出YESIf语句成立则执行,不成立则不执行分析只有b>c成立,=后面的值赋给左边的,顺序从左到右(12)#include <iostream.h>void main( ){ char c='3';switch(c-'1'){case 0:case 1:cout<<c+1<<endl;case 2:cout<<c+2<<" "<<char(c+2)<<endl;default:cout<<c+3<<" "<<char(c+3)<<endl;}}‘3’是字符型,ASCLL码为051,执行Switch时,根据switch表达式的值找到与之匹配的case子句,就从此子句开始执行下去,不再进行判断(13)#include <iostream.h>void main( ){int a=2,b=7,c=5;switch(a>0){case 1:switch(b<0){case 1: cout<<"+";break;case 2: cout<<"-";break;}case 0:switch(c==5){case 0: cout<<"*";break;case 1: cout<<"/";break;default: cout<<"#";break;}default: cout<<"$";}cout<<"\n";}a>0是真,值为1,执行case1,继续下面,b<0是假,不执行其中的case1.case2c==5是真,值为1,执行case1,输出/,其后有break,被中断不再执行分句里其下的命令,default: cout<<"$"前面没有break,则输出$(14)#include <iostream.h>void main( ){int a=10,b=0;do{a+=2;b+=a;cout<<"a="<<a<<",b="<<b<<endl;if(b>20) break;}while(a!=14);}(15)#include <iostream.h>void main( ){int i,j;for(i=10;i<20;i++){for(j=2;j<=i/2;j++)if(i%j==0) break;if(j>i/2)cout<<i<<" ";}cout<<endl;}(16)#include <iostream.h>void main( ){int i,j,m=0;for(i=0;i<5;i++)for(j=0;j<5;j++)if(j>=i) m++;cout<<m<<endl;}(17)#include <iostream.h>void main( ){int i,j;for(i=1;i<=9;i++){for(j=1;j<=9;j++){ if(j>i) break;cout<<i<<"*"<<j<<"="<<i*j<<" ";}cout<<endl;}}(18)#include <iostream.h>void main( ){int i=1,sum=0;while(i<=100){if(i%2==0){ i++; continue;}sum+=i;i++;}cout<<sum<<endl;}2.2编程题(1)编写程序从键盘输入一个大写字母,将其转换为小写字母并输出。
结构化程序设计方法的基本思想和基本规则
结构化程序设计方法是一种以结构性和模块化为主要特征的通用的软件设计方法。
它
的核心思维是:将程序的问题逐层划分,依葫芦画瓢,以不断细化子问题的方式解决综合
性问题,从而形成一种可处理各种情况的通用设计算法。
它倾向于把复杂的问题划分为多
个简单的问题,简化程序复杂性,采用控制结构将清晰的程序结构转换成特定问题的程序,以及通过模块划分负责不同功能的程序,从而分解原来可能复杂的程序结构。
结构化程序设计方法的基本思想是:以分解和组合的理念,利用控制结构、分支、循环、函数、数据结构等技术把复杂的程序建模和实现,让程序写成有可读性、易维护性和
良好结构的模块化形式,从而降低程序设计和实现过程的复杂度,保证程序的可移植性和
可扩展性。
结构化程序设计方法也有一套严格的基本规则:首先,制定完整的思维框架,划分精
细任务,定义有序流程,在每一步得出明确的结果;其次,建立可重复的模块,使用封装
的数据结构和函数,增加模块的可复用性;再次,以宗旨解决单一问题,用控制结构管理
复杂的分支和循环;最后,建立统一的结构,确保所有子模块执行顺序准确,避免重复引
用和错误控制流程。
结构化程序设计方法可以大大改善重复任务、繁琐程序和复杂项目的开发过程,使程
序代码更加晰明简单、运行效率更高。
掌握这种程序设计方法,有助于开发出功能更强大、执行更精准的程序。
结构化程序设计的3种结构
1.顺序结构:顺序结构通常是指一系列按顺序执行的指令,它是程序
设计过程中最基本的结构。
顺序结构可以简单地理解为从上到下顺序执行,它要求每一条指令必须按照顺序一个接一个地按固定的顺序执行,它表示
程序执行的一系列步骤必须按顺序依次执行,直到执行完毕。
2.分支结构:分支结构的语法是一系列的判断语句,它能够根据多种
情况下的不同输入,采取不同的操作,对程序有着很重要的作用,能够使
程序看起来更加灵活及容易阅读。
使用分支结构可以实现更加复杂的程序
结构,它可以检查变量的值,根据变量值的不同,来决定程序执行不同的
程序分支。
3.循环结构:循环结构又称为循环程序设计,它是指把某些重复执行
的步骤放在一个循环体中,根据循环次数的不同,可以实现程序的任务,
循环结构具有可以重复执行某段代码的功能。
循环结构在实际编程中,可
以用来实现大规模数据的处理,也可以实现边界值的自动搜索,有效地提
高程序的执行效率。
结构化程序设计
结构化程序设计
结构化程序设计是一种软件开发方法,旨在通过模块化和顺序化的方式来设计和编写程序。
它强调程序应该被组织成一系列可重复使用和可维护的模块,以便增强开发效率和代码的可读性。
在结构化程序设计中,程序被划分为多个小的、相对独立的模块。
每个模块执行一个特定的任务,并且可以与其他模块进行通信和交互。
这种模块化的设计使得程序变得更加可靠和易于理解,因为每个模块都是独立的,它的功能可以被单独测试和验证。
,结构化程序设计还鼓励使用顺序、选择和重复等基本的控制结构来组织程序的执行流程。
顺序控制指的是按照代码的顺序依次执行语句,选择控制指的是根据条件选择执行不同的语句块,而重复控制则是通过循环执行一段代码多次。
结构化程序设计的目标是提高程序的可理解性和可维护性。
通过模块化的设计,可以将一个复杂的问题分解成多个简单的子问题,从而减少开发过程中的错误和bug。
结构化程序设计还使得程序的
测试和调试变得更加容易,因为每个模块都是相对独立的,可以单独进行测试和调试。
在实践中,结构化程序设计可以通过使用编程语言中的函数、类和模块等概念来实现。
通过将程序划分为多个函数或者类,可以实现程序的模块化和重用。
而通过使用模块化的设计,可以将程序的不同部分放入不同的模块中,从而提高代码的可读性和可维护性。
,结构化程序设计是一种重要的软件开发方法,可以提高程序的可读性、可维护性和可重用性。
通过将程序划分为多个模块,并使用基本的控制结构来组织程序的执行流程,可以更好地管理和开发复杂的软件系统。
结构化程序设计是每个程序员都应该熟悉和掌握的软件开发技术。
结构化程序结构化程序是一种编程方法,旨在使程序更加可读、可维护和可测试。
它强调使用结构化编程语言和编程范例来设计和实现程序。
结构化程序设计的最终目标是创建模块化、易于理解和易于维护的程序。
结构化程序设计方法的核心是将程序划分为小的、相互独立的模块。
每个模块都有一个特定的功能,并且可以通过定义输入和输出接口与其他模块进行交互。
这种模块化的方法使程序的开发和维护更加容易,可以将复杂的问题分解为较小的子问题,并逐个解决。
结构化程序设计还强调使用结构化编程语言,如C、Pascal和Python等。
这些编程语言提供了诸如条件语句、循环语句和函数等结构化编程的特性,使程序的逻辑更清晰、更易于理解。
与非结构化编程语言相比,结构化编程语言具有更严格的语法和语义规则,可以减少程序中的错误和潜在的问题。
通过使用结构化编程技术,程序员可以创建易于阅读和理解的代码。
这是因为结构化程序设计方法强调使用内聚性和低耦合性的设计原则。
内聚性是指模块内部的代码应该紧密相关,而不是散乱的。
低耦合性是指模块之间的依赖应该尽可能地减少,以减少程序中的相互依赖和复杂性。
通过遵循这些原则,结构化程序设计可以提高程序的可读性和可维护性。
结构化程序设计的另一个重要方面是使用结构化算法和数据结构。
结构化算法是指使用结构化的逻辑和控制结构来解决问题。
它使程序员能够在编写代码时更容易地思考问题的解决方案,并将其转化为可执行的算法。
数据结构是指存储和组织数据的方式。
结构化程序设计强调使用适当的数据结构来存储和操作数据,并提供相应的算法来操作这些数据结构。
总的来说,结构化程序设计是一种强调使用结构化编程语言和编程范例来设计和实现程序的方法。
它通过将程序划分为小的、相互独立的模块,并使用适当的算法和数据结构来实现这些模块,使程序变得更加可读、可维护和可测试。
结构化程序设计的目标是创建模块化、易于理解和易于维护的程序,以提高开发效率并减少错误。
然而,尽管结构化程序设计方法具有很多优点,但它也存在一些限制。