- 締切済み
配列のサイズが明示的でない計算について
Fortranを例にとった場合、 行列A,Bの積Cを計算する場合、例えば以下のようなループで計算していました。(Fortran77) do i=1,10 do j=1,10 sum=0.0 do m=1,10 sum=sum+a(i,m)*b(m,j) enddo c(i,j)=sum enddo enddo それが今では、以下1行です。(Fortran95) c=matmul(a,b) 配列1つ1つの成分について計算する必要がないと言えそうです。Pythonなんかは全部こういう思想ですね。 プログラム言語はすべてこういう方向に進んでいるように思えます。 これがやや不安に思えるところがあります。配列のサイズを指定していないのでどこまで使って計算しているかわからないからです。 古い方(上段)では配列のサイズや上限を指定しているので、指定しているところより先がどうなっていてもとりあえず被害はありません。 しかし、サイズについてのケアがないと思いがけないような計算をしてくるんじゃないかと思うのですが。計算のバグ取のときここ大丈夫かな?となって疑心暗鬼ということにならないかと思うのですが。 配列の最大値なども関数1つと言う感じですが、どこまでの範囲での最大なの?と聞きたくなるわけですが。 いかがでしょうか。
- みんなの回答 (2)
- 専門家の回答
お礼
回答ありがとうございます。 "integer c(100)と定義して、実は、10個しか使ってないんです"は、やってました。その時は使うときは必ず範囲を決めています。もちろん、範囲<サイズです。範囲を超えたところは知らんよと。実際は使う前にゼロクリアとかしますが。そこでサイズ指定しないで配列の内容が自然数の最小は何かと聞くと、ゼロと答えてしまいそうです。 動的配列は1つの方法だと思いますが、それも間違いそうな気がするのですが。