logo
ホーム •  フォーラム •  日本語wikiトップ •  アカウント情報 •  サイト内検索 •  新規登録
 ログイン
ユーザー名:

パスワード:


パスワード紛失

新規登録
 メインメニュー
 米国サイト
 オンライン状況
106 人のユーザが現在オンラインです。 (14 人のユーザが フォーラム を参照しています。)

登録ユーザ: 0
ゲスト: 106

もっと...

Re: 本体の起動について

このトピックの投稿一覧へ

なし Re: 本体の起動について

msg# 1.8.2
depth:
2
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2009-3-29 2:45 | 最終変更
toshi  長老   投稿数: 1540
takehiroさん、samさん

こんばんは。toshiです。

takehiroさん:
if文の解説をしていただき、ありがとうございました。
おかげさまで少し理解が深まりました。
私、本当にプログラムのことは良く知らない人でして、プログラムのソースを見るのはFlightGear関連の動作を調べるときくらいですので、ご助言をいただけるのはとても助かります。

良く見るif文の形式は、
if(条件式)
 文1
else
 文2
ですが、実は
if(論理値)
 文1
else
 文2
と同じことであり、条件式の部分は比較演算子が判定してtrueかfalseの論理値を返し、if文は、論理値がtrueなら文1を、falseなら文2を実行する、というように私は理解しました。
納得です。

samさん:
私の先の投稿で、
引用:
samさんは、787/Nasal/system.nasにある
if(getprop("/sim/model/start-idling")) [

if(getprop("/sim/model/start-idling")== 0) [
にするのが【文法的に】正しいのではないか、とお考えになったのでしたね、

私は、そのどちらも【文法的に】正しいと思います。
と書きましたが、いい加減な理解の下で書いていましたので、この部分を改めて考えてみました。

まず、前にも書きましたが、/sim/model/start-idlingはブール型のプロパティです。

次に、nasalのgetprop()は、ブール型のプロパティを引数にとると、数値の1か0に変換します。
# ブール型のtrueやfalseではありません。
参考: Using Nasal with FlightGear
http://www.plausible.org/nasal/flightgear.html

このことから、if(getprop("/sim/model/start-idling")== 0) という文法は問題ないと言えると思います。

一方、if(getprop("/sim/model/start-idling"))という文法は、getprop("/sim/model/start-idling")は1か0ですので、確かにちょっと気になります。
# samさんの最初の質問に戻ってしまいました...

nasalのif()が、論理値falseを0、論理値trueを1で表すことを許容してくれるかどうか、がポイントだと思います。
# 他の言語(処理系?)では、論理値falseを0、論理値trueを「0以外の整数」で扱う場合があるようです。

nasalのif()の定義については、ちゃんとした説明を見つけられていないのですが、nasalのページには以下のような例があることから、きっと許されているのだろうと想像します。

また、if(getprop("/sim/model/start-idling"))という書き方を良く見かけることからも、きっと問題ないだろうと思いますが、確証があるわけではありません。
if(1) {
    var i=1234;
    for(var i=0; i<10; i+=1) {}
    print(i); # i==10 here, not 1234!
}
参考: Nasal: Not another scripting language!
http://www.plausible.org/nasal/doc.html

ただし、注意していただきたいことは、
if(getprop("/sim/model/start-idling")) [
が許されるなら、1はtrueと同義、0はfalseと同義になるように動作するはずだ、ということです。

したがって、条件式を使って同じ動作を表すように書き直すと、
if(getprop("/sim/model/start-idling")== 0)
ではなく、
if(getprop("/sim/model/start-idling")== 1)
とする必要があります。

p.s. samさんに、ジョイスティックの動作について教えていただきたいことがあります。
http://flightgear.jpn.org/modules/d3forum/index.php?post_id=2254 に質問を書きましたので、お読み頂けますと幸いです。
投票数:9 平均点:5.56

投稿ツリー

  条件検索へ


 検索

高度な検索
 新しい登録ユーザ
luckyjetci 2024-11-22
iqyted 2024-11-22
oxonuwup 2024-11-22
orefek 2024-11-22
ykynoha 2024-11-22
livedrawec 2024-11-22
livedrawez 2024-11-22
livedrawer 2024-11-22
parke12 2024-11-22
enilas 2024-11-22
 最近の画像(画像付)
関東カスタムシーナ... (2024-8-16)
関東カスタムシーナ...
自作11機目 F/A-18... (2022-5-27)
自作11機目 F/A-18...
飛んでみる八尾空港 (2022-4-10)
飛んでみる八尾空港
作ってみる八尾空港 (2022-4-2)
作ってみる八尾空港
F117 nighthawk (2021-5-19)
F117 nighthawk
Powered by XOOPS Cube 2.1© 2001-2006 XOOPS Cube Project
Theme designed by OCEAN-NET