pascal crt单元详解
- 格式:pdf
- 大小:89.02 KB
- 文档页数:1
PASCAL语言程序设计第一部分语言基础知识一、程序结构:例1.1计算半径为R的圆面积S{程序首部} program Area;{说明部分——数据描述}const pi=3.14159;{常量定义}var s,r:real;{变量定义}{执行部分——程序体}Beginreadln(r);{读入数据给r}s:=pi*sqr(r);{求圆的面积}writeln('s=',s);{在屏幕上输出面积}end.上述程序第一行称为程序首部。
其中用花括号(注释可以用{ }或(* *)来表示)括起来的内容是注释,注释除了给人看,增加程序的可读性外,对程序编译和运行不起作用。
一个程序可以包含多个出现在不同处注释,亦可无注释。
程序第二行是常量说明,程序第三行是变量说明。
程序从begin到end 都是执行(语句)部分(1)程序首部例1.1的第一行称为程序首部。
program是保留字,接着是程序名(由你依据“标示符”规则自行定义),最后以分号表示程序首部结束,下面是程序主体的开始。
程序首部在一个Turbo Pascal(仅在Turbo Pascal中有效)程序中并非必须出现,它是可选的。
写上它仅起了文档作用。
因此,在时间有限的情况下,如果用Turbo Pascal编程完全可以省略程序首部。
(2)程序体a.说明部分说明部分用于定义和说明程序中用到的数据,由单元说明、标号说明、常量说明、类型说明、变量说明、函数或过程说明组成,并且这些数据的说明次序必须按照以上次序。
但是一个简单的Turbo Pascal程序也可以不包含说明部分,也就是说说明部分是可选的。
b.执行部分执行部分描述了程序要执行的操作。
它必须以一个Turbo Pascal保留字begin开始,以保留字end后跟句点结束,其间是一些执行具体操作的语句,并且以分号作为语句之间的分隔符。
begin 和end必须成对出现,这是一个Turbo Pascal 程序所必须有的。
第一章、什么是计算机语言计算机语言是计算机软件中非常独特的一部份,它属于系统软件,但又和应用软件息息相关。
它的作用是:使人类能够用某些命令、指令去让计算机为人类进行数值、逻辑运算。
计算机语言中,只有一种语言是计算机能自己识别的,就是最底层、最难的机器语言,这是一般人类所无法接受的语言,所以在此基础上,人们发展出了许多高级的语言,这些语言的共同特点是:人类无需去掌握高深的机器语言,只要掌握这些更容易理解、更贴近人类的高级语言,用高级语言编出程序后,再由语言解释、编译系统去把程序解释、编译成机器语言让计算机去执行。
目前最常用的高级语言大致有以下几种:BASIC语言:是一般计算机入门者的首选语言,命令少,容易掌握,从BASIC,BASICA,GWBASIC,TRUE BASIC,TURBO BASIC,QUICK BASIC等一直发展到目前的WINDOWS环境下的VB。
PASCAL语言:最适合科学计算、数据处理的语言,运行、编译速度最快,从TURBO PASCAL 5 .5, 6.0, 7.0一直到现在的WINDOWS环境下的DELPHI以及LAZARUS等面向对象的PASCAL,以及目前信息学竞赛使用的FREE PASCAL各个版本。
C语言:主要适用于应用软件的开发,是计算机人员的必修课,但在算法实现、建模方面不如PASCAL方便。
从C,C++,一直到现在的WIONDOWS环境下的VC、C++等。
实际上,我们日常所用的各种软件,包括Windows,WORD、EXCEL、各种游戏等等,全部都是使用程序设计语言编写出来的软件,我们只有掌握了程序设计语言,才能进行计算机软件的开发。
在我们的信息学竞赛中,所有的题目都是非常复杂的数值与逻辑运算,所以世界上广泛采用PASCAL语言作编程工具,我们采用的是FREE PASCAL2.0版本或者相近版本。
我们学习信息学竞赛除了要掌握程序设计语言,能够使用程序设计语言编写程序外,还有一部分要掌握的更加重要的内容就是——算法设计,它能够使我们的程序运行速度更快、效率、精度更高,使我们的程序取得快人一步的优势,算法设计在本书中我们将接触一部分。
在Turbo Pascal中有一个CRT单元及一个GRAPH单元,有些图形操作用到了CRT单元,另一些用到了GRAPH单元。
所以若是要在Turbo Pascal中实现图形操作,就必须要调用CRT单元及GRAPH单元。
那么怎么样来调用CRT及GRAPH单元呢?现在线来介绍一下单元调用语句:USES USES的语法:USES 单元表识符,……,单元表识符;说明:扩展名为*.TPW是Windows下的单元文件,*.TPU是DOS下的单元文件。
位置:变量说明var之前。
1.初始化Pascal的图形操作在使用之前必须先进行初始化,用过程initgraph(GraphDriver,GraphMode,PathToDriver)其中GraphDriver,GraphMode为整形变量,PathToDriver 为字符串变量,GraphDriver为图形驱动器,GraphMode为图形模式,PathToDriver指定的路径名中建筑图形驱动程序(以.BGI为后缀).initgraph使用方法见下例:program t001 (input,output);uses crt,graph;vargd,gm:integer; {定义GraphDriver,GraphMode变量}begingd:=detect;initgraph(gd,gm,''); {调用initgraph过程,PathToDriver缺省则表示在当前目录中寻找}bar(100,100,200,200); {画一个以(100,100),(200,200)为顶点的矩形}delay(1000); {将此图形保留一秒}end.2.退出Closegraph过程功能:退出图形模式.画直线:1.Line过程描述:procedure Line(x1, y1, x2, y2: Integer);两点确定一直线.够简单吧!2.Lineto过程描述:procedure LineTo(X, Y: Integer);从当前点项目标点(x,y)作直线.画圆:Circle过程功能:以(X,Y)为圆心、Radius为半画一圆。
pascal中crt单元用法Crt单元过程Assigncrt(F)F:Text将文件F放置于显示器ClrEol删除当前行上的字符ClrScr清屏并将光标移动至(1,1)CursorBig将屏幕输出状态改为改写CursorOff关闭光标CursorOn打开光标并将光标移动至(1,1)Delay(T)T:Integer等待T毫秒GotoXY(X,Y)X,Y:Integer将光标移动至(X,Y)InsLine在光标所在位置插入行DelLine删除光标所在当前行LowVideo选择低亮度显示字符(颜色代码减8)NormVideo选择正常亮度显示字符HighVideo选择高亮度显示字符(颜色代码加8)NoSound扬声器停止发声Sound(HZ)HZ:Integer以Hz频率发声Readkey等待键盘输入TextColor(Color)Color:[White,Green...]Color:Integer将正文颜色设为ColorTextBackground(Color)Color:[White,Green...]Color:Integer将背景色设置为ColorTextMode(X)X:Integer选择X为显示模式(有的X值无法正常显示)Windows(X1,Y1,X2,Y2)X1,Y1,X2,Y2:Integer在屏幕上建一个列从X1到X2,行从Y1到Y2的窗口函数KeyPressed Boolean判断键盘是否输入Readkey Char键盘输入的字符WhereX Integer返回光标的列数WhereY Integer返回光标的行数注:Delline与Clreol的区别:Delline后,下一行会往上提,Clreol不会。
在Pascal中,屏幕坐标十分奇怪:(X,Y)中,X指的是列数,Y指的是行数,与正常习惯正好相反。
WhereX/WhereY也是这样。
Pascal中的颜色代码:0黑1深蓝2绿3天蓝4红5粉6橙7白8灰9蓝紫10亮绿11亮蓝12亮红13亮粉14亮黄15亮白16闪黑17闪蓝18闪绿19闪天蓝20闪红21闪粉22闪橙23闪白24闪灰25闪蓝紫26闪亮绿27闪亮蓝28闪亮红29闪亮粉30闪亮黄31闪亮白KeyPressed与Readkey连用效果好:RepeatB:=Keypressed;If B ThenH:=Readkey;If H=’0′Then Halt;Until H=’’;Mouse单元过程InitMouse启用鼠标DoneMouse停用鼠标HideMouse隐藏鼠标指针ShowMouse显示鼠标指针SetMouseXY(X,Y)X,Y:Integer将鼠标指针移动至(X,Y)GetMouseEvent(MouseEvent:TMouseEvent)得到鼠标数据并将其存入MouseEvent中PutMouseEvent(MouseEvent:TMouseEvent)用MouseEvent代替当前鼠标数据函数DetectMouse Integer返回值为0时代表没有鼠标,否则返回鼠标按键数GetMouseButtons Integer0代表没有按键,1代表左键,2代表右键,4代表中间键(非滚轮) GetMouseX Integer返回鼠标所在位置列数GetMouseY Integer返回鼠标所在位置行数PollMouseEvent(MouseEvent:TMouseEvent)Boolean返回鼠标信息是否被更新(True为未更新)GetMouseDriver用途不明SetMouseDriver用途不明常数MouseLeftButton Integer代表左键,值为1MouseRightButton Integer代表右键,值为2MouseMiddleButton Integer代表中间键(非滚轮),值为4MouseEventBufSize Integer鼠标缓冲,值为16MouseActionDown Integer代表按下鼠标,值为1MouseActionUp Integer代表松开鼠标,值为2MouseActionMove Integer代表移动鼠标,值为4errMouseBase Integer基本鼠标错误,值为1030errMouseInitError Integer鼠标使用错误,errMouseBase+0 errMouseNotImplemented Integer功能无法实现,errMouseBase+1注:对TMouseEvent的解释:记录类型,表示鼠标的综合数据。
单元虽然所有窗体都在单元中定义,但反之则不然。
除窗体外,单元中还可以定义一系列能访问的例程。
选择File > New菜单命令,然后在Object Repository 的New 页中选择Unit 图标,随即当前工程中就会加入一个空白单元。
单元代码分区存放,空白单元的代码如下:unit Unit1;interfaceimplementationend.单元的概念比较简单,单元名与文件名相同,而且必须唯一。
单元包括界面区(interface)及实现区(implementation),界面区用于声明其它单元能看到的部分;实现区存放界面的实现代码及外部不可见的声明。
此外还有两个可选的区,即初始化区及结束区,其中初始化区存放初始化代码,当程序加载到内存时执行;结束区存放程序终止时执行的代码。
单元总体结构如下:unit unitName;interface// other units we need to refer tousesA, B, C;// exported type definitiontypenewType = TypeDefinition;// exported constantsconstZero = 0;// global variablesvarTotal: Integer;// list of exported functions and proceduresprocedure MyProc;implementationusesD, E;// hidden global variablevarPartialTotal: Integer;// all the exported functions must be codedprocedure MyProc;begin// ... code of procedure MyProcend;initialization// optional initialization partfinalization// optional clean-up codeend.界面区头部的uses子句表示需要访问的外部单元,这些外部单元中定义了你需要引用的数据类型,如自定义窗体内所用的控件。
三、Pascal语言的基本成份由于目前不同的Pascal语言版本基本成分稍有不同.为例来介绍Pascal语言的一些基本知识。
(一)Pascal语言的基本字符和符号1.字母:A到Z,a到z和__(下划线)。
2.数字:O、1、2、3、4、5、6、7、8、9。
3.算术运算符:+(加)、-(减)、*(乘)、/(除)、((左括号)、)(右括号)。
注:数值前面的+,-表示该数值的正、负号。
4.赋值运算符::=。
5.关系运算符:>(大于)、<(小于)、<>(不等于)、=(等于)、>=(大于等于)、<=(小于等于)。
6.语句分隔符:;(分号)。
7.子界分隔符:..。
8.下标括号:[]。
9.注释括号:{}括号内的信息不被执行,只用作程序提示。
(二)保留字保留字是由字母拼成的英语单词和字,Pascal语言已预先规定了它们的意义.如例2—1—1中的PROGRA M、CONST、VAR、BEGIN、END等都是保留字。
还有如:IF、THEN、T0、DO、ELSE、AND、NOT、OR、FOR、WHILE、REPEAT、DIV、WITH等。
保留字不允许被用户再定义,否则Turbo Pascal编译器将提示出错信息。
Turbo Pascal共有保留字50多个,如附录一中所示的《Turbo Pascal的保留字》。
(三)标识符标识符是用来表示程序、常量、变量、过程、函数、文件和类型等名称的符号。
如在例2-l-1中,Pi就是表示3.14159这个数值的名称。
R、S分别是表示圆半径、圆面积量的名称。
在程序中使用标识符有利于程序的编写、分析和调试等。
Turbo Pascal中,标识符形成的规则是:它必须由一个英文字母或下划线开头,后面可跟英文字母、数字和下划线的任意组合。
标识符中的英文字母大、小写不予区分。
标识符的长度最长由127个字符组成,但只有前63个字符有效,其中不允许有空格。
Turbo Pascal语言系统中标识符分为“标准标识符”和“用户自定义的标识符”两类。
pascal函数PASCAL内自带的函数,通常可以直接调用,特殊的需要调用数据库,如:used math 目录一、数学函数与过程二、字符串函数与过程三、标准函数四、各单元的函数与过程展开一、数学函数与过程过程:inc(i) 使i:=i+1;inc(i,b) 使i:=i+b;dec(i) 使i:=i-1;dec(i,b) 使i:=i-b;randomize 随机数的种子函数,在每次设置随机数时都要把这个函数放在最前面。
函数:abs(x) 求x的绝对值。
例:abs(-3)=3 x为整数chr(x) 求编号x对应的字符。
例:chr(65)='A' chr(97)='a'chr(48)='0' x为非负整数ord(x) 求字符x对应的编号。
例:ord(‘A')=65 ord(‘a')=97 另外:ord(false)=0 ord(true)=1 x为字符或数字或布尔量sqr(x) 求x的平方。
例:sqr(4)=16 x为整数sqrt(x) 求x的正根。
例:sqrt(16)=4 (ps:负数是不能进行运算的,如果需要就要先取绝对值:sqrt(-4)是错的,应该为sqrt(abs(-4))结果为实数round(x) 求x的四舍五入。
例:round(4.5)=5 x实数trunc(x) 求x的整数部分。
例:trunc(5.6)=5 结果是integer型 x为实数int(x) 求x的整数部分。
例:int(5.6)=5.0 结果是real型 x为实数 frac (x) 求x的小数部分。
例:frac(5.6)=0.6 x为实数pred(x) 求x的前导。
例:pred(‘b')='a' pred(5)=4pred(true)=false x为字符或数字或布尔量succ(x) 求x的后继。
例:succ(‘b')='c' succ(5)=6succ(false)=true x为字符或数字或布尔量odd(x) 判断x是否为奇数。
第一课初识Pascal语言信息学奥林匹克竞赛是一项益智性的竞赛活动,核心是考查选手的智力和使用计算机解题的能力。
选手首先应针对竞赛中题目的要求构建数学模型,进而构造出计算机可以接受的算法,之后要写出高级语言程序,上机调试通过。
程序设计是信息学奥林匹克竞赛的基本功,在青少年朋友参与竞赛活动的第一步必须掌握一门高级语言及其程序设计方法。
一、Pascal 语言概述PASCAL语言也是一种算法语言,它是瑞士苏黎世联邦工业大学的N.沃思(Niklaus Wirth)教授于1968年设计完成的,1971年正式发表。
1975年,对PASCAL语言进行了修改,作为"标准PASCAL语言"。
PASCAL语言是在ALGOL 60的基础上发展而成的。
它是一种结构化的程序设计语言,可以用来编写应用程序。
它又是一种系统程序设计语言,可以用来编写顺序型的系统软件(如编译程序)。
它的功能强、编译程序简单,是70年代影响最大一种算法语言。
二、Pascal 语言的特点从使用者的角度来看,PASCAL语言有以下几个主要的特点:⒈它是结构化的语言。
PASCAL语言提供了直接实现三种基本结构的语句以及定义"过程"和"函数"(子程序)的功能。
可以方便地书写出结构化程序。
在编写程序时可以完全不使用GOTO语句和标号。
这就易于保证程序的正确性和易读性。
PASCAL语言强调的是可靠性、易于验证性、概念的清晰性和实现的简化。
在结构化这一点上,比其它(如BASIC,FORTRAN77)更好一些。
⒉有丰富的数据类型。
PASCAL提供了整数、实型、字符型、布尔型、枚举型、子界型以及由以上类型数据构成的数组类型、集合类型、记录类型和文件类型。
此外,还提供了其它许多语言中所没有的指针类型。
沃思有一个著名的公式:"算法+数据结构=程序"。
指出了在程序设计中研究数据的重要性。
丰富的数据结构和上述的结构化性质,使得PASCAL可以被方便地用来描述复杂的算法,得到质量较高的程序。
CRT定义(Cathode Ray Tube)是阴极射线管。
是应用较为广泛的一种显示技术。
CRT 投影机把输入的信号源分解到R(红)、G(绿)B(蓝)三个CRT管的荧光屏上,在高压作用下发光信号放大、会聚、在大屏幕上显示出彩色图像。
光学系统与CRT管组成投影管,通常所说的三枪投影机就是由三个投影管组成的投影机。
CRT投影机显示的图像色彩丰富,还原性好,具有丰富的几何失真调整能力;缺点是亮度较低,操作复杂,体积庞大,对安装环境要求较高。
有两个CRT投影机的特有性能指标值得注意会聚性能会聚是指红绿蓝三种颜色在屏幕上的重合。
对CRT投影机来说,会聚控制性显得格外重要,因为它有RGB三种CRT管,平行安装地支架上,要想做到图像完全会聚,必须对图像各种失真均能校正。
机器位置的变化,会聚也要重新调整,因此对会聚的要求,一是全功能,二是方便快捷。
会聚有静态会聚和动态会聚,其中动态会聚有倾斜,弓形,幅度,线性,梯形,枕形等功能,每一种功能均可在水平和垂直两个方向上进行调整。
除此之外,还可进行非线性平衡,梯形平衡,枕形平衡的调整。
CRT管的聚焦性能编辑本段我们知道,图形的最小单元是像素。
像素越小,图形分辨率越高。
在CRT管中,最小像素是由聚焦性能决定的,所谓可寻址分辨率,即是指最小像素的数目。
CRT管的聚焦机制有静电聚焦、磁聚焦和电磁复合聚焦三种,其中以电磁复合聚焦较为先进,其优点是聚焦性能好,尤其是高亮度条件下会散焦,且聚焦精度高,可以进行分区域聚焦,边缘聚焦,四角聚焦,从而可以做到画面上每一点都很清晰。
阴极射线管(Cathode ray tube,CRT),因为最广为人知的用途是用于构造显示系统,所以俗称显像管,又称布勞恩管,它是利用阴极电子枪发射电子,在阳极高压的作用下,射向萤光屏,使萤光粉发光,同时电子束在偏转磁场的作用下,作上下左右的移动来达到扫描的目的。
早期的CRT 技术仅能显示光线的强弱,展现黑白画面。
pascal crt单元详解
function keypressed:boolean;检测是否有键按下,有则函数值为true;Shift,Alt,Ctrl不被报告
function readkey:char;等待从键盘输入一个字符,如果一个扩展键或功能键被按下,则返回ASCLL的0,你可以再调用一次readkey,读取该键键码值。
procedure textmode(mode:integer);设置字符显示模式,mode值见下表,可以用常量标识符或常数值
function wherex:byte;返回当前窗口中光标所在的列数(相对当前窗口)
function wherey:byte;返回当前窗口中光标所在的行数(相对当前窗口)
procedure clrscr;清除当前窗口或屏幕(用当前背景色,光标设置在当window的左上角)prlcedure insline;在当前光标处插入一行,光标所在行以及接下去的行都下移一行,导致window底部最后一行消失,光标位置不变
procedure delline;删除光标所在的当前行,接下来的行都上移一行,新的空行插在window 的底部,光标位置不变
procedure textcolor(color:byte);设置正文前景颜色
procedure textbackground(color:byte);设置正文背景颜色
procedure lowvideo;选择低亮度显示字符
procedure highvideo;选择高亮度显示字符
procedure normvideo;选择正常亮度显示字符
procedure delay(ms:word);等待或延迟ms个毫秒,但是实际延迟的时间只是一个近似值,要看电脑运行快慢
procedure cursorOff;隐藏光标
procedure cursorOn;显示光标
显示模式常数表
前景和背景颜色常数表
常量标识符常数值颜色常量标识符常数值颜色
Black Blue Green Cyan Red Magenta Brown LightGray 0
1
2
3
4
5
6
7
黑
蓝
绿
青
红
洋江
棕
浅灰
DarkGray
LightBlue
LightGreen
LightCyan
LightRed
LightMagenta
Yellow
White
8
9
10
11
12
13
14
15
深灰
浅灰
浅绿
浅青
浅红
浅洋红
黄
白
Blink128闪烁。