C语言基础
【教学目的】:了解C语言发展过程
掌握C语言的特点
掌握C语言上机练习的过程
【本章内容】:C语言发展过程
C语言程序结构
C语言开发工具的安装和使用
【本章重点】:C语言开发工具的安装和使用
【计划课时】:4
1. C语言的发展历史
1.1. 编程语言
计算机是一种可以自动执行动作的设备,但是需要根据已经设定好的命令来执行。设定计算机动作的工具就是编程语言。最早的编程语言是机器语言,即用0和1来进行编程,后来升级为汇编语言。统称低级语言。低级语言非常依赖硬件,尤其是CPU的结构,如果用低级语言编写一个程序,那么这个程序一般只能在一种特定的软硬件上执行,如果放到其它结构的平台上将不能执行。如在A类CPU上有一个128K的高速存储器,程序员可以将一些数据放入该存储器中以便运行时使用,但是B类CPU上的高速存储器只有1K大小,这就导致在A类CPU上可以运行的程序,放到B类CPU上运行时,很多数据没有空间存放,程序无法执行。因此低级语言的程序只能针对特定软硬件环境编写,没有跨平台的能力。而且使用低级语言编写程序前必须对将来要使用的硬件平台有较深了解,这就导致使用低级语言开发程序速度慢,效率低。但是低级语言直接在硬件上执行,编写好的程序运行速度很快。
后来出现了C、Pascal等更接近英语习惯的面向过程的高级语言,还有JAVA、C++等面向对象的高级语言。高级语言在使用上比较接近英语习惯,不需要程序员详细了解硬件结构,因此学习比较容易。高级语言不能在硬件上直接执行,需要使用一些工具将高级语言程序转换为硬件可以直接执行的形式,根据转换方式不同,可以分为编译和解释两大类转换方式。高级语言因为不直接面向硬件,因此具有一定的跨平台能力,如C语言,同样的程序,如果需要在不同的硬件上执行,只需要使用不同的工具将程序转换为适应不同硬件的形式就可以了;而JAVA这样的语言具有更强的跨平台能力。
编程语言的好坏很难直接比较,不同的编程语言有不同的特点和适用领域。如C语言比较适合开发操作系统这样的底层软件,但是在精确的数值计算上不如Fortran语言;PHP就比较适合开发动态网站,而C++则比较适合开发单机的软件,如游戏。
1.2. 编译和解释
编译和解释都可以把程序代码转换为可以在硬件上直接执行的指令,但是方式不同。编译方式是先将所有的代码都转换以后再在硬件上执行,这种方式编译时间较长,但是编译后执行速度较快,跨平台能力较差;解释方式是运行时将一部分代码转换后就开始在硬件上执行,一边转换一边执行,速度上较慢,但跨平台能力强于编译方式。
两者各有优缺点。C语言属于编译型的语言,负责编译源程序的工具叫做编译器。如果是解释型的语言,负责解释源程序的工具叫做解释器。
1.3. C语言
Ken Thompson(图灵奖获得者,目前在Google研发Go语言) 和Dennis Ritchie(图灵奖获得者,已于2011.10.9去世)共同发明了UNIX和C语言。最早的UNIX使用汇编语言编写,KenThompson和Dennis Ritchie 为了将UNIX移植到其它结构的计算机上,发明了C语言,C语言的发展又使UNIX拥有更好的性能和更多的功能,两者相互促进,相互影响。UNIX后来是最优秀也是最流行的操作系统,苹果公司的操作系统就源自UNIX,还有最稳定的操作系统BSD,以及Solaris、IPX等一系列非常优秀的大型机操作系统,均源自UNIX,目前炙手可热的Linux也是受到UNIX启发而编写的,可以说是UNIX家族的一个分支,目前世界最先进的前500台计算机,绝大多数都选择UNIX或Linux作用它们的操作系统。C语言则是JAVA、C++等流行编程语言的前身,还有其它一些编程语言,如Python等解释型语言,它们的解释器均由C语言编写。
1.4. C语言的标准
C语言最初没有标准,后来因为比较流行,美国易做图执制订了C语言的标准,最早的标准是ANSI于1989年发布,简称ANSI C,或者C89,后来经过修改,于1999年形成了新的标准,简称C99。
标准需要编译器来执行。
但是C语言本身非常灵活,而标准也不是非常严谨,使用者在使用C语言时,会根据自己的开发环境和要求,来开发适合自己的编译器。这就导致目前已经有了数百个编译器,每个编译器都有自己的特点,虽然都基本遵循C语言的标准,但细微之处都略有差异,这就需要使用者在编写程序之前先了解这些细微差别。比较著名的编译器有tc,gcc,cl等。
2. C语言的特点
l 语言简洁、紧凑,使用方便、灵活
l 运算符丰富
l 数据结构丰富,具有现代化语言的各种数据结构
l 具有结构化的控制语句
l 程序可移植
l 语法限制不严格,程序设计自由度大
l 直接对硬件操作,能进行位操作
l 执行效率高,速度快
l C语言开发周期较长
l C语言过于灵活,易出错
l C的标准比较模糊,导致出现了数百种C语言编译器,而且各有差异
3. C语言开发工具
3.1. 基本开发工具
C语言的源程序是纯文本文件,因此任何文本编辑器均可用于编写C语言的源程序,保存时注意源文件的后缀名必须为“c”即可(头文件的后缀名是“h”,其本质也是纯文本文件,和C语言源文件内容要求一致,后缀名仅仅用于区分两者的作用差异而已),文件名没有特殊规定,只要符合一般命名规则即可——汉字除外。选择文本编辑器时最好选择具有关键字高亮、和自动匹配符号和自动缩进的软件,这样容易写出正确、整齐的代码。比较流行的、适合编写代码的编辑器有Notepad++,PSPad等。
还需要编译器,所有的编译器都可以在命令行下运行,因此需要掌握所选编译器的基本命令格式和使用方法。建议使用gcc编译器,该编译器支持标准C语言,功能强大,速度比较快,而且可以免费获取。
3.2. IDE
IDE是集成开发环境的缩写,IDE可以允许程序员在同一个软件中编写代码,调用编译器,界面简单、直观,高级的IDE开可以提供项目管理、代码完成、图形化开发等高级功能,在这些功能的帮助下,程序员不需要写很多代码即可实现程序的核心功能,其它部分由IDE自动完成,因此好的IDE可以大大加快程序开发速度。
3.3. 开发工具的选择
IDE方便,速度快,有利于开发者,而不适合初学者使用。因为很多部分不需要开发者来直接编写,只需要按下一些快捷键,或者使用一些向导工具即可完成,开发者可以利用这些功能加快开发速度,初学者却完全不知道IDE究竟做了什么,对于学习编程有害而无利。
因此初学者尽量选择合适的文本编辑器+命令行编译器,通过手写代码和手工编译来加深对编程语言的理解,或者选择功能简单的IDE来编写和运行程序,但一定不能有自动完成代码或者代码提示等功能。那么什么时候可以使用IDE呢?等到不需要IDE也能做开发的时候,就说明你已经掌握编程语言的基本知识,可以使用IDE来加快开发了。
3.4. Code::Blocks
我建议使用Code::Blocks来作为初学者的IDE,因为该IDE自带Gcc编译器,可以省去配置环境变量的麻烦,而且没有过多的自动化功能,可以供初学者使用。
4. C语言上机实验流程
(1) 打开Code::Blocks;
(2) 选择界面中的“创建新项目”,打开新建对话框;
(3) 选择左侧“代码文件”,再选择右侧的“C/C++ Source”,单击“出发”按钮;
(4) 一开始是欢迎界面,可以选择界面中唯一的复选框来保证以后可以调过该界面,单击“下一步”按钮;
(5) 选择“C”这一选项,然后单击“下一步”按钮;
(6) 在“带完整路径的文件名”文本框中输入即将建立的C程序源文件的存放位置和文件名称,也可以单击文本框右侧的按钮来输入,然后单击“完成”按钮;
(7) 进入编辑界面,编写代码;
(8) 点击“保存”按钮,保存代码后使用Crtl+F9(或者Shift+Crtl+F9)编译程序,如果代码有错误,会在界面下半部分提示,根据提示改正错误,直到编译后没有错误和警告提示,按下Crtl+F10运行程序。
5. C语言程序的结构
#include<stdio.h>