木曜日, 9月 10, 2020

TCDW6695 
四六時中考えているとムチャやる

受けた仕事は出来るだけ前倒しで処理するようにしているのですが、処理中に色々変更する事も多く、例えば、完成した原稿などを締め切りがまだあるので全部書き換えてしまうこともあります。意外な発見と新しいやり方を見付けたりしたときがそれです。四六時中考えているとムチャやってしまいますね。

水曜日, 9月 09, 2020

Visual Studio Basic_18 
PictureBoxで画像表示と切り替え

BMI判定の簡単なプログラムで、PictureBoxで画像を表示し、予め隠してある画像と差し替えてみます。

VS Basicを起動したら[新しいプロジェクトの作成]にて新規プログラム作成モードに入ります。最初にTextBox2つ、Button3つ、Label5つ、PictureBox3つを配置します。

プロパティーにて文字やパーツのサイズを調整して上の様なレイアウトとしました。次にソースです。TextBox1、2とLabel4の文字サイズは12ポイントとしています。

次にPictureBox2と3に画像を配置する手順は・・・

プロパティーの表示をクリックしてローカルリソースから指定します。ここではPictureBox2と3にそれぞれ指定しました。なお、指定直後はサイズが合致していないので左上の一部分しか表示されません。画像を最初に設定しないPictureBox1も含めて全てのPictureBoxは、プロパティーの動作のSizeModeにてStretchImageを指定します。

で、実際のソースは・・・

「-----------------」は区切り線なので記述の必要はありません。
青字は自動入力部分で修正の必要はありません。
黒字が入力部分です。
赤字はコメント文なので記述の必要はありません。

-----------------
Public Class Form1
    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
        Dim height, weight, standard As Single
   ' height, weight, standardは単精度浮動小数点型変数
        PictureBox2.Visible = False
        PictureBox3.Visible = False
   ' プログラム起動時、PictureBox2と3は非表示
        height = Val(TextBox1.Text)
   ' TextBox1の値を数値変換してheightに代入
        weight = Val(TextBox2.Text)
   ' TextBox2の値を数値変換してweightに代入
        standard = (height - 100) * 0.9
   ' heightから100を引いて0.9倍した値をstandardに代入
        If weight >= standard * 1.1 Then
            Label4.ForeColor = Color.Red
            Label4.Font = New Font("MS UI Gothic", 12, FontStyle.Bold)
            Label4.Text = "太りすぎです"
            PictureBox1.Image = PictureBox3.Image
            PictureBox1.Visible = True
   ' もしweightがstandardを1.1倍した値以上であれば
   ' Label4の文字を12pointのMS UI Gothicにし
   ' 赤の太字で「太りすぎです」を表示
        Else
            Label4.ForeColor = Color.Blue
            Label4.Font = New Font("MS UI Gothic", 12, FontStyle.Bold)
            Label4.Text = "標準です"
            PictureBox1.Image = PictureBox2.Image
            PictureBox1.Visible = True
   ' それ以外ならば
   ' Label4の文字を12pointのMS UI Gothicにし
   ' 青の太字で「標準です」を表示
        End If
    End Sub
-----------------
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        End
   ' プログラム終了
    End Sub
-----------------
    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        TextBox1.ResetText()
        TextBox2.ResetText()
        Label4.ForeColor = Color.Empty
        Label4.ResetText()
        PictureBox1.Image = Nothing
   ' TextBox1と2、Label4、PictureBox1をリセット
    End Sub
End Class
-----------------

ソース記述中にエラーがなければデバッグです。

起動時にPictureBox2と3は非表示です。最初に身長を入力。

続けて体重を入力すれば太り過ぎか標準かを表示します。

ちなみに、ここで痛恨のミス・・・。痩せすぎの処理を忘れていました。

Visual Studio Basic 2019

TCDW6694 
全然涼しくならない今日この頃

少しホラー系にシフト。でも全然涼しくならない今日この頃。しかし、このままマスク生活で年越ししてしまいそうですね。まっ、年内に元の生活に戻る何て誰も思っていないでしょうけれど・・・。

火曜日, 9月 08, 2020

Visual Studio Basic_17 
Ifステートメントによる分岐処理

IFステートメントで入力データ毎に表示を変えるプログラムを成績評価で行ってみました。

VS Basicを起動したら[新しいプロジェクトの作成]にて新規プログラム作成モードに入ります。最初にTextBox1つ、Button3つ、Label5つを配置します。

プロパティーにて文字やパーツのサイズを調整して上の様なレイアウトとしました。次にソースです。TextBox1とLabel4の文字サイズは12ポイントとしています。

で、実際のソースは・・・

「-----------------」は区切り線なので記述の必要はありません。
青字は自動入力部分で修正の必要はありません。
黒字が入力部分です。
赤字はコメント文なので記述の必要はありません。

-----------------
Public Class Form1
    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
        Dim genkoku As Integer
    ' genkokuは整数型変数
        genkoku = Val(TextBox1.Text)
    ' TextBox1に入力した文字を数値変換してgenkokuに代入
        If genkoku >= 80 Then
            Label4.Text = "優合格"
    ' genkokuが80以上であればLabel4に「優合格」を表示
        ElseIf genkoku >= 60 Then
            Label4.Text = "良合格"
     ' genkokuが60以上であればLabel4に「良合格」を表示
       Else
            Label4.Text = "不合格"
     ' どちらにも該当しない場合はLabel4に「不合格」を表示
        End If
    End Sub
-----------------
    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        TextBox1.ResetText()
        Label4.ResetText()
     ' TextBox1とLAbel4をクリア
    End Sub
-----------------
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        End
     ' プログラム終了
    End Sub
End Class
-----------------

ソース記述中にエラーがなければデバッグです。

テストの点を入力して判定ボタンをクリック

設定どおりで動作。処理であれば完成です。

更に細分化する場合は以下の様に記述します。
-----------------
Public Class Form1
    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
        Dim genkoku As Integer
    ' genkokuは整数型変数
        genkoku = Val(TextBox1.Text)
    ' TextBox1に入力した文字を数値変換してgenkokuに代入
        If genkoku >= 90 Then
            Label4.Text = "S合格"
    ' genkokuが90以上であればLabel4に「S合格」を表示
        ElseIf genkoku >= 80 Then
            Label4.Text = "A合格"
     ' genkokuが80以上であればLabel4に「A合格」を表示
        ElseIf genkoku >= 70 Then
            Label4.Text = "B合格"
     ' genkokuが70以上であればLabel4に「B合格」を表示
        ElseIf genkoku >= 60 Then
            Label4.Text = "C合格"
     ' genkokuが60以上であればLabel4に「C合格」を表示
       Else
            Label4.Text = "不合格"
     ' どちらにも該当しない場合はLabel4に「不合格」を表示
        End If
    End Sub
-----------------
Visual Studio Basic 2019

TCDW6693 
もしかして夢の中にもモブキャラ

夢の中に出てくる人で、誰だか分からない人は何を意味しているのだろう。もちろん夢から覚めて気が付くのですが・・・。もしかして夢の中にもモブキャラ?

月曜日, 9月 07, 2020

modoの基本26 
バネの作成は回転体とカウント数















TCDW6692 
教室が解らずに走り回っている夢

6階建ての古い校舎で味わいのある謎の学校にて、授業をするための教室が解らずに走り回っている夢を見ました。意味不明です。全てが初めて観る空間ばかりで本当に謎でした。そんなことより授業に遅れる〜と全力疾走でグタグタになったところで目が覚めました。

日曜日, 9月 06, 2020

Visual Studio Basic_16 
Select Caseによる分岐処理

Select Caseステートメントによる分岐処理で所得税の計算をしてみます。なお、ステートメントとは キーワード、演算子、変数、定数、および式を含めることができる完全な命令です。 各ステートメントは、次のいずれかのカテゴリに属す。

●宣言ステートメント。変数、定数、またはプロシージャの名前を指定。
●実行可能なステートメント。アクションを開始。 これらのステートメントでは、メソッドまたは関数を呼び出し、コードのブロックをループまたは分岐する。

条件分岐が4つ以上の場合はIFを使うよりもSelect Caseの方がソースも分かり易くて便利。

VS Basicを起動したら[新しいプロジェクトの作成]にて新規プログラム作成モードに入ります。最初にTextBox1つ、Button2つ、Label3つを配置します。

プロパティーにて文字やパーツのサイズを調整して上の様なレイアウトとしました。次にソースです。TextBox1とLabel3の文字サイズは12ポイントとしています。

で、実際のソースは・・・

「-----------------」は区切り線なので記述の必要はありません。
青字は自動入力部分で修正の必要はありません。
黒字が入力部分です。
赤字はコメント文なので記述の必要はありません。

-----------------
Public Class Form1
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim kazeigaku, shotokuzei As Long
      ' kazeigaku(課税所得), shotokuzei(所得税)は長整数型変数
        kazeigaku = Val(TextBox1.Text)
      ' TextBox1に入力した文字を数値変換してkazeigakuに代入
        Select Case kazeigaku
            Case 1000 To 1950000
                shotokuzei = kazeigaku * 0.1
      ' 課税所得が1000〜1950000の時の所得税額は
      ' 課税所得×10%
            Case 1950001 To 3300000
                shotokuzei = kazeigaku * 0.1 - 97500
       ' 課税所得が195001〜3300000の時の所得税額は
       ' 課税所得×10% − 97500
           Case 3300001 To 6950000
                shotokuzei = kazeigaku * 0.2 - 427500
         ' 課税所得が3300001〜695000の時の所得税額は
         ' 課税所得×20% − 427500
         Case 6950001 To 9000000
                shotokuzei = kazeigaku * 0.33 - 636000
         ' 課税所得が695001〜9000000の時の所得税額は
         ' 課税所得×10% − 636000
            Case 9000001 To 18000000
                shotokuzei = kazeigaku * 0.4 - 1536000
          ' 課税所得が9000001〜18000000の時の所得税額は
          ' 課税所得×33% − 1536000
           Case 18000001 To 40000000
                shotokuzei = kazeigaku * 0.45 - 2796000
            ' 課税所得が18000001〜40000000の時の所得税額は
            ' 課税所得×40% − 2796000
          Case Else
                shotokuzei = kazeigaku * 0.45 - 4796000
            '上のいずれにも該当しない場合は
            ' 所得税額 = 課税所得×45% − 4796000
        End Select
        If kazeigaku < 1000 Then
            Label3.Text = "¥0"
            ' 課税所得が1000以下の場合はLabel3に「¥0」 を表示
        Else
            Label3.Text = Format(shotokuzei, "\\###,###,###,###")
            ' 所得税額の表示形式を指定
        End If
    End Sub
-----------------
    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
            ' Button3がクリックされたら終了
        End
    End Sub
End Class
-----------------

ソース記述中にエラーがなければデバッグです。

課税対象額が1億円の場合・・・

所得税は40,204,000円となるそうです。所得税ぐらいは一度でもいいから稼ぎたいですね。

Visual Studio Basic 2019

TCDW6691 
ほんといい加減にしてほしいです

昨日は、近隣マンションの屋上で昼間っからビール片手に馬鹿騒ぎ・・・ほんといい加減にしてほしいです。温和しくしていることは容認ではないのが解らないのでしょうね。

土曜日, 9月 05, 2020

Visual Studio Basic_15 
カレンダー表示と閏年設定

カレンダー表示と閏年設定について簡単に整理してみました。

VS Basicを起動したら[新しいプロジェクトの作成]にて新規プログラム作成モードに入ります。最初にTextBox3つ、Button2つ、Label2つを配置します。

プロパティーにて文字やパーツのサイズを調整して上の様なレイアウトとしました。次にソースです。TextBox1、2の文字サイズは12ポイントとしています。

ところで、ソース中のcal(36)は何故36か?
1週間は7日。日曜日から始まると最後は土曜日。土曜日が1日の月の場合はCal(6)。そのまま31日まで進むとCal(36)というわけです。

「-----------------」は区切り線なので記述の必要はありません。
青字は自動入力部分で修正の必要はありません。
黒字が入力部分です。
赤字はコメント文なので記述の必要はありません。

-----------------
Public Class Form1
    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        ' c_year, c_month, i, m, h, r, p は整数型変数
        Dim c_year, c_month, i, m, h, r, p As Integer
        ' Cal() は 36 までの整数型変数
        Dim cal(36) As Integer
        ' TextBox3はスタート時のデータは無し
        TextBox3.Text = ""
        Dim tuki() As Integer = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}
        ' tuki() は整数型変数で 12 ヶ月分の日数を1月から、
        ' 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
        ' と入れる。最初の0は最初に入れるダミーデータとしての「0」。
        c_year = Val(TextBox1.Text)
        ' c_yearに入力した文字を数値に変換して入れる
        c_month = Val(TextBox2.Text)
        ' c_monthに入力した文字を数値に変換して入れる
        If c_year Mod 4 = 0 Then tuki(2) = 29
        If c_year Mod 100 = 0 Then tuki(2) = 28
        If c_year Mod 400 = 0 Then tuki(2) = 29
        ' 閏年のときは2月[tuki(2)]の最終日を29日に修正する
        ' 西暦を4で割って余りが出なければ閏年である。
        ' ただし、続けて100で割って余りが出なければ閏年ではない。
        ' 常に西暦を400で割って余りが出なければ閏年である。
        ' 1年365日で1日、閏年は曜日が2日ズレる
        ' 西暦0001年からの曜日のずれの日数を計算する
         m = c_year + (c_year - 1) \ 4 - (c_year - 1) \ 100 + (c_year - 1) \ 400
        ' 1月1日から前月までの延べ日数を計算する
        h = 0
        For i = 1 To c_month - 1
            h = h + tuki(i)
        Next
        r = (m + h) Mod 7
        ' その月の朔日(毎月の第一日)の曜日を求める
        ' 日数の配列 cal に日付を入れる↓
        ' cal(i)  = cal(i) +1という感じ
        p = 1
        For i = r To r + tuki(c_month) - 1
            cal(i) = p
            p = p + 1
        Next
        ' カレンダーを表示する
        TextBox3.Text &= vbCr
        ' 改行する
        TextBox3.Text &= Space(1) & "日" & vbTab & "月" & vbTab & "火" & vbTab & "水" & vbTab & "木" & vbTab & "金" & vbTab & "土"
        ' 日月火水木金土をTabキーを鋏んで表示。
        TextBox3.Text &= vbCrLf
        ' 改行する
        For i = 0 To 36
            If i Mod 7 = 0 Then TextBox3.Text &= vbCrLf + vbCrLf
         ' 日数の配列calが36まで7で割って余りが出なければ改行2回を繰り返す。
         ' vbCrLfは改行、 vbCrLf + vbCrLfで改行を2回
            If cal(i) = 0 Then
                TextBox3.Text &= vbTab
         ' calが0(1日以前)であればTextBox3にTabキーを入れる
         ' vbTabはTabキー
            Else
                TextBox3.Text &= Str(cal(i)) & vbTab
         ' TextBaoc3には日数の配列calとTabキーを入れて繰り返す。
            End If
        Next
    End Sub
-----------------
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        ' プログラムを終了
        End
    End Sub
End Class
-----------------
ソース記述中にエラーがなければデバッグです。


西暦と月を入力

指定した月のカレンダーが表示。今回はソースが長いので1桁の日の桁が合っていないのはご愛敬。

Visual Studio Basic 2019