計算機実験 II(塩田・森教官) No.7

  1995年12月1日の課題 : 列挙型、部分範囲型、集合型

[1] 列挙型、部分範囲型のデータ型を覚える。

  1. 有限個の名前を列挙して定義する型を「列挙型」と言う。 列挙型変数の値はそこに列挙された名前のいずれかである。 ( sample7a の day )

  2. 論理型、整数型、文字型、列挙型(これらを合わせて順序型と言う) のデータの一部分として定義される型を「部分範囲型」と言う。 上限と下限を用いて定義し、配列の添え字に用いることができる。 ( sample7a の weekdaylecture )

[2] 集合型のデータ型を覚える。

  1. 順序型のデータを要素に持つ集合をデータとして扱うことができる。 宣言の一般形は

      type 集合型名  = set of 基底型 ;

    または

      var 集合変数名 : set of 基底型 ;

  2. Sun Pascal では 集合の要素の個数の上限は 65536 個である。

  3. ふたつの集合変数 s, t に対して、集合演算

      s*t(共通部分), s+t(和集合), s-t(差集合)

    が定義されている。

  4. ふたつの集合変数 s, t に対して、条件判定

      s=t ( 等しい ),    s<>t ( 等しくない ),
      s<=t ( s が t に含まれる ), s>=t ( s が t を含む )

    が定義され、また、要素の型の変数 x と集合 s に対して条件判定

      x in s ( x が s に含まれる )

    が定義されている( 結果は論理型 )。


[3] サンプル
program sample7a;

const name='/home1/is_staff/shiota/timetable';

type 
  day=(Sun, Mon, Tue, Wed, Thu, Fri, Sat);
  weekday=Mon..Fri;
  lecture=1..5;
  str=varying[50] of char;

var
  i:day;
  j:lecture;
  jugyou:array[weekday,lecture] of str;
  a:str;
  table:text;

begin
  reset(table,name);
  for i:=Mon to Fri do
    for j:=1 to 5 do
      begin
        readln(table,a);
        while length(a)<14 do a:=a+' ';
        jugyou[i,j]:=a
      end;
  for i:=Mon to Fri do
    begin
      write(i,' : ');
      for j:=1 to 5 do write(jugyou[i,j],' ');
      writeln;
      writeln
    end;
  close(table)
end.