C语言程序设计
上QQ阅读APP看书,第一时间看更新

1.1 程序与程序语言

1.1.1 程序的基本概念

程序的概念来源于日常生活,通常,完成一项复杂的任务需要分解成一系列的具体步骤。这些按一定的顺序安排的具体步骤就是程序。例如,开学典礼程序、联欢晚会程序等。

随着计算机的出现和发展,程序成了计算机的专有名词,计算机都是在程序的控制下运行的。所谓计算机程序,就是用计算机语言描述的解决某一问题的一系列加工步骤,是符合一定语法规则的符号序列。程序设计就是借助计算机语言,告诉计算机要处理什么(即处理数据)以及如何处理(即处理步骤)。执行程序就是向计算机发出一系列指令,让计算机按程序规定的步骤和要求解决特定问题。

同一问题有不同的解决方法,不同用户编写的程序也并不完全相同。而且不同的程序有不同的效率,这就涉及程序的优化,涉及程序所采用的数据结构和算法等方面。

1.1.2 程序设计语言

程序设计离不开程序设计语言。了解程序设计语言的发展过程,有助于读者加深对程序设计语言的认识,使其能更好地利用程序设计语言解决实际问题。

程序设计语言的发展很快,新的程序设计语言不断出现,功能也越来越强大。从其发展过程来看,程序设计语言的发展大致经历了以下几个阶段。

1.机器语言

所谓机器语言,就是指计算机能够识别的指令集合,即指令系统。在机器语言中,每条指令都用二进制0和1组成的序列来表示。例如,某计算机的加法指令为10000000,减法指令为10010000。不同类型的计算机,机器语言也不相同。

用机器语言编写的程序,计算机可以直接执行,且执行效率高,这是机器语言的优点。但机器语言的指令不直观,难认、难记、难理解,容易出错,编程缺乏通用性,编程人员需要查阅机器指令系统,编程效率低。因此,目前很少直接用机器语言编写程序。

2.汇编语言

由于机器语言的编程效率低,为了减轻程序开发人员的编程负担,开始采用一些助记符号来表示机器语言中的机器指令,这样便出现了汇编语言。助记符号一般采用代表某种操作的英文单词缩写,与机器语言相比,便于识别和记忆。例如,上述两条加法指令和减法指令可以用助记符号ADD和SUB来表示。

用汇编语言编写的程序称为源程序,计算机不能直接执行,必须经过汇编程序翻译成机器语言程序才能执行。

对比机器语言,汇编语言指令和机器语言指令具有一一对应关系,不同类型的计算机,其汇编语言也不尽相同,编程时仍需要熟悉机器的内部结构,比较烦琐。但相对机器语言而言,其编程效率有较大提高。在实际应用中,如果对程序运行时间比较严格,与硬件操作比较紧密,程序设计人员还是常用汇编语言编程来解决实际问题的。

3.高级语言

机器语言和汇编语言都是面向机器的编程语言,同属低级语言的范畴。主要缺点是编程效率低、需要熟悉机器硬件。为了克服低级语言的这一缺点,提高程序设计人员的编程效率,出现了面向算法过程的程序设计语言,称为高级语言。例如,Fortran语言、Pascal语言、C语言等。

高级语言比较接近自然语言的形式,功能强大,一条语句相当于多条汇编语言指令或机器语言指令。编程时,不需要熟悉机器的内部结构,编程人员可以把精力集中在研究问题的求解方法上,大大降低了编程的难度,提高了编程的效率和质量,而且设计的程序也更容易阅读和理解。因此,在实际应用中被广泛用来解决实际问题。

当然,计算机也不能直接执行高级语言源程序,必须经过编译和连接过程,将其翻译成机器语言程序才能由计算机执行。

4.面向任务的程序设计语言

高级语言是面向过程的编程语言,用高级语言编程求解一个复杂问题,必须首先分析解题过程,描述问题的求解算法,然后才能用高级语言编程实现。面向任务的程序设计语言是非过程化语言,无须知道问题如何求解,只需描述求解什么问题,便可编程实现。

数据库语言便是一种面向任务的程序设计语言。例如,SQL Server是一种关系数据库系统,它提供了数据库查询语言(SQL),采用SQL提供的select语句,便可方便、快速地查询出数据库中的数据信息。例如,查询语句select * from student where sex='男',其功能就是查询学生信息表(student)中所有男性学生的全部信息。

由于面向任务的程序设计语言不仅大大降低了编程的复杂度,而且提高了应用程序的开发速度和质量,使得编程工作不再是计算机专业人员的专利,许多非计算机专业人员也能很方便地使用面向任务的程序设计语言开发自己的应用程序。这类语言被广泛应用在管理信息系统应用软件的开发方面。

5.面向对象的程序设计语言

面向对象的程序设计语言于20世纪90年代开始流行,目前已成为程序设计的主流语言。C++就是一种非常优秀的面向对象的程序语言,它是由C语言发展而来的。

面向对象方法学是一种分析方法、设计方法和思维方法的综合。它的出发点和所追求的基本目标就是使人们分析、设计和实现一个系统的方法尽可能接近人们认识一个系统的方法。

面向对象的编程,程序被看成相互协作的对象集合,每个对象都是某个类的实例,所有的类构成一个通过继承关系相联系的层次结构。面向对象程序设计就是针对客观事物(对象)设计程序,与面向过程的编程方法相比,编程工作更加直观、清晰,编程效率更高,更适合开发大型复杂的软件。

面向对象的程序设计语言通常具有类的定义功能、对象的生成功能、消息传递机制和类的继承机制。目前,Java就是一种流行的、被广泛应用的面向对象的程序设计语言。

综上所述,可以知道,每一种语言都有其优点和不足,对于不同的问题,需要根据实际情况来选择程序设计语言,以便更加高效、更加优质地解决相关的问题。