C语言及程序设计概述_第1页
C语言及程序设计概述_第2页
C语言及程序设计概述_第3页
C语言及程序设计概述_第4页
C语言及程序设计概述_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

1、2课程安排课程安排总学时:n56学时(理论32学时 实验24学时)教材:nC语言程序设计.叶斌等编,北京:科学出版社,2011nC语言程序设计实验指导与习题解答.叶斌等编,北京:科学出版社,20113 课前请做好预习 保持课堂安静,头脑清醒,思维活跃 重视上机实践,有效利用宝贵的上机时间 课后巩固所学内容,多思考,多实践课程要求课程要求4第第1章章 C语言及程序设计概述语言及程序设计概述【学习目标【学习目标】 了解了解C语言产生的历史和工作原理,掌握语言产生的历史和工作原理,掌握C语言作为一语言作为一 编程语言的基本编程思路,掌握算法及其表示方法,掌编程语言的基本编程思路,掌握算法及其表示方法

2、,掌 握握C语言的基本语法单位。语言的基本语法单位。【学习指南【学习指南】 通过明确程序设计语言在人机交互中缩小自然语言和通过明确程序设计语言在人机交互中缩小自然语言和 机器语言鸿沟的问题,以学习一门自然语言(如英语)机器语言鸿沟的问题,以学习一门自然语言(如英语) 的方法直接进入的方法直接进入C语言的学习。语言的学习。【重【重 难难 点点】 重点:算法的概念,基本语法单位重点:算法的概念,基本语法单位,C语言的基本结构语言的基本结构 难点:难点: 算法的表示方法算法的表示方法【教学安排【教学安排】 学时:学时:2学时学时51.1 程序与程序设计语言程序与程序设计语言 1.1.1 程序的概念程

3、序的概念 冯冯.诺依曼结构:诺依曼结构:计算机计算机运算器运算器控制器控制器存储器存储器主机:主机:I/O设备:键盘、显示器等设备:键盘、显示器等中央处理器中央处理器CPU程序是一组有序的指令(指令序列)。程序是一组有序的指令(指令序列)。 实际上是一个用计算机语言描述的解决某一问题的步骤。实际上是一个用计算机语言描述的解决某一问题的步骤。61.1.2 程序设计语言的发展程序设计语言的发展 人们常把编写程序的过程称为程序设计。在进行程人们常把编写程序的过程称为程序设计。在进行程序设计时离不开程序设计语言。程序设计语言的种类很序设计时离不开程序设计语言。程序设计语言的种类很多,从其发展历史以及功

4、能情况来划分可以大致划分成多,从其发展历史以及功能情况来划分可以大致划分成五个阶段:五个阶段:1、机器语言:、机器语言: 计算机可以直接识别和执行的二进制语言。计算机可以直接识别和执行的二进制语言。如:如: 加法指令加法指令: 1 0 0 0 0 0 0 0 减法指令减法指令: 1 0 0 1 0 0 0 0特点:计算机可以直接识别和执行,效率高,节省内存;特点:计算机可以直接识别和执行,效率高,节省内存;但难以阅读和记忆。但难以阅读和记忆。71.1 程序与程序设计语言程序与程序设计语言2、汇编语言:、汇编语言: 用用“助记符助记符”来表示机器指令。来表示机器指令。如:如: ADD A, B

5、ADD A, B SUB A, B SUB A, B 计算机不能直接识别和执行用汇编语言编写的源程序,计算机不能直接识别和执行用汇编语言编写的源程序,它必须经过一个叫汇编程序的系统软件翻译成机器语言程序它必须经过一个叫汇编程序的系统软件翻译成机器语言程序(即目标程序)后才能执行。(即目标程序)后才能执行。3、高级语言:、高级语言: 不依赖于机器,降低了编程的难度。不依赖于机器,降低了编程的难度。 如:如:C、PASCAL、FORTRAN等,用等,用+和和-来来 表示加减运算。表示加减运算。 计算机也不能直接执行高级语言描述的源程序,必须先计算机也不能直接执行高级语言描述的源程序,必须先经过编译

6、程序或解释程序翻译成目标程序后,才能由计算机经过编译程序或解释程序翻译成目标程序后,才能由计算机执行。执行。81.1 程序与程序设计语言程序与程序设计语言1、C语言的发展概况语言的发展概况 起源于起源于1968年发表的年发表的CPL语言语言 。 语言是美国电话电报公司(语言是美国电话电报公司(AT&T)贝尔实验室于)贝尔实验室于70年代年代初研制出来的。发明者是初研制出来的。发明者是Dennis . M . Ritchie。1978年,由年,由B . W. Kernighan和和D . M . Ritchie合著的合著的The C Programming Language一书,称之为一

7、书,称之为“K&R”标准。后来又被多次改进,并标准。后来又被多次改进,并出现了多种版本。出现了多种版本。1983年开始,美国国家标准化协会(年开始,美国国家标准化协会(ANSI),),根据语言问世以来各种版本对语言的发展和扩充,制定了根据语言问世以来各种版本对语言的发展和扩充,制定了ANSI C标准,于标准,于1989年颁布,称为年颁布,称为C89标准。标准。1994、1995年又年又两次做了修订,即两次做了修订,即C89的的95修正案。修正案。1999年产生了年产生了C99新标准。新标准。 目前在微型计算机上使用的有目前在微型计算机上使用的有Microsoft C,Quick C,T

8、urbo C,Borland C 等多种版本。等多种版本。1.1.3 C语言的发展及特点语言的发展及特点9C语言的创世纪语言的创世纪一切从一个叫一切从一个叫“Space Travel”的电子游戏开的电子游戏开始始为了让他的游戏能在为了让他的游戏能在PDP-7上运行,上运行,Ken Thompson用汇编语言给用汇编语言给PDP-7写了一个操作系写了一个操作系统统UNIX汇编太不好用了,汇编太不好用了,Thompson需要高级语言需要高级语言试验了一些高级语言,包括试验了一些高级语言,包括Fortran,都不理想,都不理想他在他在BCPL基础上,自己设计了一个基础上,自己设计了一个B语言语言UN

9、IX开始发展,开始发展,B也不够用了也不够用了Dennis Ritchie加入,把加入,把B改造成改造成C开始用开始用C重写重写UNIX1.1 程序与程序设计语言程序与程序设计语言10Ritchie和和Thompson在开发在开发UNIX11接受美国国家技术勋章接受美国国家技术勋章12C C语言的祖师爷语言的祖师爷Dennis M. RitchieDennis M. Ritchie1.1 程序与程序设计语言程序与程序设计语言13C程序设计语言程序设计语言是一种高级语言n高级语言并不是“高级”,只是相对低级语言,在一个高的级别上进行编程历史悠久,战勋卓著n诞生于上世纪70年代初,成熟于80年代(

10、C89),修订与90年代(C99)n很多重量级软件都是用C写的上天入地,无所不能n几乎没有不能用C写出来的软件,没有不支持C的系统很多流行语言、新生语言都借鉴了它的思想、语法n从C+,到Java,再到C#,还有php等1.1 程序与程序设计语言程序与程序设计语言141.1 程序与程序设计语言程序与程序设计语言1)语言简洁紧凑,使用方便灵活)语言简洁紧凑,使用方便灵活 2)运算符丰富)运算符丰富3)数据结构丰富)数据结构丰富 4)结构化的程序设计语言)结构化的程序设计语言5)允许直接访问物理地址,可直接操纵硬件)允许直接访问物理地址,可直接操纵硬件 6)生成的目标代码质量高,程序执行效率高)生成

11、的目标代码质量高,程序执行效率高 7)适用范围大,可移植性好)适用范围大,可移植性好2、C语言的特点语言的特点151.2 程序设计方法程序设计方法 1.2.1 程序设计基本过程程序设计基本过程 两个阶段:两个阶段:n问题求解阶段问题求解阶段 分析问题,找出算法分析问题,找出算法n实现阶段实现阶段 依据算法采用依据算法采用C C语言或其他编程语言编写程序语言或其他编程语言编写程序161.2 程序设计方法程序设计方法 1.2.2 结构化程序设计方法结构化程序设计方法 1. 1. 核心思想核心思想 结构化程序设计的总体思想是采用模块化结构,结构化程序设计的总体思想是采用模块化结构,自上而下,逐步求精

12、。自上而下,逐步求精。2. . 结构化程序设计特征结构化程序设计特征结构化程序设计的特征主要有以下几点:结构化程序设计的特征主要有以下几点:(1 1)以三种基本结构(顺序、分支、循环,详细内)以三种基本结构(顺序、分支、循环,详细内容参考第三章)的组合来描述程序;容参考第三章)的组合来描述程序;(2 2)整个程序采用模块化结构;)整个程序采用模块化结构;171.2 程序设计方法程序设计方法(3 3)有限制地使用)有限制地使用gotogoto转移语句,在非用不可的情转移语句,在非用不可的情况下,也要十分谨慎,并且只限于在一个结构内部跳况下,也要十分谨慎,并且只限于在一个结构内部跳转,不允许从一个

13、结构跳到另一个结构,这样可缩小转,不允许从一个结构跳到另一个结构,这样可缩小程序的静态结构与动态执行过程之间的差异,使人们程序的静态结构与动态执行过程之间的差异,使人们能正确理解程序的功能;能正确理解程序的功能;(4 4)以控制结构为单位,每个结构只有一个入口,以控制结构为单位,每个结构只有一个入口,一个出口,各单位之间接口简单,逻辑清晰;一个出口,各单位之间接口简单,逻辑清晰;(5 5)采用结构化程序设计语言书写程序,并采用一采用结构化程序设计语言书写程序,并采用一定的书写格式使程序结构清晰,易于阅读;定的书写格式使程序结构清晰,易于阅读;(6 6)注意程序设计风格。注意程序设计风格。181

14、.2 程序设计方法程序设计方法面向对象程序设计方法(面向对象程序设计方法(Orient Object Programming,缩写为缩写为OOP)认为客观世界是由各种各样的实体组成的,这)认为客观世界是由各种各样的实体组成的,这些实体就是面向对象方法中的对象。对象之间的交互通过发些实体就是面向对象方法中的对象。对象之间的交互通过发送消息来实现,从而完成系统的功能。送消息来实现,从而完成系统的功能。 面向对象程序设计把数据看作程序开发中的基本元素,并面向对象程序设计把数据看作程序开发中的基本元素,并且不允许它们在系统中自由流动。它将数据和操作这些数据且不允许它们在系统中自由流动。它将数据和操作这

15、些数据的函数紧密的连结在一起,并保护数据不会被外界的函数意的函数紧密的连结在一起,并保护数据不会被外界的函数意外的改变。外的改变。1.2.3 面向对象程序设计方法面向对象程序设计方法 191.3 C语言程序的基本结构语言程序的基本结构 n一个完整的语言程序,是由一个一个完整的语言程序,是由一个main()函数(又称主函数)函数(又称主函数)和若干个其它函数结合而成的,或仅由一个和若干个其它函数结合而成的,或仅由一个main()函数构成函数构成程序运行时,在屏幕上显示一行英文:程序运行时,在屏幕上显示一行英文:Hello World! 。说明:说明:(1)main是主函数的函数名,表示这是一个主

16、函数。是主函数的函数名,表示这是一个主函数。(2)函数调用语句,)函数调用语句,printf函数的功能是把要输出的内容送到显示器去显示。函数的功能是把要输出的内容送到显示器去显示。(3)printf函数是一个由系统定义的标准函数,可在程序中直接调用。函数是一个由系统定义的标准函数,可在程序中直接调用。(4) #include是编译预处理命令,其作用是将某个已经存在的文件包含到程序中。是编译预处理命令,其作用是将某个已经存在的文件包含到程序中。 /*01*/ #include/*02*/main()/*03*/ /*04*/printf(“Hello World!n”);/*05*/20#inc

17、lude /* This is the main program */main() 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函数函数预处理命令预处理命令注释注释211.3 C语言程序的基本结构语言程序的基本结构1.3.1 C程序的结构特点程序的结构特点 ()一个语言源程序可以由一个或多个源文件组成。()一个

18、语言源程序可以由一个或多个源文件组成。()每个源文件可由一个或多个函数组成,关于函数()每个源文件可由一个或多个函数组成,关于函数的内容将在以后第四章介绍。的内容将在以后第四章介绍。()函数是语言程序的基本单位。一个源程序不论()函数是语言程序的基本单位。一个源程序不论由多少个文件组成,都有一个且只能有一个由多少个文件组成,都有一个且只能有一个main函函数,即主函数。数,即主函数。main()函数的作用,相当于其它高级函数的作用,相当于其它高级语言中的主程序;其它函数的作用,相当于子程序。语言中的主程序;其它函数的作用,相当于子程序。()()C语言程序总是从语言程序总是从main()函数开始

19、执行。一个函数开始执行。一个语言程序,总是从语言程序,总是从main()函数开始执行,而不论其在函数开始执行,而不论其在程序中的位置。当主函数执行完毕时,亦即程序执行程序中的位置。当主函数执行完毕时,亦即程序执行完毕。完毕。221.3 C语言程序的基本结构语言程序的基本结构1.3.1 C程序的结构特点程序的结构特点 ()源程序中可以有预处理命令()源程序中可以有预处理命令(include 命令仅为命令仅为其中的一种),预处理命令通常应放在源文件或源其中的一种),预处理命令通常应放在源文件或源程序的最前面。程序的最前面。()每一个说明,每一个语句都必须以分号结尾。()每一个说明,每一个语句都必须

20、以分号结尾。但预处理命令,函数头和花括号但预处理命令,函数头和花括号“”之后不能加分之后不能加分号。号。()标识符,关键字之间必须至少加一个空格以示()标识符,关键字之间必须至少加一个空格以示间隔。若已有明显的间隔符,也可不再加空格来间间隔。若已有明显的间隔符,也可不再加空格来间隔。隔。(8)变量必须先定义后使用。)变量必须先定义后使用。(9)允许使用注释。)允许使用注释。C语言的注释格式为:语言的注释格式为: /* */231.3 C语言程序的基本结构语言程序的基本结构()所有语句都必须以分号()所有语句都必须以分号“;”结束,函数的最结束,函数的最后一个语句也不例外。后一个语句也不例外。(

21、)程序行的书写格式自由,既允许一行内写几()程序行的书写格式自由,既允许一行内写几条语句,也允许一条语句分写在几行上。如果某条条语句,也允许一条语句分写在几行上。如果某条语句很长,一般需要将其分写在几行上。语句很长,一般需要将其分写在几行上。()允许使用注释。()允许使用注释。C语言的注释格式为:语言的注释格式为: /* */1.3.2 源程序书写格式源程序书写格式 241.4 C语言的基本语法单位语言的基本语法单位 1.4.1 语言的字符集语言的字符集 1.4.2 关键字关键字1.4.3 标识符标识符 1.4.4 分隔符分隔符 1.4.5 注释注释251.4.1 语言的字符集语言的字符集 字

22、符是组成语言的最基本的元素。语言字符集由字母,字符是组成语言的最基本的元素。语言字符集由字母,数字,空格,标点和特殊字符组成。在字符常量,字符串常量数字,空格,标点和特殊字符组成。在字符常量,字符串常量和注释中还可以使用汉字或其它可表示的图形符号。和注释中还可以使用汉字或其它可表示的图形符号。()字母:()字母:小写字母小写字母a az z共共2626个,大写字母个,大写字母A AZ Z共共2626个;个;()数字:()数字:0 09 9共共1010个;个;()空白符:()空白符:空格符、制表符、换行符等统称为空白符空格符、制表符、换行符等统称为空白符()标点和特殊字符()标点和特殊字符 特殊

23、字符特殊字符通常指由通常指由12个符号组成的运算符。个符号组成的运算符。 算术运算符:算术运算符: + - * / % + - 关系运算符:关系运算符: = 条件运算符:条件运算符: ?: 和赋值运算符:和赋值运算符:= 其他分隔符:其他分隔符: ( ) . , ;261.4.2 关键字关键字 关键字是由语言规定的具有特定意义的字符串,关键字是由语言规定的具有特定意义的字符串,通常也称为保留字。用户定义的标识符不应与关键字相通常也称为保留字。用户定义的标识符不应与关键字相同。标准同。标准C C定义的定义的3232个关键字如下表个关键字如下表: :271.4.3 标识符标识符在程序中使用的变量名

24、、在程序中使用的变量名、函数函数名、标号等统称为标识符。除名、标号等统称为标识符。除库库函数函数的的函数函数名由系统定义外,其余都由用户自定义。名由系统定义外,其余都由用户自定义。C C 规定,规定,标识符只能是字母(标识符只能是字母(A AZ Z,a az z)、数字()、数字(0 09 9)、下划线)、下划线(_ _)组成的字符串,并且其第一个字符必须是字母或下划线。)组成的字符串,并且其第一个字符必须是字母或下划线。以下标识符是合法的:以下标识符是合法的: a ax x_3x_3xBOOK_1BOOK_1sum5sum5以下标识符是非法的:以下标识符是非法的: 3s 3s 以数字开头以数

25、字开头 s s* *T T 出现非法字符出现非法字符* * -3x -3x 以减号开头以减号开头 bowy-1 bowy-1 出现非法字符减号出现非法字符减号注:标识符中,大小写是有区别的。注:标识符中,大小写是有区别的。 标识符不能与关键字同名。标识符不能与关键字同名。281.4.4 分隔符分隔符 语言中采用的分隔符包括逗号和空格。语言中采用的分隔符包括逗号和空格。(1)逗号主要用在类型说明和函数参数表中,分)逗号主要用在类型说明和函数参数表中,分隔各个变量,逗号也可以做运算符,具体参照本教程隔各个变量,逗号也可以做运算符,具体参照本教程第二章。第二章。(2)空格多用于语句各单词之间,作间隔

26、符。在)空格多用于语句各单词之间,作间隔符。在关键字,标识符之间必须要有一个以上的空格符作间关键字,标识符之间必须要有一个以上的空格符作间隔,否则将会出现语法错误。隔,否则将会出现语法错误。例如,例如,int a;不能写成不能写成 inta; C编译器会把编译器会把inta当成一个标识符处理,其结果必然当成一个标识符处理,其结果必然出错。出错。 291.4.5 注释注释 C C 语言的注释符是以语言的注释符是以“/ /* *”开头并以开头并以“* */”/”结尾的串。程结尾的串。程序编译时,不对注释作任何处理。序编译时,不对注释作任何处理。(1 1) “ “/ /* *”和和“* */” /”

27、 必须成对使用,且必须成对使用,且“/”/”和和“* *”、以、以及及“* *”和和“/”/”之间不能有空格,否则出错。之间不能有空格,否则出错。(2 2)注释的位置,可以单占)注释的位置,可以单占1 1行,也可以跟在语句的后面。行,也可以跟在语句的后面。(3 3)如果)如果1 1行写不下,可另起行写不下,可另起1 1行继续写。行继续写。(4 4)注释中允许使用汉字。在非中文操作系统下,汉字将以)注释中允许使用汉字。在非中文操作系统下,汉字将以乱码呈现,但不影响程序运行。乱码呈现,但不影响程序运行。30C语言是一种编译型程序语言。语言是一种编译型程序语言。1.5 C语言程序的开发过程与环境语言

28、程序的开发过程与环境编辑连接编译执行程序代码的录入程序代码的录入,生成源程序生成源程序 .c .cpp翻译生成目标程序翻译生成目标程序 .obj与其它目标程序或库链接装配与其它目标程序或库链接装配,生成可执行程序生成可执行程序 .exe311.5.1 由源程序生成可执行程序的过程由源程序生成可执行程序的过程1. 编辑(编辑(Edit)编程人员把程序代码输入计算机的过程或修改已经存在的代编程人员把程序代码输入计算机的过程或修改已经存在的代码的过程就是编辑。码的过程就是编辑。 2. 编译(编译(Compile/Make)对源程序的语法和逻辑结构等进行检查以生成目标文件对源程序的语法和逻辑结构等进行检查以生成目标文件(Object)的过程就是编译。)的过程就是编译。3. 连接连接(Link)连接的作用是使用系统提供的连接程序(或称连接

温馨提示

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

评论

0/150

提交评论