【VB开源代码栏目提醒】:网学会员,鉴于大家对VB开源代码十分关注,论文会员在此为大家搜集整理了“计算机语言及C语言概述 - 其它论文”一文,供大家参考学习!
第1章 计算机语言及 C 语言概述 现在,电子计算机已经渗透到了人类生产和生活的一切领域,成为人们处理信息的一种最重要的工具。
可以说,计算机知识是当代知识结构中不可缺少的组成部分。
而计算机的工作是由计算机程序来控制的,程序则又是利用程序设计语言根据问题的要求事先编写的。
本章将对计算机语言、程序和 C 语言的产生与发展、C 语言的特点及构成等方面进行简单的介绍。
1.1 计算机语言和计算机程序 想让计算机按人们的意志进行工作,就必须使计算机能理解和执行人们给它的指令。
如同人与人交流要通过语言一样,人和计算机之间的
通信也要通过特定的语言,这就是计算机语言。
计算机语言是人机相联系的媒介,需要人和计算机都能理解它。
更为准确地说,计算机语言通常是一个能够完整、准确和规则地表达人们的意图,并用于指挥或控制计算 。
机工作的“符号系统” 每一种语言都规定了各自的语法规则及其使用含义,而计算机程序则是为解决某一特定的具体问题采用某一种语言编写的指令序列。
随着计算机的发展,计算机程序设计语言主要分为机器语言、汇编语言和高级语言 3代语言。
1.机器语言 就本质而言,计算机只能识别 0 和 1 这样的二进制信息。
每一类型的计算机都分别规定了由若干个二进位信息组成一个指令。
例如某 8 位字长的计算机以 10000000 表示“加”操作,以 01110000 表示“赋值传送”操作。
这种计算机能直接识别和执行的二进制形式的指令称为机器指令。
每一条机器指令都是计算机设计者通过计算机的硬件结构赋予计算机的一个操作功能。
每一种计算机都规定了若干种指令以实现各种不同的操作。
某种
计算机的指令集合即为该计算机的机器语言,或者说是该计算机的指令系统。
机器语言是依赖于具体计算机的,而非各类计算机通用的,因此机器语言为面向机器的语言。
为解决某一
问题,采用某种计算机的机器语言编写的一组机器指令,称为机器语言程序。
机器语言程序能够被计算机直接识别和执行,效率比较高。
但用机器语言编写程序,编程人员要首先熟记所用计算机的全部指令
代码和
代码的含义。
编写程序时,程序员得自己处理每条指令和每一个数据的存储分配和输入输出,还得记住编程过程中每步所使用的工作单元处在何种状态。
这是一件十分烦琐的
工作,编写程序花费的时间往往是实际运行时间的几十倍或几百倍。
而且,编出的程序全是些 0 和 1 的指令
代码,直观性差,还容易出 C 语言程序设计教程 错。
现在,除了计算机生产厂家的专业人员外,绝大多数程序员已经不再去
学习机器语言了。
2.汇编语言 为了克服机器语言难读、难编、难记和易出错的缺点,人们就用与
代码指令实际含义2 相近的英文缩写词、字母和数字等符号来取代指令
代码。
如用 ADD 表示“加”,用 SUB 表示“减”等。
ADD、SUB 等称为“助记符” 。
这种以“助记符”代替二进制指令的语言 称为汇编语言(又称符号语言)。
汇编语言用符号代替了机器指令
代码,而且助记符与指令
代码一一对应,基本保留了机器语言的特点,因此它仍然是面向机器的语言。
用汇编语言编写的程序称为汇编语言源程序。
由于使用了助记符号,将汇编语言源程 序送入计算机,并不能被直接识别和执行,必须通过预先放入计算机的“汇编程序”的加 工和翻译,才能变成能够被计算机识别和处理的二进制
代码程序。
经汇编程序翻译后的程 序称为目标程序,目标程序是机器语言程序,它一经被安置在内存的预定位置上,就能被 计算机的 CPU 处理和执行。
汇编语言像机器指令一样,是硬件操作的控制信息,其仍然是面向机器的语言,使用 起来还是比较烦琐费时,通用性也差。
但是,汇编语言用来编制系统软件和过程控制软件 时,其目标程序占用内存空间少,运行速度快,有着高级语言不可替代的用途。
3.高级语言 机器语言和汇编语言是面向机器的,可移植性差,并且难学和不易推广,人们习惯上 将它们称为低级语言。
随着计算机事业的发展,促使人们去寻求一些与人类自然语言相接 近且能为计算机所接受的语意确定、规则明确、自然直观和通用易学的计算机语言。
这种 与自然语言相近并为计算机所接受和执行的计算机语言称高级语言。
高级语言不再面向机器,而是面向过程。
或者说,不必过多考虑机器内部构造和不同 机器的特点,只要按照解题的过程写出相应的程序,计算机就能执行。
实际上,计算机是不能直接执行高级语言程序的,必须先将其翻译成机器指令。
高级 语言中的一条指令(语句或命令)对应多条机器指令,因此这个翻译转换工作比翻译汇编 语言源程序复杂得多。
将高级语言源程序转换成目标程序这项工作是由“编译程序”来完 成的。
必须清楚的是,不是在任何计算机上都能使用任何一种高级语言。
只有在计算机上配 备了某一种高级语言的编译程序,计算机才能运行这种高级语言的程序。
比如要运行一个 C 程序,必须保证所用的计算机已经配置了 C 编译程序。
高级语言的出现,可以使一大批非计算机专业人员得心应手地使用计算机来实现其 目的。
、COBOL(COmmon Business 早期出现的高级语言有 FORTRAN(Formula Translator) 、 Oriented Language) ALGOLALGOrithmic Language、 BASIC( Beginner’s All-Purpose 。
其中,FORTRAN 是最早广为使用的高级语言,主要应用于科 Symbolic Instruction Code) 学计算领域;COBOL 主要用在商业事务处理领域;ALGOL 是一种通用的算法语言;BASIC 主要面向初学者,简单易学。
在高级语言出现的早期,由于追求程序的高效率,程序员过 分依赖技巧与天分,不太注重所编写程序的结构。
典型问题是程序中的控制随意跳转,即 不加限制地使用 goto 语句,这样的程序对别人来说是难以理解的,即使程序员自己也难以 修改程序。
随着程序规模与复杂性的不断增大,人们也不断探索新的程序设计方法。
Bohra 和Jacopini 证明了只用 3 种基本的控制结构(顺序结构、分支结构和循环结构)即可实现任何单入口/单出口的程序;Dijkstra 建议从一切高级语言中取消 goto 语句,从而引起一场关于 goto 语句的大辩论;Mills 提出程序应该只有一个入口和一个出口,这些工作导致了结构化程序设计方法的诞生。
PASCAL 是第一个结构化程序设计语言,它是由瑞士苏黎世联邦工业大学的沃斯(N.Wirth)教授研制,于 1971 年正式发表的。
PASCAL 语言作为一种教学语言,在教育界深受欢迎。
C 语言也是一种广为流行的、极受欢迎的结构化程序设计语言。
C 语言适合作为系统描述语言,它既可以用来编写系统软件,也可以用来编写应用软件。
目前,程序设计语言及编程环境正向面向对象语言及可视化编程环境方向发展,出现了许多第 4 代语言及其开发工具。
如微软公司(Microsoft)开发的 Visual 系列(VC、
VB、FoxPro)编程工具及 Power Builder 等,目前已经在国内外得到了广泛的应用。
1.2 C 语言概述 C 语言是国际上广泛流行的计算机高级语言,它被广泛地应用于系统
软件和应用软件的编写。
1.2.1 C 语言的产生和发展 C 语言的出现是与 UNIX 操作系统紧密联系在一起的。
较早的操作系统等系统软件(包括 UNIX 操作系统)基本上是用汇编语言编写的,但汇编语言对硬件的依赖过强,从而导致了可读性和可移植性差等不足。
为克服这些不足,系统软件最好采用高级语言来编写,但事实上大多数高级语言难以胜任汇编语言的一些功能,如对内存地址的操作、位操作等。
人们迫切希望有一种语言既具有高级语言的特性,又具有低级语言的特性,集两者优点于一身,C 语言就是因此应运而生。
1960 年,作为一种面向问题的高级语言 ALGOL 60 出现,但离硬件甚远,不适合编写系统程序。
1963 年,在 ALGOL 60 的基础上, (Combined Programming 剑桥大学推出了 CPLLanguage)语言。
CPL 语言较 ALGOL 60 更接近硬件一些,不足的是规模较大,不易实现。
1967 年,剑桥大学的马丁理查德 对 (Matin –Richards) CPL 作了简化,推出 BCPL(BasicCombined Programming Language)语言。
1970 年,贝尔实验室的 Ken Thompson 以 BCPL ,且使用 B 语为基础,进一步简化,设计出简单且接近硬件的 B 语言(BCPL 的首字母)言写了第一个 UNIX 操作系统,并在 PDP 7 上得以实现。
但 B 语言过于简单,功能有限。
1972 年至 1973 年间,贝尔实验室的 D.M.Ritchie 在 B 语言的基础上
设计出了 C 语言(取 。
CBCPL 的第二个字母) 语言既保持了 BCPL 和 B 语言的精练且接近硬件的优点,又克服了它们过于简单、数据无类型等缺点。
1973 年,Ken Thompson 和 D.M.Ritchie 成功地将 。
UNIX 操作系统的 90以上用 C 语言改写成功(即 UNIX 第 5 版) 3 C 语言的初衷是为了描述和实现 UNIX 操作
系统而设计的一种工作语言。
直到 1975年 UNIX 第 6 版公布以后,C 语言的突出优点引起了人们普遍关注,1977 年出现了不依赖 ,同时推动了 UNIX 操作系统迅于具体机器的 C 语言编译文本《可移植 C 语言编译程序》 C 语言程序设计教程 速在各种机器上实现。
C 语言因 UNIX 操作系统而诞生,UNIX 操作系统也因 C 语言而得 以快速推广,二者相辅相成,共同发展。
1978 年开始,C 语言独立于 UNIX 和 PDP,被先 后移植到大、中、小及微型机上。
C 语言很快便风靡全世界,成为世界上应用最广泛的计4 算机程序设计语言之一。
1983 年,美国国家标准协会(ANSI)开始对 C 语言进行标准化,并且在当年公布了 第一个 C 语言标准草案,即 83 ANSI C。
1987 年,ANSI 又公布了一个 C 语言标准——87 ANSI C, 并 且 在 1990 年 , 这 一 标 准 被 国 际 标 准 组 织 ISO 接 受 为 ISO C 的 标 准 。
1994 年 ,ISO 又修 订了 C 语言 的标 准 。
目 前流 行的 C 语 言 编译系 统 (ISO9899:1990) 大多是 以 ANSI C 为 基础 进行 开发 的, 但不 同版 本的 C 编 译系 统所 实现 的 语言功 能 和语法 规则 略有 差别 。
在 随着面向对象和可视化
程序设计的发展需求, C 语言的基础上又产生了 C、Visual C、
Java、C等程序设计语言。
面向对象的基础是面向过程,掌握了 C 语言,以后进一 步学习 C等面向对象及可视化程序设计语言就不会太困难。
1.2.2 C 语言的特点 可以讲,一种语言能存在和发展并保持其生命力,必然有其不同于或超越于其他语言 的特点。
C 语言诞生不久即风靡全球,成为深受欢迎的高级语言之一,这是和它的主要特 点分不开的。
C 语言的几个显著特点如下: (1)语言简洁紧凑、使用灵活方便。
C 语言共有 32 个关键字,9 种控制语句,程序书 写自由。
如果有其他语言基础,可明显感受到 C 语言的源程序较为简短。
(2)C 语言的运算符丰富,运算功能强。
C 语言的运算符共有 34 种之多,在 C 语言 中,括号、赋值、强制类型转换等均作为运算符处理。
与其他语言相比,C 语言的运算类 型丰富,表达式类型多样化,在 C 语言中可以实现在其他语言中难以实现的运算。
(3)C 语言的数据类型丰富。
C 语言的数据类型包括整型、浮点型、字符型、数组类 型、指针类型、结构体类型、共用体类型等。
尤其是指针类型数据,使用十分灵活,是 C 语言的一大特点。
(4)C 语言的结构化特征显著。
C 语言具有结构化控制语句(如 if…else 语句、do…while ,并以函数作为程序的模块单位,能更好地实现程序的模块化。
语句、for 语句等) (5)C 语言语法限制不太严格,程序设计自由度较大。
例如,对变量类型使用比较灵 活,整型、字符型及逻辑型数据可以通用。
并且其放宽了语法检查,因此程序员应当仔细 检查程序,保证其正确,而不要过分依赖 C 编译程序去检查。
编写一个正确的 C 程序可能 会比编写一个其他高级语言程序难一些,因而对用 C 语言编程的人,要求更高一些。
(6)C 语言允许直接访问物理地址,进行位运算,能够实现汇编语言的大部分功能, 可直接对硬件进行操作。
因此 C 语言既具有高级语言功能,又具有低级语言的许多功能, 可用来编写系统软件。
这种双重性,使它既是成功的系统描述语言,又是通用的程序设计 语言。
故 C 语言有“高级语言中的低级语言”之美誉。
(7)C 语言程序生成的目标
代码质量高,程序执行效率高。
C 语言程序生成的目标代 码一般只比汇编语言程序生成的目标
代码效率低 10~20。
此外,C 语言还有程序通用性强、可移植性好等特点。
由于 C 语言的这些优点,使得C 语言的应用面很广,成为深受编程者喜欢的一门程序设计语言。
当 然,C 语 言也有 自身的不 足, 如语 法限 制不 太严 格、 对数 组下 标越 界不 作检 查等 。
1.2.3 C 程序的结构 下面通过几个简单的 C 语言程序实例,初步了解 C 语言程序的基本构成。
【例 1.1】 在显示器上输出一行信息。
/第一个C程序 / include ltstdio.hgt void main printfquotThis is the first C program.nquot 执行程序后,在显示器上的输出结果为: This is the first C program. 说明: (1)程序的第 1 行/……/为注释部分。
注释可以根据需要,放在程序中的任意位置,它只是给读程序者看的,帮助理解,计算机并不执行,对程序进行编译时,程序中的注释将被自动滤除。
“include ltstdio.hgt”的作用是将系统 (2)以开头的第 2 行是一个编译预处理命令。
“stdio.h”为系统的标准输入输出头文件,在此文头文件“stdio.h”包含到当前程序中来。
。
注意,这一行件中提供了许多与输入输出相关的系统函数(如程序第 5 行的 printf 函数) ,因为它不是 C 语言语句。
关于 C 语言的编译预处理命令将在第 11 章详细后面没有“”介绍。
(3)程序的第 3 行至第 6 行定义了一个名为 main 的函数。
其中,第 3 行为函数首部,main 为函数名,main 前面的 void 表示函数返回值的类型为“空类型”,即此函数执行后不产生任何值。
后面用一对花括号 括起来的部分为 main 函数的函数体。
函数体内主要由 。
本例中函数体内只有一句语句,语句组成,C 语言规定一句语句后面必须加一个分号“”即程序的第 5 行。
程序的第 5 行为系统函数 printf 函数的调用语句。
printf 函数为系统在标准输入输出头文件“stdio.h”中提供的一个输出函数,其作用为将双引号内的字符串原样 。
输出到终端(一般指显示器) “n”为一个换行符,表示输出字符串“This is the first Cprogram.”后回车换行。
(4)程序中的 main 函数一般称为主函数,每个 C 程序必须有且只有一个 main 函数,该函数是程序执行时由操作系统直接调用的函数。
本程序运行时,执行 main 函数体的 printf函数调用语句,即调用系统提供的 printf 函数输出相应信息。
【例 1.2】 从终端输入两个整数并求和。
5 /本程序实现从终端输入两个整数并求和 / include ltstdio.hgt C 语言程序设计教程 void main int absum /变量定义语句 /6 scanfquotddquotampaampb /从终端输入两个整数分别赋给变量a和b/ sumab /求a、b的和并赋给变量sum/ printfquotsumdnquotsum /将sum值输出 / 程序运行时,首先从标准输入设备(一般为键盘)输入两个任意整数(两个整数间可 ,如: 用一个或多个空格分隔,并按 Enter 键结束) 12 34↙ 以上输入中的“↙”表示 Enter 键。
此时变量 a 被赋值为 12,变量 b 被赋值为 34。
则 程序输出结果为: sum46 说明: ,第 1 句 (1)本程序的 main 函数的函数体由 4 句语句组成(程序中第 5 行至第 8 行) 语句为变量定义语句,后 3 句语句为可执行语句。
(2)程序中第 5 行为变量定义语句。
在此定义了 3 个 int 型(整型)变量 a、b、sum。
(3)程序中第 6 行为系统函数 scanf 的调用语句。
scanf 函数是系统所提供的一个数据 。
scanf 函数中的“quotddquot”为格式控制串,表示 输入函数,其所在头文件也是“stdio.h” 要输入两个整数(“d”为整型数据的格式控制符) ;后面的“ampaampb”表示输入的两个整 数分别赋给变量 a 和 b。
关于 scanf 函数将在第 4.1 节详细介绍。
(4)程序的第 7 行为一赋值语句。
sumab 为一赋值表达式,作用为将 a 与 b 的和赋 ,则构成一句赋值语句。
给变量 sum。
赋值表达式后加“” (5)程序的第 8 行为输出函数 printf 的调用语句,用于输出相应的信息。
双引号中的 “sum”按原样输出,在格式控制符d 的位置处代以一个十进制整数值,即其后指定的变 ,而 量 sum 的值(其值 46) “ n”为换行符,实现换行。
关于 printf 函数将在第 4.1 节详细 介绍。
【例 1.3】 利用函数,根据输入的半径求圆的面积。
include ltstdio.hgt /求面积函数 / float CircleAreafloat r /CircleArea函数的首部/ float s /定义浮点型变量s/ s3.14159rr /给s赋值为半径为r的圆的面积 / return s /将s的值返回,带回至main函数中的被调用位置/ /主函数/ void main float r Area /变量r用来存储半径值,Area用来存储面积值/ printfquotInput r:quot /输出提示信息 / scanfquotfquotampr /输入一个实型数据赋给r,f为浮点型数据格式控制符 / AreaCircleArear /调用CircleArea函数,将返回值赋给Area/ printfquotrf AreafnquotrArea /输出半径及面积/ : 该例程序运行结果如下(其中“2.5↙”为从终端输入的内容) Input r:2.5↙ r2.500000 Area19.634937 说明: (1)本程序定义了两个函数,一个是主函数 main 函数,另一个是 CircleArea 函数。
(2)CircleArea 函数(程序的第 3 行至第 7 行)用来求半径为 r 的圆的面积。
程序第 3行为 CircleArea 函数的首部,函数 CircleArea 前面的“float”为函数的返回值类型——浮 ,后面括号里的“float r”说明了本函数的形式参数为 r,其类型为浮点型。
点型(实型)后面由一对花括号括起来的 3 句语句构成了 CircleArea 函数的函数体,其中“return s”语句的作用是结束函数并将变量 s 的值返回被调用位置。
(3)程序执行时,执行 main 函数的函数体,当执行到语句“AreaCircleArear”时,转至 CircleArea 函数并运行其函数体,当执行“return s”时,CircleArea 函数运行结束,并将 s 的值作为 CircleArea 函数运行结束的值带回到 main 函数中,将该值赋给变量 Area。
(4)本例中涉及了函数的调用、函数的形式参数与实际参数、函数的返回值等内容,在此读者只需有个简.