第1章 C 程序概述
人与计算机交换信息是要用语言来交流的,这种语言称为计算机语言。用计算机语言编写的代码称为程序。计算机的工作是受程序控制的,而从计算机角度来说,程序是用某种计算机能理解并执行的计算机语言来描述解决问题的方法步骤。
程序设计语言经历了从机器语言、汇编语言到高级语言这样一个发展过程。 1.
机器语言:计算机刚诞生时,还没有可以用来方便地指
挥计算机工作的程序,计算机程序是直接用它能识别的二进制指令来书写的。这种程序设计语言就是机器语言。它直接以计算机硬件产生作用的,所以不同型号的计算机的“机器语言”又不一样,因此它被称为低级语言,很难被人掌握,只有少数专业人员能使用。
2.
汇编语言:实际上是一种符号化的机器语言。在汇编语
言中每条机器指令对应一个符号化的指令。如:用ADD代表机器二进制的加法运算。因为加法用二进制的10110110的机器语言代表,而用英文单词更简捷且好记多了。不过,用汇编语言编写的程序要翻译成机器语言才能被计算机执行。且也依赖于机器。
3.
高级语言:由于汇编语言和机器语言都是面向机器的语
言,而且在程序的书写形式上很难直观地反映出程序设计者的思路,因此人们发明了与人类的自然语言非常接近的高级
1
程序设计语言。高级语言不仅易学,易用,而且写出的程序更加简练,同一个程序还可以用在不同型号的机器上。比如说,我们要求两个数的和,在高级语言中可以用一个很简单的语句C=A+B;来表示,但在汇编语言或者机器语言中,这可能就是几条甚至几十条机器指令构成的一个实现加法的程序,常人要读懂它也不是那么容易。
但是,用高级语言编写的程序不能被计算机直接理解和执行,而必须先由这种语言的编译程序或者解释程序翻译成机器指令,然后再让计算机执行机器指令。
C语言的历史
20世纪70年代初期出现的FORTRAN,ALGOL和PASCAL语言是反映了结构化程序设计思想的高级语言,PASCAL它在大学和研究所中流传较广曾为国内外计算机(应用)专业学生的入门语言。
几乎同时与之诞生的C语言在美国的贝尔实验室中诞生,与其它语言不同的是,C语言诞生之时,没有什么研究报告和语言报告,而是在设计Unix操作系统时不断地得到更新和完善。因此,人们把C语言程序称为程序员设计的语言,而把FORTRAN,ALGOL和PRASCAL语言称为计算机科学家设计的语言。 Unix的早期版本是用汇编语言写的,而用C编写的Unix原先的版本更易于理解、修改的扩充,更重要的是,具有良好的可移植性。作为一个优秀的操作系统,Unix在世界范围内得到了
2
广泛的应用,它的设计者因此于是1983年获得了计算机科学的最高奖——图灵奖。C语言是一门极具有生命力的程序设计语言。由于C语言同时具有一些低级语言的特性,所以许多人把C语言称为中级语言。要使用Unix,就必须掌握C语言,渐渐地C语言已不完全依赖于Unix,成为程序员的首选语言之一,在国内,许多高校将C语言作为第一门程序设计语言开设 1978年,贝尔实验室的B.W.Kernighan和D.M.Ritchie(简称K&R)出版了“THE C PROGRAMMING LANGUAGE”一书,建立了所谓的C语言的K&R标准,它一度成为C语言的事实标准。目前,美国国家标准学会已对C语言标准化,称为ANSI C 标准。ANSI C 标准和K&R标准是有一些差别的,本课程是以ANSI C 标准为主再加上Borland公司Turbo C2.0的一些扩充。
C语言本身也在发展,20世纪80年代中期,出现了面向对象的程序设计的概念。贝尔实验室的B.stroustrup博士借鉴了Simula67中的类的概念。将面向对象的语言成份引入到C语言中,设计出了C++语言,C++语言赢得了广大程序员喜爱,不同的机器不同的系统几乎都支持C++语言,同时,C++语言也得到了国际标准化组织(ISO)的认可。C/C++语言对新的形成的语言也有较大的影响力。20世纪90年代中期以来,Internet日益普及,用于Internet开发的JAVA语言渐为人们所熟知,事实上,JAVA语言与C++语言极为相似,熟悉C++语言的程序员在很短
3
的时间内就能掌握JAVA。
C语言的特点:C 语言是目前最流行的、也是最优秀的
一种高级程序设计语言。它于1972年在美国的贝尔实验室问世,后来历经发展和完善。它不仅具有高级语言的易学、易用、可移植性强等优点,而且具有低级语言的执行效率高、可对硬件直接进行操作等优点受到了广大计算机应用人员的喜爱,同时C语言几乎任何一种机型、任何一种操作系统都支持C语言的开发。 总的来说,C语言具有以下几方面的特点:
1. 比其它高级语言更接近硬件,比低级语言更接近算法,程序易编、易读、易查错、易修改。可以说兼有高级语言和低级语言的优点,允许直接对位、字节和地址进行操作。 2. 数据类型和运算符十分丰富,程序设计和算法描述更为简单和方便。
3. 语法结构十分简单,语句数目少,简单易学。
4. C语言是面向结构化程序设计的语言,提供了完整的程序控制语句(选择语句和循环语句),很适合结构化的程序设计方法,生成的目标代码质量高。
5. 它是一种模块化程序设计语言,适合大型软件的研制和调试。 它提供了大量的库函数供调用,简化了程序设计工作。
4
学习C语言所需的知识
1. 弄清数据在内存中的表示方法,数据在计算机内部是用二进制来表示的,为了便于问题描述,常常还用到十六进制和八进制;
2. 数制及转换(二进制、十进制、八进制、十六进制) 3. 整数的原码、补码、反码表示
整数有正负之分,用一个二进制位作为符号位,一般总是最高位,当符号位为“0”时为正数,符号位为“1”时为负数。如:用16位来表示一个整数时有: 0000000000101011=+43 1000000000101011=-43
上述表示法,称为整数的原码表示法。
整数的反码表示法是:符号位作为“1”,绝对值部分正好与原码相反(即0变为1,1变为0) (-43)原=1000000000101011 (-43)反=1111111111010100
但在计算机内部整数大多数用补码表示,对符号位作为“1”,绝对值部分却是反码的最低位加1得到的结果,因此 (-43)补=1111111111010101
对正整数而言,其原码、反码、补码均相同 对于补码的知识,是C语言的必备的知识
5