[C#入門]第10回 分岐処理 switch文

はじめに

前回は、if文による条件分岐について説明しました。

今回は、switch文による分岐処理について説明します。

目次

  1. switch文の基本
  2. データ型による分岐

1.switch文の基本

はじめに、switch文の基本書式を以下に示します。

switch (変数) {
  case 値1:
    処理; // 変数と値1が一致した時に実行する処理
    break;
  case 値2:
    処理; // 変数と値2が一致した時に実行する処理
    break;

    :

  default:
    処理; // 変数がどの値とも一致しなかった場合に実行する処理
    break;
}

switch文を使用すると、変数に入っている値と case の後ろに書かれた値が一致した箇所に書かれている命令を実行します。どの値とも一致しない場合には default に書かれた処理を実行します。

また、switchの中で使用できる変数は、文字列型か整数型の変数のみです。

breakというキーワードはswitch文を抜けるために使用するものです。

 

以下に switch文の使用例を示します。

この switch文の例では、変数の値が0の場合に「明治」を、1の場合に「大正」、2の場合に「昭和」を、3の場合に「平成」を出力します。

変数xの値は2ですので、「昭和」が出力されます。

C#におけるswitch文の例
var data = "";
var x = 2;

switch (x) {
    case 0:
        data = "明治";
        break;
    case 1:
        data = "大正";
        break;
    case 2:
        data = "昭和";
        break;
    case 3:
        data = "平成";
        break;
    default:
        data = "対象なし";
        break;
}

Console.WriteLine(data);

 

VB.NETの場合は switchではなく「select」というキーワードを使用します。C#のswitch文と同様の動作をします。breakキーワードは不要です。

VB.NETにおけるSelect文の例
Dim data = ""
Dim x = 3

Select Case x
    Case 0
        data = "明治"
    Case 1
        data = "大正"
    Case 2
        data = "昭和"
    Case 3
        data = "平成"
    Case Else
        data = "該当なし"
End Select

Console.WriteLine(data)

 

Javaは、C#と同一の書式を使用します。

Javaにおけるswitch文の例
String data = "";
nt x = 2;
		
switch (x) {
    case 0:
        data = "明治";
        break;
    case 1:
        data = "大正";
        break;
    case 2:
        data = "昭和";
        break;
    case 3:
        data = "平成";
        break;
    default:
        data = "対象なし";
        break;
}
	
System.out.println(data);

 

swiftは、C#同様にswitch文を使用しますが、変数に()は必要ありません。またbreakキーワードも不要です。

swiftにおけるswitch文の例
var data = ""
let x = 2

switch x {
case 0:
    data = "明治"
case 1:
    data = "大正"
case 2:
    data = "昭和"
case 3:
    data = "平成"
default:
    data = "該当なし"
}

print(data)

2.データ型による分岐

C# 7では、switch文のcase機能が拡張され、case データ型 変数 のように記述すると、データ型と一致する場合にキャストして変数に代入できることができるようになりました。

以下に例を示します。

11行目は変数 obj のデータ型が int かを調べ、intである場合に変数 x に objの値を受け取ります。

14行目は、11行目と同様で obj のデータ型が doubleかを調べ、doubleである場合に変数 x に値を受け取ります。

17行目は、obj のデータ型が string かを調べ、stringである場合に変数 s に値を受け取ります。さらに when の後の条件式が満たす場合に、処理が実行されます。

C#のswitch文でデータ型で分岐する例
static void Main(string[] args) {
    object data ="サンプル";

    switchSample(data);
}

static void switchSample(object obj) {
    string msg = "";

    switch (obj) {
        case int x:
            msg = $"int型:{x}";
            break;
        case double y:
            msg = $"double型:{y}";
            break;
        case string s when s.Length > 2:
            msg = $"string型:{s}";
            break;
        default:
            msg = "対象なし";
            break;
    }
}

 

 

 

 

[C#入門]第9回 分岐処理 if文

はじめに

プログラムの流れは「上から順番に処理を行う」「条件で処理を分岐する」「繰り返し処理を行う」の3つがあります。

今回は、「条件で処理を分岐する」ために欠かせないif文について説明します。

目次

  1. 制御構文
  2. if文の基本
  3. if 〜 else if文
  4. 条件式で使用できる演算子

1.制御構文

冒頭でも述べた通り、プログラムの流れは以下のように大きく3つがあります。

  • 順次(逐次)処理:上から順番に実行する
  • 分岐(選択)処理:条件で処理を分岐させて実行する
  • 反復(繰り返し)処理:処理を繰り返し実行する

これら3つを組み合わせてプログラムを作成する方法を構造化プログラミングといいます。

C#, VB.NET, Java, Swiftなど多くのプログラミング言語は構造化プログラミングのための構文が提供されています。

中でも分岐処理と反復処理は制御構文に分類されます。

制御構文には以下のようなものがあります。

C#における分岐処理の制御構文
  • if文(今回の学習対象)
  • switch文
C#における反復処理の制御構文
  • for文
  • foreach文
  • while文
  • do〜while文

if文の基本

if文を使用すると、条件が成り立った場合と成り立たなかった場合に分けて処理を書くことができます。基本的な構文を以下に示します。

構文:C#におけるif文
if (条件式) {
  条件式が成り立った場合の処理
}
else {
  条件式が成り立たなかった場合の処理
}

if の後ろの()の中には条件式を書きます。

条件式は、成立するとbool型のtrueという値になり、成立しない場合はfalseという値になります。このことからもわかるように、条件式の結果は必ず true か falseのどちらかになります。

条件式が成り立った(trueの)場合は、条件式のすぐ後ろにある { 〜 } の中に書かれた処理を実行します。一方、条件式が成り立たなかった(falseの)場合は else の後ろにある { 〜 } の中に書かれた処理を実行します。なお、elseから後ろの部分は省略することができます。

例えば「変数x が5より小さい」を条件式にしたif文は、以下のように記述します。条件式で使用している演算子については後述します。

C#におけるif文の例
var x = 3;

if (x < 5) {
    Console.WriteLine("xは5より小さい"); // 条件式が true の場合に実行される
}
else {
    Console.WriteLine("xは5以上"); // 条件式が false の場合に実行される
}

 

VB.NETは、条件式を()で囲みません。また条件式の後ろは{}ではなくThenというキーワードを使用します。If 〜 Then なので「もし〜ならば」となり英文法に近い書き方になります。If文の終わりには必ず「End If」を書きます。

VB.NETにおけるif文の例
Dim x = 3

If x < 5 Then
    Console.WriteLine("xは5より小さい")
Else
    Console.WriteLine("xは5以上")
End If

 

Javaにおけるif文の書式はC#と同じです。

Javaにおけるif文の例
int x = 3;

if ( x < 5 ) {
	System.out.println("xは5より小さい");
} else {
	System.out.println("xは5以上");
}

 

Swiftにおけるif文はC#に似ていますが、条件式を()で囲まないという点で異なります。

Swiftにおけるif文の例
var x = 3

if x < 3 {
    print("xは5より小さい")
} else {
    print("xは5以上")
}

if 〜 else if文

Aという条件式が成り立った場合には処理Aを、Bという条件式が成り立った場合には処理Bを、というように、条件式を複数書いて処理を分岐させることができます。

このような場合は if 〜 else if 文 を使用します。else ifは複数書くことができます。

構文:C#における if 〜 else if 文
if (条件式A) {
  条件式Aが成り立った場合の処理
} else if (条件式B)
  条件式Bが成り立った場合の処理
else {
  条件式が成り立たなかった場合の処理
}

以下は、変数xが1の場合 と 変数xが2の場合、変数xが1 or 2以外の場合について、if 〜 else if文で記述する例です。

C#における if 〜 else if 文の例
var x = 2;

if (x == 1) {
    Console.WriteLine("xは1です");
}
else if (x == 2){
    Console.WriteLine("xは2です");
} else {
    Console.WriteLine("xは1と2以外です");
}

 

VB.NETの場合は If 〜 Then、 ElseIf 〜 Then となります。

VB.NETにおける if 〜 else if 文の例
Dim x = 2

If x = 1 Then
    Console.WriteLine("xは1です")
ElseIf x = 2 Then
    Console.WriteLine("xは2です")
Else
    Console.WriteLine("xは1と2以外です")
End If

 

JavaはC#と同じ構文で記述することが出来ます。

Javaにおける if 〜 else if 文の例
var x = 2;

if (x == 1) {
    System.out.println("xは1です");
}
else if (x == 2){
    System.out.println("xは2です");
} else {
    System.out.println("xは1と2以外です");
}

 

Swiftにおけるif文はC#に似ていますが、条件式を()で囲まないという点で異なります。

Swiftにおける if 〜 else if 文の例
let x = 2

if x == 1 {
    print("xは1です")
} else if x == 2 {
    print("xは2です")
} else {おうh
    print("xは1と2以外です")
}

4.条件式で使用できる演算子

4-1.関係演算子

演算子の左オペランド(*)と右オペランドの大小比較を行います。
*オペランドとは、演算子の左右に置く値のこと。

使用可能な関係演算子を以下に示します。

関係演算子
C# VB.NET Java Swift 説明
x < y x < y x < y x < y xがyより小さい場合はtrue
x <= y x <= y x <= y x <= y xがy以下の場合はtrue
x > y x > y x > y x > y xがyより大きい場合はtrue
x >= y x >= y x >= y x >= y xがy以上の場合はtrue

4-2.等値演算子

演算子の左オペランド(*)と右オペランドが等しいかどうかを比較します。

使用可能な等値演算子を以下に示します。

等値演算子
C# VB.NET Java Swift 説明
x == y x = y x == y x == y xとyが等しい場合はtrue
x != y x <> y x != y x != y xとyが等しくない場合はtrue

4-3.条件論理演算子

複数の条件式を一度に評価したい場合は、条件論理演算子を使用します。演算子の左側と右側の条件式の結果から、その式全体が true か false のどちらかになります。

条件論理演算子
C# VB.NET Java Swift 説明
x && y x AndAlso y && && xとyがtrueの場合、式がtrueとなる
|| OrElse || || x または y のどちらかがtrueの場合に、式全体がtrueとなる

C#における&&、|| は短絡評価と呼ばれる挙動をします。

短絡評価とは、左辺の結果によって右辺の評価を行わないというものです。

たとえば、「false && true」の場合は左辺がfalseであることが明確なので、右辺については評価するまでもなく、式全体がfalseとなります。

[TypeScript] Visual Studio 2017への環境構築

はじめに

TypeScriptは、マイクロソフトによって開発された、オープンソースのプログラミング言語です。

特徴は以下の通りです

  • JavaScriptと互換性を持つ
  • クラスベースのオブジェクト指向言語

TypeScriptを開発する上で適したエディタには様々ありますが、ここでは Visual Studio 2017で開発ができるよう環境構築をします。

“[TypeScript] Visual Studio 2017への環境構築” の続きを読む