2022年turbopascal高级教程 .pdf
《2022年turbopascal高级教程 .pdf》由会员分享,可在线阅读,更多相关《2022年turbopascal高级教程 .pdf(14页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、TURBOPASCAL高级编程技术与实用程序集锦作者:董占山前言TURBOPASCAL是目前微机上最流行的PASCAL 语言,它提供了集编辑、编译、调试和联机帮助于一体的集成软件开发环境,语言本身对标准PASCAL进行了大量的扩展,具有高效的数值运算能力、操作系统的低级调用功能、内嵌式汇编语言等强有力的软件开发支持,可以用于任何类型、任何规模的系统软件和应用软件的开发。特别是1992 年推出的 TURBOPASCAL6.0的升级产品BORLAND PASCAL7.0,它提供了更方便、更广泛的编程环境,如同时提供了DOS 实模式软件、DOS 保护模式软件和WINDOWS软件的开发环境,应用 BO
2、RLAND PASCAL不仅可以开发DOS程序,同时也可以开发WINDOWS 的应用程序。BORLANDPASCAL 是唯一可以和BORLAND C+相媲美的软件开发环境。-第一章TURBOPASCAL高级编程技术TURBO PASCAL 是美国 BORLAND 国际公司的产品,在微机PASCAL 市场上占有绝对优势。它克服了往常PASCAL 编译系统占用大量内存的缺陷,并对标准 PASCAL 作了许多有益的扩充,如它具有与低层软件和硬件打交道的能力、具有强大的图形图象功能、支持面向对象的程序设计方法、支持 WINDOWS程序设计等等。它是一个名副其实的通用系统程序设计语言,十分适合开发一些高
3、级应用软件、数据库管理系统、编译程序等。另外,TURBOPASCAL还配备有一个高性能的集成软件开发环境,包括编辑、编译、调试、文件管理等一系列功能。本章就使用TURBOPASCAL 开发高级软件的实用技术进行阐述,介绍如何使用一些工具和技术,为TURBOPASCAL 程序员提供方便。本章将讲述在程序设计时使用单元的技术、TURBOPASCAL 与汇编语言和C语言混合编程技术、实现和使用动态数组的技术、编写中断例程的方法、在程序中使用扩展内存(EMS)和扩充内存(XMS)的方法以及将程序的标准数据作代码处理的方法等。1.1单元及其使用单元是能与TURBOPASCAL 程序分开编译的一组TURB
4、OPASCAL 过程和函数。因为单元是单独编译的,所以使用单元的程序编译速度快。而且,一个独立的单元可以为多个程序使用。充分利用单元的优点,不仅可以加快软件的开发速度,而且可以提高程序可维护性。1.1.1单元的结构一个单元有两部分组成接口部分和实现部分。如:unit;单元头interface接口部分开始名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 14 页 -uses 可选项公共说明部分implementation实现部分开始私有说明部分过程或函数的定义begin初始化部分开始初始化代码end.1.接口部分单元的接口部分由保留字interface开始,在单元头和实现部分之间。在
5、此部分,说明公用的常量、类型、变量与过程和函数的头部。一个程序如果使用了一个单元,那么它就能访问该单元的接口部分所定义的所有变量、数据类型、过程和函数。接口部分仅包含过程和函数的头部。过程和函数的实现部分在单元的实现部分定义。在程序中使用一个单元只需要知道怎样调用单元中的过程,而不需要知道过程是怎样实现的。2.实现部分实现部分是由保留字implementation开始。实现部分定义所有在接口部分声明的过程和函数的程序体。另外实现部分可以有自己的说明,这些说明是局部的,外部程序是不知道它们的存在的,也不能调用它们。因为在实现部分中声明的一切对象在作用域上是局部的,所以实现部分的改变对其它单元和程
6、序来讲是不可见的。因此,修改一个单元的实现部分,并不需要重新编译使用该单元的单元,只需要编译这个修改单元和使用此单元的程序。然而,如果接口部分做了修改,所有使用该单元的单元和程序,均需要重新编译,甚至需要修改。在实现部分,如果有uses 子句,则必须紧跟在保留字implementation之后。如果过程说明为external类型,则需用$L文件名.OBJ编译指令将其连入程序。在接口部分说明的函数或过程,除了inline类型之外,都必须在实现部分再现,它们的头部必须和接口部分一致或用简写格式。3.初始化部分单元的整个实现部分通常包括在保留字implementation和 end 之间。然而,如果
7、把保留字begin 放在 end 之前,在它们中间写一些语句,这些语句就是单元的初始化部分。在初始化部分可以初始化任何变量,这些变量可由单元使用,也可通过接口部分由程序使用。可以在这部分打开文件供程序使用。例如,标准名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 14 页 -单元 Printer用它的初始化部分使所有输出调用都指向文本文件Lst,这样在 write语句中就可以使用它。当使用单元的程序执行时,在程序的主体执行之前,它所使用的所有单元的初始化部分按uses 子句中说明的先后依次被调用。1.1.2单元的使用当使用单元时,需在uses 语句中将使用的所有单元的名字列出来,
8、单元与单元之间用逗号(,)隔开。如:uses dos,crt;当编译器扫描到uses 子句时,它把每个单元的接口信息加到符号表中,同时又把实现部分的机器码与程序代码连接起来。1.单元的直接引用一个模块(程序或单元)的uses 子句只须列出该模块直接使用的单元名。例如:programprog;uses unit2;consta=b;beginwriteln(a=,a);end.unitunit2;interfaceuses unit1;constb=c;implementaionend.unitunit1;interfaceconstc=1;implementationconstb=2;end.
9、unit2用了 unit1,主程序用了unit2,间接地使用了unit1。单元的接口部分如果有改动,则所有使用该单元的单元或程序必须重新编译。但如果改动了单元的实现部分,则用到它的单元不必重新编译。名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 14 页 -在上例中,如果 unit1的接口部分改动了(如C=2),unit2就必须重新编译;如果只改动实现部分(b=1),则unit2不必重新编译。编译一个单元时,TURBO PASCAL 计算出该单元的版本数,这个数是单元的接口部分的校验和。上例中,在编译unit2时,unit1的当前版本数存入 unit2的编译版本中,编译主程序时,
10、unit1的版本数就和存在unit2中的版本数比较,若二者不同,说明 unit2编译后,unit1的接口部分改动过,编译器给出错误信息并重新编译unit2。2.单元的循环引用由于在实现部分使用的单元对用户是不可见的,因此把uses 子句放在单元的实现部分,进一步隐藏了单元的内部细节,而且有可能构造出相互依赖的单元。下面的例子说明两个单元如何相互引用。主程序 Circular使用 Display单元,而Display单元在接口部分说明了Writexy过程,它有3 个参数:坐标值 x 和 y 和要显示的文本信息,若(x,y)在屏幕内,Writexy移动光标到(x,y)并显示信息,否则,调用简单的错
11、误处理过程ShowError,而 ShowError过程反过来又调用Writexy来显示错误信息,这样就产生了单元的循环引用问题。主程序:programcircular;usescrt,display;beginwritexy(1,1,Upperleftcornerofscreen);writexy(100,100,Wayofthescreen);writexy(81-length(Backtoreality),15,Backtoreality);end.display单元:unitdisplay;interfaceprocedureWritexy(x,y:integer;Message:st
12、ring);implementationuses CRT,Error;procedureWritexy;beginif(xin1.80)and(yin1.25)thenbegingotoxy(x,y);writeln(message);名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 14 页 -endelseShowError(InvalidWritexycoordinates);end;end.Error单元:unitError;interfaceprocedureShowError(ErrMessage);implementationuses display;procedur
13、eShowError;beginWritexy(1,25,Error:+ErrMessage);end;end.Display和 Error单元的实现部分的uses 子句互相引用,TURBO PASCAL能完整编译两个单元的接口部分,只要在接口部分不相互依赖,在实现部分可以相互调用。1.1.3单元与大程序单元是 TURBOPASCAL 模块化编程的基础,它用来创建能够为许多程序使用但不需要源程序的过程和函数库,它是把大程序划分为多个相关的模块基础。通常,一个大程序可以划分为多个单元,这些单元按过程的功能将其分组。例如,一个编辑程序可以划分成初始化、打印、读写文件、格式化等若干个部分。另外,也可
14、以有一个定义全局常量、数据类型、变量、过程及函数的“全局”单元,它能被所有单元和主程序使用。一个大程序的框架如下:programEditor;usesdos,crt,printer,EditGlobal;EditInit;EditPrint;EditFile;EditFormat;.begin名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 14 页 -.end.在大程序开发中使用单元的另一个原因是与代码段的限制有关。8086处理器要求代码段长度最大为64K。这意味着主程序及任何单元都不能超过64K。TURBO PASCAL 将每个单元放在一个单独的段中来解决这个问题。1.2与汇编
15、语言混合编程TURBOPASCAL以编译速度快、生成的目标代码高速和紧凑而著称。在大多数情况下,只使用TURBOPASCAL 即可以完成各种各样的程序编制,但是,在硬件接口程序、实时控制程序及大规模浮点运算时,都需要用汇编语言来编程。虽然TURBOPASCAL 提供了 INLINE 语句和命令,以及内嵌式汇编语言(TURBO PASCAL6.00),但这是远远不够的。本节详细讨论TURBOPASCAL 与汇编语言混合编程的技术,并列举了大量的实例。1.2.1TURBOPASCAL 的调用协定TURBOPASCAL程序与外部汇编子程序混合编程时,要涉及到子程序的调用方式、函数或过程的参数传递方法
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年turbopascal高级教程 2022 turbopascal 高级 教程
限制150内