1.Ifブロック | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
【問題】
「1+2+3+4+5+6+7+8+9+10」の答えを入力してもらい、その答えを下の表と照らし合わせて結果を表示するプログラムを作ってみよう。
| |||||||||||||||
【解答例】
#console Dim a As Long Input "1+2+3+4+5+6+7+8+9+10=",a '問題の出し方はどのようにしても構いません If 45<=a And a<55 Then '2004年3月23日訂正(上の間違えのように複数の演算子によって一括して条件を指定することはできません。下も同じです。)
Beep
ElseIf a=55 Then
Print "おしい。もう少し上だよ。" Print "お見事!ひょっとして天才?"
ElseIf 55<a And a<=65 Then '2004年3月23日訂正
Beep
Else
Print "おしい。もう少し下だよ。"
Beep
EndIfPrint "よーく考えよー。計算大事だよ。" Sleep(3000) End | |||||||||||||||
【解説】
Ifブロックを使うときに大事なのことは、
「場合分けに必要な条件とそのときに行う動作をきちんと把握しておく」ことです。
今回の場合は、まず入力された値をきちんと場合分けできるか(条件式はきちんと作れましたか?)、
そしてそれぞれの条件に合った適切な文字を表示させれるかが重要なポイントになっています。
特に「それ以外」というところは、最後にElseを使うことに注意してください。
|
2.Whileループ |
---|
【問題】
数字を2つ入力してもらい、その和の数だけ「*」を表示させるプログラムを作ってみよう。
但し2つの数字の和が100を超えていたら「*」を100個表示した後に、
「これ以上は表示できません。」と表示するようにしましょう。
|
【解答例】
#console
Dim a As Long Dim b As Long Dim i As Integer Input "数字を2つ、コンマで区切って入力してください。",a,b While i<100 and i<a+b '始めにi=1を代入しておいてi<=100,i<=a+bにするのも可
Print "*"; '横に「*」並べるのなら最後に「;」をつけましょう
WEndi=i+1 If a+b>100 Then Print "これ以上は表示できません。"
EndIfSleep(3000) End |
【解説】
「Whileループ」のポイントは「いつループを抜けるか」ということです。
この場合「*」を表示させるためにWhileを使っていますが、
抜けるタイミングは「ループを100回繰り返した(101回目をやろうとしている)」ときか、
「ループを2つの数の和のぶん繰り返した」ときかのどちらかです。
そのタイミングを判断するために「変数i」を使っていますが、
重要なのは「i=i+1」を忘れないことです。
これを忘れるといつまで経ってもプログラムが終わりません。
あと和が100以上のときのメッセージもお忘れなく。
|
3.Doループ |
---|
【問題】
ユーザーに、「0」を打つまで数字を何回も入力してもらい、
ユーザーが「0」を入力したら、今まで打ってきた数字の総計を表示するプログラムを作ってみよう。
|
【解答例】
#console Dim a As Long Dim b As Long Print "数字を入力してください。但し0を入力すれば終わります。" Do
Input a
Loop Until a=0b=b+a Print b Sleep(3000) End |
【解説】
DoループもWhileループと同じように「いつループを抜けるか」がポイントになります。
しかしDoループにはWhileループの注意点に加え、Untilを使うかWhileを使うかを判断するというところもポイントです。
今回は「入力された数が0になるまで」なのでUntilを使います。
もし「入力された数が0である間」ならば、Whileを使います。
|
4.Forループ |
---|
【問題】
100までの数の中で、2の倍数でも3の倍数でもない数のみ表示するプログラムを作ってみよう。
ただし、Continueを使ってください。
|
【解答例】
#console Dim i As Long For i=1 To 100 '"Step 1"を書いてもOK
If (i Mod 2=0) Or (i Mod 3=0) Then
Next
Continue
EndIfPrint i Sleep(3000) End |
【解説】
ポイントは「Forループを正しく使えるか」「Continueを正しい位置に使えるか」の2つです。
Forループはとにかく形を覚えることです。これさえできればあとはWhileループなどよりも簡単に使えるようになります。
問題はContinueのほうで結構難しいかと思います。
原則はとにかく「もっとも内側のループの残りをすっ飛ばしてそのループの始めに戻る」です。
もし今何を言っていたのか不安な人はもう一回lesson1-2-4[2]を見て確認してください。
それでも分からないときは気軽に掲示板で質問してください。
|
5.SelectCaseブロック |
---|
【問題】
「1+1」という問題を出し、「2」と答えたら「正解」、「1」もしくは「3」と答えた場合は「おしい」、
その他を答えた場合は「残念」と表示するプログラムを作ってみよう。
ただし結果は入力された場所から2行下(=1行間を空けて)表示するようにしてください。
|
【解答例】
#console Dim a As Long Input "1+1=",a Locate 0,2 SelectCase a
Case 2
EndSelect
Print "正解"
Case 1
Print "おしい"
Case 3
Print "おしい"
Case Else
Print "残念"
Sleep(3000) End |
【解説】
SelectCaseで注意することはIfブロックとほぼ同じです。
つまり「場合分けに必要な値とそのときに行う動作をきちんと把握しておく」です。
この場合は「入力された値をどのように場合分けするか」「それぞれの場合にどのメッセージを表示するか」の2点です。
またSelectCaseブロックではElseが特殊なのできちんと理解しておきましょう。
|