【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?

パスカルでプログラムを書いているのですが、わからないところがあるので質問します。

プログラム中で
procedure ~(a : array[1..10] of integer);
などと宣言すると、この行でエラーが発生しました。

パスカルの手続きでは、配列型の仮引数は使用できないのでしょうか?

わかる人がいれば教えてください。よろしくお願いします。

A 回答 (2件)

困ったときには JIS を見る.


で実際に見ると, この場合には「型名」しか使えません. つまり
procedure foo(a: array[1..10] of integer);
はダメだけど,
type
ary = array[1..10] of integer;
procedure(a: ary);
は OK.
なお, 大きさが可変の場合には「整合配列」というものを使うことになり, こちらの場合には
procedure foo(a: array[low..high] of integer);
とか
procedure foo(var a: array[low..high] of integer);
という書き方になります (がこれは上位水準なのでコンパイラに依存する). ちょっと見た感じだと, この low とか high を式の中で使えるんじゃないかな.
なんか不思議な感じはするけど「大きさが固定された配列を仮引数にする場合には型名を使わないとだめ」「大きさが可変の配列を仮引数にする場合には型名は使えない」ということのようです (大きさが可変の場合には型名を使うことは不可能なはず).
    • good
    • 0

program hoge;


type ary = array[1..10] of integer;
var x : array[1..10] of integer;

procedure sub(var a: array of integer);
begin
writeln('sub');
writeln('lower: ', low(a));
writeln('upper: ', high(a));
end;
begin
sub(x);
end.

でも標準Pascalにはlowだのhighだのはなかったような。
どうすんだっけ?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!