- ベストアンサー
Pascalの手続きについて
パスカルでプログラムを書いているのですが、わからないところがあるので質問します。 プログラム中で procedure ~(a : array[1..10] of integer); などと宣言すると、この行でエラーが発生しました。 パスカルの手続きでは、配列型の仮引数は使用できないのでしょうか? わかる人がいれば教えてください。よろしくお願いします。
- みんなの回答 (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 を式の中で使えるんじゃないかな. なんか不思議な感じはするけど「大きさが固定された配列を仮引数にする場合には型名を使わないとだめ」「大きさが可変の配列を仮引数にする場合には型名は使えない」ということのようです (大きさが可変の場合には型名を使うことは不可能なはず).
その他の回答 (1)
- sakusaker7
- ベストアンサー率62% (800/1280)
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だのはなかったような。 どうすんだっけ?