Free Pascal --转帖收藏

 
Free Pascal --转帖收藏_第1张图片
   Free Pascal是个由国际组织开发的完全的win32的pascal语言编译器,类似delphi,可编写windows程序。
  此前被广泛使用的PASCAL编译器普遍为 Turbo Pascal & Borland pascal。但是它们可用的空间十分有限。而Free Pascal理论上可以使用 4GB内存。所以在利用Free Pascal编程的时候,可以改变原有思路,将大量时间转嫁给空间,提高效率。
  虽然Free Pascal尽量设计得和Turbo Pascal接近,但是由于以下的两个原因,两者之间还是有一些区别的:
  1. Free Pascal是一个32位的编译器,而Turbo Pascal只是16位编译器;
  2. Free Pascal是一个跨平台的编译器,而Turbo Pascal只在windows和DOS上使用。
  如果你的代码是遵守ANSI Pascal的,那么代码从Turbo Pascal移植到Free Pascal是没有问题的。
  下面是在Turbo Pascal上可以使用,但是在Free Pascal就不能使用的一些语言特性:
  1. 函数和过程在使用时,参数的类型必须和定义时完全一致。原因是在Free Pascal中添加了函数,EXCEPT,RAISE成为了关键字,因此不能作为函数和过程的名字。
  3. FAR,NEAR不再是关键字了。原因是Free Pascal是32位系统,不再需要这些关键字。
  4. 布尔表达式不一定要全部进行计算。只要最终结果已经能够确定,就不再计算其它还没有计算的部分了。比如布尔表达式exp1 AND exp2 AND exp3,如果已知exp1的结果是false,那么怎么表达式的结果肯定是false,exp2和exp3就不用进行计算了。
  5. 在Free Pascal中,集合中的元素都是4个字节长的。
  6. 表达式执行的顺序是不确定的。比如对于表达式a:=g(2)+f(3); 不保证g(2)一定在f(3)之前执行。
  7. 如果用Rewrite打开文件,那么文件就只能被写入了。如果需要读取这个文件,要对文件执行Reset。
  8. Free Pascal在程序结束之前一定要关闭输出文件,否则输出文件可能不能被正确的写入。
  9. Free Pascal理论上可以使用4GB的内存,因此实际上几乎可以使用系统中的所有剩余内存(除非赛题中有内存限制)。这是Free Pascal由于32位的编译器。但是对于Turbo Pascal来说,由于是16位的编译器,因此不能定义大小超过64KB的数据类型和变量,并且在DOS实模式下可以使用的内存总数只有640KB。
  下面是Free Pascal相对于Turbo Pascal扩充的一些功能:
  1. 函数可以返回复杂的类型,比如记录和数组。
  2. 在函数中,函数的返回值通常可以作为一个变量来处理。比如:
  function a : longint;
  begin
  a:=12;
  while a>4 do
  begin
  {...}
  end;
  end;
  这个例子在Turbo Pascal中,a>4会被认为是函数的递归调用,但是在Free Pascal中会认为a只是一个变量。如果想在Free Pascal中实现递归调用,就要写成下面的形式:
  function a : longint;
  begin
  a:=12;
  { this is the recursive call }
  if a()>4 then
  begin
  {...}
  end;
  end;
  3. exit可以接受一个参数作为函数的返回值。比如:
  function a : longint;
  begin
  a:=12;
  if a>4 then
  begin
  exit(a*67); {函数的返回值就是a*67 }
  end;
  end;
  4. Free Pascal支持函数重载。可以用相同的名字定义不同的函数,只要这些函数的参数不同,就是不同的函数。比如:
  procedure DoSomething (a : longint);
  begin
  {...}
  end;
  procedure DoSomething (a : real);
  begin
  {...}
  end;
  可以使用不同的参数类型longint或者real来调用不同的DoSomething过程。
  由于这个功能,函数的提前声明必须有完整的参数声明:
  procedure x (v : longint) : forward;
  {...}
  procedure x;{ 这里定义的过程x重载了前面声明的过程x。因此这里的两个x是不同的}
  begin
  {...}
  end;
  5. Free Pascal容许运算符重载。比如,可以自己为矩阵运算定义一个“+”运算。
  6. Free Pascal在windows 95及其以上的windows版本上支持长文件名。对于文件名,由于windows系统对大小写不敏感,因此在程序中,文件名的大小写是无关的。但是对于其它大小写敏感的系统,比如linux,程序中用到的文件名必须和系统中的文件名完全一致。但是由于信息学竞赛的评测系统一般是linux,因此要求程序中的文件名和系统中的文件名一样。

PASCAL程序设计介绍

  1. PASCAL语言介绍
  PASCAL语言是由瑞士的沃斯(N.Wirth)教授于1971年提出来的。它的命名是为了纪念法国数学家Pascal。它是世界上第一个结构化的高级程序设计语言。结构化程序设计主要由三种基本结构(顺序结构、选择结构、循环结构)组成。后来有人把函数和过程作为第四种基本结构。这四种结构对外看都只有一个入口和一个出口,结构清晰,避免了由GOTO语句所引起的混乱。另外在程序设计方法方面,主张采用自顶向下,逐步求精的方法。即将一个大的复杂问题,划分成若干少的易解决的问题。每个小问题,又可划分成一些更小的更易解决的问题。这样,只要把每个小问题都解决了,整个大问题也就解决了。这种方法也为多个人合作编程提供方便。
  由于PASCAL语言具有良好的结构程序设计特性,适合于教学,特别是适合于培养学生掌握自顶向下逐步求精的结构化程序设计思想和方法,并养成良好的程序设计风格和习惯,因此,国内外许多大学都将PASCAL作为一门程序设计教学语言。
  1.1.2 PASCAL程序的结构初步认识
  例1-1:输入半径求园的周长和面积?
  program circle(input,output);
  const
  Pi=3.14;
  var
  r,L,s:real;
  begin
  write('r=');
  readln(r);
  L:=2*pi*r;
  s:=pi*r*r;
  writeln('R=',r:8:2,' L=',L:8:2,' S=',s:8:2);
  end .
  1.1.3 调入Turbo Pascal集成环境、编辑程序、保存程序
  1. 请确定Turbo.exe文件所在磁盘目录。假如它是放在F:盘的TP7文件夹(又称子目录)中。
  2. 把您要保存程序文件的盘设为当前盘,并保存文件于当前盘的当前目录中。假如您的程序文件要存在H:盘的当前目录,则在DOS方式提示符“>”后输入下面命令。
  > h:←┘
  3.调入并执行Turbo.exe,进入Turbo Pascal集成环境。
  > f:/tp7/turbo.exe←┘
  4.在程序编辑窗口中,输入例1-1程序。注意一个编辑窗口只能编辑一个程序文件。常用的编辑键有:
  ← ↑ → ↓ :光标移动键。
  Delete :删除光标所在字符。
  ←┘ :回车键,用于换行或在光标处插入一行之用。
  5.程序编辑完后,按F10 键,执行主菜单[File]中的[Save]项目菜单保存程序到磁盘中,并试用“yz1-1.PAS”作为例1-1程序存盘文件名。
  1.1.4 运行程序、观察运行结果、跟踪调试程序
  1. 按F10 键,执行主菜单[ RUN ]中的[Run]项目菜单,运行程序,然后在提示后输入一个调试用的半径值:
  r= 10←┘
  2. 按F10 键,执行主菜单[Debug]中的[ output ]项目菜单,打开输出窗口观察到结果如下:
  R= 10.00 L= 62.80 S= 314.00
  如果有错,请找出错误并修改它,重复第1步,再执行直到有正确输出结果。
  3.重复第1步,再次运行程序,输入另一个园的半径值5,观察输出结果是否也正确,从而确定该程序能否正确解决不同半径的园的周长和面积的求解问题。
  程序调试中我们常用的操作还有:
  双线框的窗口称为“当前活动窗口”。
  F1 键: 得到光标所在位置的项目的帮助信息。
  F4 键: 要求运行到当前光标处暂停。
  F5 键: 放大或缩小当前活动窗口。
  F6 键: 切换其它窗口为当前活动窗口。
  F7 键: 单步执行程序并能跟踪进入子程序。
  F8 键: 单步执行程序但不能跟踪进入其子程序。
  F10 键:在菜单和活动窗口间转换。
  CTRL + Break 键:强制终止当前程序的运行。
  其它功能按键请同学们以后自己查看英文帮助说明,出色的程序员都习惯查看英文帮助。
  4.学习跟踪调试方法,它可帮助我们检查分析出算法上存在的错误。
  (1) 按F10 键,执行主菜单[Debug]中的[ Watch ]项目菜单,打开监视窗口
  (2) 按 Insert 键,输入常量pi ←┘
  Insert 键,输入变量r ←┘
  Insert 键,输入变量l ←┘
  Insert 键,输入变量s ←┘
  (3) 请按F8 键或F7单步执行程序直到程序结束,观察上述常量和变量如何变化。
  (4) 观察程序执行过程中Watch监视窗口中常量和变量的值变化,分析算法是否正确。
  说明:如果想在程序还未结束前终止程序的单步执行或跟踪调试,可按F10 键,执行主菜单[Run]中的[ Program Reset ]项目菜单。
  1.1.5 关闭当前活动窗口、退出Turbo Pascal集成环境
  1. 按 F6 键切换当前活动窗口,执行主菜单[Windows]中的[Close]菜单项关闭当前活动窗口,如果当前活动窗口是程序编辑窗,在关闭前可能因程序已修改过而提问用户是否需要保存编辑窗口中的被更改后的程序。试逐一关闭所有窗口。
  2. 执行主菜单[File]中的[Exit]菜单项可退出Turbo Pascal集成环境,返回DOS提示符状态。
  1.1.6 深入理解例1-1程序各语句意义
  1. 在Pascal中有些词具有特定的含义,用户必须正确理解其含义和正确使用,否则会运行出错。这些具有特定含义的词称为“保留字”。“保留字”不能做常量名、变量名或程序名。在Turbo Pascal7.0编辑窗口中,保留字默认用白色显示。例1-1中的包含的保留字有:program,const,var,begin,end,它们的特定含义分别是:program 指出后面定义的是程序名;const指出后面定义的是程序将用到的常量;var指出后面定义的是程序将用到的变量;begin指出程序执行代码开始;end指出程序执行代码结束。
  2. 除了保留字外,还用到标识符,用于表示常量、变量、类型、文件、函数、过程或程序的名字。标识符是以字母开头的字母、数字组合,标识符又分为标准标识符和用户自定义标识符。如例1-1中,用户自定义标识符有:程序名为circle,常量pi,实数型变量r、l和s,它们由程序设计者定义的;标准标识符有:实数标准类型名real,读数标准过程名readln,输出标准过程名write和writeln ,标准输入文件input,标准输出文件output。在Pascal编译系统中,标准标识符也具有特殊的含义,我们定义标识符时也应尽量避免与标准标识符取相同名字。PASCAL中的保留字及标识符是不区分大小写的。
  保留字 program , const , var , begin ,end
  标识符 标准标识符 Real,readln,write,writeln,input,output
  用户自定义标识符 circle , pi , r , l , s
  3. 注意程序的书写格式
  程序名说明: program <用户自定义的程序名>(input,output);其中圆括号的内容称为程序的参数。程序参数指明程序与外部联系的文件名。input是标准输入文件,例如键盘;output是标准输出文件,例如屏幕、打印机等。对于标准设备常可省略(input,output)的说明,简写为:program <用户自定义的程序名>;如例1-1可省略简写为:“ program circle; ”
  常量定义:Const
  <常量标识符>=<常量>;
  ......
  <常量标识符>=<常量>;
  变量定义:var
  <变量表> :<类型>;
  ......
  <变量表> :<类型>;
  主程序语句部分: begin
  <语句>;
  ......
  <语句>;
  end .
  赋值语句: <变量名标识符>:=<表达式>; 其意义是把右边表达式的运算结果送到左边变量名所对应的数据区中。
  读数据标准过程(又称读语句):read(变量表),园括符内必须是已定义过的变量标识符,有多个时变量时可用逗号分隔构成变量表。
  输出数据标准过程(又称写语句):write(数据项表)或writeln(数据项表),有多个数据项时要用逗号分隔。数据项可以是字符串(如:'L=',' S=')、变量(如:l、s),如:s:8:2,表示要求输出时数据保留2位小数位,总长度包括小数点为8位;write与writeln区别是writeln完成所有输出后自动换行。
  1.2 PASCAL基本组成
  1.2.1 PASCAL语言使用的几类基本符号
  (1) 大小写英文字母:A,B,...Z,a,b,..z
  (2) 数字:0,1,2,3,4,5,6,7,8,9
  (3) 其它符号:+ , - , * , / , = , < > , >= , <= , < , > , ( , ) ,[ ,] , := , ' , , . : , .. , ∧ 等。
  注意:PASCAL的标识符及保留字定义只能采用上述基本符号,其它特殊符号。例如:αβε∮∞≈,汉字等只能在字符型常量中使用。
  1.2.2 PASCAL语言使用的保留字
  在PASCAL语言中,有些词具有特定的含义。用户必须了解其含义,以便正确的使用,否则会造成错误,这些具有特定含义的词被称为保留字,保留字不能作其它用途,如作变量名等。在Turbo pascal7.0中,保留字默认用白色显示,保留字如下:PROGRAM ,CONST,VAR,BEGIN,END,AND,ARRAY,CASE,DIV,DO,DOWNTO,ELSE,FILE,FOR,FUNCTION,GOTO,IF,IN,LABEL,MOD,NIL,NOT,OF,OR,PACKED,PROCEDURE,PROGRAM,RECORD,REPEART,SET,THEN,TO,TYPE,UNTIL,WHILE,WITH等。
  1.2.3 语法图说明
  语法是语言的结构规则,语言的所有成分都必须符合语法的要求,如果语言的结构规则描述不严密,就会产生岐义。我们在下面说明语法中,采用语法图进行描述,使说明更加简洁。语法图常用的4种图形元素的意义如下:
  1.2.4 PASCAL语言中的标识符
  在PASCAL中标识符分标准标识符和用户自定义标识符,它可作为常量、变量、类型、过程、函数和文件的名字。标识符是以字母开头的字母数字序列,构成语法如下图示:
  在PASCAL中有些标识符已定义了特定的含义,称为标准标识符,它们是:
  标准常量:false,true,maxint等;
  标准类型:integer,real,char,boolean,string,text等;
  标准文件:input,output等;
  标准函数:abs,chr,cos,eof,eoln,round等;
  标准过程:read,readln,write,writeln,new,reset等;
  指出下面用户自定义标识符为什么会错: begin,1student,student 1,
  1.2.5 PASCAL中使用的常量与变量
  程序中数据分为两类:一类是在程序执行过程中其值保持不变的量,称为常量;另一类是在程序执行过程中,其值可以改变的,这类数据称为变量。根据使用方式的不同,常量又可以分为直接常量和用户定义常量两种。
  1.直接常量
  指程序中直接引用的常数,在PASCAL中经常使用的常量有:整型常数,实型常数,字符型常数和布尔型常数等。
  (1) 整型常数语法图如下:
  如:100 , +120 ,-199 , 0等。
  (2) 实型常数语法图如下:
  如:100 , +120 ,2.5 ,0 ,0.005 , +2.418 , 1.24E+3 ,-1.24E+3
  这里E表示用科学记数法表示,1.24E+3相当于数学的1.24×10+3 。
  (3) 字符型常数语法图如下:
  如:'A' ,'a','?','4','aBbc','12.5'等。
  (4) 布尔型常量
  布尔型常量简称为布尔型常数,它只有两个:true和false,分别表示逻辑判断的结果是真(True)和假(False)。
  2.用户自定义常量
  在程序中,如果一个常数反复多次出现在程序中,用户可以通过说明语句来定义一个标识符来代表这个常量。常量说明语法图如下:
  如: const
  pi=3.14;
  country='China';
  success=true;
  3.变量说明
  PASCAL程序中数值可以改变的量称为变量,由于变量可以取不同的值,因此变量必须通过标识符来代表。程序中出现的每个变量都必须在程序的变量说明部分进行类型说明.变量说明语法图如下:
  如: var
  x,y,z:real;
  i,j,k:integer;
  ch:char;
  t,f:boolean;
  name:string;
  1.2.6 Turbo Pascal中标准数据类型介绍
  数据的类型确定了该类数据的表示形式和取值范围,而且确定了其所能参加的各种运算。PASCAL语言提供了丰富的数据类型,如下图1.1所示。这里我们先介绍标准类型,其它类型以后用到时才介绍。
  1.整型
  一个数存放在计算机中都要占用固定的存储空间,这决定了在计算机中的每种数据类型定义的数的大小是有限的,这点与数学中的定义不同,为了节省空间和提高处理速度,我们通常要根椐处理的数的最大可能决定选用不同的数据类型。Byte为信息存储单位。
  整数的可选类型如下:
  名称 类型标识符 数据表示范围 占用存储空间
  整型 integer -32768 ~ +32767 2byte
  短整型 shortint -128 ~ +127 1byte
  长整型 longint -2147483648 ~ +2147483647 4byte
  字节型 byte 0 ~ 255 1byte
  字型 word 0 ~ 65535 2byte
  例:var
  i:byte;
  当i值取256时出错,因为byte类型只能接受0~255之间的数。可定义大些,如word型
  提问:若解题时i的最大可能取值为40000,问i变量应定义为那种数据类型较合适?
  2.实型:实型有4种类型,如下表示
  实型名称 类型标识符 数据表示范围 有效位 占用存储空间
  实型 real -2.9*10^39~+1.7*10^38 11~12 6byte
  单精度型 single -1.5*10^45~+3.4*10^38 7~8 4byte
  双精度型 double -5.0*10^-324~+1.7*10^308 15~16 8byte
  扩展型 extended -1.9*10^-4932~+1.1*10^4932 19~20 10byte
  装配十进制型 comp -2^63+1 ~ +2^63 –1 19~20 8byte
  注:在Turbo Pascal中,single,double,extended,comp需要计算机的数学协处理器支持,即要在程序首行加入编译开关{$N+},若计算机为486SX以下,没有协处理器,可采用仿真办法,即在程序首行加入编译开关{$N+,$E+}
  例:var
  x:real;
  当x的数学值为2时,在计算机中的值为:2.0000000000E+00
  当x的数学值为-25时,在计算机中的值为:-2.5000000000E+01
  当x的数学值为0.05时,在计算机中的值为:5.0000000000E-02
  3. 字符型和字符串型
  名称 类型标识符 说明
  字符型 char 单个字符用一对单引号括起的数据。
  字符串型 string 一个或一串字符用一对单引号括起来的数据。
  例: var
  ox:char;
  note:string;
  name:string[5];
  4. 布尔型
  名称 类型标识符 说明
  布尔型 boolean 值只有true和false,分别表示真和假或对与错。
  1.2.7 运算符、标准函数及标准过程
  1.运算符
  在PASCAL中提供的运算符有算术运算符、关系运算符和逻辑运算符等。不同的运算符都规定了其运算对象的数据类型和运算结果的类型。如下表:
  运算符 运算类型 运算对象及类型 结果类型
  +、-、* 算术运算 整型或实型 整型或实型
  / 算术运算 整型或实型 实型
  div、mod 算术运算 整型 整型
  not、and、or 逻辑运算 布尔型 布尔型
  < 、<= 、= 、> 、>= 、<> 关系运算 标准类型 布尔型
  (1)算术运算符+ 、- 、 * 、/ 说明
  在PASCAL中乘用“*”表示,除用“/”表示。通过下面例子加深理解:
  运算对象及式子 运算结果 结果类型
  1+5 6 整型
  1.0+5 6.0000000000E+00 实型
  6/2 3.0000000000E+00 实型
  2*6 12 整型
  2.0*6 1.2000000000E+01 实型
  (2) 算术运算符div 、mod 说明
  div表示求两个整数除的商,mod表示求两上整数除的余数。
  运算对象及式子 运算结果 结果类型及说明
  7 div 2 3 整型
  7 mod 2 1 整型
  7.0 div 2 出错 运算对象不允许实数
  (4) 关系运算符< 、<= 、= 、> 、>= 、<>说明
  运算对象及式子 运算结果 结果类型及说明
  7 >5 true 布尔型
  7<>7 false 布尔型
  7=7 true 布尔型
  7>=7 true 布尔型
  7.5>7 true 布尔型
  'B'>'A' true 布尔型
  'b'>'B' true 布尔型
  'abd'>'abc' true 布尔型
  说明:字符常量比较大小是按字符对应的ASCII码值大小比较大小。如:字符'A'的ASCII码为65,'B'的ASCII码为66 ,故'B'>'A',在ASCII码表中,小写字母的ASCII值又大过大写字母的ASCII值,故'b'>'B'。字符串的比较是逐个比,直到不同为止,故有'abd'>'abc' 。
  (5) 逻辑运算符not、and、or
  运算符 名称 意义 举例 结果
  Not 非运算 相当于“求反” not(4>3) F not true false
  And 与运算 相当于“而且” (4>3) and (2>3) F true and false false
  Or 或运算 相当于“或者” (4>3) or (2>3) F true or false true
  下表说明逻辑运算的运算结果
  A B not A A and B A or B
  true true false true true
  true false false false true
  false true true false true
  false false true false false
  (6) 字符串连接运算符 +
  如:'abc'+'def' 结果为:'abcdef' 。
  3. 标准函数和过程
  PASCAL中提供了很多标准函数和过程给用户直接使用,方便了我们编程,下面介绍一些常用的标准函数和标准过程,其它函数和过程可以在Trurbo Pascal的帮助文件中查阅。
  (1) 算术标准函数
  函数 名称 X类型 结果类型 说明
  abs(x) 绝对值 整型,实型 整型,实型 Abs(-25)=25
  sqr(x) 平方值 整型,实型 整型,实型 Sqr(5)=25
  sqrt(x) 平方根 整型,实型 实型 sqrt(25)=5.0000000000E+00
  trunc(x) 取整 整型,实型 整型 截取整数部分。trunc(-2.3)=-2
  round(x) 取整 整型,实型 整型 四舍五入取整。trunc(-2.6)=-3trunc(-2.3)=-2
  int(x) 取整 整型,实型 实型 截取整数部分int(2.5)=2.0000000000E+00int(-2.5)=-2.000000000E+00
  frac(x) 取小数 整型,实型 实型 frac(2.5)=5.0000000000E-01
  exp(x) 指数 整型,实型 实型 例:求e3 即,e为2.718exp(3)=2.0085536923E+01
  ln(x) 对数 整型,实型 实型 例:求log10(2)ln(2)=6.9314718056E-01
  random 随机数 无 实型 随机产生(0,1)间的随机数
  random(x) 随机数 整型 整型 随机产生[0,x-1]间的随机数
  其它函数还有正弦函数sin(x),余弦函数cos(x),反正切函数arctan(x),自然对数函等等,请需要时从Turbo Pascal中的英文帮助中查阅。
  注:在PASCAL中没有定义幂运算函数xn 。但可采用下面式子计算:exp(n*ln(x)) 。
  (2) 算术标准过程
  [1] dec(x) 相当于 x:=x-1
  [2] dec(x,n) 相当于 x:=x-n
  [3] inc(x) 相当于 x:=x+1
  [4] inc(x,n) 相当于 x:=x+n
  (3) 字符处理标准函数
  为了说明方便,设s,str,str1,str2为字符串型(string),ch为字符型(char)变量。
  [1] concat(str1,str2)
  作用:把两字符串连接成新字符中串。
  例:concat('abc','def') 结果:'abcdef'
  [2] copy(str,a,b)
  作用:从字符串str的左边第a(整数)位开始截取b(整数)位字符串。
  例:copy('abcdef',2,4) 结果:'bcde'
  [3] length(str)
  作用:求字符串str的长度。
  例: length('abcdef') 结果:6 ;length('') 结果:0 ;length(' ') 结果:1
  [4] chr(x)
  作用:求x(x为整数1--255)表示的ASCII代码对应的字符
  例:chr(65) 结果:'A' ;chr(66) 结果:'B'
  [5] ord(x)
  作用:求x的序号,其中x必须为有序类型。有序类型如:字符型、布尔型、整型、枚举型、子界型等。
  例:ord('A') 即'A'的ASCII码值为:65 ;ord('B') 即'B'的ASCII码值为:66
  ord(true) 结果:1; ord(false)结果:0
  ord(13) 结果:13;ord(0)结果:0
  [6] pos(str1,str2)
  作用:求字符串str1在字符串str2中的开始位置,结果为整数。
  例:pos('abc','efabcdg') 结果:3 ;pos('abc','efabfgh') 结果:0
  [7] upcase(ch)
  作用:把ch对应的字符转为大写字母。
  例:upcase('a') 结果:'A'
  (4) 字符串处理标准过程
  [1] delete(str,a,b)
  作用:从字符串str的左边第a(整数)个字符开始向右连续删除b(整数)位字符,并把剩余字符串赋给str
  例:str:='abcdefgh';delete(str,4,3); 最后str结果为:'abcgh'
  str:='abcdef';delete(str,8,3); 最后str结果为:'abcdef'
  [2] insert(str1,str,a)
  作用:把字符串str1插入字符串str中由第a(整数)位字符之前,并把新字符串赋给字符串变量str。
  例:str:='efghy';insert('abc',str,3);最后str结果为:'efabcghy'
  str:='efghy';insert('abc',str,8);最后str结果为:'efghyabc'
  [3] str(x,s)
  作用:将x(x为整数或实数)转化为数字字符串,结果存入S。
  例:str(12.4,s) s的结果为:'1.2400000000E+01'
  str(12.4:5:1,s) s的结果为:' 12.4' 。str(124,s) s的结果为:'124'
  [4] val(str,a,code)
  作用:将数字字符串转换成数字,并将该数字存入实型或整型变量a中,code为返回的错误代码,code=0 表示转换成功,无错误。
  例:val('12',a,code) 若a为实型,a的结果为:1.2000000000E+01;若a为整型,a的结果为:12
  (5) 布尔型标准函数
  [1] odd(x)
  作用:判断自变量x的奇偶特性,其中x为整型。奇数为true,偶数为false。
  例:odd(13) 结果:true ;odd(10)结果:false 。
  [2] eof(x)
  作用:判断文件x是否处于结束状态。其中x为文件型变量。文件结束为true,否则为false 。
  [3] eoln(x)
  作用:判断文件x是否处于行结束状态。其中x为文件型变量。行结束为true,否则为false 。
  (6) 顺序类型函数
  [1] pred(x)
  作用:求x的前一个量值,其中x为字符型、布尔型、整型、枚举型、子界型等有序类型。
  例:pred(6)=5 ;pred('b')='a' ;pred(true)=false ; pred(false)=true
  [2] succ(x)
  作用:作用:求x的后一个量值,其中x为字符型、布尔型、整型、枚举型、子界型等有序类型。
  例:succ(5)=6 ;pred('a')='b' ;pred(true)=false; pred(false)=true
  (7) 标准单元中常用标准过程
  Turbo Pascal中系统提供了八个标准单元,分别是:system(系统单元)、printer(打印单元)、dos(dos单元)、crt(显示单元)、overlay(覆盖单元)、graph(图形单元)、turbo3(与3.0版兼容单元)、graph3(3.0海龟图形单元)。这些单元中分别定义了大量的函数和过程供用户使用。但注意在使用标准单元的函数和过程前,除system单元可省略说明外,其它要在程序开头说明。说明格式如下:use 标准单元; 或 use 标准单元1,...,标准单元n;另外,前面介绍过的标准函数和过程都在system单元中。下面补充一些常用标准函数和过程。
  [1] clrscr 过程 在crt单元
  格式:clrscr 作用:清文本屏幕,并将光标移到屏幕左上角。
  [2] delay 过程 在crt单元
  格式:delay(ms) 作用:延迟ms毫秒数,其中ms为word型。
  [2] gotoxy 过程 在crt单元
  格式:gotoxy(x,y) 作用:称光标到y行x列上,其中x,y为byte型。
  [3] sound 过程 在crt单元
  格式:sound(hz) 作用:按hz(word型)指定的频率发音,调用该过程后会一直响,直到调用nosound过程将其关闭。
  [4] nosound 过程 在crt单元
  格式:nosound 作用:关闭扬声器。
  [5] readkey 函数 在crt单元
  格式:readkey 作用:从键盘读入一个字符,函数类型结果为char。
  [6] exit 过程 在system单元
  格式:exit 作用:退出当前过程或模块。
  [7] halt 过程 在system单元
  格式:halt 作用:停止程序执行。
  [8] getdate 过程 在dos单元
  格式:getdate(y,m,d,dw) 作用:返回当前日期(年,月,日,星期),其中y,m,d,dw为word型。1980<=y<=2099,1<=m<=12,1<=d<=31,0<=dw<=6(星期日为0)。
  [9] gettime 过程 在dos单元
  格式:gettime(h,m,s,se) 作用:返回当前时间(时,分,秒,毫秒),其中h,m,s,se为word型。0<=h<=24,0<=m<=59,0<=s<=59,0<=se<=99秒。
  还有setdate(y,m,d,dw),settime(h,m,s,se),请读者查阅Turbo Pascal的帮助文件。
  [10] read或readln过程 在system单元
  格式:read(f,v1,v2,...,vn)或readln(f,v1,v2,..vn) 其中f为文件型变量,标准输入文件input(如键盘输入)时可省,v1,v2,...,vn为变量名表。
  作用:从标准输入文件(如键盘输入)或磁盘文件中读入数据到变量中,多个变量时,要用逗号分隔。 read与readln的区别是:readln会掉丢当前输入行中多余的数据。而read不会,多余的数据可留待下一个read或readln使用。
  [11] write或writeln过程 在system单元
  格式:write(f,v1,v2,...,vn)或writeln(f,v1,v2,...,vn) 其中f为文件型变量,标准输出文件OUTPUT(如显示器)可省,v1,v2,...,vn为表达式,且每个表达式的必须有唯一确定值,类型为标准类型。write与writeln区别是:writeln输完所有数据项后,光标自动移动到下一行,即自动换行。
  1.2.8 表达式
  PASCAL中表达式是由常量、变量、函数、运算符及圆括号(只能用圆括号)连接起来的算式。与普通的算术运算式不同,表达式书写必须符合PASCAL语言规定。语法图如下:
  例如:数学式子: 的PASCAL表达式为:abs(a-sqtr(c+1))/(a*b)+d
  PASCAL中运算的优先顺序如下:
  (1) 括号内表达式优先处理
  (2) 函数
  (3) NOT
  (4) AND,*,/,DIV,MOD
  (5) +,-,OR
  (6) <,<=,=,>,>=,<>,IN
  注:同一个子表达式中,同一优先级的运算按从左到右的次序进行。而且不能用中括号和大括号,只能用圆括号。
  例如: 下面表达式中,假设x:=2;y:=2:i:=1;请读者分析其优先顺序,为什么?
  ( x = sqr(2)) or not(y>0) and (( x-y ) /i <> 0 )
  1.2.9 一个较完全的PASCAL程序结构
  一个较完整和PASC程序结构如下:
  program 程序名(程序参数表)
  label
  标号说明;
  const
  常量说明;
  type
  类型说明;
  var
  变量说明;
  function
  函数说明;
  procedure
  过程说明;
  begin
  语句;
  ...
  语句;
  end .
  Free Pascal扩充了数值位数

free pascal官方网站及下载地址

  free pascal官方网站:www.freepascal.org
  free pascal官方ftp下载网站:ftp://ftp.freepascal.org/pub/fpc/dist
  free pascal2.0.4官方ftp下载地址:ftp://ftp.freepascal.org/pub/fpc/dist/i386-win32-2.0.4/fpc-2.0.4.i386-win32.exe
  free pascal2.2.0官方ftp下载地址:ftp://ftp.freepascal.org/pub/fpc/dist/i386-win32-2.2.0/fpc-2.2.0.i386-win32.exe

你可能感兴趣的:(跨平台-QT)