C语言程序设计的概念1.ppt_第1页
C语言程序设计的概念1.ppt_第2页
C语言程序设计的概念1.ppt_第3页
C语言程序设计的概念1.ppt_第4页
C语言程序设计的概念1.ppt_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1/50,C语言程序设计,计算机系 陈舵,2/50,联系方式,联系方式: 邮箱: 预祝大家学习愉快、成绩优良!,3/50,学时分配,4/50,分数比例,5/50,课程简介,计算机和电子信息类专业的专业基础课。 是在计算机编程和工业控制领域中,最有影响力并且得到广泛支持的一种程序设计语言 得到ISO和ANSI标准化 掌握了 C 语言,可以较为轻松地学习其他程序设计语言 为后续的面向对象程序设计,Java程序设计等课程的学习打下基础。,6/50,各章学时,第1章 C语言程序设计的概念(2学时) 第2章 基本数据类型(6学时) 第3章 C语言程序设计的流程控制(6学时) 第4章 模块化程序设计(6学时) 第5章 数组(4学时) 第6章 指针(8学时) 第7章 用户定制数据类型(6学时),7/50,教材,1.教材: 谭浩强,张基温编著 , C语言程序设计教程(第3版),高等教育出版社,2006 2. 参考教材: (1)王明福、乌云高娃编 ,C语言程序设计教程(21世纪高等学校应用型教材), 高等教育出版社,2004 (2)张强华主编C语言程序设计,人民邮电出版社,2001 (3)徐建民主编C语言程序设计,电子工业出版社,2002,8/50,第1章 C语言程序设计的概念,9/50,本章目标,一般了解: 计算机程序设计语言基本概念、C语言发展过程、C语言标准、特点 主要内容:C程序的一般格式、名字与标识符、语句、赋值运算、算术运算 难点内容:自反算术赋值、自加自减运算,1.1 程序与程序设计语言,11/50,计算机与程序,12/50,CPU指令系统,由0、1序列构成的指令码组成 如:10000000 加 10010000 减,用助记符号描述的指令系统 如 ADD A, B,面向机器的语言,程序设计是数据被加工的过程,客观世界可以分类,对象是类的实例 对象是数据和方法的封装 对象间通过发送和接受消息发生联系,程序设计关键是定义类,并由类派生对象,程序设计语言,13/50,高级语言的开发过程,提出问题 分析问题并建立模型 表现模型:用一种语言系统来描述模型。 源程序的编辑:用程序设计语言书写并对其进行修改 程序的编译与链接 程序的测试与调试 编写程序文档 程序的维护,14/50,程序代码的录入, 生成源程序*.c,语法分析查错,翻译 生成目标程序*.obj,与其它目标程序或库 链接装配,生成可执行 程序*.exe,重点理解,15/50,1.2 C语言及其标准,16/50,几种广泛流行高级语言的发展,Ada,ALGOL60,ALGOL68,Pascal,Modula-2,CPL,BCPL,B,C,C+,Java,LISP,PROLOG,COBOL,FORTRAN77,FORTRAN,PL/1,Simula 67,Smalltalk 80,BASIC,ANSI-BASIC,QBASIC,VB,FORTRAN90,17/50,C语言的出现,1960诺尔博士(2006年图灵奖的获得者 )提出的ALGOL60语言,定义了比较完整的语法, 是后来许多程序设计语言的原型。 CPL ( Combined Programing Language )语言是1963年在英国的剑桥大学首次使用的,这种语言比较接近硬件,但规模较大,难以推广 。 1967年英国剑桥大学的Matin Richards对CPL语言做了简化,推出了BCPL(Basic CPL)语言,它能够处理与机器本身数据类型相近的数据,具有与内存地址对应的指针处理方式。,18/50,C语言的出现(续),1970年美国贝尔实验室的Ken. Thomposon以BCPL语言为基础,设计出了很接近硬件的B(取第一个字母)语言,并用B语言写出了第一个UNIX操作系统,在PDP-7上实现。 1972年,贝尔实验室的D. M. Richie在B语言的基础上进一步充实和完善,设出了C语言(取BCPL的第二字母), 为此K. Thomposon和D. M. Richie于1999年获美国国家技术勋章 1978年, B. W. Kernighan和 D. M. Richie出版著名的The C Programming Language, 从而使C语言成为应用最广泛的程序设计语言,19/50,C语言的标准,1983年,ANSI公布了第一个C语言标准草案 1989年,ANSI发布了一个完整的C语言标准ANSI X3.1591989,通常称为“ANSI C”,简称“C89”。 1990年,ISO采纳了C89,做了少量编辑性修改后,以国际标准ISOIEC 98991990发布,通常称其为“C90”。 1999年,WG14对C89做了技术修订和扩充,形成正式的C语言标准C99,WG14:即JTC1 / SC22 /WG14,是ISO中C语言工作小组,20/50,C语言特点,语言简洁、紧凑、灵活 运算功能强大 数据类型丰富 程序设计结构化、模块化 生成目标代码质量高 可移植性好 兼有高级语言和 低级语言的特点,21/50,37个关键字,22/50,9种控制语句,if( )else for( ) while( ) dowhile( ) continue break switch goto return,23/50,13类运算符,算术运算符:+ - * / % + - 关系运算符: = != 逻辑运算符:! & | 位运算符 : | & 赋值运算符:= 及其扩展 条件运算符:?: 逗号运算符:, 指针运算符:* & 求字节数 :sizeof 强制类型转换:(类型) 分量运算符:. - 下标运算符: 其它 :( ) -,24/50,17个优先级,25/50,丰富的数据类型,字符型 整型(短、长) 浮点型(单、双、长双) 指针 枚举 结构体 公用体 数组 文件,26/50,1.3 C语言程序概要,27/50,1.3.1 函数,/* example1.1 The first C Program*/ #include int main(void) printf(“Hello,World!n”); return(0); ,输出: Hello,World!,28/50,/* example1.2 calculate the sum of a and b*/ #include int add (int, int); /* This is the main program */ void main(void) int a,b,sum; a=10; b=24; sum=add(a,b); printf(”sum= %dn“,sum); /* This function calculates the sum of x and y */ int add(int x,int y) int z; z=x+y; return(z); ,运行结果: sum=34,29/50,C语言的结构特点,函数是组成C程序的基本部件,遵循“先声明、后使用”的原则 函数由两部分组成 函数类型 函数名称(形参) 数据定义部分 函数执行部分 必须有且只能有一个主函数main,程序执行从main开始,在main中结束。 函数体由语句组成,“;”为语句终止符 /* */为注释, 不产生编译代码 注意注释不能嵌套,例 /*This is the main /* of example 1.1*/ */,30/50,习惯用小写字母表示变量 不使用行号,无程序行概念 常用锯齿形书写格式,main( ) . . . . ,void main(void ) int i , j , sum; sum=0; for(i=1; i10;i+) for(j=1;j10;j+) sum+=i*j ; printf(“%dn”,sum); ,编程风格: 使用TAB缩进 对齐 有足够的注释 有合适的空行,格式特点,31/50,1.3.2 语句,表达式语句 表达式由运算符、变量和常量组成,加上语句结束符即成为表达式语句。 流程控制语句 本部分内容在第3章详细讲解 块语句 块语句也称为复合语句,是用一对花括号将一组语句括起来。一个块语句中可以包括若干声明和若干语句,在语法上相当于一条语句。 声明语句 声明语句属于非执行语句,void main(void) int i, j, sum; i=1,j=2; sum=i+j; if(sum0) printf(“正数n“); else printf(“负数n“); int k; k=3; sum=k+5; printf(“%dn“,sum); ,32/50,1.3.3 名字与声明,标识符也称为名字,如变量名、函数名、文件名等 标识符是大小写字母、数字和下划线所组成的序列,但不能以数字开头。 C语言区分同一字母的大小。 C99标准规定,标识符长度不大于63个字符。 用户标识符不能和系统标识符冲突。,33/50,37个关键字,34/50,建议的命名原则,“见名知意”。如: sum, score, average, day 等。 尽量避免使用容易混淆的字符。例如:0O;1i;2Z 名字不要过短,函数名尽量使用动宾结构,如PrintCalendar、IsPrime等。 参考匈牙利命名法,参见17页表1.2,35/50,sum, average, No1, x1, x2, abc PI, Number_of_moves, J5_7,No.l, x+y, 5_7_9 , static, extern, $123,标识符举例,36/50,声明,变量函数等程序实体必须遵循“先声明,后使用”的原则。 经过“声明”,编译系统在进行编译时会根据指定的类型为程序实体分配存储空间,并决定其存储方式和允许的操作方式。 声明属于非执行语句,表达式语句和流程控制语句属于执行语句。,37/50,1.3.4 变量及其赋值,变量 变量( variable)是一种程序实体。它具有一个值,并且这个值是可以通过程序操作而改变的。 变量的赋值运算(右结合性) 符号“=”称为赋值运算符:右操作数也称右值(righ value),可以是一个表达式;左操作数也称左值(left value),只能是变量。,38/50,赋值举例,n=n+5 a=b=c=5 a=5+(c=6) a=(b=4)+(c=6) a=(b=10)/(c=2),39/50,1.3.5 算术运算,1.基本算术运算符(双元,左结合性) * / % + - 构成算术表达式,注意与数学表达式的区别 a(-b) a*-b,(1+3*a)/(b+c/(d+e),(a/b)/(c/d),40/50,基本算术运算举例,设:int a=1,b=2,c=5,ri; float x=1.2,y=3.7,rf; ri=a+b+c; ri=a+b*c; rf=x+y; ri=c%b; ri=5%-2; ri=-5%2; ri=-5%-2;,11,4.9,1,1,-1,-1,8,41/50,基本算术运算举例(续),设:int a=1,b=2,c=5,ri; float x=1.2,y=3.7,rf; rf=6.0/2.0; ri=6/2; ri=6/4; ri=4/6; ri=300*2/3; ri=2/3*300;,3.0,3,1,0,200,0,42/50,2自反算术运算符(双元,右结合性),a+=b a-=b a-=b*5 x*=y+1 a%=b-1 c=b*=a+2 c*=b*=2 ,注意运算符左侧必须为变量。 3*a+=b,5+=a等均为非法。,a=a+b a=a-b a=a-b*5 x=x*(y+1) a=a%(b-1) c=(b=(b*(a+2) c=c*(b=b*2),43/50,3 自加和自减运算(单目),i+; +i; i+=1, i=i+1; j-; -j; j-=1, j=j-1; x=i+; x=i, i+=1; x=+i; i+=1, x=i; 注意: 5+,(x+y)-等都是非法的。,44/50,自加和自减运算举例,int main(void) int i=5,j; j=i+; i=5; j=+i; i=5; j=(+i)*5; i=5; j=(i+)*5; ,j=5,i=6,j=6,i=6,j=30,i=6,j=25,i=6,45/50,4 正负号运算符(单目),+ - 是一元运算符,具有右结合性,优先级高于算术运算。例如: -a a=0-a -a*b (0-a)*b,46/50,1.3.6 赋值类运算符副作用及限制,1. 费解、易于误解对人的副作用 c=b*=a+2; 误:b*=a; c=b+2; 正:c=(b=(b*(a+2) 分解:a=a+2;b=b*a;c=b; 或者 c=b*=a+2; /*a=a+2;b=b*a;c=b;*/ x=i+j; 误:x=i+(+j); 正:x=(i+)+i;,误:b*=a; c=b+2; 正:c=(b=(b*(a+2),分解:a=a+2;b=b*a;c=b; 或者 c=b*=a+2; /*a=a+2;b=b*a;c=b;*/,误:x=i+(+j); 正:x=(i+)+i;,47/50,2. 不定解对机器的副作用,j=3; i=(k=j+1)+(j=5); 在VC+编译环境中为9,即从左到右运算。 应改为: j=3,k=j+1,j=5,i=k+j;,48/50,自测练习题 已知 int a=3,b=5,c=7,y; 求y的值 1. y=a+b-c%a+ -b; 2. y=(a-b)%6+c/a*10-8; 3. y=a

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论