liux_yt@163.com第1章C语言程序设计基础1程序设计基础--C语言程序设计教程(第二版)管理学院信管教研室liux_yt@163.com第1章C语言程序设计基础2程序设计语言的发展及其特点C语言的发展及其特点和应用C语言程序的基本结构编制C语言程序的基本步骤本章学习内容学点什么哪?liux_yt@163.com第1章C语言程序设计基础3机器语言汇编语言高级语言面向过程面向对象CPU指令系统,由0、1序列构成的指令码组成如:10000000加10010000减用助记符号描述的指令系统如ADDA,B面向机器的语言程序设计是数据被加工的过程客观世界可以分类,对象是类的实例对象是数据和方法的封装对象间通过发送和接受消息发生联系程序设计关键是定义类,并由类派生对象1.1程序设计语言发展历史及特点liux_yt@163.com第1章C语言程序设计基础41.2C语言发展历史产生背景:Bell实验室,unix操作系统—KenThompson产生过程——实验室版时间:1972~1973地点:美国贝尔实验室目的:UNIX操作系统设计人:Ken.Thompson和Dennis.M.RitchieC标准1978:K&R合著《TheCProgrammingLanguage》——标志C语言诞生ANSIC:1983年(美国国家标准化组织)87ANSIC:1987年1990年ISO国际标准的ANSICliux_yt@163.com第1章C语言程序设计基础5C语言的设计者DennisM.Ritchieliux_yt@163.com第1章C语言程序设计基础6和Unix的设计者KenThompson接受美国国家技术勋章liux_yt@163.com第1章C语言程序设计基础7Ritchie和Thompson在开发UNIXliux_yt@163.com第1章C语言程序设计基础81.2C语言发展历史C语言版本C语言有不同的版本,常用的编译软件有MicrosoftVisualC++、BorlandC++、BorlandC++Builder、WatcomC++、GNUDJGPPC++、Lccwin32C、MicrosoftC、TurboC、HighC等等。本课程的内容将基于ANSIC进行展开,主要是针对VisualC++6.0,同时也兼顾TurboC2.0。liux_yt@163.com第1章C语言程序设计基础9程序的易验证性。程序可移植性好。语法限制不十分严格,易于编程。语言简练、紧凑,使用方便、灵活。是一种结构化程序设计语言。运算符/数据类型丰富、数据结构丰富。常用符号:标识符关键字常量字符串操作符分割符关键字:32个。控制语句:9种。程序书写形式自由,标识符的定义非常灵活,支持大小写敏感。支持结构化程序设计程序结构:顺序结构选择结构循环结构运算符:共有34种运算符。包括:算术、赋值、强制类型转换等数据类型:整型、实型、字符型、数组类型、指针类型、结构类型、联合类型。1.3C语言的特点liux_yt@163.com第1章C语言程序设计基础10CC++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语言对以后再学习其他语言大有帮助。计算机科学发展很快,若干年以后,什么技术、什么语言尽显风流无法预言。唯有掌握最基础的,才能以不变应万变,并立于不败之地。1.4C语言与C++、Java和C#之间的关系liux_yt@163.com第1章C语言程序设计基础11硬件(Hardware)操作系统(OS)应用程序(Application)应用平台基于平台的应用程序低级语言的地盘高级语言的地盘C语言的地盘1.5C语言的地位liux_yt@163.com第1章C语言程序设计基础121.6C语言程序的基本结构【例1】最简单的C程序。/*ThisisthefirstCprogram*/#includestdio.hvoidmain(){printf(HelloCLanguage!\n);}注释信息预处理命令无返回值无参数、无返回值的主函数主函数名函数开始内部函数名参数回车换行符函数调用函数体语句结束标志函数结束在C程序中,注释由“/*”开始,由“*/”结束,可以实现多行注释。在C++程序中也可使用“//”进行单行注释。例如://注释信息C语言的预处理命令都是以“#”号开头。stdio.h是一个头文件C程序中允许插入若干行空行,它不影响程序的功能,同注释一样。为了程序的易读性,在编写C程序时,根据需要可插入一定的空行main是主函数名,一个C语言程序有且仅有一个main函数。C程序执行时就是从main函数开始,具体讲就是从“{”开始,到“}”结束。printf是C语言的内部函数名,因为它后面跟着(),其功能是将“HelloCLanguage!\n”显示在计算机的屏幕上(双引号和\n不显示)C语言规定:语句以分号结束liux_yt@163.com第1章C语言程序设计基础131.6C语言程序的基本结构【例2】计算输入的两个整数的和。/*ThisisthesecondCprogram*/#includestdio.hvoidmain(){intx,y,z;scanf(%d%d,&x,&y);z=x+y;printf(thesumoftwointegeris%d\n,z);}数据类型名定义的变量名,以“,”分隔调用内部函数,接受键盘输入数据带有三个参数,以“,”分隔。&表示取变量的地址。调用内部函数,输出计算的和数求和的值给Z假设输入:1020↙运行结果:thesumoftwointegeris30liux_yt@163.com第1章C语言程序设计基础14C语言程序的函数由两部分构成:一部分定义变量(变量代表数据),称为声明部分;另一部分代表操作,由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语言程序中,变量必须先定义,后使用,顺序不能颠倒!!!1.6C语言程序的基本结构liux_yt@163.com第1章C语言程序设计基础151.6C语言程序的基本结构【例3】计算输入的两个整数的最大值。/*ThisisthethirdCprogram*/#includestdio.hintmax(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(ab)c=a;elsec=b;return(c);}自定义函数声明自定义函数调用自定义函数max带两个形参返回a、b中最大值c返回值为整型数假设输入:1020↙运行结果:max=20liux_yt@163.com第1章C语言程序设计基础16C语言的标识符C语言中变量和函数都有自己的名字,它们都必须是合法的标识符。标识符就是一个名字,C语言规定标识符只能由字母、数字和下划线三中字符构成,并且第一个字符必须是字母或下划线。C语言是大小写敏感的语言,因此hello和Hello是不同的标识符。C语言中有一些特别的标识符,它们的用途已经事先规定好了,程序员不能再将它们另做它用。这些特别的标识符被称为关键字(也称保留字)。到目前为止,我们见过的关键字有void、int、main、if、else、return。以后随着学习的深入,我们将会遇到越来越多的关键字。1.6C语言程序的基本结构liux_yt@163.com第1章C语言程序设计基础171.6C语言程序的基本结构总结C程序是由多个函数构成的。每个C程序中有且只有一个main函数。main函数是程序的入口和出口。不使用行号,无程序行的概念。程序中可使用空行和空格。C程序格式常用锯齿形书写格式。C程序中可加任意多的注释。引用C语言标准库函数,一般要用文件包含预处理命令将其头文件包含进来。用户自定义的函数,必须先定义后使用。变量必须先定义后使用。变量名、函数名必须是合法的标识符,标识符习惯用小写字母,大小写敏感。不能用关键字来命名变量和函数。函数包含两个部分:声明部分和执行部分,在C程序中,声明部分在前,执行部分在后,这两部分的顺序不能颠倒,也不能有交叉。C语言的语句都是以分号结尾。liux_yt@163.com第1章C语言程序设计基础18编辑程序代码的录入,生成源程序*.c或*.cpp编译语法分析查错,翻译生成目标程序*.obj链接与其它目标程序或库链接装配,生成可执行程序*.exe运行开始编辑编译有错?链接执行结果正确?结束源程序file.c目标程序file.obj库函数和其它目标程序可执行程序file.exe不正确正确有无调试C程序的流程编写C程序的步骤源程序目标程序可执行程序内容程序设计语言机器语言机器语言可执行不可以不可以可以文件名后缀.c或.cpp.obj.exe1.7运行C程序的步骤与方法liux_yt@163.com第1章C语言程序设计基础191.7运行C程序的步骤与方法运行C程序的步骤•上机输入与编辑源程序•对源程序进行编译•与库函数连接•运行目标程序liux_yt@163.com第1章C语言程序设计基础20上机运行C程序的方法目前使用的大多数C编译系统都是集成环境(IDE)的。TurboC2.0TurboC++3.0VisualC++6.0IntegrateDevelopmentEnvironment1.7运行C程序的步骤与方法liux_yt@163.com第1章C语言程序设计基础21VisualC++6.0开始-程序-VisualStudio6.0-VisualC++6.0文件-新建文件-C++SourceFile加入文件名称选择保存目录输入程序代码-保存文件编译是否创建项目工作区?(是)构件执行1.7运行C程序的步骤与方法liux_yt@163.com第1章