1、程序与编程语言
我们使用计算机离不开程序,程序告诉计算机应该如何运行。程序(Program)是一个精确说明如何进行计算的指令序列。这里的计算可以是数学运算,比如通过一些数学公式求解,也可以是符号运算,比如我们使用world编辑一个文档或是通过搜索引擎检索信息。
计算机本质上是由数字电子电路组成的运算机器,所有的运算都只能通过数字来表示和处理。通过将各种数据转换为数字表示,可以使计算机处理各种信息,比如音乐、图片、电影等。
程序由一系列指令组成的,指令就是指挥计算机做某种运算的命令,通常包括以下六类:
输入类指令:用于从键盘、文件或者其它设备获取数据。
输出类指令:用于把数据显示到屏幕,或者存入一个文件,或者发送到其它设备,比如打印机。
基本运算类指令:用于执行最基本的数学运算(加减乘除)和数据存取,其实输入和输出也属于数据存取。
测试和分支类指令:用于判断某个条件是否成立,然后根据不同的结果执行不同的后续指令。
循环类指令:用于重复执行一系列操作。
对于程序来说,有上面这几类指令就足够了。你曾用过的任何一个程序,不管它有多么复杂,都是由上面这几类指令组成的。
编写程序可以说就是这样一个过程:把复杂的任务分解成子任务,把子任务再分解成更简单的任务,层层分解,直到最后简单得可以用以上指令来完成。
在不同的编程语言中,指令具有不同的形式。通常“指令”这个词专指机器语言或者汇编语言等低级语言中的指令,而在C语言、C++、Java、Python等高级语言中通常称为语句或表达式。
计算机语言通常分为低级语言和高级语言。计算机所能直接理解的指令是机器语言,它是由一串串由"0"和"1"组成的指令序列组成的。由于机器语言对于人来来说记忆困难,难以理解,人们对它进行了改进:用一些简洁的英文字母、符号串来替代一个特定的指令的二进制串,出现了汇编语言。机器语言和汇编语言都十分依赖于机器硬件,这两种语言同属低级语言
由于低级语言比较冗长、复杂、容易出错,而且需要有更多的计算机专业知识,所以又出现了高级语言。高级不但将许多相关的机器指令合成为单条指令并且去掉了与具体操作有关但与完成工作无关的细节,例如使用堆栈、寄存器等,这样就大大简化了程序中的指令。
常用的高级语言非常丰富,如:C、C++、JAVA、C#、python等。
2、C语言简介
C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。它由美国贝尔实验室的Dennis M. Ritchie于1972年推出,之后C语言先后被移植到大、中、小及微型机上,它即可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。它的应用范围广泛,具备很强的数据处理能力,适于编写系统软件、三维、二维图形和动画,具体应用例如单片机以及嵌入式系统开发。
C语言是一种通用的、过程式的编程语言,广泛用于系统与应用软件的开发。具有高效、灵活、功能丰富、表达力强和较高的可移植性等特点,在程序员中备受青睐。最近25年是使用最为广泛的编程语言。在操作系统和系统使用程序以及需要对硬件进行操作的场合,用C语言明显优于其它高级语言。C语言的设计影响了许多后来的编程语言,例如C++、Objective-C、Java、C#等。
二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言订定了一套完整的国际标准语法,称为ANSI C,作为C语言的标准。二十世纪八十年代至今的有关程序开发工具,一般都支持符合ANSI C的语法。C语言从诞生到现在先后有了三个标准:ANSI C / C89标准、C99标准和C11标准。
C语言的优点很多,主要有以下几点:
1、简洁紧凑、灵活方便
C语言一共只有32个关键字,9种控制语句,程序书写形式自由,区分大小写。把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以像汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元。
2、运算符丰富
C语言的运算符包含的范围很广泛,共有34种运算符。C语言把括号、赋值、强制类型转换等都作为运算符处理。从而使C语言的运算类型极其丰富,表达式类型多样化。灵活使用各种运算符可以实现在其它高级语言中难以实现的运算。
3、数据类型丰富
C语言的数据类型有:整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等。能用来实现各种复杂的数据结构的运算。并引入了指针概念,使程序效率更高。
4、表达方式灵活实用
C语言提供多种运算符和表达式值的方法,对问题的表达可通过多种途径获得,其程序设计更主动、灵活。它语法限制不太严格,程序设计自由度大,如对整型量与字符型数据及逻辑型数据可以通用等。
5、允许直接访问物理地址,对硬件进行操作
由于C语言允许直接访问物理地址,可以直接对硬件进行操作,因此它既具有高级语言的功能,又具有低级语言的许多功能,能够像汇编语言一样对位(bit)、字节和地址进行操作,而这三者是计算机最基本的工作单元,可用来写系统软件。[20]
6、生成目标代码质量高,程序执行效率高
C语言描述问题比汇编语言迅速,工作量小、可读性好,易于调试、修改和移植,而代码质量与汇编语言相当。C语言一般只比汇编程序生成的目标代码效率低10%~20%。[19]
7、可移植性好
C语言在不同机器上的C编译程序,86%的代码是公共的,所以C语言的编译程序便于移植。在一个环境上用C语言编写的程序,不改动或稍加改动,就可移植到另一个完全不同的环境中运行。[19]
8、表达力强
C语言有丰富的数据结构和运算符。包含了各种数据结构,如整型、数组类型、指针类型和联合类型等,用来实现各种数据结构的运算。
C语言能直接访问硬件的物理地址,能进行位(bit)操作。兼有高级语言和低级语言的许多优点。
它既可用来编写系统软件,又可用来开发应用软件,已成为一种通用程序设计语言。
另外C语言具有强大的图形功能,支持多种显示器和驱动器。且计算功能、逻辑判断功能强大。
3、C语言如何生成程序
我们编写好的C语言代码是不能直接运行的,需要一系列的步骤将其转换成可以在硬件上运行的程序(可执行代码)。其中最重要的步骤是进行编译和链接。编译就是把文本形式源代码翻译为机器语言形式的目标文件的过程。编译过程需要使用编译器。链接是把目标文件、操作系统的启动代码和用到的库文件进行组织形成最终生成可执行代码的过程。链接过程需要使用链接器。
编译和链接的流程如下:
4、C语言的编译器
C语言的编译器种类繁多,比较常用的有以下几种。
1、GNU/GCC
这是由GNU组织开发的编译器。最初用于Unix系统。目前GCC是Unix/Linux系统的必备编译器。
官网:http://gcc.gnu.org/
2、VC编译器
严格意义上说VC不算编译器,应该是集成了编译器的IDE,是Windows系统开发的首选。当前最新版是VC2013。
官网:http://www.visualstudio.com/
3、Intel C++ Compiler
Intel C++Compiler是美国 Intel 公司开发的 C/C++ 编译器,适用于 Linux、Microsoft Windows 和 Mac OS X 操作系统。该编译器的最新发布是 Intel C++ Compiler 2013 版
官网:http://software.intel.com/en-us/articles/intel-compilers/
4、mingw32/cygwin/Djgpp编译器
这三个都是GNU/GCC的分支。
C语言入门系列主要采用VC2013环境进行讲解,并涉及GCC编译环境。