ねぇもりさん、世界のナベアツって知ってる?
もり
?!?!ごめん、知らないなぁ
1から100まで数えて「3の倍数」と「3が付く数字」の時にAho!っていうゲームだよ
もり
へぇ~!まるでプログラミングのお題みたいだね!書いてみよう
スポンサーリンク
世界のナベアツとは?
1~100までの数字を順番に出力して、最後に「オモロー!」と出力する
ただし、下記のいずれかの場合は「Aho」と出力する
- 3の倍数
- 3が付く数字
このお題で学べること
✔ For~Nextステートメントによるループ処理
✔ Mod関数…割り算の「余り」を求める
✔ Str関数…数値型を文字列型に変換する
✔ Instr関数…文字列の中に、指定の文字が存在するか検索する
1~100までの数字を順番に出力する
これはFor文を使えばいいんだよね
数値型の変数numを宣言して、1~100まで処理を繰り返します。
1 2 3 4 |
Dim num As Long For num = 1 To 100 '処理 Next num |
「3の倍数」と「3が付く数字」を判定する
3の倍数を判定する
3の倍数は、3,6,9,12・・・ですね。
もり
Mod関数を使って余りをチェックするよ
1 2 3 |
If num Mod 3 = 0 Then '処理 End If |
3が付く数字を判定する
これは2種類ありますね。
- 下一桁が3の数字(3,13,23,33・・・)
- 30番台の数値(30~39)
文字列だったら〇〇が含まれてるか?って判定できそうだけど、数字でも判定できるの?
もりさん
そう!Str関数で数字型を文字列型に変換してから判定するよ
つぎに、文字列に”3″が含まれているかをチェックするためにInstr関数を使用します。
Instr(“あいうえお”, “う”) と書いた場合、“う”は3文字目に登場するので、3が戻ります。
Instr(“あいうえお”, “か”) と書いた場合、0が戻ります。検索対象の文字列”あいうえお”に、“か”が存在しないからです。
この特徴を使用して判定します。
- 0(ゼロ)である=検索文字列は存在しない
- 0より大きい=検索文字列が存在する
Instr関数とstr関数を組み合わせたコードがこちら。
1 2 3 |
If InStr(Str(num), "3") > 0 Then '処理 End If |
ここまでのまとめ
Or で結合するんだよね!
もし、「3の倍数」または「3が付く数字」の場合、Ahoと出力する
そうでなければ、数字を出力する
1 2 3 4 5 6 |
'3の倍数、または、3を含む数値 If num Mod 3 = 0 Or InStr(Str(num), "3") > 0 Then Debug.Print "Aho" Else Debug.Print num End If |
もり
あとは、この処理をFor文の中に入れて完成だね!
最後に「オモロー!」を忘れずに
最後に「オモロー!」を忘れずに
世界のナベアツコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Sub 世界のナベアツ問題() Dim num As Long For num = 1 To 100 '3の倍数、または、3を含む数値 If num Mod 3 = 0 Or InStr(Str(num), "3") > 0 Then Debug.Print "Aho" Else Debug.Print num End If Next num Debug.Print "オモロー!" '最後に End Sub |
もり
は~い、よくできました~!
スポンサーリンク
スポンサーリンク