Pascal学习
——基本Pascal学习

 

返回

 

第1章 第2章 第3章 第4章 第5章
Pascal语言概述 基础知识 顺序结构 选择结构 循环结构
第6章 第7章 第8章 第9章 第10章 第11章
枚举型和子界型 数组 函数与过程 集合与记录 指针 文件

 

第七章 数组

7.1 数组

7.2 字符串

 

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[i],score[i]);
    k:=k+score[i];
   end;
  k:=k/n;
  for i:=1 to n do
   begin
    write(num[i],score[i]);
    if (score[i]-k)>=10 then writeln('A')
              else if((score[i]-k)<10)and((score[i]-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

sstringindex,countinteger

返回串s的一个子串

string

length

sstring

返回串s的动态长度

integer

pos

substr,sstring

返回子串substr在串s中的起始位置

byte

(1)字符串过程

过程名

自变量及类型

意义

delete

var s,sourcestringindex,countinteger

从串S中删除一个子串

insert

var sstringindexinteger

在串S中插入一个指定子串

str

var x[width[Decimals]]sstring

把一数值转换成相应的字符串表示

val

var sstringcodeinteger

把一字符串转换成相应的数值

例:字符串函数调用示例
 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.

 

返回>>TOP