演習問題解答 練習 1.1 Label1.Text = Val(Label1.Text) + 2 練習 1.2 コントロールの追加 Private Sub Button2_Click( 省略 ) Handles Button2.Click Label1.Text = Val(Label1.Text) - 2 練習 2.1 TextBox3.Text = Val(TextBox1.Text) * Val(TextBox2.Text) / 2 1
練習 2.2 TextBox4.Text = (Val(TextBox1.Text) + Val(TextBox2.Text)) * Val(TextBox3.Text) / 2 練習 2.3 Dim r As Double r = Val(TextBox1.Text) TextBox2.Text = 4 * Math.PI * r ^ 2 TextBox3.Text = 4 * Math.PI * r ^ 3 / 3 2
練習 3.1 Dim a, b As Integer a = Val(TextBox1.Text) b = a Mod 2 If b = 0 Then TextBox2.Text = " 偶数 " Else TextBox2.Text = " 奇数 " 練習 3.2 Private Sub TextBox1_TextChanged( 省略 ) Handles TextBox1.TextChanged, TextBox2.TextChanged Dim a, b, c As Single a = Val(TextBox1.Text) b = Val(TextBox2.Text) c = (a - 100) * 0.9 If b > c * 1.2 Then TextBox3.Text = " ふとりすぎです " ElseIf b < c * 0.8 Then TextBox3.Text = " やせすぎです " Else TextBox3.Text = " ちょうどいい体重です " 3
練習 3.3 Private Sub RadioButton1_CheckedChanged( 省略 ) Handles RadioButton1.CheckedChanged, RadioButton2.CheckedChanged, RadioButton3.CheckedChanged If (RadioButton1.Checked = True) Then TextBox1.Text = 5000 ElseIf (RadioButton2.Checked = True) Then TextBox1.Text = 8000 ElseIf (RadioButton3.Checked = True) Then TextBox1.Text = 10000 練習 4.1 Private Sub TextBox1_TextChanged( 省略 ) Handles TextBox1.TextChanged Dim i, n, s As Integer n = Val(TextBox1.Text) s = 1 For i = 1 To n s = s * i Next TextBox2.Text = s 4
練習 4.2 Private Sub TextBox1_TextChanged( 省略 ) Handles TextBox1.TextChanged Dim i, s, limit As Integer limit = Val(TextBox1.Text) Do i = i + 1 s = i * (i + 1) * (i + 2) Loop While s <= limit TextBox2.Text = i TextBox3.Text = i + 1 TextBox4.Text = i + 2 TextBox5.Text = s 練習 4.3 Private Sub TextBox1_TextChanged( 省略 ) Handles TextBox1.TextChanged, TextBox2.TextChanged Dim i, j, s, n, m As Integer n = Val(TextBox1.Text) m = Val(TextBox2.Text) s = 0 For i = n To m For j = 1 To 9 s = s + i * j Next j TextBox3.Text = s 5
練習 5.1 コントロールの追加 Private Sub Button2_Click( 省略 ) Handles Button2.Click Dim i As Integer Dim j As Integer Dim n As Integer Dim work As Integer n = Val(TextBox3.Text) Dim a(n - 1) As Integer For i = 0 To n - 1 a(i) = Val(TextBox1.Lines(i)) For i = 0 To n - 2 For j = i + 1 To n - 1 If a(i) < a(j) Then work = a(i) a(i) = a(j) a(j) = work Next j TextBox2.Text = "" For i = 0 To n - 1 TextBox2.Text = TextBox2.Text & a(i) & vbcrlf 6
練習 5.2 コントロールの追加 Dim i, j, k, data(2, 5), work(2), heikinn(2) As Integer Dim simei(5), worksimei As String For i = 0 To 5 simei(i) = TextBox1.Lines(i) data(0, i) = Val(TextBox2.Lines(i)) data(1, i) = Val(TextBox3.Lines(i)) For i = 0 To 5 data(2, i) = data(0, i) + data(1, i) For i = 0 To 2 For j = 0 To 5 heikinn(i) = heikinn(i) + data(i, j) Next heikinn(i) = heikinn(i) / 6 Next TextBox5.Text = heikinn(0) TextBox6.Text = heikinn(1) TextBox7.Text = heikinn(2) For i = 0 To 4 For j = i + 1 To 5 If data(2, i) < data(2, j) Then worksimei = simei(i) simei(i) = simei(j) simei(j) = worksimei For k = 0 To 2 work(k) = data(k, i) data(k, i) = data(k, j) data(k, j) = work(k) Next Next 7
Next TextBox1.Text = "" TextBox2.Text = "" TextBox3.Text = "" TextBox4.Text = "" For i = 0 To 5 TextBox1.Text = TextBox1.Text & simei(i) & vbcrlf TextBox2.Text = TextBox2.Text & data(0, i) & vbcrlf TextBox3.Text = TextBox3.Text & data(1, i) & vbcrlf TextBox4.Text = TextBox4.Text & data(2, i) & vbcrlf 練習 5.3 Dim i, j, k As Integer Dim a(3, 3), b(3, 3), c(3, 3) As Double a(1, 1) = Val(TextBox1.Text) a(1, 2) = Val(TextBox2.Text) a(1, 3) = Val(TextBox3.Text) a(2, 1) = Val(TextBox4.Text) a(2, 2) = Val(TextBox5.Text) a(2, 3) = Val(TextBox6.Text) a(3, 1) = Val(TextBox7.Text) a(3, 2) = Val(TextBox8.Text) a(3, 3) = Val(TextBox9.Text) b(1, 1) = Val(TextBox10.Text) b(1, 2) = Val(TextBox11.Text) b(1, 3) = Val(TextBox12.Text) b(2, 1) = Val(TextBox13.Text) b(2, 2) = Val(TextBox14.Text) 8
b(2, 3) = Val(TextBox15.Text) b(3, 1) = Val(TextBox16.Text) b(3, 2) = Val(TextBox17.Text) b(3, 3) = Val(TextBox18.Text) For i = 1 To 3 For j = 1 To 3 c(i, j) = 0 For k = 1 To 3 c(i, j) = c(i, j) + a(i, k) * b(k, j) Next Next Next TextBox19.Text = c(1, 1) TextBox20.Text = c(1, 2) TextBox21.Text = c(1, 3) TextBox22.Text = c(2, 1) TextBox23.Text = c(2, 2) TextBox24.Text = c(2, 3) TextBox25.Text = c(3, 1) TextBox26.Text = c(3, 2) TextBox27.Text = c(3, 3) 練習 6.1 Dim n, s, a As Integer FileOpen(1, "data.txt", OpenMode.Input) n = 0 s = 0 Do Until EOF(1) Input(1, a) n = n + 1 s = s + a Loop TextBox1.Text = n TextBox2.Text = s / n 9
練習 6.2 Dim a, maxa As Integer Dim namae, maxnamae As String FileOpen(1, "data.txt", OpenMode.Input) maxnamae = "" maxa = 0 Do Until EOF(1) Input(1, namae) Input(1, a) If (a > maxa) Then maxnamae = namae maxa = a Loop TextBox1.Text = maxnamae TextBox2.Text = maxa FileClose() 練習 6.3 10
Public Structure seiseki <VBFixedString(12)> Public simei As String Public kokugo As Integer Public suugaku As Integer Public eigo As Integer End Structure Dim i As Integer Dim kojinseiseki As seiseki Dim fname As String SaveFileDialog1.ShowDialog() fname = SaveFileDialog1.FileName FileOpen(1, fname, OpenMode.Random,,, Len(kojinseiseki)) For i = 1 To 6 kojinseiseki.simei = TextBox1.Lines(i - 1) kojinseiseki.kokugo = Val(TextBox2.Lines(i - 1)) kojinseiseki.suugaku = Val(TextBox3.Lines(i - 1)) kojinseiseki.eigo = Val(TextBox4.Lines(i - 1)) FilePut(1, kojinseiseki, i) Next FileClose(1) Private Sub Button2_Click( 省略 ) Handles Button2.Click Dim i As Integer Dim kojinseiseki As seiseki Dim fname As String OpenFileDialog1.ShowDialog() fname = OpenFileDialog1.FileName FileOpen(1, fname, OpenMode.Random,,, Len(kojinseiseki)) TextBox1.Text = "" TextBox2.Text = "" TextBox3.Text = "" TextBox4.Text = "" For i = 1 To 6 FileGet(1, kojinseiseki, i) TextBox1.Text = TextBox1.Text & kojinseiseki.simei & vbcrlf TextBox2.Text = TextBox2.Text & kojinseiseki.kokugo & vbcrlf TextBox3.Text = TextBox3.Text & kojinseiseki.suugaku & vbcrlf TextBox4.Text = TextBox4.Text & kojinseiseki.eigo & vbcrlf FileClose(1) 11
練習 7.1 Dim simei(5) As String Dim data(5, 2) As Integer nyuuryoku(simei, data) keisan(data) narabikae(simei, data) hyouji(simei, data) Private Sub nyuuryoku(byref simei() As String, ByRef data(,) As Integer) Dim i As Integer For i = 0 To 5 simei(i) = TextBox1.Lines(i) data(i, 0) = Val(TextBox2.Lines(i)) data(i, 1) = Val(TextBox3.Lines(i)) Private Sub keisan(byref data(,) As Integer) Dim i As Integer For i = 0 To 5 data(i, 2) = data(i, 0) + data(i, 1) Private Sub narabikae(byref simei() As String, ByRef data(,) As Integer) Dim i, j, k, work As Integer Dim worksimei As String For i = 0 To 4 For j = i + 1 To 5 If data(i, 2) < data(j, 2) Then worksimei = simei(i) simei(i) = simei(j) simei(j) = worksimei For k = 0 To 2 12
work = data(i, k) data(i, k) = data(j, k) data(j, k) = work Next k Next j Private Sub hyouji(byref simei() As String, ByRef data(,) As Integer) Dim i As Integer TextBox1.Text = "" TextBox2.Text = "" TextBox3.Text = "" TextBox4.Text = "" For i = 0 To 5 TextBox1.Text = TextBox1.Text & simei(i) & vbcrlf TextBox2.Text = TextBox2.Text & data(i, 0) & vbcrlf TextBox3.Text = TextBox3.Text & data(i, 1) & vbcrlf TextBox4.Text = TextBox4.Text & data(i, 2) & vbcrlf 練習 7.2 Private Sub TextBox1_TextChanged( 省略 ) Handles TextBox1.TextChanged Dim a As Integer a = Val(TextBox1.Text) TextBox2.Text = hantei(a) Function hantei(byval a As Integer) As String If a >= 80 Then hantei = "A" ElseIf a >= 70 Then hantei = "B" ElseIf a >= 60 Then hantei = "C" Else 13
End Function hantei = "D" 練習 7.3 Private Sub TextBox1_TextChanged( 省略 ) Handles TextBox1.TextChanged, TextBox2.TextChanged, TextBox3.TextChanged Dim k, a As Double Dim n As Integer a = Val(TextBox1.Text) k = Val(TextBox2.Text) n = Val(TextBox3.Text) TextBox4.Text = fukuri(a, k, n) Function fukuri(byval a As Double, ByVal k As Double, ByVal n As Integer) As Integer Dim i As Integer For i = 1 To n a = a * (1 + k / 100) fukuri = a End Function 14
練習 8.1 PictureBox1 Dim a As Graphics = PictureBox1.CreateGraphics() Dim i As Integer For i = 0 To 330 Step 30 a.drawpie(pens.red, 0, 0, 100, 100, i, 30) 練習 8.2 PictureBox1 Dim a As Graphics = PictureBox1.CreateGraphics() Dim i, xs, xc As Integer Dim s As Double 15
For i = 0 To 720 s = i / 360 * 2 * Math.PI xs = -50 * (Math.Sin(s) + 1 / 3 * Math.Sin(3 * s) + 1 / 5 * Math.Sin(5 * s)) + 60 a.fillrectangle(brushes.red, i, xs, 2, 2) 練習 8.3 PictureBox1 PictureBox2 Dim fname As String OpenFileDialog1.Filter = "Bitmap Image *.bmp JPeg Image *.jpg Gif Image *.gif" OpenFileDialog1.ShowDialog() fname = OpenFileDialog1.FileName Dim bmap As Bitmap = New Bitmap(fname) PictureBox1.Image = bmap PictureBox2.Size = PictureBox1.Size Private Sub Button2_Click( 省略 ) Handles Button2.Click Dim fname As String OpenFileDialog1.Filter = "Bitmap Image *.bmp JPeg Image *.jpg Gif Image *.gif" OpenFileDialog1.ShowDialog() fname = OpenFileDialog1.FileName Dim bmap As Bitmap = New Bitmap(fname) PictureBox2.Image = bmap Private Sub Button3_Click( 省略 ) Handles Button3.Click Dim bmpa As Bitmap = PictureBox1.Image Dim bmpb As Bitmap = PictureBox2.Image 16
Dim iroa As Color Dim irob As Color Dim heikin As Integer Dim i As Integer Dim j As Integer For i = 0 To PictureBox1.Image.Width - 1 For j = 0 To PictureBox1.Image.Height - 1 iroa = bmpa.getpixel(i, j) heikin = Int((Val(iroa.R) + Val(iroa.G) + Val(iroa.B)) / 3) If (heikin < 255) Then bmpb.setpixel(i, j, iroa) Next Next PictureBox2.Image = bmpb Private Sub Button4_Click( 省略 ) Handles Button4.Click Dim fname As String SaveFileDialog1.Filter = "Bitmap Image *.bmp" SaveFileDialog1.ShowDialog() fname = SaveFileDialog1.FileName Dim bmap As Bitmap bmap = PictureBox2.Image bmap.save(fname) 17
練習 9.1 サイコロの絵を描く PictureBox1 PictureBox2 PictureBox3 PictureBox4 PictureBox5 PictureBox6 PictureBox の BorderStyle を FixedSingle に変更 PictureBox1.Image にサイコロの1の絵 PictureBox2.Image にサイコロの2の絵 PictureBox3.Image にサイコロの3の絵 PictureBox4.Image にサイコロの4の絵 PictureBox5.Image にサイコロの5の絵 PictureBox6.Image にサイコロの6の絵を設定 (Image というプロパティ名をクリックするとボタンが表示されますので そのボタンをクリックして画像ファイルを指定する ) 全ての PictureBox を重ねる Dim a As Integer PictureBox1.Visible = False PictureBox2.Visible = False PictureBox3.Visible = False PictureBox4.Visible = False PictureBox5.Visible = False 18
PictureBox6.Visible = False a = Int(Rnd() * 6) + 1 If a = 1 Then PictureBox1.Visible = True If a = 2 Then PictureBox2.Visible = True If a = 3 Then PictureBox3.Visible = True If a = 4 Then PictureBox4.Visible = True If a = 5 Then PictureBox5.Visible = True If a = 6 Then PictureBox6.Visible = True 練習 9.2 モグラの穴とモグラの絵を描く PictureBox1 PictureBox3 PictureBox5 PictureBox7 PictureBox9 PictureBox11 PictureBox2 PictureBox4 PictureBox6 PictureBox8 PictureBox10 PictureBox12 Enabled を True Interval を 700 に変更 19
PuctureBox7 ~ PictureBox12 を PuctureBox1~PictureBox6 に重ねる Dim a As Integer Dim pic(6) As PictureBox Private Sub Form1_Load( 省略 ) Handles MyBase.Load Dim i As Integer pic(1) = PictureBox7 pic(2) = PictureBox8 pic(3) = PictureBox9 pic(4) = PictureBox10 pic(5) = PictureBox11 pic(6) = PictureBox12 For i = 1 To 6 pic(i).visible = False AddHandler pic(i).click, AddressOf PictureBox_Click Randomize() a = Int(Rnd() * 6) + 1 pic(a).visible = True Private Sub PictureBox_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Label1.Text = Val(Label1.Text) + 1 Private Sub Timer1_Tick( 省略 ) Handles Timer1.Tick pic(a).visible = False a = Int(Rnd() * 6 + 1) pic(a).visible = True 20
練習 9.3 Enabled を True Interval を 700 に変更 Dim f1 As Integer Dim f2 As Integer Dim f3 As Integer Private Sub Form1_Load( 省略 ) Handles MyBase.Load Randomize() Private Sub Button4_Click( 省略 ) Handles Button4.Click Label1.Text = Val(Label1.Text) - 1 f1 = 1 f2 = 1 f3 = 1 If (f1 = 1) Then f1 = 0 hantei() Private Sub Button2_Click( 省略 ) Handles Button2.Click If (f2 = 1) Then f2 = 0 hantei() 21
Private Sub Button3_Click( 省略 ) Handles Button3.Click If (f3 = 1) Then f3 = 0 hantei() Private Sub hantei() If (f1 = 0 And f2 = 0 And f3 = 0) Then If (TextBox1.Text = TextBox2.Text And TextBox1.Text = TextBox3.Text) Then Label1.Text = Label1.Text + 50 If (TextBox1.Text = 7) Then Label1.Text = Label1.Text + 50 If (TextBox4.Text = TextBox5.Text And TextBox4.Text = TextBox6.Text) Then Label1.Text = Label1.Text + 50 If (TextBox4.Text = 7) Then Label1.Text = Label1.Text + 50 If (TextBox7.Text = TextBox8.Text And TextBox7.Text = TextBox9.Text) Then Label1.Text = Label1.Text + 50 If (TextBox7.Text = 7) Then Label1.Text = Label1.Text + 50 If (TextBox1.Text = TextBox5.Text And TextBox1.Text = TextBox9.Text) Then Label1.Text = Label1.Text + 50 If (TextBox1.Text = 7) Then Label1.Text = Label1.Text + 50 If (TextBox3.Text = TextBox5.Text And TextBox3.Text = TextBox7.Text) Then Label1.Text = Label1.Text + 50 If (TextBox3.Text = 7) Then Label1.Text = Label1.Text + 50 Private Sub Timer1_Tick( 省略 ) Handles Timer1.Tick If (f1 = 1) Then TextBox1.Text = Int(Rnd() * 9) TextBox4.Text = Int(Rnd() * 9) TextBox7.Text = Int(Rnd() * 9) 22
If (f2 = 1) Then TextBox2.Text = Int(Rnd() * 9) TextBox5.Text = Int(Rnd() * 9) TextBox8.Text = Int(Rnd() * 9) If (f3 = 1) Then TextBox3.Text = Int(Rnd() * 9) TextBox6.Text = Int(Rnd() * 9) TextBox9.Text = Int(Rnd() * 9) 23