c语言教案第4讲

上传人:gp****x 文档编号:243098489 上传时间:2024-09-15 格式:PPT 页数:30 大小:301KB
返回 下载 相关 举报
c语言教案第4讲_第1页
第1页 / 共30页
c语言教案第4讲_第2页
第2页 / 共30页
c语言教案第4讲_第3页
第3页 / 共30页
点击查看更多>>
资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,第,4,讲 算法、,C,程序的三种结构、,C,语句,教学目的与要求:,了解,C,语句的语句及算法的特点和表示方法;,掌握程序的三大基本结构及赋值运算符与表达式,教学内容提要:,1,、算法与程序的三大基本结构,2,、,C,程序中的语句,3,、赋值运算符与表达式,教学重点:,1,、,C,程序的三种结构的表示方法,2,、,C,语句和赋值语句,教学难点:程序的三大基本结构,教学进度:教材,P48,P60,教学过程:,1,4.1,、算法与程序的三大基本结构,1、数据结构是程序所处理的对象,数据的表示和组织形式,2,、算法:指为解决某个特定问题而采取的确定切有限的步骤。,1976,年瑞士计算机科学家,Niklaus Wirth,在他的惊世之作中提出了一个著名的公式:,算法,+,数据结构,=,程序,即:“程序就是在数据的某些特定表示方式和结构的基础上对抽象算法的具体表述”。,一、算法的概述,2,二、,算法的组成要素与基本性质,1,、,算法含有两大要素:,(,1,)操作,算法是由一系列操作组成的。,(,2,)控制结构,同一操作序列,按不同的顺序执行,就会得出不同的结,果。控制结构即如何控制组成算法的各操作的执行顺序。,结构化程序设计方法要求:一个程序只能由三种基本控制结构,(,或由它们派生出来的结构,),组成。,1966,年,Bohm,和,Jacopini,证明,由这三种基本结构可以组成任何结构的算法,解决任何问题,3,(1),顺序结构。顺序结构中的语句是按书写的顺序执行的,即语句的执行顺序与书写顺序一致。这是一种理想的结构,但是光有这样的结构不可能处理复杂的问题。,(2),选择结构。最基本的选择结构是当程序执行到某一语句时,要进行一下判断,从两种或多条路径中选择一条。,例如,要在两个数,a,b,中取一个最大的数就要经过比较判断,决定是将,a,还是将,b,输出。选择结构给程序注入最简单的智能。,(3),循环结构,(,或称重复结构,),。这种结构是将一条或多条语句重复地执行若干遍。就像驴子拉磨一样,虽然每一圈的操作都比较简单,而且相同,但磨上若干圈后就能把麦子磨成面粉。众所周知,电子计算机的一大优势是速度快。当能把一个复杂问题用循环结构来实现时,就能充分地发挥计算机的高速度的优势。,这三种基本结构是:,4,2、算法的特性:,有穷性,确定性,可行性,有零个或多个输入,有一个或多个输出。,第三章 最简单的,C,程序设计,5,三、,算法算法描述工具,1.,流程图,过程,判断,数据,预定义过程,起止,流程线,连接,注释,常用的流程图标准化符号,流程图是一种流传很广的算法描述工具。这种工具的特点是用一些图框表示各种类型的操作,用线表示这些操作的执行顺序,6,S1,S2,S3,P,S1,S2,真,假,P,S2,假,真,(,a,)顺序结构,(,b,)选择结构,(,c,)循环结构,用流程图表示的三种基本流程控制结构。,这三种基本结构有一个明显的特征:,单入口和单出口。从整体上看都相当于一个处理框。用它们所组成的程序来龙去脉十分清晰。,7,例,求解方程,ax,2,+bx+c=0,的流程图。,p=-b/,(,2*a,),disc=b*b-4*a*c,输入,a,,,b,,,c,1,x1=p+q,,,x2=p-q,q=sqrt,(,disc,),/,(,2*a,),输出,x1,,,x2,1,第三章 最简单的,C,程序设计,8,例,:,用流程图描述从三个数中取最大数的算法。,a=b,输入,a,b,c,max=a,真,假,max=b,max=c,真,假,输出,max,输出,c,开始,结束,i=max,max=n,9,2,、,N-S,图表示算法,完全去掉了带箭头的流程线。每种结构用一个矩形框表示。,N-S,流程图表示算法的优点:,比文字描述更加直观、形象,易于理解;,比传统的流程图紧凑易画;,废除流程线,整个算法结构是由各个基本结构按顺序组成。,N-S,流程图的上下顺序就是执行时的顺序。,N-S,图表示的算法都是结构化的算法。,第三章 最简单的,C,程序设计,10,S1,S2,S3,P,S1,S2,当,P,S,假,真,(,c,)当型重复结构,(,a,)顺序结构,(,b,)选择结构,用,N-S,图描述三种基本流程结构,11,a=b,max=a,max=b,输入,a,,,b,,,c,假,真,max=c,输出,max,输出,c,真,假,当,i=max,max=n,真,假,输入,n,初始化:,max=0,,,i=1,输出,max,例,:,用,N-S,图描述从三个数中取最大数的算法。,12,3.,伪代码,伪代码,(pseudo code),是用介于自然语言与计算机语言之间的文字符号算法描述的工具。它无固定的、严格的语法规则,通常是借助某种高级语言的控制结构,中间的操作可以用自然语言,(,如中文或英文,),,,数中取大算法的伪代码描述。,输入,a,b,c,;,if(a=b),max=a;,else,max=b,if(max=c),输出,max;,else,输出,c,;,13,四、,自顶向下,逐步细化的算法设计过程,第三章 最简单的,C,程序设计,算法设计是一个的智力过程。设计复杂问题的算法更是一个高强度的智力劳动。实践证明,保证算法设计正确的一个方法是要让问题的复杂性能够在人的智力容易控制范围之内。为此人们提出了一种自顶向下、逐步细化的算法设计方法。,按照这种方法,解题之初不要一下子就力图触及到问题解法的细节,而应当从问题的全局出发,给出高度概括、抽象的算法,通常是把这些问题的求解分成可以独立求解的若干子问题;接着对每一个子问题,再进行分解;,最后对不可再分的子问题分别设计算法,而且设计的过程也是从概括逐步细化。一般说来,上层解决的是“做什么”的过程,逐步细化的过程是解决“怎么做”的过程。,在用伪代码描述算法时,随着逐步细化,最终可以用程序设计语言代替算法中的伪代码。等到全部伪代码都用某种程序设计语言描述了,程序设计也就基本完成了。,14,例:用自顶向下、逐步细化的方法设计三数中取大算法的过程。,这里,仅考虑采用伪代码描述的方法。,(1),首先,把该问题分析为:,s1:,输入三数,a,b,c;,s2:,从,a,b,c,中找出大数赋给,max;,s3:,输出,max,。,(2),在前一阶段的基础上考虑各个“做什么”的实现途径,把算法细化为:,s1:,调用,scanf(),函数;,s2:,设计一个函数,max3 (a,b,c);,s3:,调用,printf(),函数。,(3),设计,max 3(),的算法。仍按逐步细化的方法,先给出概要算法。设三个参数为,float x, float y, float z,。,s2.1:,从,x,与,y,中取大数送,m,中;,s2.2:,从,m,与,z,中取大数送,m,中;,s2.3:,返回,m,给主调函数。,15,float max 3 (float x, float y, float z),float m;,if (x,y),m=x;,else,m=y;,if (m,z),m=m;,else,m=z;,return (m);,int main(void) /*,三数中取大数*,/,float a,b,c, max;,float max3(float x,float y, float z);,printf (Input 3 numbers a b c:);,scanf (%f%f%f, ,max=max3(a,b,c);,printf (The max is: %f,n, max);,return 0;,16,4.2,、,C,语句简介,1、C,语言的语句概述:,程序对数据的处理是通过“语句”的执行来实现的。,一条语句完成一项操作(或功能)。,一个为实现特定目的的程序应包含若干条语句。,C,语言本身不提供输入输出语句,输入和输出操作都是由函数来实现的。那么函数如何来实现输入输出操作呢?,第三章 最简单的,C,程序设计,17,表达式语句(表达式;),简单语句,函数调用语句(函数名(参数表) ) ;,空语句(;),C,语言,数据操作 复合语句( 一条或多条语句 ),语句 条件语句(,if,语句,,switch,语句),结构化语句,while,语句,循环语句,do_while,语句,for,语句,流程控制语句,break,语句,限定转向语句,continue,语句,非结构化语句,return,语句,非限定转向语句(,goto,语句),2、C,语言的语句分类:,第三章 最简单的,C,程序设计,18,3、简单语句,1).表达式语句,由表达式组成的语句称为表达式语句,语句格式:表达式;,分号(;)是语句结束的标志,功能:计算表达式或改变变量的值。,分类:,运算符表达式语句和赋值语句,(1)运算符表达式语句,:,运算符表达式后跟一个分号组成,例1:,i+;,语句的功能是,变量,i,的值增1。,a=3,b=a+2,c=a+1;,/*,由三个赋值语句组成的逗号表达式语句。*/,a+b;/*,算术表达式语句,计算,a,与,b,之和。*/,第三章 最简单的,C,程序设计,19,(2)赋值语句:赋值表达式后跟一个分号组成。,例2:,x=y+z; /*,计算,y+z,的和并赋值给变量,x。*/,x=2; y=3;,2),.,函数调用语句,由函数调用后加一个分号组成。,格式:函数名 (参数列表);,分类:,标准库函数,用户定义函数,标准库函数调用原则:,(1) 要在程序中包含相应的头文件,(2) 调用的一般形式:函数名 (参数列表);,例,3,:,scanf(,%f,,,printf(,%f,,x);,第三章 最简单的,C,程序设计,20,4.3,、 赋值运算符和赋值表达式,1、赋值运算符:,= (数学上的等号),功能:将一个表达式的值赋给一个,变量,。,2、赋值表达式,用赋值运算符将变量和表达式连接起来的式子,形式: =,求值规则:,将“=”右边表达式的值赋给左边的变量,。,结合性:自右至左,21,例,2,:,(1),x=(y=12)/4,y,值为12,,x,值为3,表达式的值为3,(2),x=y=12/4,y,值为3,,x,值为3,表达式的值为3,(3),x=(y=12/4),(,y,值为3,,x,值为3,表达式的值为3,(4) (,x=y)=12/4,该赋值运算符左边不是变量,而是一个表达式,22,3、复合赋值运算符,*=、/=、%=、+=、-=、,=、&=、,=、=,共10个,由赋值运算符与算术、位移、位逻辑运算符组成。,复合运算符是一个运算符,但功能上,是两个运算符功能的组合。,例,3,:,a+=b,相当于,a=a+b,a*=b+c,相当于,a=a*,(b+c),a=2; a+=a*=a; a,的值为,8,练习:,a=2; a+=a*a;,求,a,的值?,23,C,语言允许整型、实型、字符型数据进行混合运算。,不同类型的数据进行混合运算时,要考虑的问题有:,(1)运算符的优先级别;,(2)运算符的结合方向;,(3)数据类型转换。,C,语言数据类型转换可归纳为二种方式:,强制转换,表达式中的类型转换,算术表达式中的运算转换,赋值转换,输出转换,函数调用转换,4.4,、数据类型转换,24,int,unsigned int,long int,double,float,char, short,转换规则,存储长度较短,存储长度较长,总趋势:,1.算术表达式中的运算转换,25,例,6,:,int x=2;double y=1.6;char c=A;,c+x*y=?,65(,int),2(,int),1.6 (,double),3.2(,double),68.2(,double),26,2、赋值转换,在赋值时,将赋值符右边值的类型转换成与其左边变量类型一致的类型。,几种情况:,(1) 实型,整型(字符型),取整数部分,去掉小数部分,(2),整型、字符型,实型,补足有效位,float f=23; 23.00000 (7,位),double f=A; 65.00 000 000 000 000 (16,位),如:,int i; i=3.56;,结果,i,的值为,3,。,27,(3) 对,char、int、short、long、unsigned,型数据,赋值符右边数据(,a,位),赋值符左边变量(,b,位),a=b,原样照赋,ab,截断高,a-b,位,送低,b,位,ab,无符号数据或正数,有符号数据,高,a-b,位全补0,有符号变量,符号扩展,符号扩展,符号位为0,剩余的高位补0,符号位为1,剩余的高位补1,如:,int a; long b=65535; a=b;,结果,a,为,-1,。,111111111,28,3、强制转换,形式:(类型名)表达式,注意:,强制类型转换时,得到所需类型的值, 原来变量的类型和值都不变。,例,7,:,int a=2, b=5; float x=4.4;,(,float)b/a,2.5,(,float)(b/a),2.0,如:,int a=3; long int b; b=a;,如:,int a=-1; long int b; b=a;,29,小 结,1,、算法的特点和表示方法,五大特征,流程图和,N-S,图,2,、,C,语言中的三大基本结构,顺序、选择、循环,3,、,C,语言的语句,五大语句,赋值运算符语句,第三章 最简单的,C,程序设计,作业:,30,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 大学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!