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 而把作为上报材料的 学生出勤情况汇总表 建在...