質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

3回答

867閲覧

C#のSwitch文になります。

shbtk6is

総合スコア15

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2018/10/12 14:52

問題が
"Switch文を用いてキーボードから入力された文字が川なら山、山なら川、海なら滝と表示するプログラムを作成せよ。"
と言うものなのですが何もわからないので教えてください

C#になります。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

C# ということなので、まず Visual Studio 2017 Community Edition をインストールしてください。
条件はありますが無料です。
間違っても Unity から始めたりメモ帳で始めたりしてはいけません。
それを勧めるサイトや書籍は色物と思ってください。
Visual Studio 2017 のインストール

インストールが済んだら要件定義しましょう。
今回は単純なプログラムなので簡単です。

"Switch文を用いてキーボードから入力された文字が川なら山、山なら川、海なら滝と表示するプログラムを作成せよ。"

これに必要なのは、Switch 文、キーボードから文字入力を受け付けるメソッド、「山」「海」という入力を「海」「滝」に変換するメソッド、画面に出力するメソッドです。

C# で「文」というのは「式」と並ぶ処理の最小単位で、評価できるものつまり値のあるものを式というのに対し、評価できないものつまり値のないものを文と言います。
例えば "山" == "海" という構文は true または false と評価される式であり、if ("山" == "海") { } という構文は値を持たない文になります。

メソッドの場合、戻り値を返すメソッドは式で、戻り値を返さないメソッドは文です。
つまりこの場合は void Switch(引数) という戻り値のないメソッドを作れということになります。
Switch という名前は見ても処理内容がよくわからないし switch と紛らわしいので良い命名ではありませんが、必須事項なので採用せざるを得ません。

コンソールアプリを作ることにすれば、キーボードから文字入力を受け付けるメソッド、また文字列を画面に出力するメソッドは既に用意されているので、実装すべきは Switch メソッドと変換メソッドの二つです。
しかしこの中で Switch メソッドは何をするメソッドとも指示されていないので、これを変換メソッドにすることにしましょう。

本来であれば string Convert(string src) のように文字列を引数として文字列を返すメソッドがわかりやすいのですが、文という指示があって仕方がないので void Switch(string src, out string dst) と定義します。

さて、要件定義ができたので次はソリューションを作りましょう。
一つのアセンブリ(実行ファイルや DLL)を作るものをプロジェクトと言い、一つまたは複数のプロジェクトをまとめたものをソリューションと言います。
Ctrl+Shift+N で新しいプロジェクトダイアログを開き、インストール済み→Visual C#→Windows デスクトップからコンソールアプリ(.NET Framework)を選んで作成してください。
名前は ConsoleApp1 のままで構いません。
これでソリューションとプロジェクトができました。

次に Switch を実装するクラスを書きましょう。
Shift+Alt+C を押して新しい項目の追加ダイアログを開き、名前を Class1.cs から Convert.cs に変更して追加をクリックします。
次のようなコードが表示されれば成功です。

C#

1using System; 2using System.Collections.Generic; 3using System.Linq; 4using System.Text; 5using System.Threading.Tasks; 6 7namespace ConsoleApp1 8{ 9 class Convert 10 { 11 } 12}

Convert クラスができましたので、これに Switch メソッドを実装していきます。

C#

1using System; 2using System.Collections.Generic; 3using System.Linq; 4using System.Text; 5using System.Threading.Tasks; 6 7namespace ConsoleApp1 8{ 9 public class Convert 10 { 11 public static void Switch(string src, out string dst) 12 { 13 throw new NotImplementedException(); 14 } 15 } 16}

throw new NotImplementedException(); は NotImplementedException 例外をスローするものです。
呼び出すと「まだ未完成です」という意味の例外をスローすることでこのメソッドが未完成であることを開発者に知らせます。

ここまでできたら一度ソリューションを保存しましょう。
Ctrl+Shift+S を押してプロジェクトの保存ダイアログを出し、上書き保存ボタンを押してください。

保存したら次にテストを書きましょう。
メニューからファイル→追加→新しいプロジェクトを選択してインストール済み→Visual C#→テストから単体テストプロジェクト(.NET Framework)を選んで OK を押してください。
次のようなコードが表示されたら成功です。

C#

1using System; 2using Microsoft.VisualStudio.TestTools.UnitTesting; 3 4namespace UnitTestProject1 5{ 6 [TestClass] 7 public class UnitTest1 8 { 9 [TestMethod] 10 public void TestMethod1() 11 { 12 } 13 } 14}

これを書き換えて Switch をテストしますが、その前にテストプロジェクトからメインプロジェクトを参照します。
まず Ctrol+w を押し、次に s を押してソリューションエクスプローラーを表示します。
その中の UnitTestProject1 を展開し、参照を右クリックして参照の追加で参照マネージャーを開きます。
左のペインからプロジェクトを選択し、ConsoleApp1 をチェックして OK を押します。

それではテストを作りましょう。
想定しない文字列が渡された時の挙動は指定されていないので、null を返すことにします。

C#

1using System; 2using Microsoft.VisualStudio.TestTools.UnitTesting; 3 4namespace UnitTestProject1 5{ 6 [TestClass] 7 public class UnitTest1 8 { 9 [TestMethod] 10 public void SwitchTest() 11 { 12 var pairs = new[] 13 { 14 new{S = "川", D = "山"}, 15 new{S = "山", D = "川"}, 16 new{S = "海", D = "滝"}, 17 new{S = "どちらでもない", D = (string)null}, 18 }; 19 foreach (var pair in pairs) 20 { 21 ConsoleApp1.Convert.Switch(pair.S, out string dst); 22 Assert.AreEqual(dst, pair.D); 23 } 24 } 25 } 26}

メニューからテスト→ウィンドウ→テストエクスプローラーでテストエクスプローラーを表示し、すべてを実行してください。
テストはもちろん失敗します。

ここまでできたら後は簡単です。
Switch を実装し、テストが通るようにしてください。
それができたら Main にそれを呼び出す処理を書いて完成です。

投稿2018/10/12 22:20

Zuishin

総合スコア28660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/10/12 23:28

おれもやる!
guest

0

何もわからない

とりあえず、C#に入門しましょう。

https://www.amazon.co.jp/s/search-alias=aps&field-keywords=C%23

投稿2018/10/12 15:02

編集2018/10/12 15:03
otn

総合スコア84505

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

「C# switch」でぐぐってでてきたのを一通り読んでみよう

投稿2018/10/12 14:53

y_waiwai

総合スコア87749

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shbtk6is

2018/10/12 14:58

ありがとうございます。 ただあまりそれでうまく作れなかったので教えていただけませんか?
y_waiwai

2018/10/12 15:03

うまく作れなかったとはどういうふうに作れなかった? で、なにを教えるの?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問