资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,*,第,1,章,程序设计和,C,语言,1.1,什么是计算机程序,1.2,什么是计算机语言,1.3 C,语言的发展及其特点,1.4,最简单的,C,语言程序,1.5,运行,C,程序的步骤与方法,1.6,程序设计的任务,1.1,什么是计算机程序,计算机能干什么?,程序,:,一组计算机能识别和执行的,指令,计算机的本质:,程序,的,机器,(,软件运行在硬件上,),1.2,什么是计算机语言,计算机语言,:,人和计算机交流信息,的、,计算机和人都能识别的语言,人和人之间的交流需要通过语言,人和计算机之间的交流同样需要语言。,石的奇迹,(The Pattern on the Stone),。,1.2,什么是计算机语言,计算机语言发展阶段,:,机器语言,(,由,0,和,1,组成的,机器,指令,,二进制数串),符号,(汇编,),语言,(,用英文字母和数字表示指令,),高级语言,(,接近于人的自然语言和数学语言,),面向,过程,的语言,(,非结构化的语言,F,ortran,、,结构化语言,C),面向,对象,的语言,(C,+,、,C#,、,Java,),面向,方面,(,Aspect,)的语言等,低级语言,1.3 C,语言的发展及其特点,52,54,56,58,60,62,64,66,68,70,72,74,76,78,80,82,84,86,88,90,92,94,96,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,1.3 C,语言的发展及其特点,1.3 C,语言的发展及其特点,1983,年,,美国国家标准协会,(ANSI),成立了一个委员会,根据,C,语言问世以来各种版本对,C,语言的发展和扩充,制定了,第一个,C,语言标准草案,(83 ANSI C),。,1.3 C,语言的发展及其特点,1989,年,,ANSI,公布了一个,完整的,C,语言标准,ANSI X3.159-1989(,常称,ANSI C,,或,C89),。,1.3 C,语言的发展及其特点,1990,年,,国际标准化组织,ISO(International,Standard Organization),接受,C89,作为国际标准,ISO/IEC 9899:1990,,它和,ANSI,的,C89,基本上是相同的。,1.3 C,语言的发展及其特点,1995,年,,ISO,对,C90,作了一些修订,,1999,年,,ISO,又对,C,语言标准进行修订,在基本保留原来的,C,语言特征的基础上,针对应用的需要,增加了一些功能,尤其是,C+,中的一些功能,命名为,ISO/IEC 9899:1999,。,1.3 C,语言的发展及其特点,2001,、,2004,年先后进行了两次技术修正,(,TC1,和,TC2,),。,ISO/IEC 9899:1999(,及其技术修正,),被称为,C99,。,C99,是,C89,(,及,1995,基准增补,1),的扩充。,1.3 C,语言的发展及其特点,本书的叙述以,C99,标准为依据,(,对,C99,新增加的功能作特别的说明,),。,目前不同软件公司提供的各,C,语言编译系统多数并未完全实现,C99,建议的功能,本书中程序基本上都可以在目前所用的编译系统,(,如,VC+ 6.0,,,Turbo C+ 3.0,,,GCC),上编译和运行。,1.3 C,语言的发展及其特点,C,语言是一种用途广泛、功能强大、使用灵活的过程性,(Procedural),编程语言,既可用于编写,应用软件,,又能用于编写,系统软件,。因此,C,语言问世以后得到迅速推广。,1.3 C,语言的发展及其特点,C,语言主要特点,:,语言简洁、紧凑,使用方便、灵活。,只有,37,个关键字、,9,种控制语句,程序书写形式自由,源程序短,C编译系统简捷,以库函数的形式提供多种功能,1.3 C,语言的发展及其特点,C,语言主要特点,:,运算符丰富。,有,34,种运算符,把括号、赋值、强制类型转换等都作为运算符处理,表达式类型,多样化,(关系、逻辑、赋值等,),1.3 C,语言的发展及其特点,C,语言主要特点,:,数据类型丰富。,包括,:,整型、浮点型、字符型、数组类型、指针类型、结构体类型、共用体类型,C99,又扩充了复数浮点类型、超长整型,(long long),、布尔类型,(,bool,),指针类型数据,能用来实现各种复杂的数据结构,(,如链表、树、栈等,),的运算。,1.3 C,语言的发展及其特点,C,语言主要特点,:,具有,结构化,的控制语句,如,if,else,语句、,while,语句、,do,while,语句、,switch,语句、,for,语句,用函数作为程序的模块单位,便于实现程序的模块化,1.3 C,语言的发展及其特点,C,语言主要特点,:,语法限制,不太严格,程序设计自由度大。,对数组下标越界不做检查,对变量的类型使用比较灵活,例如,整型量与字符型数据可以通用,隐式类型转换等,1.3 C,语言的发展及其特点,C,语言主要特点,:,允许直接访问物理地址,能进行位操作,可以直接对硬件进行操作,C,语言具有高级语言的功能,和,低级语言的许多功能,可用来编写,系统软件,这种双重性,使它既是成功的,系统描述,语言,又是通用的程序设计语言,(,SystemC,),1.3 C,语言的发展及其特点,C,语言主要特点,:,用,C,语言编写的程序可移植性好。,C,的编译系统简洁,很容易移植到新系统,在新系统上运行时,可直接编译“标准链,接,库”中的大部分功能,不需要修改源代码,几乎所有计算机系统都可以使用,C,语言,1.3 C,语言的发展及其特点,C,语言主要特点,:,生成目标代码质量高,程序执行效率高。,(依赖于,C,语言的编译器,,VC+,、,Borland C+,、,GCC,等,),1.4,最简单的,C,语言程序,1.4.1,最简单的,C,语言程序举例,1.4.2 C,语言程序的结构,1.4.1,最简单的,C,语言程序举例,例,1.1,要求在屏幕上输出以下一行信息。,This is a C program.,解题思路:,在主函数中用,printf,函数原样输出以上文字。,1.4.1,最简单的,C,语言程序举例,#include ,int,main( ),printf,(”This is a C program.n”);,return 0;,函数的名字,表示,主函数,C,程序必须有一个,main,函数,1.4.1,最简单的,C,语言程序举例,#include ,int,main( ),printf,(”This is a C program.n”);,return 0;,主函数返回值的,类型,,简称主函数类型,1.4.1,最简单的,C,语言程序举例,#include ,int,main( ),printf,(”This is a C program.n”);,return 0;,函数体,1.4.1,最简单的,C,语言程序举例,#include ,int,main( ),printf,(”This is a C program.n”);,return 0;,输出函数,输出语句,1.4.1,最简单的,C,语言程序举例,#include ,int,main( ),printf,(”This is a C program.n”);,return 0;,输出语句,1.4.1,最简单的,C,语言程序举例,#include ,int,main( ),printf,(”This is a C program.n”);,return 0;,换行符,1.4.1,最简单的,C,语言程序举例,#include ,int,main( ),printf,(”This is a C program.n”);,return 0;,当,main,函数执行结束前,将整数,0,作为函数值,1.4.1,最简单的,C,语言程序举例,#include ,int,main( ),printf,(”This is a C program.n”);,return 0;,表示语句结束,用到函数库中的输入输出函数,时,standard input & output,1.4.1,最简单的,C,语言程序举例,C,语言允许用两种注释方式:,/,:,单行注释,可单独占一行,可,出现在一行中其他内容的右侧,/*/,:,块式注释,可包含多行,注:出现在字符串中保留本身含义,例,1.2,求两个整数之和,。,解题思路:,设置,3,个变量,a,和,b,用来存放两个整数,sum,用来存放,和,数,用赋值运算符“,=,”把结果传送给,sum,#include ,int,main( ),int,a,b,sum,;,a = 123;,b = 456;,sum = a + b;,printf(”sum,is %,dn”,sum,);,return 0;,定义整型变量,a,b,sum,对变量,a,b,赋值,将,a,与,b,的,和赋给,sum,#include ,int,main( ),int,a,b,sum,;,a = 123;,b = 456;,sum = a + b;,printf(”sum,is %,dn”,sum,);,return 0;,用,sum,的值,替代,希望输出的字符,例,1.3,求两个整数中的较大者,,用主函数调用子函数的方式实现,。,解题思路:,用一个函数实现求两个整数中的较大者,在主函数中调用此函数并输出结果,#include ,int,main( ),int,max(int,x,int,y);,int,a,b,c,;,scanf(”%d,%d”,&a,&b,);,c =,max(a,b,);,printf(max,=%,dn,c,);,return 0;,int,max(int,x,int,y),int,z;,if (x y) z = x;,else z = y;,return(z,);,主函数,max,函数,#include ,int,main( ),int,max(int,x,int,y);,int,a,b,c,;,scanf(”%d,%d”,&a,&b,);,c =,max(a,b,);,printf(max,=%,dn,c,);,return 0;,int,max(int,x,int,y),int,z;,if (x y) z = x;,else z = y;,return(z,);,将,x,和,y,中较大者值,返回给主函数,#include ,int,main( ),int,max(int,x,int,y);,int,a,b,c,;,scanf(”%d,%d”,&a,&b,);,c =,max(a,b,);,printf(max,=%,dn,c,);,return 0;,int,max(int,x,int,y),int,z;,if (x y) z = x;,else z = y;,return(z,);,#include ,int,main( ),int,max(int,x,int,y);,int,a,b,c,;,scanf(”%d,%d”,&a,&b,);,c =,max(a,b,);,printf(max,=%,dn,c,);,return 0;,int,max(int,x,int,y),int,z;,if (x y) z = x;,else z = y;,return(z,);,因,max,函数的定义,在,main,函数之后,,需声明,#include ,int,main( ),int,max(int,x,int,y);,int,a,b,c,;,scanf(”%d,%d”,&a,&b,);,c =,max(a,b,);,printf(max,=%,dn,c,);,return 0;,int,max(int,x,int,y),int,z;,if (x y) z = x;,else z = y;,return(z,);,输入函数,#include ,int,main( ),int,max(int,x,int,y);,int,a,b,c,;,scanf(”%d,%d”,&a,&b,);,c =,max(a,b,);,printf(max,=%,dn,c,);,return 0;,int,max(int,x,int,y),int,z;,if (x y) z = x;,else z = y;,return(z,);,输入语句,#include ,int,main( ),int,max(int,x,int,y);,int,a,b,c,;,scanf(”%d,%d”,&a,&b,);,c =,max(a,b,);,printf(max,=%,dn,c,);,return 0;,int,max(int,x,int,y),int,z;,if (x y) z = x;,else z = y;,return(z,);,输入的数据放到,a,b,中,输入格式,a,的地址,#include ,int,main( ),int,max(int,x,int,y);,int,a,b,c,;,scanf(”%d,%d”,&a,&b,);,c =,max(a,b,);,printf(max,=%,dn,c,);,return 0;,int,max(int,x,int,y),int,z;,if (x y) z = x;,else z = y;,return(z,);,调用,max,函数,#include ,int,main( ),int,max(int,x,int,y);,int,a,b,c,;,scanf(”%d,%d”,&a,&b,);,c =,max(a,b,);,printf(max,=%,dn,c,);,return 0;,int,max(int,x,int,y),int,z;,if (x y) z = x;,else z = y;,return(z,);,8,5,8,8,#include ,int,main( ),int,max(int,x,int,y);,int,a,b,c,;,scanf(”%d,%d”,&a,&b,);,c =,max(a,b,);,printf(max,=%,dn,c,);,return 0;,int,max(int,x,int,y),int,z;,if (x y) z = x;,else z = y;,return(z,);,8,5,8,8,#include ,int,main( ),int,max(int,x,int,y);,int,a,b,c,;,scanf(”%d,%d”,&a,&b,);,c =,max(a,b,);,printf(max,=%,dn,c,);,return 0;,int,max(int,x,int,y),int,z;,if (x y) z = x;,else z = y;,return(z,);,实际参数,形式参数,1.4.2 C,语言程序的结构,C,语言程序的结构特点:,1.,一个程序由一个或多个源程序文件组成,小程序往往只包括一个源程序文件,例,1.1,,例,1.2,只有一个函数,例,1.3,有两个函数,只包括一个源程序文件,1.4.2 C,语言程序的结构,C,语言程序的结构特点:,一个源程序文件中可以包括三个部分:,预处理指令,全局声明,函数定义,#include ,等,在函数之外进行的数据声明,每个函数用来实现一定的功能,注:函数不能嵌套定义。,1.4.2 C,语言程序的结构,C,语言程序的结构特点:,2.,函数是,C,程序的主要组成部分,一个,C,程序是由一个或多个函数组成的,必须包含一个,main,函数,(只能有一个),每个函数都用来实现一个或几个特定功能,被调用的函数可以是库函数,,,也可以,是,自己编制设计的函数,1.4.2 C,语言程序的结构,C,语言程序的结构特点:,3.,一个函数包括两个部分:,函数首部,int,max (,int,x,,,int,y ),函数的第,1,行,函数类型,函数名,参数类型,参数,名,1.4.2 C,语言程序的结构,C,语言程序的结构特点:,3.,一个函数包括两个部分:,函数首部,int,max (,int,x,,,int,y ),若,函数,无,参,在括弧中写,void,或,空括弧,int,main( void),或,int,main(),1.4.2 C,语言程序的结构,C,语言程序的结构特点:,3.,一个函数包括两个部分:,函数,体,声明部分,定义在本函数中所用到的变量,对本函数所调用函数进行声明,执行部分,:,由若干个语句组成,指定在函数中所进行的操作,(执行语句,),可以没有声明部分,可以没有执行部分,1.4.2 C,语言程序的结构,C,语言程序的结构特点:,3.,一个函数包括两个部分:,函数,体,void dump ( ), ,可以是空函数,1.4.2 C,语言程序的结构,C,语言程序的结构特点:,4.,程序总是从,main,函数开始执行,5. C,程序对计算机的操作由,C,语句完成,C,程序书写格式是比较自由的,一行内可以写几个语句,一个语句可以分写在多行上,为清晰起见,习惯上每行只写一个语句,1.4.2 C,语言程序的结构,C,语言程序的结构特点:,4.,程序总是从,main,函数开始执行,5. C,程序对计算机的操作由,C,语句完成,6.,数据,(变量、函数,),声明和语句最后必须有分号,7. C,语言本身不提供输入输出语句,8.,程序应当包含注释,,,增加可读性,1.5,运行,C,程序的步骤与方法,1.,上机输入和编辑源程序,(,.c,文件),2.,对源程序进行编译,(,.,obj,文件),3.,进行,链接,处理,(,.exe,文件),4.,运行可执行程序,得到运行结果,说明:,以上过程,参见教材,Visual C+ 6.0,中,编辑、,编译、连接和运行,C,程序的方法,1.6,程序设计的任务,1.,问题分析,建模,(,牛顿迭代法,),对于接手的任务要进行认真的分析,研究所给定的条件,分析最后应达到的目标,找出解决问题的规律,选择解题的方法,1.6,程序设计的任务,1.,问题分析,2.,设计算法,设计出解题的方法和具体步骤,1.6,程序设计的任务,1.,问题分析,2.,设计算法,3.,编写程序,4.,对源程序进行编辑、编译和连接,5.,运行程序,分析结果,(,调试与测试,),结果错了,程序肯定错,结果对了,程序未必对,1.6,程序设计的任务,1.,问题分析,2.,设计算法,3.,编写程序,4.,对源程序进行编辑、编译和连接,5.,运行程序,分析结果,6.,编写程序文档,
展开阅读全文