こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Tiny Basicのプログラムです。。

Tiny Basicのプログラムで

試験の成績を入力し、30点未満なら青点、30点以上50点未満なら赤点、50点以上なら合格と表示するプログラムを作成せよ。青点、赤点、合格を判定する部分は副プログラムとして作成せよ。 という問題があったんです。
それで僕は
Cls
input A
Call Q
Sub Q
END
Select Case A=A
Case A=<29
print"青点"
Case A=>50
print"合格"
Case else
print"赤点"
End Select
End sub

というプログラムをつくったんですがどんな点数を入れても青点って結果がでてしまうんです。
どうしたらいいんでしょうか?

投稿日時 - 2007-06-19 11:27:36

QNo.3097471

すぐに回答ほしいです

質問者が選んだベストアンサー

>PUBLIC Aのやつはエラーになります
エラー:コマンド PUBLIC の構文エラーです。
コマンドまたは引数のミスタイプが考えられます。

俺の環境では全くそうならない。念のため、Tiny BasicのバージョンとOSを言ってもらえる?
使えないバージョンだと仮定して
一応結構苦し紛れでこう書き直してみたけど・・・・

Cls
input A
Call Q(A)
END
Sub Q(X)
Select Case X=X
Case X=<29
print"青点"
Case X=>50
print "合格"
Case else
print "赤点"
End Select
End sub

投稿日時 - 2007-06-19 20:17:55

お礼

OSはXPで
バージョンはTiny Basic for Windows v. 1.15b(jan.2007)
bytakeuchi Teruoです。

このプログラムでもできましたありがとうございました!!

投稿日時 - 2007-06-19 20:24:24

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(11)

ANo.11

了解です。

(コード的には#9の方が実はエレガントな気がする)

投稿日時 - 2007-06-19 20:26:03

お礼

きれいですね^^

投稿日時 - 2007-06-19 20:37:30

ANo.10

>あーー、できました。
ありがとうございます!!!!

一応聞かせて。

#3 + 一部修正 + #8の修正
で動いたものに対する反応?

それとも
#9で動いたものに対する反応?

締め切るときにでも教えてくれる?

投稿日時 - 2007-06-19 20:24:50

お礼

#9のほうです^^
本当にありがとうございました。
あの、よかったらもう一つ同じプログラム言語で質問してるんでよかったら答えてください。
おねがいします。
一番新しい質問のはずなんで^^;

投稿日時 - 2007-06-19 20:36:09

あー撤回。

これも頭に
PUBLIC A
がないと駄目だ。
(
これがない→サブルーチン内のAとメインルーチンのAが異なる変数とみなされる
これがある→サブルーチン内のAとメインルーチンのAが同じ変数とみなされる
)

投稿日時 - 2007-06-19 19:54:01

お礼

あーー、できました。
ありがとうございます!!!!

投稿日時 - 2007-06-19 20:17:54

あれ?ちょっと待って、本当に青点って表示された>#3さんのプログラム

投稿日時 - 2007-06-19 19:50:52

>どのようなプログラムをつくったら
回答1の
PUBLIC A
から
End sub
までそのまま。

>起動させるとSub文に対応してませんとでてしまって
多分DT200さんがC/C++のノリで書いちゃったからだと思う
Basicは
Else If
じゃなくて
ElseIf
だ。
多分そこを全部直せば動くんじゃないかなあ?

>Select Case TRUEとかPUBLIC A のところが特にわかりませんね。。
何かいい説明があればURL読んどいて、で済むんだけど、ちょっと探す気力が沸かない。済まぬ。

#ちなみに一応環境を述べたのは
http://oshiete1.goo.ne.jp/qa3088906.html
なんてこともあったから。

投稿日時 - 2007-06-19 19:48:46

お礼

if文は起動には成功しましたがやっぱり青点って表示されます

PUBLIC Aのやつはエラーになります
エラー:コマンド PUBLIC の構文エラーです。
コマンドまたは引数のミスタイプが考えられます。
って感じです

投稿日時 - 2007-06-19 19:58:17

> =< や => じゃなくて <=/>= ではないのですか?
あ。でもまぁ一応当方環境では動作しています。

>Select Case の使い方が間違っています。
私も最初はそう思ったのですが、間違ってないと思います。

Select Case TRUE
って書けばお分かりでしょうか?
次のCase の後に指定された条件文がTRUEとなればそれが選ばれる、という。

#当方環境では
80を入力したら「合格」
30を入力したら「赤点」
15を入力したら「青点」
が表示されました。

PUBLIC A
がポイントだと思うんだけどなあ・・・・
(#1で掲示したコードはうっかりAの後に全角空白入れちゃったっぽいのでそのままコピペすると文法エラーと怒られます。)

#ちなみに検証環境はTiny Basic for Win 1.15b on WinXP Pro SP2です

投稿日時 - 2007-06-19 12:40:46

お礼

Select Case TRUEとかPUBLIC A のところが特にわかりませんね。。

どのようなプログラムをつくったらちゃんと結果がでたんですか?
おしえてください><

投稿日時 - 2007-06-19 19:23:03

ANo.4

外してたらごめんなさい。

> Case A=<29
> print"青点"
> Case A=>50

=< や => じゃなくて <=/>= ではないのですか?

Tiny Basic for Windowsについて
http://tinybasic.hp.infoseek.co.jp/TBIntro/tbasic.html

ですよね?

でも構文エラーになっていないのか。

投稿日時 - 2007-06-19 12:27:24

お礼

これ学校の授業の一貫なんです。。。
授業では=<と=>ぐらいしか習ってなくて

投稿日時 - 2007-06-19 19:21:03

ANo.3

Select Case の使い方が間違っています。

Select Case A   ← A=Aではない
Case 0 To 29    ← toで範囲を指定できるか不明(以上や以下という使い方はできない)
print "青点"
Case 30,31,32,33, .... ,48,49  ← これはOKのはず
Print "赤点"
Case 50 To 100
Print "合格"
Case Else
Print "入力誤り"
End Select

とするか、If文で判断します。

If ( A >= 0 ) and ( A < 30 ) Then
Print "青点"
Else If ( A>=30) and (A<50) Then
Print "赤点"
Else If (A>=50) and (A<=100) Then
Print "合格"
Else
Print ”入力誤り"
End If

投稿日時 - 2007-06-19 12:25:10

お礼

Select Caseのプログラムはなんかよくわからなくてできませんでした。。

If文はとりあえず入れてみましたがエラーになってもうすこしでできそうだったんですが。。(泣

Cls
input A
Call mb
end
Sub mb
If ( A >= 0 ) and ( A < 30 ) Then
Print "青点"
Else If ( A>=30) and (A<50) Then
Print "赤点"
Else If (A>=50) and (A<=100) Then
Print "合格"
end if
End sub
end

という感じです
起動させるとSub文に対応してませんとでてしまって

投稿日時 - 2007-06-19 19:18:44

ANo.2

Tiny Basicの経験は皆無ですが,
  Case A=<29  Case A=>50
をそれぞれ,
  Case A<=29  Case A>=50
と書き換えてみたらどうなります?
多くのプログラム言語が,後者の書き方のみを採用しているので。

投稿日時 - 2007-06-19 12:23:21

お礼

やっぱりできませんね。。

投稿日時 - 2007-06-19 19:12:09

Call Q
Sub Q
END

Call Q
END
Sub Q
だと思います

と、それは本題とは関係ないのでおいておくと、
変数のスコープの問題のようです。

PUBLIC A 
Cls
input A
Call Q
END
Sub Q

Select Case A=A
Case A=<29
print"青点"
Case A=>50
print"合格"
Case else
print"赤点"
End Select
End sub

とすれば一応動くようです(文法的に正しいかどうか知らない)
先ほどTiny Basic用のスコープに関する説明見つけたはずなのだが
どっかへ行ってしまった。

投稿日時 - 2007-06-19 11:46:59

お礼

回答ありがとうございます。
やってみましたがやっぱり青点とでてしまいます

投稿日時 - 2007-06-19 11:59:52

あなたにオススメの質問