单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,C,程序设计,C程序设计,第一章 基本知识,程序设计语言,C,语言简况,程序设计语言形式化描述,C,程序结构,算法及其描述工具,PAD,本章小结,作业,第一章 基本知识程序设计语言,程序设计语言(,1,),机器语言,1010 1001 0001 0110 0000 0001,0011 1100 0001 1000 0000 0001 ,0000 0000 0000 0000,0000 0000 0000 0000,程序设计语言(1)机器语言,程序设计语言(,2,),汇编语言,MOVAX,X,CMPAX,Y,JLS1,SUBAX,15,JMPS2,S1:ADDAX,15,S2:MOVY,AX,X DW?,Y DW?,程序设计语言(2)汇编语言,程序设计语言(,3,),高级语言,if(XY),Y=X+15;,else,Y=X-15;,注意,高级语言并不单单指,C,语言,如,VC,BASIC,等语言也属于高级语言范畴。,程序设计语言(3)高级语言,程序设计语言(,4,),程序的执行,用汇编语言或高级语言编出程序,将源程序录入计算机,由翻译器(汇编程序或编译程序),将源程序翻译成机器语言程序,由连接程序将机器语言程序连接,生成计算机可执行的程序,将可执行程序送入计算机,并启动计算机执行,得到最后结果,程序设计语言(4)程序的执行用汇编语言或高级语言编出程序,C,语言的历史背景,70,年代初,,C,语言在美国贝尔实验室诞生。它的前身可以追朔到,ALGOL60,、,CPL,、,BCPL,、,B,。,1982,年,C,标准化工作开始。,1989,年,ISO,公布,ISO/IEC 9899:1990,,简称“,C89”,。,1995,年对,C89,作修改和补充,称为“,C95”,。,1999,对,C,进行更大的修订后,公布,ISO/IEC 9899:1999,,简称“,C99”,。,我国于,1994,年,12,月,4,日公布了“中华人民共和国国家标准,GB/T 15272-94,程序设计语言,C”,。,C语言的历史背景70年代初,C 语言在美国贝尔实验室诞生。它,C,语言的优点,语言简洁、紧凑,使用方便、灵活;,C,本身是模块式,便于集体分工合作开发大型程序,运算符丰富,数据结构丰富,具有结构化控制结构,与计算机硬件联系紧密,可以直接访问计算机内存,具有位操作,生成目标代码质量高。,C语言的优点,C,语言的缺点,语法不严格,类型机制不严密,比如字符类型与整数类型没有区别、不检查下标超界,程序设计自由度太大,不利于保证程序的正确性,若程序与计算机硬件联系太密切,则可移植性不好,有些语言成分太复杂,比如运算符,语言本身不能保证程序设计的结构化。,C语言的缺点语法不严格,程序设计语言形式化描述,组成,语法,规则,巴克斯,-,脑尔范式,(BNF),语义,意义,if(X0,对应的文法,G1,G1,:,S=010S1,将符号,=,用,代替,G1,:,S,010S1,例1.2集合 0n1n|n0 对应的文法G1,例,1.3,标识符,标识符,由字母或开头,后跟任意多个字母或数字组成的字符串,标识符,字母,标识符字母,标识符数字,例1.3标识符标识符,例,1.4,标识符表,标识符表,一个标识符是标识符表,标识符表后边跟一个逗号“,”,和一个标识符还是标识符表,标识符表,标识符,标识符表,标识符,例1.4标识符表标识符表,C,程序结构,程 序,编译单元表,编译单元表,编译单元,编译单元编译单元表,编译单元,顶层声明表,顶层声明表,顶层声明,顶层声明表 顶层声明,顶层声明,声明,函数定义,函数定义,函数定义说明符复合语句,C程序结构 程 序 编译单元表,C,程序实例,文件,hello.c,#include,void hello(void),printf(“Hello!n”);,程序执行过程,文件,startup.c,extern void hello(void),int main(void),hello();,return 0,hello.c,hello.obj,startup.exe,startup.c startup.obj,C程序实例文件hello.c文件startup.chello,软件开发一般过程,可行性研究,需求分析,设计,概要设计,详细设计,建立数学模型,找出计算方法,进行算法分析,实现,写出程序,调试程序,测试,组装测试,确认测试,使用,维护,软件开发一般过程可行性研究实现,算法,算法是一个计算过程,具体指明应该进行的操作,描述解决问题的方法和途径,它是程序设计的基础和精髓。,一个有效的算法具有如下特点:,有穷性,确定性,有效性,算法算法是一个计算过程,具体指明应该进行的操作,描述解决问题,PAD(Problem Analysis Diagram),基本操作,控制结构,顺序结构,分支结构,循环控制结构,函数,操作,PAD(Problem Analysis Diagram,顺序控制结构,操作,1,操作,2,操作,3,操作,1,操作,2,操作,3,顺序控制结构操作1操作2操作3操作1操作2操作3,分支控制结构,单分支,如果,XX,条件为真,执行操作,如果,XX,条件为真,执行操作,1,;否则执行操作,2,条件,操作,条件,操作,1,操作,2,分支控制结构单分支条件操作条件操作1操作2,多分支,如果表达式,e,满足条件,1,,执行操作,1,满足条件,2,,执行操作,2,满足条件,n,,执行操作,n,条件,2,条件,n,操作,1,操作,n,操作,n-1,操作,2,表,达,式,.,条件,1,条件,.,多分支条件2条件n操作1操作n操作n-1操作2表.条件1,循环控制结构,先判断条件循环,操作,重复条件,F,结束,重复条件,要重复执行的操作,循环控制结构先判断条件循环操作重复条件F结束 重复条件,后判断条件,操作,重复条件,T,结束,重复条件,要重复执行的操作,后判断条件操作重复条件T结束 重复条件 要重复执行的操作,函数,函数定义,函数体,函数名,(,形参表,),RETURN,def,函数函数定义 函数名(形参表)RETURNdef,函数调用,名,(,实参表,),函数调用,PAD,的例子,将,A,、,B,两瓶分别盛放的米醋和酱油互换,将,A,中的米醋放到,C,中,将,B,中的酱油放到,A,中,将,C,中的米醋放到,B,中,A,B,C,CA,A,B,B,C,PAD的例子将A、B两瓶分别盛放的米醋和酱油互换ABCCA,XY,Y=X+15,Y=X-15,XYY=X+15Y=X-15,i=1,开始,i=2,i=i+1,KAi=0,;,NOi=0,read(IMA),;,MAE=3-IMA,NOIMA=NOIMA+1,IMAMAE,F,T,read(IMA),IMA=9,printf(KA),停,T,KAIMA=KAIMA+1,;,IMA=IMA+1,IMAMAE,IMA=IMA+1,F,PAD,实例,1,2,3,4,5,i=1开始i=2i=i+1KAi=0;NO,第,1,部分,第,2,部分,第,3,部分,第,4,部分,第,5,部分,i=1;,read(IMA);,printf(KA),前循环,非,i=2,循环体,KAi=0;,MAE=3-IMA;,NOi=0;,i=i+1;,后循环,非,IMA=9,循环体,NOIMA=NOIMA+1;,单分支,IMAMAE,前循环,IMA=IMA+1,IMAMAE,KAIMA=KAIMA+1,IMA=IMA+1,read(IMA),第1部分第2部分第3部分第4部分第5部分i=1;read(I,i=2,i=i+1,KAi=0,;,NOi=0,T,i=2i=i+1KAi=0;NOi=0,NOIMA=NOIMA+1,IMAMAE,F,read(IMA),IMA=9,T,KAIMA=KAIMA+1,;,IMA=IMA+1,IMAMAE,IMA=IMA+1,F,NOIMA=NOIMA+1IMAMAEFread(,