電子書籍の厳選無料作品が豊富!

御世話になります。
もらったプログラムを読んでいるのですが、わからないので質問させていただきます。
定義が、
logical  k
integer a,b
……
k = .true. 
if((k).and.(a.gt.b)) then

のところなのですが、
(a.gt.b)はわかるのですが、
(k)かつ(a.gt.b)とはどういう条件なのでしょう?

今まで、論理変数を使ったこともなく、調べてはみたのですが詳しい解説も見付けられませんでした。
他に必要な情報がありましたら捕捉します。
お願いします。

A 回答 (3件)

> これは、c.le.d が成り立つとき、k=true


> 成り立たないとき、k=false
> になると解釈してよいのでしょうか?
はい。その通りです。

> k=(c.le.d)
はif文の外で事前に論理演算して結果をkに格納しています。
c<d がtrue、c>=dはfalseがkに格納されますね。


言語により記述は異なりますが、
a=b=c という記述の場合、bとcが等しいかを判断しaに結果(true or false)を格納せよ、になります。
a=b-cとしたいのに値が常に-1 or 0で慌てる例です。
    • good
    • 0
この回答へのお礼

理解できました!お礼が遅くなり申し訳ありません。
ありがとうございました。

お礼日時:2006/01/06 12:17

論理変数を使っているのは、おそらく、ループ内などで制御条件を明示的に示すためでしょう。



どこかに、if(...) then k=.false. と言うのがあるはずですよ。

Cであれば、別に論理型にしなくても、0(NULL)をfalseと扱ってしまうので、kがintでも、if(k)ですみますが、FORTRANでは、論理型以外の変数の場合、何らかの式を書かなければ評価できないのでこうなります。
    • good
    • 0
この回答へのお礼

他にもkの式がありました。
ありがとうございます。

プログラムはfortran しか扱ったことないのですが、Cの方が使いやすそうですね。

お礼日時:2005/12/30 23:06

Fortranに限りませんが


if 論理式 then  です。論理式がTrueのときにthenが実行されます。

提示されているのはループ内の一部では?
省略なっている部分にもkの出番がもっとどこかにあるはず。
きっとk=falseになる部分がどこかに・・・。

この回答への補足

はい。doループの中です。falseはなかったのですが、
subroutine の中に
k=(c.le.d) のような式がありました。
これは、c.le.d が成り立つとき、k=true
成り立たないとき、k=false
になると解釈してよいのでしょうか?

補足日時:2005/12/30 22:58
    • good
    • 0
この回答へのお礼

ありがとうございます。
よく探してみたら、ありました。
でも、false ではなく、よくわからないので捕捉として質問させていただきます。

お礼日時:2005/12/30 23:07

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