○簡単な問題をプログラミングしてみよう
年齢を計算するプログラムを少し手直ししてみよう。
出力をさせてみよう
今年(西暦)と自分の生まれた年(西暦)から今年何歳になるのかその年齢を計算するプログラムを既に作成済み。
このプログラムでは残念ながら折角計算させた年齢は全く表示されていなかった。
それは計算結果を表示せよという命令をプログラミングしていなかったからである。
そこで、計算結果を出力するプログラムに変更してみよう。
出力の方法は、
ラベル・コントロールのCaptionプロパティを使う方法
を利用してみよう。
まずしなければいけないのは、ラベル・コントロールをフォームに配置しておく必要がある。
そして、出力させる命令を考えてみよう。
今、フォームに置いてあり計算結果の年齢を表示させたいラベルの名前が「Label1」という名前であったとする。
このとき、このラベルに変数「a」に保存されている内容を表示させたいのであれば、
Label1.Caption = a
という命令をすればよい。なお、大文字・小文字及びスペースは勝手にVBが変えてしまうので、気にしないこと。
次に、この命令をプログラムのどこに書けばよいのかを考えよう。
少なくとも変数「a」に結果が代入された後でなければ、出力しても仕方がないですよね。
出力は複数可能である。
上記では計算結果しか表示されないが、今年、生まれた年も表示させてみよう。
表示させる個数分だけ、ラベル・コントロールをフォームに貼り付けておく必要がある。
なお、ラベル・コントロールを複数フォームに置く場合、既においたラベルをコピー&ペーストせず、ツールボックスから1回1回貼り付けるようにしよう。
入力をさせてみよう
今年の年齢を計算するプログラムでは、たとえば「1987」年生まれの人専用のプログラムである。
つまり、生まれた年が違う(1987年以外に生まれた人)場合は利用できない。
勿論プログラムを修正すればよいが、基本的には利用者はプログラムを変更することはできない。
では何年生まれの人でも対応できるようにプログラムを変更してみよう。
InputBox()関数を利用
すると、プログラム実行時に利用者(ユーザ)から数値などを入力してもらうことができる。
入力命令は、
t = Val( (InputBox("please input your born-year") )
などのようにすればよいはずですよね。
この行が実行されると、まず「=」代入命令であるので、右側が実行される。右側のInputBox()関数は、("")内のメッセージを伴ったダイアログボックス(ウィンドウ)が表示され、そこにユーザが数値などを入力できるようになっている。
ユーザが入力をすると、その数値などが関数全体と置き換わるというような動作をする。たとえばユーザが「1987」と入力したとすると、
t = 1987
と同等となる。そして、代入命令が働き、tという変数にその数値が代入される。
では、実際にはプログラム全体としてどのようにすればよいであろうか。
じっくりと考え、プログラムを修正し、実行して確かめてみよう。
アルゴリズムを少しだけ複雑に:昭和年号に対応させてみよう。
VBにおいて、変数、代入、演算、入出力などの文法は理解できたでしょうか。
またプログラムの組み立て方についても大丈夫ですか。
先のプログラムでは、
「今年(西暦)と自分の生まれた年(西暦)を実行時に入力してもらい、
今年何歳になるのかその年齢を計算するプログラム」
であった。
では、次に西暦ではなく、昭和年号に対応したプログラムに作り変えてみよう。
まず、どのように解決すべきなのかそのアルゴリズムをじっくりと考えてみよう。
パズルやクイズ・推理と似ていて、論理的にきちんと考えること。
問題としては、ユーザが生まれた年を入力する際に、西暦ではなく、昭和で入力してもらうことが前提となる。
但し、「昭和60」などのような入力ではなく、単に「60」というように数値のみを入力してもらう。
よって、西暦でも昭和でも計算できるのではなく、昭和のみが計算できるように変更をする。
たとえば昭和「60」年生まれの人は、2004年に何歳になるのか、その計算方法を考える必要がある。
コンピュータはプログラマーが作ってくれたプログラムをそのまま実行するだけであり、計算方法つまりアルゴリズムそのものは人間が考えなければいけない。ちょっと数学っぽくなるが、
昭和t年生まれの人が、西暦k年に何歳になるのか?
を人間がまず解けるように考えて、それをプログラムにする必要がある。
教科書参照対象:
特になし(今までの範囲全般)
[
「A班」プログラミング基礎のTopに戻る
]