极速赛车

您现在的位置:极速赛车教育教学网>> 文章中心>> 学科学习>> 微机>>正文内容
微机

Pascal基本教程 第七章

作者:大榕树 来源:大榕树 发布时间:2009年05月30日 点击数: 【字体: 收藏 查看评论
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
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.

相关信息
没有相关内容
观后心情
感动 同情 无聊 愤怒 搞笑 难过 高兴 路过