程序设计语言理论
第三章 程序设计语言
返回
所谓程序设计语言就是计算机所能识别的代码,计算机代码通常要能够向计算机描述清楚做什么,用什么做这两个问题,因此计算机代码的一般形式是:
操作码 目的操作数 源操作数
操作码向计算机描述做什么,操作数向计算机描述用什么做的问题。所谓计算机的程序就是用计算机语言书写的、能完成一定功能代码序列。随着计算机技术的发展,用于程序设计的计算机语言也不断的向语言更加丰富、语句更容易理解的方向发展,以扩大计算机的应用范围。
§3.1 程序设计语言的分类
§3.1.1低级程序设计语言
低级程序设计语言提供的语句是计算机所能进行的基本操作,如:数据传送指令;算术运算
指令;逻辑运算指令;串操作指令;控制转移指令;条件转移指令;控制指令;位操作指令等,这些操作和我们日常用语差别很大。理解它们需要对计算机结构有一定的了解。
1、 机器语言
    计算机所能直接接受的只能是‘0’、‘1’这样的二进制信息,因此最初的计算机代码的操作码、操作数都是用二进制形式表示的,利用机器语言编写程序,要求程序设计人员熟记计算机的全部指令,工作量大、容易出错又不容易修改。同时各种计算机系统的机器指令也不一定相同,所编制的程序只适用于特定的计算机系统。因此,利用机器语言编写程序对非专职程序设计人员几乎是不可能的。
2、 汇编语言
由于机器语言编写程序困难很大,出现了用符号来表示二进制指令代码的符号语言,称为汇编语言。汇编语言用容易记忆的英文单词缩写代替约定的指令例如用MOV表示数据的传送指令、IN表示从给定的端口输入数据到目的操作数中,OUT表示将源操作数的内容通过目的操作数指明的地址输出;用ADD表示加法指令,SUB表示减法指令等等。汇编语言的出现使得程序的编写方便了许多,并且编写的程序便于检查和修改。
汇编语言仍然是面向机器的程序设计语言,与具体的计算机硬件有着密切的关系,汇编语言指令与机器语言指令基本上是一一对应的,利用汇编语言编写程序必须了解机器的某些细节,如累加器的个数、每条指令的执行速度、内存容量等等,因此汇编程序的编写、阅读对非计算机专业的技术人员来说,依然存在着很大的障碍,下面是一个利用80386/80286汇编语言编写的程序。
例1 求分段函数
            -1    x0
y=    0    x=0
1 x0
的函数值。
DATA SEGMENT                        ;数据段开始
XX  DB X
YY  DB
                  DATA ENDS                            ;数据段结束
                  CODE SEGMENT                        ;代码开始
                        ASSUMS CSCODEDSDATA      ;规定CS段装代码,DS段装数据
                  STARTMOV AXDATA                  ;程序开始,将数据传送到累加器
                          MOV DSAX                    ;将累加器的数据装DS
MOV ALXX                    ;将x数据传送到累加器
CMP AL0                    ;将AL数据与0比较
JGE BIGR                      ;如果大于等于0转到BIGR
MOV AL 0FFH       
MOV YY AL                    x0,将-1传送到YY
HLT
BIGRJE EQUT
      MOV AL01H                     
      MOV YYAL                    x0,将1传送到YY
      HLT
EQUTMOV YYAL                    x=0,将AL的数据0传送到YY
      HLT
CODS  ENDS                    代码结束
      END START                程序结束
从上面的程序可以看到,利用汇编语言编写程序,编程人员必须了解计算机系统的累加器、各种寄存器、存储单元,对计算机的硬件资源有一定的了解。
计算机所能直接接受的是二进制信息,因此利用汇编语言编写的程序,必须经过翻译,转化为机器语言代码才能在计算机上运行,这个过程是通过一个翻译程序自动完成的,将汇编程序翻译成机器代码语言程序的翻译程序通常称为汇编程序,其过程可以用图2.1描述
汇编软件              连接软件
2.1 汇编语言程序的运行过程
§3.1.2高级程序设计语言
所谓高级程序设计语言是接近于自然语言或数学语言的计算机语言。利用高级语言编写程序,编程者不需要掌握过多的计算机专业知识,特别适合于非计算机专业的专业技术人员利用计算机技术解决本专业的问题,高级语言的产生,大大扩展了计算机的应用范围,推动了各行各业的发展。高级语言分为过程化语言和非过程化语言。
§3.2 面向过程的程序的程序设计基本特征
所谓计算机程序,就是把完成某项任务的具体步骤,利用计算机语言提供的语句(指令)描述出来,形成的语句序列。过程化的程序设计语言是接近于数学语言的计算机语言。利用过程化程序设计语言设计程序,完成一定的任务,无论所完成的任务简单或者复杂,都必须将具体的步骤描述清楚。例如,利用高级语言编写程序完成两个整数相加的程序,必须描述以下步骤
定义三个变量x,y,z分别用来存放被加数、加数与和
将加数、被加数分别输入到变量x,y中
计算x+y的值,并将结果存入变量z中
把变数z的值输出
程序结束
完成某项任务的具体步骤通常称为算法,所以过程化的程序设计语言也称算法语言。
§3.2.1 过程化语言的种类
过程化程序设计语言有很多种,每一种语言都有各自的特点,较为常用的有以下几种:
FORTRAN语言:FORTRAN语言是最早、最常用的科学和工程计算语言,采用了结构化的程序设计思想,其程序结构是分块结构。一个FORTRAN程序由一个主程序块和若干个子程序块组成,程序的执行从主程序开始,主程序可以调用子程序,子程序也可以调用子程序。FORTRAN语言提供高精度的数据类型,特别适用于工程计算;并且FORTRAN程序的结构比较简单,可以分块书写,分块编译,使用起来灵活、方便。
BASIC语言:BASIC语言是适合于广大初学者的一种计算机语言,其语句结构简单。BASIC语言采用了结构化的程序设计思想,一个BASIC程序由一个主程序块和若干个子程序块组成。程序的执行从主程序开始,主程序可以调用子程序,子程序也可以调用子程序。BASIC语言可以实现递归调用,有较强的作图功能,具有良好的编辑环境,友好的用户接口,可以使用键盘和鼠标,有功能丰富的联机‘帮助’系统,提供‘分步’和‘跟踪’等调试工具,可以说BASIC语言功能全、编程简单,程序容易理解,特别适用于帮助初学者进入计算机应用大门。
PASCAL语言:PASCAL语言是一种典型的系统结构化语言,PASCAL语言的出现和结构
化程序设计技术的发展,推动了编译程序工程技术的发展。PASCAL语言强调概念清晰,实现简化,方便用户;具有丰富的数据类型,便于用户组织和处理各种形式的数据。
C语言:C语言是一种短小精悍的计算机程序设计语言,它根据结构化程序设计原则设计并实现。C语言具有丰富的数据类型;为结构化程序设计提供了各种控制结构和数据结构;具有丰富的运算符和表达式,能实现汇编语言中的大部分功能;C语言还有丰富的标准函数库,调用这些标准函数可以操作计算机的硬件、进行动态地址的分配、绘图等功能,因此C语言具有表达力强、编译出的目标程序质量高、语言简单灵活、易于实现等特点,有时C语言被称为是介于高级语言与低级语言之间的中级语言。C语言不仅可以用来写操作系统、编译程序,也可以用来编写写各种应用软件,C语言已成为当今最流行的程序设计语言。
§3.2.2过程化语言的编程特点
各种高级的过程化语言各有自己的特点,但它们的语句基本上是相同的;在使用这些编程语言进行编程时,编程的方法也基本相同;结构化程序设计语言每个程序模块的格式基本是相同的。下面是各个模块的基本模式
程序模块的开始
程序模块的必要说明(如函数调用的说明等)
程序模块中使用的常量、变量的定义
数据的输入
数据的处理
数据处理结果的输出
程序模块的结束
计算机语言种类
下面是用不同的程序设计语言编写的解决同一个问题的程序,可以使读者从中体会,用不同语言编写程序的相同点和不同点。
例2 编写程序计算 ∑(2i+1)!
1 FORTRAN语言程序
INTEGER I,J,FUN,SUM          变量的定义
SUM=0                            给变量赋初值
DO 10 I=0,10
  FUN=1
  DO 20 J=1,2*I+1
FUN=FUN*J                  数据的处理
20 CONTINUE
SUM=SUM+FUN
10 CONTINUE
WRITE(*,100)SUM            数据的输出
100 FORMAT(1X,I10)             
101 END                              程序结束
2 BASIC语言程序
DIM I AS INTEGER
DIM J AS INTEGER                  变量的定义
DIM FUN AS INTEGER
DIM SUM AS INTEGER
SUM=0                            给变量赋初值
FOR I=0 TO 10
  FUN=1
  FOR J=1 TO 2*I+1
FUN=FUN*J                    数据的处理
NEXT
SUM=SUM+FUN
NEXT
PRINT SUM                          数据的输出
END                                  程序结束
3 PASCAL语言程序
PROGRAM  mysum(input,output)
VAR
IJFUNSUMINTEGER    变量的定义
BEGIN                              程序开始

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。