Comments
Description
Transcript
補助資料1
薬品管理データベースの解説マニュアル この薬品管理データベースは,理科室での薬品管理の手助けとなることを目標に作成し ました。薬品を購入した際は「新規登録」で登録を行い,薬品名を入力すると保管の有無 等を「検索」し,数量の増減があった場合等は「修正」で変更することができます。 ①薬品の新規登録 新規登録ボタンをクリックし,薬品名,数量,分類,購入日を入力する。 整理番号は自動的に付番されるので入力不要。右下のボックスには保管場所等の コメントを入力する。 入力が終了したら決定ボタン をクリックするとワークシー トに反映される。 整理番号0001に塩酸が入力された - 補助資料 1 - 「新規」ボタンで引き続き入力できる 水酸化ナトリウムを追加入力 ②検索をするには 検索ボタンを押すと,ダイヤログボックスが開くので,検索したい薬品の名前を入力し OKを押すと検索結果が表示される。 検索したい薬品名を入力する 例 塩酸と入力 - 補助資料 2 - 塩酸が検索,表示された ③データ内容の修正をするには 修正ボタンで入力内容を変更したり追加することができる。 - 補助資料 3 - 実験ソフトウエアの作成法 基礎編 Visual Basic の起動 スタート~プログラム~Visual Basicでプログラムを起動します。 初期画面 ツールボックス フォーム ポインタ→ ツールボックス プロパティ ラベル→ ←ピクチャーボックス ←テキストボックス ←コマンドボタン ←オプションボタン ←リストボックス ツールボックスからボタンを貼り タイマー→ 付けてそこに命令(コード)を書 き込んでいきます - 補助資料 4 - 練習1 ボタンを押すとメッセージが表示されるプログラムの作成 ①ツールボックスからラベルとコマンドボタン(2つ)をフォームへ貼り付ける ②ラベル1のCaptionの「Label1」を削除する。 ③コマンドボタン1のCaptionに「表示」、コマンドボタン2のCaptionに「終了」と 入力する。 コマンド1をダブルクリックしてlabel1.Caption="表示の練習"等の文字を入力する。 - 補助資料 5 - 同様にコマンド2ボタンをダブルクリックして「END」と入力する。 「名前を付けて保存」でデスクトップに「練習1」などの名前を付けて保存する。 ツールバーの「実行」~「開始」で以下のようにプログラムが実行されます (または下のボタンでも可) 実行 停止 「表示」を押すと”表示の練習”と表示され「終了」ボタンでプログラムが終了 うまく表示されましたか? OKなら次のステップへ進んでください。 - 補助資料 6 - 練習2 画像を切り替えるプログラムの作成 新規に作成します。 名前は 練習2.frm で保存します。 ①「ファイル」~「新しいプロジェクト」~「標準EXE」でOKをクリック。 ②「ピクチャーボックス」を貼る。・・・Picture1(例 ハート) ③「プロパティ」のPictureの右端のボタンをクリックし、上の場所から 一つアイコンを選んで「開く」をクリックする。 もし上のフォルダが見つからない場合は、デジカメで撮った写真でも構いません。 拡張子が jpg やbmp のものならば使えます。 ④同様にもう一つピクチャーボックスを貼る。 ⑤コマンドボタンの ・・・Picture2(例 クラブ) Caption(名前)にそれぞれハートやクラブと書き込む。 ⑥コマンドボタンをクリックし、つぎのように入力する。 - 補助資料 7 - コードの解説 Private Sub Command1_Click() コマンドボタン1をクリックすると Picture1.Visible = True ピクチャー1を表示して Picture2.Visible = False ピクチャー2を表示しない End Sub Private Sub Command2_Click() コマンドボタン2をクリックすると Picture1.Visible = False ピクチャー1を表示しないで Picture2.Visible = True ピクチャー2を表示する End Sub 地球と雲を使った実行例 「地球」のボタンを押すと地球だけが表示される 練習: 「消える」のコマンドボタンをつけて,押すと絵が両方消えるようにしてください - 補助資料 8 - 練習3 線や円を描くプログラム 新しいフォームにつぎのようにボタンをつけてください。(ファイル名 練習3.frm) それぞれのコマンドボタンをダブルクリックし、以下のコードを書き込んで実行します。 コマンドボタンに入力するコード - 補助資料 9 - コードの解説 Private Sub Command1_Click() →「円を描く」ボタンをクリックすると。 Picture1.Circle (1000, 1000), QBColor(12), 50 →ピクチャーボックス1に 座標(1000,1000)を中心に半径50の 色コード12(黒)の円を描く End Sub Private Sub Command2_Click() →「四角形を描く」をクリックすると。 Picture1.Line (500, 500)-(1500, 1500), 12, B →ピクチャーボックス1の座標(500,500)から(1500,1500)まで色コード12 (黒)の線で B(四角形)を描く End Sub Private Sub Command3_Click() →「消す」をクリックすると。。 Picture1.Cls →ピクチャーボックス1の中を消去する End Sub 実行画面 「円を描く」をクリック カラーコード 「四角形を描く」をクリック QBColor( ) 0 黒 6 黄 12 明るい赤 1 青 7 白 13 明るいマゼンタ 2 緑 8 灰色 14 明るい黄 3 シアン 9 明るい青 15 明るい白 4 赤 10 明るい緑 5 マゼンタ 11 明るいシアン - 補助資料 10 - 練習4 ストップウオッチ Command1 Text1 Command2 Text2 Label1 (ラベル) Command3 Text3(テキスト) Timer(タイマー) 上のように貼り付けて、それぞれ名前を入れ、TEXT1~3のCaptionは消しておく 次にCommand1,2,3とTimerにそれぞれ以下のコードを書き込む。 タイマーをダブルクリックして 「Interval」を1000に変えておく - 補助資料 11 - 入力するコードとその解説 Dim t As Integer 時間の変数tを整数型で宣言 Private Sub Command1_Click() コマンドボタン1をクリックすると。。 Timer1.Enabled = True タイマーを動かし始める Text1.Text = Time テキスト1に現在の時間を表示 t = 0 時間経過tの初期値は0 Text2.Text = "" テキスト2にはまだ何も表示しない Text3.Text = "" テキスト3にはまだ何も表示しない End Sub Private Sub Command2_Click() Text2.Text = Time コマンドボタン2をクリックすると。。 テキスト2に現在の時間を表示 Text3.Text = Str(t) Timer1.Enabled = False テキスト3に経過時間を文字に変えて表示 タイマーを停止 End Sub Private Sub Command3_Click() End コマンドボタン3をクリックすると。。 プログラム終了 End Sub Private Sub Timer1_Timer() t = t + 1 End Sub 変数tに1秒に1ずつ加えていく (タイマーは1秒に1回づつ発生) プログラムが正常に動けばこのようにストップウオッチになります。 ここまで終了しましたら「応用編」へ進みます。。 - 補助資料 12 - 応用編 応用練習1 粒子の運動プログラムの作成 画面例:斜め上方に投げあげたボールが落下して跳ね返る様子が観察できます。 まず下のように「タイマー」「 ・ ピクチャーボックス」・4個の「コマンドボタン」を貼り 付けてください。貼り付けましたら,それぞれコードを入力してください. Timer (タイマー) PictureBox1(ピクチャーボックス) Command3 Command4 Commnad1 Command2 - 補助資料 13 - 入力するコードとその解説 Dim:変数の定義 Dim x,y・・・ x,y(xとyの座標)を定義 Dim vx,vy・・x,y方向の速度vx,vyを定義 Dim dt ・・・単位時間を定義 Dim g ・・・重力加速度を定義 コマンド1「始めから」をクリックすると →初期値をロードしてプログラム実行する コマンド2「終了」をクリックすると →シミュレーションを終了する コマンド3「運動スタート」をクリックすると →dtを0.04でプログラム実行 コマンド4「一時停止」をクリックすると →dt=0にして一時プログラムを一時停止する 初期設定 →「初期値」をロードする。g:重力加速度-9.8 始めの粒子の座標x,yをそれぞれ 4と465にする xの初速度を20,yの初速度を80とする 「タイマー」(プログラムの本体) Picture1.Cls →これを実行すると描いた円を消去する (もし消去しなければ軌跡を描く) vy=vy+g*dt →y軸方向の速度はgによる変化量g*dt を加えた大きさ(自由落下) x=x+vx*dt →dt時間後のx方向の位置 y=y-vy*dt →dt時間後のy方向の位置 If y>470 Then y=470 →下の壁についたらそこまでで停止 vy=-vy*0.6 →これを実行すると跳ね返る(係数0.6) Picture1.Circle(x,y),6,QBColor(11) → x,yを中心に半径6の円を色11で描く 色々な変数(パラメータ)を変えて動きを観察してみてください - 補助資料 14 - 応用練習2 分子運動プログラムの作成 2個の分子が互いに衝突しながら運動します。 温度が上がると分子運動が盛んになり、しきり(壁)を動かして体積を変化したと きの変化が理解できます。 Label2「絶対温度」 Label1はブランク Label3「K」 タイマー コマンドボタンの配置と記入: command1 「開始」 2 「終了」 3 「温度上げる」 4 「温度下げる」 5 「膨張」 6 「収縮」 真ん中に「ピクチャーボックス」、左上に「タイマー」を配置 「タイマー」がプログラムの本体です。 ピクチャーボックスの上にLabel1を配置し、Captionはブランク(消す)。 Label2 「絶対温度」と記入 Label3 「K」と記入 - 補助資料 15 - 入力するコードとその解説 Dim:変数の定義 x,y:x,y座標 v:速度 1,2:粒子1,粒子2 dt:単位時間 T:絶対温度 kabe:壁のx座標 コマンド1「開始」をクリックすると dt=0.3でプログラム実行 コマンド2「終了」をクリックすると 終了(END) コマンド3「温度上げる」をクリックすると 温度を上げる(T+20) コマンド4「温度下げる」をクリックすると 温度を下げる(T-20) ただしTの最小値は0 コマンド5「膨張」をクリックすると 壁を広げる(体積増加) コマンド6「収縮」をクリックすると 壁を狭める(体積減少) 初期設定 x1,y1,v2,y2 粒子1と粒子2の初めの位置の設定 v1,v2 粒子1と粒子2の初めの速度を設定 温度T=273,kabeの初めの位置300を設定 タイマー(プログラムの本体) 以下のプログラムは「タイマー」に続けて書き込む コードの解説 →Picture1.Cls 始めにピクチャー1の中をクリアーする コードの解説 '******** 温度による速度の変化処理 *********** n = (T / 273) ^ 0.5 →絶対温度による速度変化係数を求める Label1.Caption = T →ラベル1に絶対温度Tを表示 x1 = x1 + v1x * n * dt →dt時間後の粒子1のx座標(nに比例して変位) y1 = y1 + v1y * n * dt → 〃 粒子1のy座標( - 補助資料 16 - 〃 ) x2 = x2 + v2x * n * dt → 〃 粒子2のx座標( 〃 ) y2 = y2 + v2y * n * dt → 〃 粒子2のy座標( 〃 ) コードの解説 '******** 衝突したときの速度の入れ替え処理 ******** r = ((x1 - x2) ^ 2 + (y1 - y2) ^ 2) ^ 0.5 →粒子1と2の間の距離を求める If →粒子同士が接したら r < 20 * 1.1 Then v0x = v1x v1x = v2x v2x = v0x →粒子1と粒子2の速度を入れ替える v0y = v1y v1y = v2y v2y = v0y End If コードの解説 '******** 壁に衝突したときの処理 *********** If x1 < Picture1.ScaleLeft Then v1x = -v1x →箱の左側に衝突したら反転 If x1 > kabe - 12 Then x1 = kabe - 12: v1x = -v1x →壁に衝突したら反転 If y1 < Picture1.ScaleTop Or y1 > (Picture1.ScaleTop + Picture1.ScaleHeight) Then v1y =-v1y →箱の上か下に衝突したら反転 If x2 < Picture1.ScaleLeft Then v2x = -v2x If x2 > kabe - 12 Then x2 = kabe - 12: v2x = -v2x If y2 < Picture1.ScaleTop Or y2 > (Picture1.ScaleTop + Picture1.ScaleHeight) Then v2y =-v2y - 補助資料 17 - →粒子2についても同様に コードの解説 '***************** 作図 ******************** Picture1.Line (kabe, Picture1.ScaleTop)-(kabe + 5, Picture1.ScaleTop + Picture1. ScaleHeight), RGB(0, 200, 0), BF →壁(しきり)を緑色(RGB(0, 200, 0))で描く(BF) (座標がkabe,ピクチャー1の上端から厚さ5で下端までの間の塗りつぶし) Picture1.Circle (x1, y1), 10, RGB(200, 200, 0) →粒子1の円を半径10で黄色(RGB(200, 200, 0))で描く Picture1.Circle (x2, y2), 10, RGB(0, 200, 200) →粒子2の円を半径10でシアン色(RGB(0, 200, 200))で描く End Sub RGB関数による色の表現 色 赤(R) 緑(G) 青(B)) 黒 0 0 0 青 0 0 255 緑 0 255 0 0 255 0 255 0 0 255 0 255 黄 255 255 0 白 255 255 255 シアン 赤 マゼンタ 使用例 Picture1.BackColor=RGB(255,255,0) ピクチャー1の背景を黄色にする 以上で簡単な実験シミュレーションを作ることができました。 より高度なテクニックについては解説書等を参考に研究してみてください。 - 補助資料 18 -