C语言程序基本控制结构及其应用.ppt
《C语言程序基本控制结构及其应用.ppt》由会员分享,可在线阅读,更多相关《C语言程序基本控制结构及其应用.ppt(110页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第3章章 C语言程序语言程序基本控制结构及其应用基本控制结构及其应用3.1 3.1 算法及结构化程序设计算法及结构化程序设计3.1.1 算法及其特征算法及其特征 算法,程序的灵魂。算法,程序的灵魂。一个完整的算法应具有如下特征:一个完整的算法应具有如下特征:有穷性有穷性 确定性确定性 可执行性可执行性 0个或多个输入;个或多个输入;1个或多个输出个或多个输出 什么是程序?什么是程序?一个程序应包括两个方面的内容一个程序应包括两个方面的内容:对数据的描述:数据结构对数据的描述:数据结构(data structure)(data structure)对操作的描述:算法对操作的描述:算法(algo
2、rithm)(algorithm)著名计算机科学家沃思提出一个公式著名计算机科学家沃思提出一个公式:程序程序=数据结构数据结构+算法算法 完整的程序设计是完整的程序设计是:数据结构算法程序设计方法语言工具数据结构算法程序设计方法语言工具 什么是算法?什么是算法?什么是算法?什么是算法?为解决一个问题而采取的方法和步骤,称为算法。为解决一个问题而采取的方法和步骤,称为算法。为解决一个问题而采取的方法和步骤,称为算法。为解决一个问题而采取的方法和步骤,称为算法。1 1 1 1、计算机算法、计算机算法、计算机算法、计算机算法 对于计算机算法应该有一个正确的定位。既不能认为对于计算机算法应该有一个正确
3、的定位。既不能认为对于计算机算法应该有一个正确的定位。既不能认为对于计算机算法应该有一个正确的定位。既不能认为计算机是万能的,如计算机是万能的,如计算机是万能的,如计算机是万能的,如“替我理发替我理发替我理发替我理发”计算机目前是无法做计算机目前是无法做计算机目前是无法做计算机目前是无法做到的,也不能认为计算机只能进行数值运算。到的,也不能认为计算机只能进行数值运算。到的,也不能认为计算机只能进行数值运算。到的,也不能认为计算机只能进行数值运算。2 2 2 2、算法的特性、算法的特性、算法的特性、算法的特性 有穷性:有限的操作步骤,不能是无限的。有穷性:有限的操作步骤,不能是无限的。有穷性:有
4、限的操作步骤,不能是无限的。有穷性:有限的操作步骤,不能是无限的。确定性:每一步所执行的操作是唯一确定的,不能有确定性:每一步所执行的操作是唯一确定的,不能有确定性:每一步所执行的操作是唯一确定的,不能有确定性:每一步所执行的操作是唯一确定的,不能有歧义。歧义。歧义。歧义。有零个或多个输入:可以没有输入。有零个或多个输入:可以没有输入。有零个或多个输入:可以没有输入。有零个或多个输入:可以没有输入。有一个或多个输出:算法目的是为了求解,解就是输有一个或多个输出:算法目的是为了求解,解就是输有一个或多个输出:算法目的是为了求解,解就是输有一个或多个输出:算法目的是为了求解,解就是输出。至少有一个
5、输出。没有输出的算法是没有意义的。出。至少有一个输出。没有输出的算法是没有意义的。出。至少有一个输出。没有输出的算法是没有意义的。出。至少有一个输出。没有输出的算法是没有意义的。有效性:可操作,可执行。每一步操作都能有效执行,有效性:可操作,可执行。每一步操作都能有效执行,有效性:可操作,可执行。每一步操作都能有效执行,有效性:可操作,可执行。每一步操作都能有效执行,并得到确定结果。如:除数为并得到确定结果。如:除数为并得到确定结果。如:除数为并得到确定结果。如:除数为0 0 0 0,则不能有效的执行。,则不能有效的执行。,则不能有效的执行。,则不能有效的执行。算法的描述:算法的描述:1 1、
6、自然语言、自然语言 2 2、传统流程图、传统流程图 3 3、N-SN-S结构图结构图 4 4、伪代码、伪代码 5 5、计算机语言、计算机语言 计算机语言:严格遵循计算机语计算机语言:严格遵循计算机语言的语法规则所表示的算法。从而完言的语法规则所表示的算法。从而完成实际工作到计算机语言的转化。成实际工作到计算机语言的转化。1 1、用自然语言表示算法、用自然语言表示算法 自然语言就是人们日常使用的语言,自然语言就是人们日常使用的语言,可以是汉语或英语或其它语言。用自然语可以是汉语或英语或其它语言。用自然语言表示通俗易懂,但文字冗长,容易出现言表示通俗易懂,但文字冗长,容易出现“歧义性歧义性”。自然
7、语言表示的含义往往不大严格,自然语言表示的含义往往不大严格,要根据上下文才能判断其正确含义,描述要根据上下文才能判断其正确含义,描述包含分支和循环的算法时也不很方便。因包含分支和循环的算法时也不很方便。因此,除了那些很简单的问题外,一般不用此,除了那些很简单的问题外,一般不用自然语言描述算法。自然语言描述算法。2 2 2 2、用流程图表示算法、用流程图表示算法、用流程图表示算法、用流程图表示算法 美国国家标准化协会美国国家标准化协会美国国家标准化协会美国国家标准化协会ANSI(American National ANSI(American National ANSI(American Nati
8、onal ANSI(American National Standard Institute)Standard Institute)Standard Institute)Standard Institute)规定了一些常用的流程图符号:规定了一些常用的流程图符号:规定了一些常用的流程图符号:规定了一些常用的流程图符号:起止框起止框判断框判断框处理框处理框输入输入/输出框输出框注释框注释框流向线流向线连接点连接点3.1.2 3.1.2 算法的类型与结构算法的类型与结构 计算机可处理的算法,一般归纳为计算机可处理的算法,一般归纳为“数值数值算法算法”和和“非数值算法非数值算法”两类。两类。“数值算
9、法数值算法”常用于科学计算,而常用于科学计算,而“非数值算法非数值算法”则广泛用则广泛用于各类数据的数据处理,它常常要涉及大数据于各类数据的数据处理,它常常要涉及大数据量和复杂的数据结构。量和复杂的数据结构。三种基本结构:三种基本结构:Bohra和和Jacopini提出了以下三种基本结提出了以下三种基本结构:构:顺序结构、选择结构、循环结构顺序结构、选择结构、循环结构 用这三种基本结构作为表示一个良好算法用这三种基本结构作为表示一个良好算法的基本单元。的基本单元。三种基本结构的图示:三种基本结构的图示:顺序结构顺序结构 选择结构选择结构循环结构的图示:循环结构的图示:当型循环结构当型循环结构
10、直到型循环直到型循环三种基本结构的共同特点:三种基本结构的共同特点:(1)只有一个入口;只有一个入口;(2)只有一个出口;(请注意:一个菱形判只有一个出口;(请注意:一个菱形判断框有两个出口,而一个选择结构只有一个出断框有两个出口,而一个选择结构只有一个出口。不要将菱形框的出口和选择结构的出口混口。不要将菱形框的出口和选择结构的出口混淆。)淆。)(3)结构内的每一部分都有机会被执行到;结构内的每一部分都有机会被执行到;(4)结构内不存在结构内不存在“死循环死循环”(无终止的循环无终止的循环)。不正确的流程表示:不正确的流程表示:图中没有一条从入口到出图中没有一条从入口到出图中没有一条从入口到出
11、图中没有一条从入口到出口的路径通过口的路径通过口的路径通过口的路径通过A A框。框。框。框。流程内的死循环流程内的死循环流程内的死循环流程内的死循环扩展:扩展:只要具有上述四个只要具有上述四个特点的都可以作为基特点的都可以作为基本结构。可以自己定本结构。可以自己定义基本结构,并由这义基本结构,并由这些基本结构组成结构些基本结构组成结构化程序。化程序。此图符合基本结构的特点此图符合基本结构的特点此图符合基本结构的特点此图符合基本结构的特点 这是一个多分支这是一个多分支这是一个多分支这是一个多分支选择结构,根据表达选择结构,根据表达选择结构,根据表达选择结构,根据表达式的值决定执行路线。式的值决定
12、执行路线。式的值决定执行路线。式的值决定执行路线。虚线框内的结构是虚线框内的结构是虚线框内的结构是虚线框内的结构是一个入口一个出口,一个入口一个出口,一个入口一个出口,一个入口一个出口,并且有上述全部的四并且有上述全部的四并且有上述全部的四并且有上述全部的四个特点。个特点。个特点。个特点。由此构成的算法结由此构成的算法结由此构成的算法结由此构成的算法结构也是结构化的算法。构也是结构化的算法。构也是结构化的算法。构也是结构化的算法。可以认为这是由三种可以认为这是由三种可以认为这是由三种可以认为这是由三种基本结构所派生出来基本结构所派生出来基本结构所派生出来基本结构所派生出来的。的。的。的。小小
13、结结 流程图是表示算法的较好的工具。一个流程流程图是表示算法的较好的工具。一个流程图包括以下几部分图包括以下几部分:(1)表示相应操作的框;表示相应操作的框;(2)带箭头的流程线;带箭头的流程线;(3)框内外必要的文字说明。框内外必要的文字说明。由三种基本结构顺序组成的算法结构,可以解由三种基本结构顺序组成的算法结构,可以解决任何复杂的问题。由基本结构所构成的算法属决任何复杂的问题。由基本结构所构成的算法属于于“结构化结构化”的算法,它不存在无规律的转向,的算法,它不存在无规律的转向,只在本基本结构内才允许存在分支和向前或向后只在本基本结构内才允许存在分支和向前或向后的跳转。的跳转。用用N-S
14、流程图表示算法流程图表示算法 1973年美国学者年美国学者I.Nassi和和B.Shneiderman提出了一种新的流程图形式。提出了一种新的流程图形式。在这种流程图中,完全去掉了带箭头的流程在这种流程图中,完全去掉了带箭头的流程线。全部算法写在一个矩形框内,在该框内还可线。全部算法写在一个矩形框内,在该框内还可以包含其它的从属于它的框,或者说,由一些基以包含其它的从属于它的框,或者说,由一些基本的框组成一个大的框。本的框组成一个大的框。这种流程图又称这种流程图又称N-S结构化流程图。结构化流程图。N-S流程图用以下的流程图符号:流程图用以下的流程图符号:(1)顺序结构顺序结构 (2)选择结构
15、选择结构 (3)循循环结构环结构 N-S图表示算法的优点图表示算法的优点 比文字描述直观、形象、比文字描述直观、形象、易于理解;比易于理解;比传统流程图紧凑易画。尤其是它废除了流程线,传统流程图紧凑易画。尤其是它废除了流程线,整个算法结构是由各个基本结构按顺序组成的,整个算法结构是由各个基本结构按顺序组成的,N-S流程图中的上下顺序就是执行时的顺序。流程图中的上下顺序就是执行时的顺序。用用N-S图表示的算法都是结构化的算法,因为图表示的算法都是结构化的算法,因为它不可能出现流程无规律的跳转,而只能自上它不可能出现流程无规律的跳转,而只能自上而下地顺序执行。而下地顺序执行。题目一题目一将变量将变
16、量a和和b中的数交换。(中的数交换。(a和和b的初值的初值为:为:a=3 b=4)题目二题目二计算计算z的值。的值。z=|a-b|(输入(输入a、b的值)的值)题目三题目三求求1到到5的累加和。的累加和。算法举例算法举例 这三个例题分别是顺序、选择和循环结构的举例。这三个例题分别是顺序、选择和循环结构的举例。这三个例题分别是顺序、选择和循环结构的举例。这三个例题分别是顺序、选择和循环结构的举例。明确一点:计算机只能完成我们告诉它的工作,其他的不会主动明确一点:计算机只能完成我们告诉它的工作,其他的不会主动明确一点:计算机只能完成我们告诉它的工作,其他的不会主动明确一点:计算机只能完成我们告诉它
17、的工作,其他的不会主动去执行。很傻,它没有智能。去执行。很傻,它没有智能。去执行。很傻,它没有智能。去执行。很傻,它没有智能。题目一题目一S1:a=3S1:a=3S2:b=4S2:b=4S3:t=aS3:t=aS4:a=bS4:a=bS5:b=tS5:b=tS6:S6:输出输出a a和和b b的值的值.题目二题目二S1:S1:输入输入a a和和b b的值。的值。S2:S2:判断判断ab?ab?是:是:S21:z=a-b,S21:z=a-b,到到S3S3步。步。否:否:S22:z=b-a,S22:z=b-a,到到S3S3步。步。S3:S3:输出输出z z的值。的值。题目三题目三S1:i=1,s=
18、0S1:i=1,s=0S2:S2:当当i=5ib?z=a-bz=b-a输出输出zYN开始开始结束结束YNi=1 s=0i=5?s=s+ii=i+1输出输出s开始开始结束结束算法举例算法举例传统流程图传统流程图题目一题目一题目二题目二题目三题目三a=3 b=4t=aa=bb=t输出输出a和和bi=1 s=0当当ib?YNz=a-bz=b-a输出输出z算法举例算法举例N-S结构结构题目一题目一题目二题目二题目三题目三a=3 b=4t=aa=bb=tprint(a,b)input(a,b)if ab then z=a-belse z=b-aendifprint(z)i=1 s=0while i=5
19、s=s+i i=i+1endprint(s)算法举例算法举例伪代码伪代码 伪代码是用介于自然语言和计算机语言之间的文字伪代码是用介于自然语言和计算机语言之间的文字伪代码是用介于自然语言和计算机语言之间的文字伪代码是用介于自然语言和计算机语言之间的文字和符号来描述算法的表示形式。和符号来描述算法的表示形式。和符号来描述算法的表示形式。和符号来描述算法的表示形式。题目一题目一题目二题目二题目三题目三#include void main()int a,b;a=3;b=4;t=a;a=b;b=t;printf(“%d%d”,a,b);#include void main()int a,b;scanf(
20、“%d%d”,&a,&b);if (ab)z=a-b;else z=b-a;printf(“%d”,z);#include void main()int i,s;i=1;s=0;while (iy)z=x;else z=y;printf(“Hello!”);由表达式加一个分由表达式加一个分号构成一个语句。号构成一个语句。a=3;由由 将一些语句将一些语句括起来。括起来。t=a;a=b;b=t;?C C语句分类语句分类 1、C语句都是用来完成一定操作的,语句都是用来完成一定操作的,声明部分的内容不应称为语句。如声明部分的内容不应称为语句。如int a;不不是一个是一个C语句。语句。2、控制语句中
21、:、控制语句中:()表示其中是一个条表示其中是一个条件,表示内嵌的语句件,表示内嵌的语句 3、语句后的分号不可少、语句后的分号不可少 4、思考复合语句举例的含义?两数交、思考复合语句举例的含义?两数交换。换。练习:练习:题目:输入三个数题目:输入三个数a,b,c,输出最大数。输出最大数。要求:要求:1、用自然语言描述其算法。、用自然语言描述其算法。2、用传统流程图描述其算法。、用传统流程图描述其算法。3、用、用N-S图描述其算法。图描述其算法。NNY输入输入a,b,c开始开始ab?输出输出aYN结束结束ac?Yb c?输出输出c输出输出b输出输出c答案答案 2传统流程图传统流程图ab?输入输入
22、a,b,cac?bc?YYNYNN输出输出a输出输出b输出输出c输出输出c答案答案 3N-S结构图结构图例例1从键盘输入一个大写字母,转换成相应的小写字母输出。从键盘输入一个大写字母,转换成相应的小写字母输出。#include void main()char c1,c2;/增强人机交互性。增强人机交互性。printf(“请输入一个大写字母:请输入一个大写字母:”);c1=getchar();printf(“%c,%dn”,c1,c1);c2=c1+32;printf(“%c,%dn”,c2,c2);请输入一个大写字母:请输入一个大写字母:A A,65a,97 在顺序结构程序中,各语句(或命令)
23、是按照位置的先后次在顺序结构程序中,各语句(或命令)是按照位置的先后次序,顺序执行的,且每条语句都会被执行到。序,顺序执行的,且每条语句都会被执行到。运行情况:运行情况:3.2 3.2 顺序结构程序设计顺序结构程序设计 提高人机交互性建议:为改善人机交提高人机交互性建议:为改善人机交互性,同时简化输入操作,在设计输入操互性,同时简化输入操作,在设计输入操作时,一般先用作时,一般先用printf()函数输出一个提示函数输出一个提示信息,再用信息,再用scanf()函数进行数据输入。函数进行数据输入。注意:在对一个具体问题进行程序设注意:在对一个具体问题进行程序设计时,要选择合理的数据类型。计时,
24、要选择合理的数据类型。例例2输入三角形的三边,求三角形的面积。输入三角形的三边,求三角形的面积。#include#include void main()float a,b,c,p,s;printf(“请输入三角形的三边:请输入三角形的三边:”);scanf(“%f%f%f”,&a,&b,&c);p=(a+b+c)/2;s=sqrt(p*(p-a)*(p-b)*(p-c);printf(“s=%7.2fn”,s);请输入三角形的三边:请输入三角形的三边:3 4 5 s=6.00分析分析a,b,c:表示三角形的三边。表示三角形的三边。p:中间变量。中间变量。p=(a+b+c)/2s:三角形面积。三
25、角形面积。以上变量均为实型。以上变量均为实型。输入输入a,b,c输出输出sp(a+b+c)/2ssqrt(p*(p-a)*(p-b)*(p-c)?若输入若输入3 4 8-2 -3 9运行情况:运行情况:此例要求在输入三角形三边时,满足此例要求在输入三角形三边时,满足构成三角形的条件:任意两边之和大于第构成三角形的条件:任意两边之和大于第三边。否则结果无意义。三边。否则结果无意义。include void main()int num1,num2,num3,sum;float aver;printf(“请输入三个整数请输入三个整数:”);scanf(“%d,%d,%d”,&num1,&num2,&
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 程序 基本 控制 结构 及其 应用
限制150内