turbopascal高级教程

发布 2021-05-15 13:30:28 阅读 3326

turbo pascal高级编程技术与实用程序集锦

作者:董占山

前言 turbo pascal是目前微机上最流行的pascal语言,它提供了集编辑、编译、调试和联机帮助于一体的集成软件开发环境,语言本身对标准pascal进行了大量的扩展,具有高效的数值运算能力、操作系统的低级调用功能、内嵌式汇编语言等强有力的软件开发支持,可以用于任何类型、任何规模的系统软件和应用软件的开发。特别是2024年推出的turbo pascal 6.0的升级产品borland pascal 7.

0,它提供了更方便、更广泛的编程环境,如同时提供了dos实模式软件、dos保护模式软件和windows软件的开发环境,应用borland pascal不仅可以开发dos程序,同时也可以开发windows的应用程序。borland pascal是唯一可以和borland c++相媲美的软件开发环境。

第一章 turbo pascal高级编程技术

turbo pascal是美国borland国际公司的产品,在微机pascal市场上占有绝对优势。它克服了往常pascal编译系统占用大量内存的缺陷,并对标准pascal作了许多有益的扩充,如它具有与低层软件和硬件打交道的能力、具有强大的图形图象功能、支持面向对象的程序设计方法、支持windows程序设计等等。它是一个名副其实的通用系统程序设计语言,十分适合开发一些高级应用软件、数据库管理系统、编译程序等。

另外,turbo pascal还配备有一个高性能的集成软件开发环境,包括编辑、编译、调试、文件管理等一系列功能。

本章就使用turbo pascal开发高级软件的实用技术进行阐述,介绍如何使用一些工具和技术,为turbo pascal程序员提供方便。本章将讲述在程序设计时使用单元的技术、turbo pascal与汇编语言和c语言混合编程技术、实现和使用动态数组的技术、编写中断例程的方法、在程序中使用扩展内存(ems)和扩充内存(xms)的方法以及将程序的标准数据作**处理的方法等。

§1.1 单元及其使用

单元是能与turbo pascal程序分开编译的一组turbo pascal过程和函数。因为单元是单独编译的,所以使用单元的程序编译速度快。而且,一个独立的单元可以为多个程序使用。

充分利用单元的优点,不仅可以加快软件的开发速度,而且可以提高程序可维护性。

§1.1.1 单元的结构

一个单元有两部分组成──接口部分和实现部分。如:

unit 《标识符》;

interface

uses 《单元列表》

implementation

begin

end. 1.接口部分

单元的接口部分由保留字interface开始,在单元头和实现部分之间。在此部分,说明公用的常量、类型、变量与过程和函数的头部。一个程序如果使用了一个单元,那么它就能访问该单元的接口部分所定义的所有变量、数据类型、过程和函数。

接口部分仅包含过程和函数的头部。过程和函数的实现部分在单元的实现部分定义。在程序中使用一个单元只需要知道怎样调用单元中的过程,而不需要知道过程是怎样实现的。

2.实现部分

实现部分是由保留字implementation开始。实现部分定义所有在接口部分声明的过程和函数的程序体。另外实现部分可以有自己的说明,这些说明是局部的,外部程序是不知道它们的存在的,也不能调用它们。

因为在实现部分中声明的一切对象在作用域上是局部的,所以实现部分的改变对其它单元和程序来讲是不可见的。因此,修改一个单元的实现部分,并不需要重新编译使用该单元的单元,只需要编译这个修改单元和使用此单元的程序。然而,如果接口部分做了修改,所有使用该单元的单元和程序,均需要重新编译,甚至需要修改。

在实现部分,如果有uses子句,则必须紧跟在保留字implementation之后。

如果过程说明为external类型,则需用编译指令将其连入程序。

在接口部分说明的函数或过程,除了inline类型之外,都必须在实现部分再现,它们的头部必须和接口部分一致或用简写格式。

3.初始化部分

单元的整个实现部分通常包括在保留字implementation和end之间。然而,如果把保留字begin放在end之前,在它们中间写一些语句,这些语句就是单元的初始化部分。

在初始化部分可以初始化任何变量,这些变量可由单元使用,也可通过接口部分由程序使用。可以在这部分打开文件供程序使用。例如,标准单元printer用它的初始化部分使所有输出调用都指向文本文件lst,这样在write语句中就可以使用它。

当使用单元的程序执行时,在程序的主体执行之前,它所使用的所有单元的初始化部分按uses子句中说明的先后依次被调用。

§1.1.2 单元的使用

当使用单元时,需在uses语句中将使用的所有单元的名字列出来,单元与单元之间用逗号(,)隔开。如:

uses dos,crt;

当编译器扫描到uses子句时,它把每个单元的接口信息加到符号表中,同时又把实现部分的机器码与程序**连接起来。

1.单元的直接引用

一个模块(程序或单元)的uses子句只须列出该模块直接使用的单元名。例如:

program prog;

uses unit2;

const

a = b;

begin

writeln('a=',a);

end. unit unit2;

interface

uses unit1;

const

b = c;

implementaion

end. unit unit1;

interface

const

c = 1;

implementation

const

b = 2;

end. unit2用了unit1,主程序用了unit2,间接地使用了unit1。

单元的接口部分如果有改动,则所有使用该单元的单元或程序必须重新编译。但如果改动了单元的实现部分,则用到它的单元不必重新编译。在上例中,如果unit1的接口部分改动了(如c=2),unit2就必须重新编译;如果只改动实现部分(b=1),则unit2不必重新编译。

编译一个单元时,turbo pascal计算出该单元的版本数,这个数是单元的接口部分的校验和。上例中,在编译unit2时,unit1的当前版本数存入unit2的编译版本中,编译主程序时,unit1的版本数就和存在unit2中的版本数比较,若二者不同,说明unit2编译后,unit1的接口部分改动过,编译器给出错误信息并重新编译unit2。

2.单元的循环引用

由于在实现部分使用的单元对用户是不可见的,因此把uses子句放在单元的实现部分,进一步隐藏了单元的内部细节,而且有可能构造出相互依赖的单元。

下面的例子说明两个单元如何相互引用。主程序circular使用display单元,而display单元在接口部分说明了writexy过程,它有3个参数:坐标值x和y和要显示的文本信息,若(x,y)在屏幕内,writexy移动光标到(x,y)并显示信息,否则,调用简单的错误处理过程showerror,而showerror过程反过来又调用writexy来显示错误信息,这样就产生了单元的循环引用问题。

主程序: program circular;

uses crt,display;

begin

writexy(1,1,'upper left corner of screen');

writexy(100,100,'way of the screen');

writexy(81-length('back to reality'),15,'back to reality');

end. display单元:

unit display;

interface

procedure writexy(x,y:integer;message:string);

implementation

uses crt,error;

procedure writexy;

begin

if (x in [1..80]) and (y in [1..25]) then

begin

gotoxy(x,y);

writeln(message);

end else

showerror('invalid writexy coordinates');

end; end.

error单元:

unit error;

interface

procedure showerror(errmessage);

implementation

uses display;

procedure showerror;

begin

writexy(1,25,'error: 'errmessage);

end; end.

display和error单元的实现部分的uses子句互相引用,turbo pascal能完整编译两个单元的接口部分,只要在接口部分不相互依赖,在实现部分可以相互调用。

§1.1.3 单元与大程序

单元是turbo pascal模块化编程的基础,它用来创建能够为许多程序使用但不需要源程序的过程和函数库,它是把大程序划分为多个相关的模块基础。

通常,一个大程序可以划分为多个单元,这些单元按过程的功能将其分组。例如,一个编辑程序可以划分成初始化、打印、读写文件、格式化等若干个部分。另外,也可以有一个定义全局常量、数据类型、变量、过程及函数的“全局”单元,它能被所有单元和主程序使用。

2019高级教程

最佳答案。1.找到 插入 菜单中的 选项,点击其中的 来自文件 就会打开 插入 对话框,通过其中的 查找范围 一步一步找到存放 的文件夹,看到你需要的 文件时双击它就可以了。2.如果你的 文件很大,插入ppt中之后还是很大,用鼠标单击该 他的周围就会出现8个控制点 小白圈 把鼠标放在任意一个控制点上...

Excel高级教程

index 在excel中统计与上报两不误 3 excel中单列 的打印方法 4 巧妙删除excel中的换行符 4 execl中为每页设置行标题 5 excel中日期与时间的快速处理 5 利用excel的函数和筛选功能巧妙分班 6 在excel单元格中设置 斜线 效果 6 将excel的文本数字转换...

Excel高级教程

在excel中统计与上报两不误。实现思路 因为在excel中就能实现单元格中数据的动态更新,所以我们只需在excel文档中建立两个工作表,分别取名为 出勤统计表 和 汇总表 把要进行数据输入与统计的 学生出勤情况统计表 建在 出勤统计表 工作表中 如图1 而把作为上报材料的 学生出勤情况汇总表 建在...