pascal语言教程part-2

pascal语言教程part-2_6分词条

 

目录 [隐藏]

pascal语言教程part-2 概述

 

pascal语言教程part-1


==========================================================================================


Pascal基本教程 第五章

循环结构程序设计
5.1 while语句
  while语句用于“当满足某一条件时进行循环”的情况。while语句的语法格式:
              while 布尔表达式 do 语句;
  循环结束条件在进入循环体之前测试,若最初的测试值为false,则根本不进入循环体,也就是说while循环是是属于当型循环。为了能使while重复能终止,循环体中一定要有影响布尔表达式的操作,否则该循就是一个死循环。
例:计算从0到某个数之间所有奇数的和。
 program jishu;
  var odds,limit,sum:integer;
 begin
  readln(limit);
  sum:=0;
  odds:=1;
  while odds<=limit do
   begin
    sum:=sum+odds;
    odds:=odds+2
   end;
  writeln(sum:1)
 end.
5.2 repeat语句
  repeat 语句用于“重复执行循环体,一直到指定的条件为真时为止”。语法格式为:
                 repeat
       语句1;
         ……
        语句n;
                 until 布尔表达式;
  repeat重复基本上有和while重复一样的描述循环计算的能力,但有一些不同:在repeat语句的结构中,布尔表达式求值在计算操作之后,而while语句中,布尔表达式求值在计算操作之前,也就是说repeat至少执行一次循环体。while语句的成分语句只能是一个语句。因此,当重复动作包含多个语句时,要用begin和end ,使它变成一个复合语句。而repeat语句的保留字repeat和until已经起语句括号作用,可以包含多个语句而无须begin和end。repeat语句中,当布尔表达式为true时结束循环,而while语句中,是当表达式为false时才结束循环。当描述由计算操作后的情况确定重复是否继续进行的计算时,通常用repeat语句描述。

5.3for 语句
  for 语句用来描述已知重复次数的循环结构。for 语句有两种形式:
            (1) for 控制变量:=初值 to 终值 do 语句;
            (2) for 控制变量:=初值 downto 终值 do 语句;
  第一种形式的for 语句是递增循环。首先将初值赋给控制变量,接着判断控制变量的值是否小于或等于终值,若是,则执行循环体,在执行了循环体之后,自动将控制变量的值该为它的后继值,并重新判断是否小于或等于终值。当控制变量的值大于终值时,退出for循环,执行for语句之后的语句。第一种形式的for 语句是递减循环。首先将初值赋给控制变量,接着判断控制变量的值是否大于或等于终值,若是,则执行循环体,在执行了循环体之后,自动将控制变量的值该为它的前趋值,并重新判断是否大于或等于终值。当控制变量的值小于终值时,退出for循环,执行for语句之后的语句。for 语句中的初值、终值、控制变量的数据都必须是顺序类型。当初值和终值确定后,重复的次数就确定不变了,并且控制变量在重复语句内不能施加任何赋值操作。
例:计算1+2+3+……+99+100
 program jia;
  var n,sum:integer;
 begin
  sum:=0;
  for i:=1 to 100 do
   sum:=sum+i;
  writeln(sum);
 end.
5.4 goto语句  goto语句是一种无条件转向语句,它可以控制直接从程序的一条语句转向另一条语句。goto语句的语法形式为:
      goto 标号;
  其中标号必须是不超过4位整数的正整数或标识符组成,但标号必须在说明语句中先予以说明。
  goto语句会使程序出现一种称为“乱面条”的结构,因此你最好还是不要去用。

==========================================================================================
Pascal基本教程 第六章

枚举型和子界型

6.1 类型定义
  类型定义的语法格式:
  type
  <标识符1>=<类型1>;
  <标识符1>=<类型1>;
  ……
  <标识符n>=<类型n>;

6.2 枚举类型
  通过预定义列出所有值的标识符来定义一个有序集合,这些值的次序和枚举类型说明中的标识符的次序识一致的。枚举类型的形式:(标识符1,……,标识符n)
例如:type daystype=(sunday,monday,tuesday,wednesday,thursday,friday,saturday)
  枚举元素只能是标识符,而不能是数值常量或字符常量。例如以下的定义是错误的:
type daystype=('sun','mon','tue','wed','thu','fri','sat')
  枚举元素是标识符,不要把作为枚举元素的标识符视作变量名,它不能被赋值。同一个枚举元素不能出现在两个或两个以上的枚举类型定义中。例如以下的定义是错误的:
type daytype1=(monday,tuesday);
daytype2=(monday,wednesday);
  可以将枚举类型的定义和变量的定义结合在一起。例如:var a:(monday,tuesday,sunday)
  枚举类型属于顺序类型。根据定义类型时各枚举元素的排列顺序确定它们的序列,序列号从0开始。
例如:已经定义daystype
   ord(sunday)=0,succ(sunday)=monday,pred(friday)=thursday
  但是枚举类型中的第一个元素没有前趋,最后一个元素没有后继。Turbo Pascal不允许直接读写枚举值,所以枚举值的输出常用case语句间接的输出。枚举值的输入,则要一一判断读入字符是否是枚举类型的标识符。若是才能赋给枚举变量,否则就会出错。
例如:枚举值的输出
 case day of
  sunday:write('sunday');
  monday:write('monday');
  tuesday:write('tuesday');
  wednesday:write('wednesday');
  thursday:write('thursday');
  friday:write('friday');
  saturday:write('saturday');
 end;

6.3 子界类型
  子界类型是由整型、字符型、枚举型、布尔型的两个常量指定该类型的值域区间。子界类型的形式:
                  常量..常量
  两个常量必须是同一种顺序类型。例如:a..b,要求a<=b
例如:
  type a=1..3;
b='a'..'d';
  一个子界类型继承它的常量类型的运算符和标准函数,常量类型相容的不同子界类型可以混合运算,可以赋值。可以将子界类型的定义和变量的定义结合在一起。例如:var a:1..9
例 按月、日、年顺序读入一日期,输出该日期是这一年中的第几天。
 program date;
  var year:0..2010;
    month,i:1..12;
    day:1..31;
    dayth:integer;
 begin
  read(month,day,year);
  dyath:=0;
  for i:=1 to month-1 do
   case i of
    1,3,5,7,8,10,12:dayth:=dayth+31;
    2:if ((year mod 4=0)and(year mod 100<>0)or(year mod 400 =0)
     then dayth:=dayth+29
     else dayth=:=dayth+28;
    4,6,9,11:dayth:=dayth+30;
   end;
  dayth:=dayth+day;
  writeln(dayth)
 end.

6.4 类型相容和赋值相容
1.类型相容性
  类型相容是对参加同一运算的两个对象的类型要求。设有两个变量,如果满足下列条件之一,就说这两个变量的类型相容。
  (1)两个变量的类型相同
     a.两个变量被同一类型说明。
      例如:var a,b:1..30;
     b.两个变量的类型是同一类型标识符。
      例如:var a:1..30;
b:1..30;
     c.两个变量的类型是不同的类型标识符,但在类型定义中已经说明两个标识符相同。
      例如:type date=1..100;
range=date;
        var m:data;
n:range;
  (2)一个变量的类型是另一个变量的子界。
  (3)两个变量的类型都是同一基类型的子界。
  (4)两个变量的类型是基类型相容的集合类型。
  (5)两个变量的类型是成分相同的串类型。
2.赋值相容性
  赋值相容是对赋值操作的两个对象的类型要求。设赋值语句“:=”左边的变量类型为T,右边表达式的类型为E,若类型T和类型E满足下列条件之一,则称他们是赋值相容的。
  (1)T和E是相同的类型,而且类型不是文件类型,也不是具有文件类成分的构造类型。
  (2)T是实型,而E是整型或整型的子界。
  (3)T和E是类型相容的顺序类型,并且E的值不超出T所定义的值的范围
  (4)T和E是类型相容的集合类型,并且E的值不超出T所定义的值的范围
  (5)T和E是类型相容的串类型。
  当T和E是顺序类型或都是集合类型时,不仅要求这两个类型是相容的,而且要求E的值不超出T所定义的值的范围;否则将产生类型溢出,而这种错误只能在你运行程序时进行检查,因此你必须要避免不发生这种错误。


===========================================================================================
Pascal基本教程 第七章

7.1 数组
1.数组的定义
  数组是程序中最常用的结构数据类型,用来描述由固定数目的同一类型的元素组成的数据结构。数组的每个元素和下标相关联,根据下标指示数组的元素。数组的存储方式为按行存储,在编译阶段,计算机根据数组的类型说明,确定其存储空间的大小。数组可以是任何顺序类型。
  数组的定义形式:
    array 【<下标类型1>,……<下标类型n>】 of <元素类型>
  其中n称为数组的维数,每维的下标类型必须是一个顺序类型,通常为子界类型或枚举类型,其作用是指定数组下标的编制方式和下标取值范围。
例如:
type
 color=(red,yellow,blue);
 sample1=array 【1..10】of integer;{有10个元素的一维数组}
 sample2=arrayp【1..5,1..5】of real;{有25个元素的二维数组,依次按【1,1】……,【1,5】,【2,1】……,【2,5】,……【5,1】,……【5,5】}
2.数组的操作
  当数组的元素类型为简单类型时,其下标变量和简单类型变量一样使用。例如:
    a【50】:=50;    a【20】:=a【5】;
  一个数组,下标的起始值和终止值是在类型定义中给定的,不能在程序执行中再通过其他途径来改变,所以数组元素的个数在程序运行期间是固定不变的。数组变量作为整体仅允许同类型数组之间的赋值运算。
例如:var x,y:array【1..10】of integer;
x::=y
例:读入5个学生的学号和成绩,计算他们的平均分,若比平均分高10分的等第为A,若比平均分高小于10分的等地为B,若低于平均分,则等第为C,输出他们的成绩和等第。
 program sample7d1(input,output);
  const n=5;
  type
   no=array【1..n】 of integer;
   s=array【1..n】of real;
  var
   i:integer;
   k:real;
   num:no;
   score:s;
 begin
  k:=0;
  for i:=1 to n do
   begin
    readln(num,score);
    k:=k+score;
   end;
  k:=k/n;
  for i:=1 to n do
   begin
    write(num,score);
    if (score-k)>=10 then writeln('A')
              else if((score-k)<10)and((score-k)>0) then writeln('B')
                                    else writeln('C');
   end;
 end.

7.2 字符串
  为了使程序能够处理文字信息,Turbo Pascal特别引入了字符串类型,其值表示一个具有可变长度的字符序列。字符串类型定义形式为:
    strign【n】或者string
  其中正整数n(1<=n<=255)表示构成字符串的字符最多个数,即通常所说的字符串最大长度。而字符串的实际长度决定程序运行时的实际字符个数,可以由函数length返回。若字符串说明中没有指定长度,缺省值为255。
  字符串类型定义字符串连接操作‘+’,是将两个字符串连接成新字符串。连接操作允许字符串类型和字符串类型混合运用。
  字符串常量可以通过常量说明语句
    const 字符串常量名:string【n】='字符串';
  规定其常量的串长n,并赋初值。例如:const head:string【7】='zhoufei';
  Turbo Pascal还提供了不少预定义函数和过程:
(1)字符串函数 函数名
自变量及类型
意义
结果类型

concat
s1【,s2……,sN】:string
连接字符串序列
string

copy
s:string,index,count:integer
返回串s的一个子串
string

length
s:string
返回串s的动态长度
integer

pos
substr,s:string
返回子串substr在串s中的起始位置
byte


(1)字符串过程

过程名
自变量及类型
意义

delete
var s,source:string;index,count:integer
从串S中删除一个子串

insert
var s:string;index:integer;
在串S中插入一个指定子串

str
var x【:width【:Decimals】】;s:string
把一数值转换成相应的字符串表示

val
var s:string;code:integer
把一字符串转换成相应的数值


例:字符串函数调用示例
 program samplefun;
  const
   tur='turbo';
   pas='pascal';
  var
   st:string【60】;
   p:byte;
 begin
  st:=concat(tur,pas,'is better than','stand',pas,'.');
  writeln(st);
  writeln(length(st));
  st:=copy(st,29,15);
  writeln(st);
  p:=pos(pas,st);
  writeln(p);
  p:=pos(tur,st);
  writeln(p);
 end.
例:字符串过程调用示例
 program guocheng;
  const
   typedstring:string='turbo pascal is better than standard pascal.';
   total:real=388.4;
  var
   totalstring:string【60】;
   integervalue:integer;
   realvalue:real;
   status:integer;
 begin
  delete(typedstring,13,40);
  writeln(typedstring);
  insert('using',typedstring,1);
  writeln(typedstring);
  str(total:8:2,totalstring);
  writeln(totalstring);
  str(total,totalstring);
  writeln(totalstring);
  val('-33',integervalue,status);
  writeln(integervalue,'':2,status);
  val('-33.99',realvalue,status);
  writeln(realvalue:6:2,'':2,status);
 end.

===========================================================================================
Pascal基本教程 第八章

函数和过程 </P><P>8.1 函数
  如果一个子程序执行后能够返回其结果制,那么它就可以用于表达式中,称这种子程序为函数,这种语句序列的定义称为函数说明。函数说明形式如下:
 function 函数名(形式参数表):函数类型;
  说明部分;
 begin
  语句1;
  语句2;
  ……
  语句n
 end
  函数返回一个函数值,过程则能完成一系列各种操作。函数的调用方式出现在表达式中,而过程调用是一句独立的语句。
例:计算|X|的函数
  function zhoufei(x:real):real;
   var z:integer;
  begin
   if x>=0 then z:=x
   else z:=-x
   zhoufei:=z;
  end;
  函数说明第一行为函数首部。它指明函数名、函数形参信息和函数值的数据类型。如上面求x绝对值的函数说明,函数名是zhoufei;它有一个值参数X为实型;函数值的数据类型为实型。Turbo Pascal规定一个函数只能求出一个简单值,所以函数值类型只能是任何非结构类型。
  除函数首部和过程首部的句法略有差别外,函数体和过程体完全相同。函数体中至少要有一条语句对函数名赋值。如函数zhoufei 中有语句“power:=z”。函数的每次求值至少要执行这样的一条语句,为次计算求得一个值。返回时就把这个值带调用的地方。

8.2 过程
给某个语句序列组成的子程序赋于一个适当的名字。程序中凡是需要出现这个语句序列的地方,可以简单的写上子程序的名字。这种完成一个操作的子程序称为过程;子程序的定义称为过程说明。
  过程说明由过程首部和过程体组成,其形式如下:
procedure 过程名(形式参数表);-------过程首部
说明部分;
begin
执行语句;
……
end;
例 输出两个数中最大值的过程
procedure largest(a,b:integer);
begin
if a>b then writeln(a)
else writeln(b);
end.
  上面largest过程由两个类型为整型的形式参数:a,b,你向过程传入的两个需要比较大小的数。

8.3 形参和实参
  子程序调用(过程调用或函数调用)的执行顺序分为以下几步:
    实参和形参结合——〉执行子程序——〉返回调用处继续执行
  子程序说明的形式参数表对子程序体直接引用的变量进行说明,详细指明这些参数的类别、数据类型要求和参数的个数。子程序被调用时必须为它的每个形参提供一个实参,按参数的位置顺序一一对应,每个实参必须满足对应形参的要求
  Turbo Pascal子程序形参有四类:
1.值参数
  形式参数表中前面没有var,后有类型的参数。它类似过程和函数的局部变量,仅为过程和函数的执行提供初值而不影响调用时实际参数的值。在调用过程或应用函数时,值参数所对应的实际参数必须是表达式,而且它的值不能使文件类型或包括文件类型的值。实参必须和形参赋值相容。
2.变量参数
  形式参数表中前面有var后由类型的参数。如果需要子程序向调用程序返回值时,应采用变量参数。变量参数要求它的实参是和它同一类型的变量。因为在子程序执行时,遇到对相应形参的引用式定值,就是对相应实参的引用式定值,即对形参的任何操作就是对实参本身的操作。
3.无类型变量参数
  形式参数表中前面有var而后面没有类型的参数。形参是无类型变量,对应的实参允许为任意类型的变量,但要在子程序中设置的强制类型转换(类型名(无类型变量参数名)),将无类型变量参数改变为相应类型。
4.子程序参数
  用过程首部或函数首部作为形式参数。

8.4 标识符的作用域
1.全局变量和它的作用域
  全局变量是指在程序开头的说明部分定义和说明的量。它的作用域分为两种情况:
(1)在全局变量和局部变量不同名时,其作用域是整个程序。
(2)在全局变量和局部变量同名时,全局变量的作用域不包含同名局部变量的作用域。
2.局部变量和它的作用域
  凡是在子程序内部使用的变量,必须在子程序中加入说明。这种在子程序内部说明的变量称为局部变量。局部变量的作用域是其所在的子程序。形式参数也只能在子程序中有效。因此也属于局部变量。局部变量的作用域分为两种情况:
(1)当外层过程序的局部变量名和嵌套过程中的局部变量不同名时,外层过程的局部变量作用域包含嵌套过琛。
(2)当外层过程的局部变量名和嵌套过程内的局部变量名同名时,外层局部变量名的作用域不包含此过程。

===========================================================================================
Pascal基本教程 第九章

集合与记录

9.1 集合
  以已知序数类型值的集合为值,所构成的类型是集合类型,称已知序数类型为基类型。集合类型的定义形式为:
      集合类型名=set of 基类型
  限定基类型为枚举类型、字符型、布尔型以及它们的子界和整型子界。由于基类型中不能超过256个可能值,且它们的序数值应在0..255之间,因此基类型不能是短整型、整型、长整型。
  表示一个集合值的最通用的方法是逐个枚举集合的元素。下面是集合值标记的例子:
[3,9,15,20】 {由3,9,15,20组成的集合}
[ ] {空集}
['l'..'p','z' ]{由字符l,m,n,o,p,z组成的集合}
  两个相连的集合对象之间,可以通过下列运算符进行运算
集合运算符: +
产生一个包含两个集合元素的集合

*
产生一个只包含两个集合元素公共元素的集合


产生一个包含所有属于第一个集合、但不属于第二个机和的元素的集合


例如:【A,B,C】+【D】等于【A,B,C,D】
【A,B,C】*【A】等于【A】
【A,B,C】-【A】等于【B,C】

关系运算符

=
检查两个集合所包含的元素相同

<>
检查两个集合不相等

<=
检查第一个集合中的元素都在第二个集合中出现

>=
检查第一个集合中的元素包含第二个集合中的所有元素

in
检查集合基类型的一个元素属于集合


例如:【A,B,C】=【A,B,C】 等于true
【A,B,C】<>【C,B,A】 等于FALSE

9.2 记录
  记录是描述同一对象的一组类型可能不同的数据的集合。使用记录类型实现了数据逻辑关系和存放形式上的一致。定义记录类型的一般形式
         记录类型名=record
               域名1:类型1;
               域名2:类型2;
               ……
               域名m:类型m;
               end;
例如:表示学生信息的记录定义
type
    stype=record
         name:string【20】;
         number:integer;
    sex:(male,female);
  class:1..20
  address:string
         end;
  域为记录类型的元素。记录的每个域都有名称,不同域的数据类型可以各不相同,这一点是数组所不能做到的。引用记录变量的元素采用以下标记法:
(1)直接引用,其形式为
   记录变量名.域名
例如:var str1,str2:stype;
   则str1.name表示学生str1的姓名,str2.sex表示学生str2的性别。
(2)使用with开域语句,其形式为
   with 记录变量名 do 语句
  在with语句中,引用记录变量名不再冠以记录变量名,以简化对记录中域的引用写法。例如描述100个学生的数据信息,引入元素类型为stype的数组students。
  var
   students:array【1..100】of stype;
number_of_boy,number_of _girl,k:integer:
例如下面是一段统计一个班级中男生人数和女生人数的程序。
 begin
  number_of_boy:=0;number_of_girl:=0;
  for k:=1 to 100 do
  with student【k】 do
  if sex=male then number_of_boy:=number_of_boy+1
   else number_of_girl:=number_of_girl+1
 end;
  with语句的嵌套结构的一般形式:
  with <记录变量名1> do
   with <记录变量名2> do
    ……
     with <记录变量名n> do
      <语句>;
  使用with嵌套结构时,with的嵌套顺序必须和所打开的记录的嵌套顺序一致,以就是说外层with打开外层记录,内层with打开内层记录。上面的嵌套格式也可以简写为:
  with <记录变量名1,记录变量名2,……,记录变量名n> do
   <语句>;
  若记录是由一部分固定不变和另一部分变化部分是随固定部分中的某个数据项的具体取值而定的数据项所组成的称为记录变体。带记录变体的记录类型定义有以下形式:
  type
   <类型标识符>=record
     <域名1>:<类型1>;
     <域名2>:<类型2>;
     ……
     <域名n-1>:<类型n-1>;
     case <标志域>:<类型n> of
      <常量表1>:<域表1>;
      <常量表2>:<域表2>;
      ……
      <常量表m>:<域表m>;
   end;
例:重新定义描述学生信息的记录类型stype,对于大专生,不需要增加其他信息,对于本科生,增加专业信息。
type
    stype=record
         name:string【20】;
         number:integer;
    sex:(male,female);
  class:1..20
  address:string
         case studtype:(s,u) of
          s:( );
          u:(major:string);
         end;

===========================================================================================
Pascal基本教程 第十章

指针


By 联合空间网络工作室

10.1 指针的动态变量
1.定义指针类型
  在Turbo Pascal中,指针变量中存放的某个存储单元的地址,即指针变量指向某个存储单元。一个指针变量仅能指向某一种类型的存储单元,这种数据类型是在指针类型的定义中确定的,称为指针类型的基类型。指针类型定义如下:
   类型名=^基类型名;
例如:type q=^integer;
   var a,b,c:q;
  说明q是一指向整型存储单元的指针类型,其中"^"为指针符。a,b,c均定义为指针变量,分别可以指向一个整型存储单元。
  上例也可定义为:
    var a,b,c:^integer;
  指针也可以指向有结构的存储单元。
例如:type person=record
        name:string【10】;
        sex:(male,female);
        age:20..70
      end;
   var pt:^person;
  pt为指向记录类型person的指针变量。
2.动态变量
  应用一个指针指向的动态存储单元即动态变量的形式如下:
    指针变量名^
例如:p^、q^、r^
  指针变量p和它所指向的动态变量^p之间有如下关系:

P->P'

以下语句把整数5存放到p所指向的动态变量p^ 中去:
p^:=5;
以下语句把p所指向的p^中的值赋给整型变量i:
i:=p^;
如果指针变量p并未指向任何存储单元,则可用下列赋值语句:
p:=nil;
其中nil是Turbo Pascal保留字,表示“空”,相当于C里面的null

10.2 对动态变量的操作
  在Turob Pascal程序中,动态变量不能由var直接定义而是通过调用标准过程new建立的。过程形式为:
    new(指针变量名);
  如果有下列变量定义语句:
   var p:^integer;
  仅仅说明了p是一个指向整型变量单元的指针变量,但这个整型单元并不存在,在指针变量p中还没有具体的地址值。在程序中必须通过过程调用语句:new(p);才在内存中分配了一个整型变量单元,并把这个单元的地址放在变量p中,一个指针变量只能存放一个地址。在同一时间内一个指针只能指向一个变量单元。当程序再次执行new(p)时,又在内存中新建立了一个整型变量单元,并把新单元的地址存放在p中,从而丢失了旧的变量单元的地址。
  为了节省内存空间,对于一些已经不使用的现有动态变量,应该使用标准过程dispose予以释放。过程形式为:dispose(指针变量名);为new(指针变量名)的逆过程,其作用是释放由指针变量所指向的动态变量的存储单元。例如在用了new(p)后在调用dispose(p),则指针p所指向的动态变量被撤销,内存空间还给系统,这时 p的值为 nil。
例:输入两个数,要求先打印大数后打印小数的方式输出,用动态变量做。
 program dongtai;
  type intepter=^integer;
  var p1,p2:intepter;
  procedure swap(var,q1,q2:intepter);
   var p:integer;
  begin
   p:=q1;q1:=q2;q2:=p;
  end;
 begin
  new(p1);new(p2);
  writeln('input 2 data: ');readln(p1^,p2^);
  if p1^  writeln('output 2 data: ',p1^:4,p2^:$);
 end.

===========================================================================================


Pascal基本教程 第11章


类型文件
  按数据的二进制代码形式存放时的文件称为类型文件。如果再按照组成类型文件的元素数据结构分,又可以分为有类型文件和无类型文件。其定义为:
   type 类型名=file of 基类型;{有类型文件}
     类型名=file;    {无类型文件}
  例如:var f:file of integer;
     说明f为名的变量对应文件将用于存放整数。
     var g:file;
     说明g为名的变量对应文件的数据无任何规定。
  Turbo Pascal有关类型文件的函数和过程
(1)assign过程
  形式:assign(f,str);
  功能:将文件名字符串str赋给文件变量f,程序对文件变量f的操作代替对文件str的操作。
(2)rewrite过程
  形式:rewrite(f);
  功能:建立并打开一个新的允许写磁盘文件,其文件名必须先由assign过程赋给变量f。这时,指向文件元素的指针指向第一个元素,rewrite过程所建立的文件为空文件。
(3)reset过程
  形式:reset(f);
  功能:打开一个已经存在的磁盘文件,其文件名必须先由assign过程赋给变量f,该文件只能读,指向文件元素的指针指向第一个元素。
(4)read过程
  形式:read(f,var表);
  功能:从磁盘文件f中,将数据依次读到var表表示的各个变量中。
(5)write过程
  形式:write(f,var表);
  功能:将var表所表示的各个变量的值依次写到磁盘文件f上。
(6)close过程
  形式:close(f);
  功能:关闭和f关联的磁盘文件,在写操作时自动产生一个文件结束标志。
(7)seek过程
  形式:seek(f,n);
  功能:把文件指针移到f指明文件的第n个元素。
(8)eof函数
  形式:eof(f);
  功能:若文件指向文件尾,则返回true,否则返回false。
  对有类型文件的写操作步骤为:
   assign(f,str);
   rewrite(f);
   write(f,var表);
   close(f);
  对有类型文件的读操作步骤为:
   assign(f,str);
   reset(f);
   read(f,var表);
   close(f);
例:在磁盘上建立一个1~50的平方数的数据文件zhoufei.dat。要求以一个数,这个数的平方数的格式写入。
  program zhoufei;
   var f:file of integer;
   i:integer;
  begin
   assign(f,'zhoufei.dat');
   rewrite(f);
   for i:=1 to 50 do write(f,i,sqr(i));
   close(f)
  end.
文本文件
  文本文件的内容有ASCII字符集中的字符组成,因此文本文件也称ASCII码文件,它可以用DOS中的type命令列出内容。文本文件具体是由一系列行组成,每一行可以包括0个或多个字符型成分,并以也行结束符结尾,文本文件类型TXT和类型文件file of char区别在于后者不包含行结束符。
  文本文件和类型文件在读写上的差别在于前者只能按次序顺序读写,而后者可以不按照次序读写。适用文本文件的函数和过程除了用于类型文件操作的过程和函数外主要还有:
(1)readln过程
形式:readln(f,var表);或readln(f);
功能:从磁盘文件f中,将数据依次读到var表表示的各变量中(其中readln(f)只读数据),并将文件指针移到行结束符后,就是下一行开头。
(2)writeln过程
  形式:writeln(f,var表)或writeln(f);
  功能:将var表所表示的各个变量的值依次写到磁盘文件f上去(writeln(f)不写值),然后再写一个行结束符。
(3)append过程
  形式:append(f);
  功能:打开一个已经存在的磁盘文件,其文件名必须和assign过程中的变量名f相对应,该文件只能写,此时文件指针指向文件尾。
(4)eoln函数
  形式:eoln(f);
  功能:若文件指针指向行结束符或文件结束符,则返回true,否则返回false。
  对文本文件的写操作步骤:
   assign(f,str);
   rewrite(f);  或append(f);
   write(f,var表);或writeln(f);
   close(f);
  对文本文件的读操作步骤:
   assign(f,str);
   reset(f);  
   readln(f,var表);或readln(f);
   close(f);
例:随机产生30个随机整数存放于文本文件zhoufei.txt 中
  program zhoufei;
   const n=30;
   var ra:text;
     i:integer;
  begin
   randomize;
   assign(ra,'zhoufei,txt');
   rewrite(ra);
   for i:=1 to n do writeln(ra,random(100));
   close(ra)
  end.
============================================================================================  END

 

pascal语言教程part-2 相关条目

 

 

计算机

附图

上传图片 

互动百科的词条(含所附图片)系由网友上传,如果涉嫌侵权,请与客服联系,我们将按照法律之相关规定及时进行处理。如需转载,请注明来源于www.hudong.com

被引用: 本词条已被如下媒体引用 我来补充
开放分类: 我来补充

讨论区

更多>>

编辑者

共1人协作

相关词条

Pascal语言教程part-1
plascal教程
JDBC
java数据库连接
asp
《计算机与信息技术基础教程》
java集合框架
指称语义学
闭包函数
c语言
更多

Copyright © 2005-2009 hudong.com Ltd. All Rights Reserved. 互动在线 版权所有