デジ民の学習の記録

学習の記録

【VB.NET】足し算アプリ作成

足し算アプリ 入力値チェック機能付き

Public Class Form1
    Private Sub CalcButton_Click(sender As Object, e As EventArgs) Handles CalcButton.Click
        ' 変数の宣言
        Dim valueLeft As Integer
        Dim valueRight As Integer
        Dim valueAnswer As Integer

        ' 値の取り込み: ここで下で作成したファンクションを発動
        valueLeft = InputCheckFunc(Input1TextBox.Text, valueLeft)
        valueRight = InputCheckFunc(Input2TextBox.Text, valueRight)

        ' 計算
        valueAnswer = valueLeft + valueRight

        ' 結果の表示
        AnswerTextBox.Text = valueAnswer.ToString()

    End Sub

    ' 入力値をチェックするファンクション
    Private Function InputCheckFunc(textValue As String, checkValue As Integer) As Integer
        If Integer.TryParse(textValue, checkValue) = True Then
            checkValue = Integer.Parse(textValue)
        Else
            checkValue = 0
        End If
        Return checkValue
    End Function
End Class

【VB.NET】VB.NETのアクセス修飾子は省略できるのか?

省略できるけど、場所によって“既定値(デフォルト)”が違う


①Classの中の Sub の場合、Private 扱い になる。

Class Sample

    Sub Test()
        Console.WriteLine("Hello")
    End Sub

End Class

この場合、Test は Private 扱い になる。

② Moduleの中のSubの場合、Public扱いになる。

Module Program

    Sub Main()
        Console.WriteLine("Start")
    End Sub

End Module

③ClassとModuleの違い

場所 省略時の既定
Class内 Private
Module内 Public

【VB.NET】簡単計算アプリ

コードはこれ書いた

Imports System

' Module は、プログラムの入れ物(クラスみたいなもの)
Module Program
    ' Sub Main は「プログラムのスタート地点」
    Sub Main()

        Dim n1 As Double
        Dim n2 As Double

        Console.Write("1つ目の数を入力してください: ")
        If Not Double.TryParse(Console.ReadLine(), n1) Then
            Console.WriteLine("数値を入力してください。")
            Return
        End If

        Console.Write("2つ目の数を入力してください: ")
        If Not Double.TryParse(Console.ReadLine(), n2) Then
            Console.WriteLine("数値を入力してください。")
            Return
        End If

        Console.WriteLine("足し算: " & (n1 + n2))

        Console.WriteLine("計算できたね!")
    End Sub
End Module

ビルドするとこうなる

この部分の解説

If Not Double.TryParse(Console.ReadLine(), n1) Then

①Console.ReadLine()でキーボードから入力した値を取得する。
②TryParseは文字列を数値に変換して変数にいれてくれるか試す。
文字列を数値に変換できて、変数n1に数字入れられたら、trueが返ってくる。

Double.TryParse(input, number) → inputをDoubleに変換して変数numberに入れられるか試す。trueかfalseを返す。
Integer.TryParse(input, number) → inputをIntegerに変換して変数numberに入れられるか試す。trueかfalseを返す。

【VB】基礎文法

値を設定する

コントロール名.プロパティ名 = 値

値を取り出す

値の入れ物 = コントロール名.プロパティ名

変数の型宣言をする

Dim 変数名 As データ型名
あらかじめ、このように型宣言をしておいた変数を使うことで、値を取り出す場合は、次のように書けるようになります。

変数を指定する(値を取り出す)

変数名 = コントロール名.プロパティ名

Tips : 型宣言の最初のDimって何?

Dimは、Dimensionを略したところが由来らしい。

Dim valueLeft As Integer
Dim valueRight As Integer
Dim valueAnswer As Integer

valueLeft = Input1TextBox.Text
valueRight = Input2TextBox.Text
valueAnswer = valueLeft + valueRight

AnswerTextBox.Text = valueAnswer

SQL練習問題

daily_retail_dataテーブルに含まれる業種カテゴリ(business_category)の種類数を計算してください。

間違えた内容
count (business_category) from daily_retail_data;
正しい回答
select
  count(distinct business_category) as category_count
from
  daily_retail_data;
  • selectをつける

  • distinctの意味

 * SQLのキーワード(関数ではない)

 * 意味:重複している値を1つにまとめる(同じ値は 1回だけ残す)

daily_retail_dataテーブルの売上(daily_revenue)の最大値と最小値を取得してください。

間違えた内容
select max(daily_revenue) from daily_retail_data;
select min(daily_revenue) from daily_retail_data;
正しい回答
select 
max(daily_revenue) as max_revenue,
min(daily_revenue) as min_revenue
from daily_retail_data;
  • selectは1つで、中にmaxとminの指示文を入れる。

SQL練習問題

daily_retail_dataテーブルから全てのデータを取得し、日付順に並べ替えて表示してください。

select * from
  daily_retail_data
order by
  transaction_date;

daily_retail_dataテーブルから業種カテゴリ(business_category)と売上(daily_revenue)のみを取得し、売上の高い順に並べ替えて表示してください。

select business_category, daily_revenue
from daily_retail_data
order by
daily_revenue desc;
  • 昇順・・・ASC。ORDER BYのデフォルトは昇順。

  • 降順・・・DESC

daily_retail_dataテーブルに記録されている取引の総件数を計算してください。

select count(*) from daily_retail_data;
  • count(*)は、集約関数(集計関数)。テーブルの行数を数えている。
  • 「*」 = 「すべての行」
  • NULL があっても 関係なく1行としてカウント

  • count(price)とした場合、price が NULLでない行だけカウント

関数の役割

COUNT(*):行数を数える
SUM():合計
AVG():平均
MAX():最大
MIN():最小