トピック
hrt hirotoppap

DEFについて

DEFの使い方がわかりません。 中学生でもわかるよう説明してくれませんでしょうか。
2そうだね
プレイ済み
返信[1]
親投稿
しろ sshiro1shiro
添付のようにすると結果、3が表示されます。DEFからENDの事を関数と言います。添付の場合は関数TASUとなります。
3そうだね
プレイ済み
返信[2]
親投稿
おちゃめ ochame_nako
DEFというのは既存の命令、関数や計算式を組み合わせて自分でオリジナルの命令や関数を作るための命令です。 例えばRPGを作る場合には戦闘のダメージを求める関数なんてものは存在しませんが、DEFを使えば既存の命令等を組み合わせてこんなDAMAGE関数を作ることができます。 DEF DAMAGE(AP,DP)  VAR DM  DM=FLOOR((AP/2-DP/4)*(RND(20)+80)/100)  IF DM<=0 THEN DM=RND(2)  RETURN DM END DAMAGE(100,50)とすれば攻撃力100、相手防御力50の時のダメージが分かります。(ドラクエ方式の亜種)
2そうだね
プレイ済み
返信[3]
親投稿
おちゃめ ochame_nako
ダメージを求める計算をプログラム中で何カ所も使用したければその都度このダメージを求めるプログラムを記述しなくてはなりませんが自分で命令や関数を作ることでプチコン3号に最初から備わっているような命令、関数と同じようにお手軽に使えるというメリットがあるわけです。 あとDEF内でVARで変数を宣言することでローカル変数が使えます。 このDAMAGE関数ではDMがそれに相当します。 このDMという変数はDAMAGE関数内のみに有効な変数でこのDEF~ENDの外が別の関数で使用している変数DMとは異なるものとなっています。 これによって、変数名の重複を気にすることなく自由に変数名を付けることができるというメリットがあります。 変数名の重複を気にしなくても良いということは自分が作りためた自作命令、自作関数、他の人が作った自作命令、自作関数を簡単に利用できるというわけです。
2そうだね
プレイ済み
返信[4]
親投稿
数学でいう「関数」って何か値を渡すと、答えが返ってくるという仕組みです。 (関数 y=2x+3 は x に値をいれると y で答えが返ってきます) プチコンや他のプログラムでの関数って仕組みも同じく、何か値を渡すと、答えが返ってくる仕組みです。 (MID$やLEFT$も 文字列と値を渡すと、文字列の値の位置の文字を返します) プチコンでのDEFは関数を作る仕組みです。 具体的な例は おちゃめさんの投稿のとおり、DEFで関数にすると 値を2つ渡して 答えが返ってくるような仕組みが作れます。 プログラムを作るということで考えると、プログラムはたくさんの小さい処理(ボタン処理、背景処理、移動処理など)の集まりなので、DEFで関数にすれば小さい処理をまとめられてプログラムが見やすくなります。
0そうだね
プレイ済み
返信[5]
親投稿
DEFは関数で、値を渡して答えを返す仕組みですが、 値を渡さなくて答えを返さない関数も作れるし、答えを複数返すこともできます。 また、DEFの中でボタンの処理したり、グラフィックを書いたり、プログラムでできることなら何でもできます。 これによって、DEFの関数は 値を渡して答えを返す仕組み以外に、プログラムの小さな処理を関数でまとめられることになります。 どの処理をDEFにするか、どの値を渡して何の答えを返すか、どんな処理をするかを考える必要はありますが、それが「プログラムの設計」であってプログラムを作るメインの部分になります。 ※自分が考えている処理を いろんな命令や関数を組み合わせて実現することがプログラムするということです。
0そうだね
プレイ済み
返信[6]
親投稿
ツララ LongIceSword
自分はDEF命令って変数名が被っても大丈夫な便利サブルーチンって感覚で使ってますね。 まずGOSUB命令を使い倒してバグを出しまくってみたらいいんじゃないです? 色んな失敗を体験してみないと便利さも分からないと思いますよ? あとDEF命令を覚えるなら、いっしょにCALL命令も覚えておくと更に便利かも。 ちなみにサブルーチンの使い方って大丈夫です? 指定したラベルに飛んでRETURN命令で飛ぶ前のところに処理の流れが戻って来るっていうだけなんですけど。
0そうだね
プレイ済み
返信[7]
親投稿
シュナ S_S_Schneider
DEFというのは 前作のプチコンMkⅡ には存在しない命令でした。 SmileBasicは 変数を宣言したら サブルーチンとか関係なく プログラム全体で利用できるので 戻り値を返す DEF は必要ではなかったのです。 本来のBasicも DEF なんて便利な命令は存在せず GOTO で上手く処理を まとめていました。 (C+ とか Javaとかの 上級言語とちがって Basicが機械語に近い言語だと 言われる理由の一つですね。 それでも Basicは初心者にとっつきやすい 部類ですが。)
1そうだね
プレイ済み
返信[8]
親投稿
ΖΕΧ ZEX256
BASICが機械語に近いって、それは無い。 何でそう勘違いしたのか。 むしろC言語の方が近いし。 それから、Yahoo知恵おくれで検索すると 「C+」という言語は無いらしいですよ。 C++ならあるけど
0そうだね
プレイ済み
返信[9]
親投稿
hrt hirotoppap
なるほど、そういう要素だったんですね。 ありがとうございました!!
0そうだね
プレイ済み
返信[10]
親投稿
シュナ S_S_Schneider
ZEXさん いろいろと勘違いコメントすみません。 シープラも 打ち間違えで + 一個になっちゃってるし…… っと それとプチコンの話からそれた コメントになってしまって 申し訳ないです。
0そうだね
プレイ済み