190 likes | 280 Views
情報基礎実習 I ( 第 12 回). 木 曜4・5限 担当 :北川 晃. 例題: 10 人の点数の平均点. 10 人のテストの点数データをキーボードから 1 つずつ 入力 し,その平均点を計算して表示するプログラムを作れ.. 入力のためのフォーム ( InputBox 関数を使用). 10 人の点数の平均点:プログラム例. Label1 , Textbox1 , Button1 , 2 の貼り付け. Label1 に「ここにデータが表示されます」と入力. 10 人の点数の平均点:プログラム例(つづき).
E N D
情報基礎実習I(第12回) 木曜4・5限 担当:北川 晃
例題:10人の点数の平均点 10人のテストの点数データをキーボードから1つずつ 入力し,その平均点を計算して表示するプログラムを作れ. 入力のためのフォーム (InputBox関数を使用)
10人の点数の平均点:プログラム例 Label1,Textbox1, Button1,2の貼り付け Label1に「ここにデータが表示されます」と入力
10人の点数の平均点:プログラム例(つづき)10人の点数の平均点:プログラム例(つづき) Private Sub Button1_Click(sender As Object, e As EventArgs) … Dim goukei, n, ten As Integer : Dim heikin As Single goukei = 0 : Label1.Text = "入力データ"& vbLf For n = 1 To 10 ten = InputBox("点数を入力してください", "点数") Label1.Text = Label1.Text & Format(ten, "##0") goukei = goukei + ten Next n heikin = goukei / 10 TextBox1.Text = Format(heikin, "平均点は###.0点") End Sub Private Sub Button2_Click(sender As Object, e As EventArgs) … End End Sub
例題:多重ループ 2から20までの数について,1を除くすべての約数を ラベルに表示するプログラムを作れ.
多重ループ:プログラム例 Label1,Button1,2 の貼り付け
多重ループ:プログラム例(つづき) Private Sub Button1_Click(sender As Object, e As EventArgs) … Dim n, m As Integer Label1.Text = "" For n = 2 To 20 Label1.Text = Label1.Text & Format(n, "##の約数は:") For m = 2 To n If n Mod m = 0 Then Label1.Text = Label1.Text & Format(m, " ## ") End If Next m Label1.Text = Label1.Text & vbLf Next n End Sub Private Sub Button2_Click(sender As Object, e As EventArgs) … End End Sub nをmで割って,余りがゼロなら約数なので書き出す 次のnの評価に移る前に改行コードを入れる
例題:不定回数の繰り返し 1日目に1円,2日目に2円,…,n日目にはd=2n-1円の ように,毎日倍額を貯金するとする.ある金額tを読み 込んで,貯金の合計がtを超えるのは何日目で,その 時の合計金額がいくらになるか,表示するプログラム を作れ.
不定回数の繰り返し:プログラム例 Label1~3,Textbox1~3, Button1,2の貼り付け
不定回数の繰り返し:プログラム例(つづき)不定回数の繰り返し:プログラム例(つづき) Private Sub Button1_Click(sender As Object, e As EventArgs) … Dim n, d, t, sum As Integer t = Val(TextBox1.Text) n = 0 : d = 1 : sum = 0 Whilesum < t sum = sum + d d = d * 2 n = n + 1 End While TextBox2.Text = Format(n, "###") TextBox3.Text = Format(sum, "###,###,###") End Sub Private Sub Button2_Click(sender As Object, e As EventArgs) … End End Sub sumがtを超える まで繰り返す
例題:Subプロシージャによる並べ替え 3つの整数を入力し,これを小さい順に並べ替えて 表示するプログラムを作れ. • 考え方: • 二つの数a, bを入れ替えるSubプロシージャを作る. • Subプロシージャの中で並べ替えた変数を, • 主プログラムにどのように反映させるか?
Subプロシージャにおける仮引数の指定 Subプロシージャ(サブルーチン)は,主プログラムから 変数を引き渡されて動作する. … Sbrtn(a, b, c) … Sub Sbrtn(x, y, z) … End Sub • 引数の指定の仕方 • 値渡し (ByVal: Call by Value): • データのコピーが受け渡され, • Subプロシージャ内で仮引数の • 値を変更しても,実引数には影響を与えない. • 参照渡し(ByRef: Call by Reference): • データの参照先が受け渡され,Subプロシージャ内でデータを変更 • すると,参照先のデータも置き換えられ,同時に実引数も変更される. 仮引数
Subプロシージャにおける仮引数の指定(つづき)Subプロシージャにおける仮引数の指定(つづき) • 値渡し (ByVal: Call by Value): • 渡されて来るもの(プロシージャ側) • 与えるもの(呼び出し側) • 参照渡し(ByRef: Call by Reference): • 渡されて,加工して,返すもの(プロシージャ側) • 預けて,返ってきたら中身が加工されていたもの(呼び出し側) Sub Sbrtn(ByVal x As Integer, …) … End Sub 指定がない場合は, 値渡しとして扱われる Sub Sbrtn(ByRef x As Integer, …) … End Sub
Subプロシージャによる並べ替え:プログラム例Subプロシージャによる並べ替え:プログラム例 Label1, 2,Textbox1~6, Button1の貼り付け
Subプロシージャによる並べ替え:プログラム例(つづき)Subプロシージャによる並べ替え:プログラム例(つづき) Private Sub Button1_Click(sender As Object, e As EventArgs) … Dim a, b, c As Integer a = Val(TextBox1.Text) b = Val(TextBox2.Text) c = Val(TextBox3.Text) If a > b Then exchange(a, b) If a > c Then exchange(a, c) If b > c Then exchange(b, c) TextBox4.Text = a TextBox5.Text = b TextBox6.Text = c End Sub Sub exchange(ByRef a As Integer, ByRef b As Integer) Dim work As Integer work = a a = b b = work End Sub a, bが戻ってきたとき, 送ったa, bとは異なっている 参照渡し
課題:電卓のフォームアプリ作成 • 0~9および小数点のキーを備えていること. • ACキー(すべてを初期化する)を備えていること. • キー入力と連動したディスプレイを一つ以上備えていること. • 正の実数の四則演算ができること • (答えは負の数になる場合もある). • 追加要素の例: • 平方根 • クリアーキー • 正負変換
数字列の表示:応用 先の例題のプログラムを応用すれば, 簡単な電卓を作成することもできる. 製品として販売されている電卓を研究し, どのような動作をするか考えてみよう
電卓のフォームアプリ作成:ヒント • TextBoxに表示される数字の文字列を • 数字のデータに変えたり,また文字列に戻したり. • 四則演算をさせるためには,二つの数字を • 記憶させなければならない.どのボタンに, • どのタイミングで動作させるか. • 四則演算のボタンを押したとき,最後にイコール • キーを押すまで,どの演算を行うかをどうやって • 記憶しておくか • ボタンが多くなるので,それぞれの動作の • 関連付けを間違えないこと.