第02章 C语言程序设计基础-清华大学C语言_第1页
第02章 C语言程序设计基础-清华大学C语言_第2页
第02章 C语言程序设计基础-清华大学C语言_第3页
第02章 C语言程序设计基础-清华大学C语言_第4页
第02章 C语言程序设计基础-清华大学C语言_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

第2章C语言程序设计基础制作人:王敬华第2章:C语言程序设计基础

学习的意义

从本章开始我们正式进入C语言程序设计的学习,也许大家会问:为什么我们要学习C语言呢?理由1:因为C语言流行.

理由2:因为C语言考研时必考。

理由3:因为C语言在各种程序考试中首当其中。

理由4:因为它是必修课,是老师逼的,不学不能拿学分

……

理由n:……语言程序设计教程第二版第二章程序设计基础C别急!让我想想……

这些理由都只是从表面上来回答,其实要真正来回答这一问题,我们有必要了解程序设计语言的发展历史及其特点,知道C语言是属于那种类型的语言;C语言是如何产生和发展的,C语言的特点有哪些,它应用在哪些方面等,这样我们就可以做到学习目的明确,才能有意识地去学好C语言程序设计。

了解程序设计语言的发展及其特点;掌握机器语言、汇编语言和高级语言的差异;了解C语言的发展历史及特点和应用;掌握C语言程序的基本结构;掌握编写C程序的基本步骤和调试过程。另外,本章我们将带领大家来实际感受一下C语言程序是一个什么样子,它的结构特点是什么,这是我们进行C语言程序设计必须遵循的规范。最后,我们应该掌握的是如何来编写和调试一个C语言程序,这是我们每一个C语言程序员所必须具备的基本功。

学习的意义

学习目标

语言程序设计教程第二版第二章程序设计基础C学习内容

程序设计语言的发展及其特点C语言的发展及其特点和应用C语言程序的基本结构编制C语言程序的基本步骤了解历史……抓住现在……展望未来……语言程序设计教程第二版第二章程序设计基础C2.1程序设计语言的发展及其特点机器语言汇编语言高级语言面向过程面向对象CPU指令系统,由0、1序列构成的指令码组成如:10000000加

10010000减用助记符号描述的指令系统如ADDA,B面向机器的语言程序设计是数据被加工的过程客观世界可以分类,对象是类的实例对象是数据和方法的封装对象间通过发送和接受消息发生联系程序设计关键是定义类,并由类派生对象冯.诺依曼结构:计算机运算器控制器存储器主机:I/O设备:键盘、显示器等中央处理器CPU语言程序设计教程第二版第二章程序设计基础C5254565860626466687072747678808284868890929496AdaALGOL60ALGOL68PascalModula-2CPLBCPLBCC++JavaLISPPROLOGCOBOLFORTRAN77FORTRANPL/1Simula67Smalltalk80BASICANSI-BASICQBASICVBFORTRAN902.2C语言的发展及其特点、应用语言程序设计教程第二版第二章程序设计基础CC语言发展史ALGOL60语言

CPL语言

CombinedProgrammingLanguage1963年,剑桥大学BCPL语言

1967年,剑桥大学的MatinRichards对CPL语言进行了简化B语言

C语言

1970年,美国贝尔实验室的KenThompson将BCPL进行了修改将CPL语言煮干,提炼出它的精华1973年,B语言也给人“煮”了一下,美国贝尔实验室的D.M.RITCHIE在B语言的基础上最终设计出了一种新的语言BCPL的第二个字母作为这种语言的名字,这就是C语言

语言程序设计教程第二版第二章程序设计基础CC语言发展史产生背景产生过程时间:1972~1973

地点:美国贝尔实验室目的:UNIX操作系统设计人:Ken.Thompson和Dennis.M.RitchieC标准

标准C:K&R合著《TheCProgrammingLanguage》ANSIC:1983年

87ANSIC:1987年

1990年国际标准的ANSIC语言程序设计教程第二版第二章程序设计基础CC语言版本

C语言有不同的版本,常用的编译软件有MicrosoftVisualC++、BorlandC++、BorlandC++Builder、WatcomC++、GNUDJGPPC++、Lccwin32C、MicrosoftC、TurboC、HighC等等。

本课程的内容将基于ANSIC进行展开,主要是针对VisualC++6.0,同时也兼顾BorlandC++3.1和TurboC2.0。语言程序设计教程第二版第二章程序设计基础CC语言的特点简洁紧凑、灵活方便运算符丰富数据结构丰富C是结构式语言C语法限制不太严格、程序设计自由度大C语言允许直接访问物理地址,可以直接对硬件进行操作C语言程序生成代码质量高,程序执行效率高C语言适用范围大,可移植性好具有预处理功能具有递归功能C语言一共只有30多个关键字,9种控制语句,程序书写自由,主要用小写字母表示。它把高级语言的基本结构和语句与低级语言的实用性结合起来。C语言可以象汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元。

C的运算符包含的范围很广泛,共有种34个运算符。C语言把括号、赋值、强制类型转换等都作为运算符处理。从而使C的运算类型极其丰富表达式类型多样化,灵活使用各种运算符可以实现在其它高级语言中难以实现的运算(具体见后面的章节)。

C的数据类型有:整型、实型、字符型、数组类型、指针类型、结构体类型、联合体类型等。能用来实现各种复杂的数据类型的运算。并引入了指针概念,使程序效率更高。另外C语言具有强大的图形功能,支持多种显示器和驱动器。且计算功能、逻辑判断功能强大。结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰,便于使用、维护以及调试。C语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。一般的高级语言语法检查比较严,能够检查出几乎所有的语法错误。而C语言允许程序编写者有较大的自由度。

C语言既具有高级语言的功能,又具有低级语言的许多功能,能够象汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元,可以用来写系统软件。一般只比汇编程序生成的目标代码效率低10~20%。

C语言有一个突出的优点就是适合于多种操作系统,如DOS、WINDOWS、UNIX。也适用于多种机型,在一种计算机上编写的程序,无须修改或经过很少的修改,就可以在其它类型的计算机上运行。

C语言提供了预处理器,程序可以利用宏指令提高可读性和可移植性。

C语言允许递归调用,在解决递归问题上具有独特优势。语言程序设计教程第二版第二章程序设计基础CC语言的应用

C语言的应用非常广,也非常多,在此仅列出其中的一些应用:C语言可以用来开发许多系统软件和大型应用软件。如UNIX,LINUX等操作系统。在软件需要对硬件进行操作的场合,用C语言明显优于其它高级语言。例如,各种硬件设备的驱动程序(象显卡驱动程序、打印机驱动程序等)一般都是用C语言编写的。在图形、图像及动画处理方面,C语言具有绝对优势,特别是游戏软件的开发主要就是使用C语言。随着计算机网络飞速发展,特别是Internet的出现,计算机通信就显得尤其重要,而通信程序的编制首选就是C语言。

C语言适用于多种操作系统,象WINDOWS、UNIX、LINUX等绝大多数操作系统都支持C语言,其它高级语言未必能得到支持,所以在某个特定操作系统下运行的软件用C语言编制是最佳选择。语言程序设计教程第二版第二章程序设计基础C2.3C语言与C++、Java和C#之间的关系

语言程序设计教程第二版第二章程序设计基础CCC++JavaC#面向过程,市场份额逐渐减少,仅在小型的且追求运行效率的软件和嵌入式软件开发方面有一定空间面向对象,市场份额较大,属C语言的升级版,完全兼容C语言的语法。在很多场合,它俩也被放在一起,称为C/C++。这个“++”加上后,便是大名鼎鼎的“面向对象(ObjectOriented)”。

面向对象,市场份额较大,1995年Sun公司出品,以纯面向对象、平台无关和易学易用而著称。它全面照搬了C++的语法,并去掉了其不常用和不成功的部分,化繁为简,迅速博得了程序员们的认可,获得了越来越多的支持。不管是桌面应用,还是网络服务、嵌入式应用都可用它进行高效的开发。但如果要做底层的、占用资源少的程序,Java语言就无能为力了。面向对象,市场份额较大,2000年Microsoft

公司出品,读作CSharp。戏称其为C++++,它也照搬了C/C++的语法,诞生在Java语言之后,所以它能把Java语言的成功之处吸收进来,把不成功之处抛弃,打造了一个似Java而非Java,还有点超越Java的语言。

目前,C/C++、Java和C#语言即将形成三足鼎立之势,其他语言仅能在其专属领域里得以发挥作用。同时,C++,Java和C#语言也在不断地完善、扩充自身,极力挤压其他语言的空间。在这种情况下,C语言的空间变得越来越小,那么为什么还要学习C语言呢?

C语言可以说是C++、Java和C#语言的基础,还有很多专用语言也学习和借鉴了C语言,比如进行Web开发的PHP语言,做仿真的MATLAB的内嵌语言等。学好C语言对以后再学习其他语言大有帮助。计算机科学发展很快,若干年以后,什么技术、什么语言尽显风流无法预言。唯有掌握最基础的,才能以不变应万变,并立于不败之地。2.4C语言程序的基本结构

了解了C语言的基本特性及其应用以后,接下来就来看看C语言程序是什么样子。一个C语言程序可以是非常简单的,也可以是特别复杂的,这取决于程序所要实现的功能。我们先来认识一个最为简单的C程序。【例1】最简单的C程序。/*ThisisthefirstCprogram*/#include<stdio.h>voidmain(){

printf("HelloCLanguage!\n");}注释信息预处理命令无返回值无参数、无返回值的主函数主函数名函数开始内部函数名参数回车换行符函数调用函数体语句结束标志函数结束运行结果:

HelloCLanguage!在C程序中,注释由“/*”开始,由“*/”结束,可以实现多行注释

。在C++程序中也可使用“//”进行单行注释。例如://注释信息

C语言的预处理命令都是以“#”号开头。stdio.h是一个头文件

C程序中允许插入若干行空行,它不影响程序的功能,同注释一样。为了程序的易读性,在编写C程序时,根据需要可插入一定的空行

main是主函数名,一个C语言程序有且仅有一个main函数。C程序执行时就是从main函数开始,具体讲就是从“{”开始,到“}”结束。

printf是C语言的内部函数名,因为它后面跟着(),其功能是将“HelloCLanguage!\n”显示在计算机的屏幕上(双引号和\n不显示)

C语言规定:语句以分号结束

语言程序设计教程第二版第二章程序设计基础C2.4C语言程序的基本结构

【例2】计算输入的两个整数的和。/*ThisisthesecondCprogram*/#include<stdio.h>voidmain(){

intx,y,z;

scanf("%d%d",&x,&y);z=x+y;

printf("thesumoftwointegeris%d\n",z);}数据类型名定义的变量名,以“,”分隔调用内部函数,接受键盘输入数据带有三个参数,以“,”分隔。&表示取变量的地址。调用内部函数,输出计算的和数求和的值给Z假设输入:1020↙

运行结果:thesumoftwointegeris30语言程序设计教程第二版第二章程序设计基础C2.4C语言程序的基本结构

C语言程序的函数由两部分构成:一部分定义变量(变量代表数据),称为声明部分;另一部分代表操作,由C语句构成,称为执行部分。在C程序中,要求函数的声明部分在前面,执行在后面,它们的顺序不能颠倒,也不能交叉。但在C++程序中,声明部分和执行部分可以相互交叉,没有严格的界限,当然执行部分中所使用的变量只要在其之前进行定义即可。//C语言程序voidmain(){

inta;a=10;

intb;b=a+20;}变量定义放到了执行部分之后。

//C++语言程序voidmain(){

inta;a=10;

intb;b=a+20;}只要执行部分所使用的变量在前面已经定义

//C或C++语言程序voidmain(){

inta;a=10;b=a+20;

intb;}变量定义放到了执行部分之后。

再次强调:在C语言程序中,变量必须先定义,后使用,顺序不能颠倒!!!

语言程序设计教程第二版第二章程序设计基础C2.4C语言程序的基本结构

【例3】计算输入的两个整数的最大值

。/*ThisisthethirdCprogram*/#include<stdio.h>intmax(inta,intb);voidmain(){

intx,y,z;

scanf("%d%d",&x,&y);z=max(x,y);

printf("max=%d\n",z);}intmax(inta,intb){

intc;if(a>b)c=a;elsec=b;return(c);}自定义函数声明自定义函数调用自定义函数max带两个形参返回a、b中最大值c返回值为整型数假设输入:1020↙

运行结果:max=20语言程序设计教程第二版第二章程序设计基础C2.4C语言程序的基本结构

C语言的标识符

C语言中变量和函数都有自己的名字,它们都必须是合法的标识符。

标识符就是一个名字,C语言规定标识符只能由字母、数字和下划线三中字符构成,并且第一个字符必须是字母或下划线。

C语言是大小写敏感的语言,因此hello和Hello是不同的标识符。

C语言中有一些特别的标识符,它们的用途已经事先规定好了,程序员不能再将它们另做它用。这些特别的标识符被称为关键字(也称保留字)。到目

温馨提示

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

评论

0/150

提交评论