《(2)--ch2 C语言概述C语言程序设计.ppt》由会员分享,可在线阅读,更多相关《(2)--ch2 C语言概述C语言程序设计.ppt(37页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第2章章 C语言概述语言概述 核心概念核心概念nC语言的三个组成部分n词法:基本字符集、标识符、关键字、常量、变量、表达式n语法:语句和函数,C程序是由函数组成的,函数由语句组成。一个完整的程序至少要有一个函数主函数mainn语义:程序要准确地描述算法,解决问题学习目标学习目标n了解C语言的发展历史和主要特性n了解C语言的基本组成n掌握C程序的基本结构n掌握C程序开发的基本步骤和调试过程章节内容章节内容2.1 最简单最简单C程序程序2.2 C语言的上机执行过程语言的上机执行过程2.3 C语言的基本组成语言的基本组成2.4 C语言的主要特性语言的主要特性2.5 学好学好C语言的关键语言的关键2
2、.6 C语言的发展史语言的发展史2.1 最简单C程序2.1.1 入门程序入门程序对于所有语言的初学者来说,编写的第一个程序几乎都是相同的,即打印出下面一行内容。Hello world.这个练习很简单,初学者只要掌握其步骤很容易完成。首先编写C源程序文本,然后是成功编译、连接成可执行程序,最后运行这个程序输出。例例2.1以hello.c文件保存编写的C程序,执行时能打印出“Hello world”。程序代码:/*This is the first C program 第1行*/#include /*第2行*/void main()/*第3行*/*第4行*/printf(Hello world.n
3、);/*第5行*/*第6行*/如何运行这个程序取决于所使用的操作系统。如果在Window中安装了Visual C+6.0集成开发工具,程序在Visual C+6.0中,经过编辑、编译、连接将产生一个可执行程序hello.exe,执行hello.exe程序后就会在显示器的屏幕上输出一行字符:Hello world.2.1 最简单C程序2.1.2 求乘积求乘积例例2.2 求两个整数的积,并把其值输出。/*This is the second C program 第1行*/#include /*第2行*/int main()/*第3行*/*第4行*/int x,y;/*第5行*/printf(ple
4、ase input two integer:);/*第6行*/scanf(“%d%d”,&x,&y);/*第7行*/x=x*y;/*第8行*/printf(the product of two integer is%d.n,x);/*第9行*/return 0;/*第10行*/*第11行*/该C程序保存在product.c文件中,运行该程序时,显示提示输入信息,光标闪烁等待用户输入两个整数,如下所示输入98和113,两者之间用一个空格隔开,输入结束回车,将求出积为11074please input two integer:98 113the product of two integer is
5、11074.2.1 最简单C程序2.1.3 判断闰年判断闰年在1.3.2结构化程序设计中,图1-9最下面一层的模块是与C语言的函数一一对应的,所以C程序是由若干函数组成的。C语言的函数分为库函数和自定义函数,其中自定义函数是程序开发的核心。函数具有封装性、可重用性,大大提高了C程序的开发效率。例例2.3 从键盘输入一个代表年份的整数值,编程判断是否为闰年。在第1章例1.3已经给出了伪代码算法描述,该程序代码保存在leapy.c文件中。/*This is the third C program 第1行*/#include /*第2行*/int leap(int year);/*第3行*/void
6、 main()/*第4行*/*第5行*/int year1,year2;/*第6行*/printf(please input your year:);/*第7行*/scanf(“%d%d”,&year1,&year2);/*第8行*/if(leap(year1)/*第9行*/2.1 最简单C程序 printf(%d is leap yearn.,year1);/*第10行*/else /*第11行*/printf(%d is normal yearn.,year1);/*第12行*/if(leap(year2)/*第13行*/printf(%d is leap yearn.,year2);/*
7、第14行*/else /*第15行*/printf(%d is normal yearn.,year2);/*第16行*/*第17行*/int leap(int year)/*第18行*/*第19行*/int b;/*第20行*/if(year%4=0)/*第21行*/*第22行*/if(year%100!=0)/*第23行*/b=1;/*第24行*/else if(year%400=0)/*第25行*/b=1;/*第26行*/else /*第27行*/b=0;/*第28行*/*第29行*/else /*第30行*/b=0;/*第31行*/return(b);/*第32行*/*第33行*/2.
8、1 最简单C程序n运行该程序时,首先显示提示输入信息,光标闪烁等待用户输入两个年份,如下所示输入1900和2000,两者之间用一个空格隔开,输入结束回车,将判断1900不是闰年,2000是闰年,运行结果如下所示:please input your year:1900 20001900 is normal year.2000 is leap year.2.2 C语言的上机执行过程语言的上机执行过程2.2.1 C程序的上机执行过程程序的上机执行过程C语言处理系统提供的开发环境是以编译系统为核心,C程序的上机执行过程一般要经过四个步骤,即:编辑、编译、连接和运行。(1)编辑源程序。编辑是用户把编写好
9、的C语言源程序输入计算机,并以文本文件的形式存放在磁盘上。其标识为:“文件名.c”。其中文件名是由用户指定的符合操作系统规定的任意字符组合,扩展名要求为“.c”,表示是C源程序。例如file1.c、t.c等。用于编辑源程序所使用的软件是编辑程序。编辑程序是提供给用户书写程序的软件环境,可用来输入和修改源程序。一般语言系统会带有自己的编辑程序。2.2 C语言的上机执行过程语言的上机执行过程(2)编译源程序。编译是把C语言源程序翻译成用二进制指令表示的目标文件。编译过程由C编译系统提供的编译程序完成。编译程序自动对源程序进行语法检查,当发现错误时,将错误的类型和所在的位置显示出来,提供给用户,以帮
10、助用户修改源程序中的错误。如果未发现句法和语法错误,就自动形成目标代码并对目标代码进行优化后生成目标文件。目标程序的文件标识是:“文件名.obj”。扩展名“.obj”是目标程序的文件类型标识。不同的编译系统,或者不同版本的编译程序,它们的启动命令不同,生成的目标文件也不相同。2.2 C语言的上机执行过程语言的上机执行过程(3)程序连接。目标程序计算机还是不能直接执行。程序连接过程是用系统提供的连接程序将目标程序、库函数或其他目标程序连接装配成可执行程序。可执行程序的文件名为:“文件名.exe”,扩展名“.exe”是可执行程序的文件类型标识。(4)运行程序。运行程序是指将可执行的目标程序投入运行
11、,以获取程序处理的结果。如果程序运行结果不正确,可重新回到第一步,重新对程序进行编辑修改、编译和运行。与编译、连接不同的是,运行程序可以脱离语言处理环境。因为它是一个可执行程序的执行,与C语言本身已经没有联系,所以可以在语言开发环境调试模式下运行,也可直接在操作系统下运行。2.2 C语言的上机执行过程语言的上机执行过程2.2.2 Visual C+6.0的使用的使用Visual C+6.0(本书后面简称Visual C+)是Microsoft公司出品的基于Windows环境的C/C+开发工具,它是Microsoft Visual Stdio套装软件的一个组成部分。n工程文件n源程序文件n目标文
12、件n可执行文件2.3 C语言的基本组成语言的基本组成2.3.1 C语言字符集语言字符集一个C程序是C语言字符构成的一个序列。C语言字符集共有92个字符,其中有大写字母26个(AZ),小写字母26个(az)和数字10个(09),另外还有30个其它字符,分为七大类,如表2-2所示。2.3 C语言的基本组成语言的基本组成字符种类字符种类字符字符含义含义算术字符+-*/%加、减、乘、除、按模取余赋值字符=右边的值赋给左边的变量关系字符,.左结合一目运算符!,+,-,-,(数据类型),*,&,sizeof右结合乘除法运算符*,/,%左结合加减法运算符+,-左结合移位运算符左结合关系运算符,=左结合等于运
13、算符=,!=左结合位运算符&,|左结合逻辑类运算符&,|左结合条件运算符?:右结合赋值运算符=,+=,-=,*=,/=,%=,=,&=,|=右结合,其它左结合逗号运算符,左结合2.3 C语言的基本组成语言的基本组成5.分隔符分隔符分隔符是起分隔作用的符号,把C语言的标示符、常量、变量等基本语法单位分隔开来,类似于自然语言中逗号和分号的作用。C语言的分隔符有5个,如表2-6所示。6.注释符注释符C语言的注释符有两类,一是块注释符,以“/*”开始,并以“*/”结束;另一个是以“/”开始的行注释符。在C程序编译时,注释内容用空白符替代,其用途仅仅是为提高源程序的可读性。2.3 C语言的基本组成语言的
14、基本组成分隔符分隔符含义含义逗号对象列表中对象的分隔,如int x,y;空格用于单词之间的分隔,可以连续使用一个或多个制表符制表符Tab也是用于分隔单词,可以连续使用一个或多个回车C语言行结束字符,也可以分隔单词分号用于每个语句的结束符,在for语言中()内的三个部分的分隔冒号用于定义语句标号出现的后面,表示语句的位置,也是定义语句标号与语句的分隔符花括号一对花括号是函数、复合语句的开始和结束的标识2.3 C语言的基本组成语言的基本组成2.3.3语句语句C语言的单词是按照词法由基本字符组成,由单词按照语法要求就可以构成语句。语句是组成程序的基本语法单位,表示一个完整的意思,告诉计算机完成某个动
15、作,或改变对象的数据、或改变程序的顺序,C语句有机组合在一起就可以实现复杂计算处理功能。所谓C程序就是由若干条C语句组成的。为了便于控制和处理,提供了函数的模块划分,提供了复合语句,用一对花括号把一组语句当做一条语句处理,便于程序块处理和C语句的复合。2.3 C语言的基本组成语言的基本组成C89标准的语句共有24个,分为执行语句和说明语句。C语言的执行语句如表2-7所示。C语言的说明语句就是数据类型说明语句,告诉计算机定义的变量,说明了变量的数据类型、变量名称、变量的初始化列表、变量的生命周期(或者称为变量的使用范围),C语言中共有10个类型说明语句,如表2-8所示,有的教材把说明语句称为声明
16、部分,不称为语句,读者注意区分即可,以免产生混淆。2.3 C语言的基本组成语言的基本组成语句语句格式格式赋值语句=;if条件语句if()elsewhile循环语句while()语句do循环语句do while()for循环语句for(表达式1;表达式2;表达式3)switch分支语句switch(表达式)case语句或defau语句case判断语句case:default缺省语句default:break中断语句break;continu继续语句continue;return返回语句return;或者return(表达式);goto转移语句goto 标号;函数调用语句函数名(实参列表);空语句
17、;类型名称类型名称关键字关键字整数类型int字符类型char单精度类型float双精度类型double枚举类型enum数据类型数据类型 数组名常量表达式结构体类型struct共用体类型union文件类型FILE指针类型*空类型void2.3 C语言的基本组成语言的基本组成2.3.4 C程序的结构程序的结构C程序一般由一个main函数和多个自定义函数组成,用于指定应用程序实际所需要做的工作;C程序中经常使用C编译系统提供的库函数,使用时,只需要调用函数就可以了。一个应用程序由一个或多个C源程序文件组成。每个源文件可由一个或多个函数组成,一个C源程序大致包括:(1)预处理命令(#include宏命
18、令,也称为包含文件);(2)用户函数说明部分;(3)全局变量定义;(4)主函数(当且仅当只有一个源文件有main函数);(5)若干用户自己编写的函数。主函数或者其它自定义函数中,一般又包括局部变量定义语句、库函数调用、控制流语句、用户自定义函数调用等。2.3 C语言的基本组成语言的基本组成若只有一个源文件的简单C应用程序,设f1()fn()代表用户定义函数,各个函数的定义是相互独立的,各函数定义的顺序无关紧要,则C语言程序的一般形式可以表达如下:#include函数原型说明全局变量说明void main()局部变量定义语句;程序段;f1()局部变量定义语句;程序段;f2()局部变量定义语句;程
19、序段;fn()局部变量定义语句;程序段;2.3 C语言的基本组成语言的基本组成2.3.5 C程序的书写风格程序的书写风格C语言语句精练、简洁、语义丰富、书写格式灵活,可以在一行的任意位置开始书写程序语句,一个语句可写成一行或多行,一行可以写多个语句,这样可能会使C语言程序的可读性比较差。为了提高程序的可读性,应该养成良好的书写习惯。C语言程序的书写格式习惯上有如下要求:(1)每行通常写一条语句。有些短语句也可以一行写多条;长语句也可以一条写成多行,一般情况下不加续行符“/”。C语言程序分行处理比较灵活,只要不将单词分隔就可以了。例如,字符串常量通常写作一行,如果字符串常量太长,可采用续行符分行
20、来写。(2)每条语句结束时加分号(;)作为语句结束符。当一条语句没有结束时,一定不要加分号。C语言程序的语句通常不加语句标号,只有goto语句要转向的语句才加语句标号。2.3 C语言的基本组成语言的基本组成(3)花括号的书写格式通常有三种,本书采用其中的一种,规定如下:每个花括号占一行,左花括号和右花括号都与使用它们的语句对齐,花括号内的语句向右缩进两个字符或一个水平制表符。(4)适当采取缩进格式是必要的。采用缩进方法会使程序更加清晰易读。例如,循环语句的循环体,条件语句中if分支等。按照通常的惯例,应该对齐的一定对齐,应该缩进的缩进,尽量提高程序的可读性。(5)在程序中尽量使用注释信息,增强
21、程序的可读性。注释信息主要用来解释和说明程序的内容。2.4 C语言的主要特性语言的主要特性1.C语言是支持结构化程序设计语言语言是支持结构化程序设计语言C语言程序的逻辑结构可以由顺序、选择和循环三种基本结构组成,便于采用自顶向下、逐步细化的结构化程序设计技术。用C语言编制的程序具有容易理解、便于维护的优点。C语言的函数结构、程序模块间的相互调用及数据传递和数据共享技术,为大型软件设计的模块化分解技术及软件工程技术的应用提供了强有力的支持。2.C语言功能强大、适用范围广语言功能强大、适用范围广 C 语言具有各种各样的数据类型,包括整型、字符型、浮点型、数组类型、结构体类型、共用体类型等,为用户提
22、供了自定义数据类型,并引入了指针概念,使得程序效率更高。C语言包含很广泛的运算符,把括号、赋值、强制类型转换等都作为运算符处理,从而使C语言的运算类型极其丰富、表达式类型多样化,灵活使用各种运算符可以实现在其它高级语言中难以实现的运算。C 语言的计算功能、逻辑判断功能也比较强大,可以实现决策目标等。2.4 C语言的主要特性语言的主要特性3.C语言可直接操作硬件语言可直接操作硬件C语言具有高级语言的功能,又具有低级语言的许多特性,它把高级语言的基本结构和语句与低级语言的实用性结合起来,能够象汇编语言一样对位、字节和地址进行操作,从而非常方便实现对硬件的直接操作。在C语言出现之前,能对计算机硬件直
23、接操作的是诸如汇编语言等低级语言,这使得程序的可读性和可移植性都比较差。由于C语言具有这种双重特性,即可以是通用的程序设计语言,又可以是硬件直接操作语言,所以C语言既可用于编写操作系统、编译程序等系统软件,也可用于编写各种应用软件。2.4 C语言的主要特性语言的主要特性4.C语言可移植性好语言可移植性好C语言的可移植性很好,能适合于多种操作系统。除了能在Windows操作系统运行外,在目前日趋流行的Linux或者Unix操作系统上也能不加修改的运行。C语言的这种较好的移植性,为开发跨平台程序提供了有力的支持。5.C语言生成代码质量高语言生成代码质量高C语言编写的源程序编译之后生成的目标代码质量
24、高,程序执行效率高。一般只比汇编语言生成的目标代码效率低10%20%。6.C语言规模小易掌握语言规模小易掌握C语言没有提供输入输出语句,也不提供直接的字符串、集合、列表或数组,这些功能都需要调用C语言的函数来完成。从而C语言的规模相对较小,可以用比较小的篇幅将它描述出来,易学易用。C语言的优点很多,但也有一些不足之处,如语法限制不太严格,程序设计时自由度大,源程序书写格式自由。从学习和熟练使用角度比较的话,C语言较其他高级语言要难一些。但是掌握了C语言后,再学C+、Jave、C#语言就比较容易了。所以对有志于从事计算机工作,尤其是从事计算机编程的人而言,C语言是必学的编程语言,而且应认真加以钻
25、研。2.5学好学好C语言的关键语言的关键想要学好C语言,必须把握好以下几点。1多上机、多练习多上机、多练习C语言是一门实践性非常强的课程,除了多看书外,还需要读者多上机、多练习,只有这样,才能熟练掌握C语言的开发工具,才能熟练调试C程序,遇到错误才可以很快地解决。2熟练掌握二进制与十进制、十六进制、八进制之间的相互熟练掌握二进制与十进制、十六进制、八进制之间的相互转换转换在计算机内部,所有的数据都是以二进制形式存储的。为了我们习惯考虑,在显示时需要将二进制转换为十进制数,而在存储时,又需要将十进制数转换为二进制数。为了方便,常需要将二进制用十进制、十六进制、八进制表示。因此,在学习C语言时,需
26、要我们熟练掌握二进制、十进制、十六进制、八进制之间的相互转换。3理解字符与理解字符与ASCII码之间的关系码之间的关系通过键盘输入的数据是字符数据,而计算机是以二进制形式存储。这需要将字符转换为对应的二进制形式并存储起来。美国国家标准协会ANSI专门制定了字符与ASCII之间的对应关系。字符与ASCII码之间的对应关系可参见附录I。2.5学好学好C语言的关键语言的关键4掌握运算符的结合性与优先级掌握运算符的结合性与优先级C语言提供了34种运算符,每种运算符都有优先级与结合性。如果有多个运算符出现在同一个表达式中,需要选择优先级别高的运算符先进行计算。如果运算符相同,则需要根据运算符的结合性进行
27、运算。5掌握掌握3种程序控制结构种程序控制结构C语言是一种结构化的程序设计语言,它具有3种控制结构:顺序结构、选择结构和循环结构。这3种程序控制结构是目前结构化程序设计语言都具有的。编写一个完整的C语言程序几乎都要使用这3种结构,使用这3种结构可以解决几乎所有问题。2.5学好学好C语言的关键语言的关键6掌握一些常用的算法掌握一些常用的算法在学习C语言的过程中,常常需要对一些数据进行排序,或者查找给定的数据,这就是排序算法和查找算法。排序算法和查找算法是在程序设计过程中常用的算法。掌握一些常用的算法不仅便于解决编程中遇到的问题,也对今后学习数据结构和算法大有裨益。7熟练使用指针熟练使用指针指针是
28、C语言区别于其他语言的一个重要标志。指针是C语言的灵魂,熟练使用指针可以使程序编写更加灵活,编写出来的程序运行效率更加高效。指针是一把双刃剑,使用得好,可以提高运行效率;使用得不当,则很容易造成难以意料的错误。因此,这就需要大家在学习的过程中,熟练掌握指针。2.5学好学好C语言的关键语言的关键8熟练掌握一个开发工具熟练掌握一个开发工具工欲善其事,必先利其器。学好一门语言,需要我们熟练地掌握一个开发工具。只有多上机练习,才能知道程序是否正确。C语言的开发工具有许多,目前比较流行的有Turbo C 2.0、Turbo C 3.0、Visual C+6.0、Win-TC、LCC-Win32、开源工具
29、Dev-C+等。9确立离散的思维方式,摈弃连续性思维方式确立离散的思维方式,摈弃连续性思维方式在学习任何一门编程语言时,一定要确立离散性的思维方式。这决定是否真正掌握好编程语言的重要因素,学习C语言也是如此。刚开始学习C语言时,不少学生很难摆脱旧有的惯性思维方式的影响。在我们学习C语言时,不要考虑太多的数学证明、公式推导,在计算机内部,数据是以二进制形式存储,是一种离散的数据。在利用C语言处理类似连续性函数、积分等问题时,需要将这些问题离散化处理。在今后学习C语言的过程中,读者会深刻地体会到这一点。2.6 C语言的发展史语言的发展史nC语言是一种编译性程序设计语言,它与Unix操作系统紧密地联系在一起。Unix系统是通用的、交互式的计算机操作系统,它诞生于1969年,是由美国贝尔实验室的K.Thompson和D.M.Ritchie最初用汇编语言开发的。n现在流行的C语编译系统有Microsoft C、Turbo C、Quick C、Borland C等。虽然它们的基本部分都是相同的,但也有一些差异,主要表现在功能上n1983年,美国贝尔实验室又推出了C+语言,该语言在C语言基础上进行了改进和革新作业:作业:4.语言标识符的作用是什么?命名规则是什么?与关键字有何区别?5.指出下列符号中哪些是语言标识符?哪些是关键字?哪些既非标识符亦非关键字?
限制150内