LoginSignup
1
0

More than 3 years have passed since last update.

C# 基礎プログラミング100本ノック~6-10本目~

Last updated at Posted at 2020-04-18

こんばんは

本日も基礎プログラミング100本ノックやっていきます!
そろそろウォーミングアップ終わりそうだなぁ...

前回→1-5本目
次回→11-15本目

6本目

整数値を入力させ、値が0ならzeroと表示するプログラムを作成せよ。

Sample.cs
Console.Write("input num:");
string inputNum = Console.ReadLine();

string result;

if(inputNum == "0")
{
    result = "zero";
}
else
{
    result = "any";
}

Console.WriteLine(result);

プログラム初学者であればこれで十分かと思いますが、3項演算子を使って簡略化しましょうね!

Sample.cs
string result;

if(inputNum == "0")
{
    result = "zero";
}
else
{
    result = "any";
}

上記が3項演算子を使わない書き方です。

Sample.cs
string result = (inputNum == "0") ? "zoro" : "any";

if 文で同じ変数に別々の値を格納したい場合などに使うと可読性が向上するでしょう。

構文としては以下の通りです。

代入したい変数 = (条件式) ? trueの時代入する値 : falseの時代入する値;

7本目

整数値を入力させ、値が0ならzero、0でなければnot zeroと表示するプログラムを作成せよ。

あ、やっちゃった...。

8本目

整数値を入力させ、値が正であればpositiveと表示するプログラムを作成せよ。ただし0は正には含まない。

Sample.cs
Console.Write("input num:");
int inputNum = int.Parse(Console.ReadLine());

string result = (inputNum > 0) ? "positive" : "negative";

Console.WriteLine(result);

6本目の条件文と代入の値を変えるだけですね!

9本目

整数値を入力させ、値が正であればpositive、負であればnegative、0であればzeroと表示するプログラムを作成せよ。

Sample.cs
Console.Write("input num:");
int inputNum = int.Parse(Console.ReadLine());

string result = (inputNum > 0) ? "positive" : 
    (inputNum == 0) ? "zero" : "negative";

Console.WriteLine(result);

ちょっと可読性が落ちる様な気がしますが三項演算子で書いてみました。

普通にif文書いた方がいいような...
ただ、この場合「0」だけ特別扱いなんですよね。
後々、「0」以外も特殊な数字が出るのであれば、switchを使ってこんな感じにした方が保守性が上がるかも?

Sample.cs
string result;
switch (inputNum)
{
    case 0:
        result = "zero";
        break;

    default:
        result = (inputNum > 0) ? "positive" : "negative";
        break;

}

冗長にはなりますが、例外の値が増えた際はこちらの方が保守しやすいですよね?

そして、Switchを使うにあたって調べているとbreak,goto,returnのいずれかは必須なのですね。
デフォルトでbreakにしていいと思ってますけど有難い機能でもあります。

10本目

整数値を入力させ、その値を絶対値にして表示するプログラムを作成せよ。(できれば変数の値を絶対値に変えるようにせよ)

絶対値計算にはMath.Absメソッドというものが用意されているようです。
では使っていきましょう。

Sample.cs
Console.Write("input num:");
int inputNum = int.Parse(Console.ReadLine());

inputNum = Math.Abs(inputNum);

Console.WriteLine(inputNum);

Math.Absメソッドではほぼ全ての数値型の絶対値が求められるようなので便利?ですね!

では今宵はこの辺りで終了!

リンク

基礎プロI 100本ノック 基礎編

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0