C#
このチュートリアルでは、変数を調べ、それらの変数に基づいて実行パスを変更する C# コードを記述する方法について説明します。 C# コードを記述し、コンパイルと実行の結果を確認します。 このチュートリアルには、C# の分岐構造とループコンストラクトについて説明する一連のレッスンが含まれています。 これらのレッスンでは、C# 言語の基礎について説明します。
ヒント
コード スニペット ブロックに [実行] ボタンが含まれている場合、そのボタンによって対話型ウィンドウが開くか、対話型ウィンドウ内の既存のコードが置き換えられます。 スニペットに [実行] ボタンが含まれていない場合は、コードをコピーして現在の対話型ウィンドウに追加できます。
対話型ウィンドウで次のコードを実行します。 [ 実行] を選択します。
int a = 5;
int b = 6;
if (a + b > 10)
Console.WriteLine("The answer is greater than 10.");
合計が 10 未満になるように、 b
の宣言を変更します。
int b = 3;
[ 実行 ] ボタンをもう一度選択します。 回答が 10 未満であるため、何も印刷されません。 テスト中の 条件 は false です。 if
ステートメントに使用できる分岐の 1 つ (true 分岐) のみを記述したため、実行するコードはありません。
ヒント
C# (または任意のプログラミング言語) を調べるときに、コードを記述するときに間違いを犯します。 コンパイラ はこれらのエラーを見つけて報告します。 出力にエラー メッセージが含まれている場合は、コード例と対話型ウィンドウのコードをよく見て、修正する内容を確認します。 この演習は、C# コードの構造を学習するのに役立ちます。
この最初のサンプルは、 if
型とブール型の能力を示しています。 ブール値は、true
またはfalse
の 2 つの値のいずれかを持つ変数です。 C# では、ブール変数の bool
特殊な型が定義されています。 if
ステートメントは、bool
の値を確認します。 値が true
されると、 if
に続くステートメントが実行されます。 それ以外の場合はスキップされます。
条件を確認し、それらの条件に基づいてステートメントを実行するこのプロセスは強力です。 詳しく見てみましょう。
if と else を連携させる
true 分岐と false 分岐の両方で異なるコードを実行するには、条件が false のときに実行される else
ブランチを作成します。 次のコードを試してください。
int a = 5;
int b = 3;
if (a + b > 10)
Console.WriteLine("The answer is greater than 10");
else
Console.WriteLine("The answer is not greater than 10");
else
キーワードに続くステートメントは、テスト中の条件がfalse
場合にのみ実行されます。 if
とelse
をブール条件と組み合わせることで、必要なすべての能力が得られます。
重要
if
ステートメントと else
ステートメントの下のインデントは、人間の読者向けです。 C# 言語では、インデントや空白は重要として扱われません。 if
キーワードまたは else
キーワードに続くステートメントは、条件に基づいて実行されます。 このチュートリアルのすべてのサンプルは、ステートメントの制御フローに基づいて行をインデントする一般的な方法に従います。
インデントは重要ではないので、 {
と }
を使用して、条件付きで実行されるブロックに複数のステートメントを含めるタイミングを示す必要があります。 C# プログラマは、通常、すべての if
句と else
句でこれらの中かっこを使用します。 次の例は、作成した例と同じです。 試してみてください。
int a = 5;
int b = 3;
if (a + b > 10)
{
Console.WriteLine("The answer is greater than 10");
}
else
{
Console.WriteLine("The answer is not greater than 10");
}
ヒント
このチュートリアルの残りの箇所では、一般に認められている記述方法に従って、すべてのコード サンプルで中かっこを使用しています。
より複雑な条件をテストできます。
int a = 5;
int b = 3;
int c = 4;
if ((a + b + c > 10) && (a == b))
{
Console.WriteLine("The answer is greater than 10");
Console.WriteLine("And the first number is equal to the second");
}
else
{
Console.WriteLine("The answer is not greater than 10");
Console.WriteLine("Or the first number is not equal to the second");
}
==
シンボルは、等価性をテストします。 ==
を使用すると、等値のテストと、a = 5
で確認した割り当てとが区別されます。
&&
は "and" を表します。 true 分岐でステートメントを実行するには、両方の条件が true である必要があります。 これらの例では、 {
および }
で囲む場合、各条件分岐に複数のステートメントを含めることもできます。
||
を使用して"or"を表すこともできます。
if ((a + b + c > 10) || (a == b))
a
、b
、およびc
の値を変更し、探索する&&
と||
を切り替えます。 &&
演算子と||
演算子の動作について理解を深めることができます。
ループを使用して操作を繰り返す
より大きなプログラムを作成するためのもう 1 つの重要な概念は ループです。 ループを使用して、複数回実行するステートメントを繰り返します。 対話型ウィンドウで次のコードを試してください。
int counter = 0;
while (counter < 10)
{
Console.WriteLine($"Hello World! The counter is {counter}");
counter++;
}
while
ステートメントは、条件をチェックし、while
の後にステートメントを実行します。 条件のチェックと、条件が false になるまでステートメントの実行を繰り返します。
この例には、もう 1 つの新しい演算子があります。 counter
変数の後の++
はインクリメント演算子です。 カウンターの値に 1 を追加し、その値をカウンター変数に格納します。
重要
コードを実行したときに while
のループ条件が false に切り替わることを確認してください。 それ以外の場合は、プログラムが終了しない 無限ループ を作成します。 これについては実演しません。コードを実行するエンジンがタイムアウトして、プログラムから何も出力されないためです。
while
ループは、while
に続くコードを実行する前に条件をテストします。 do
... while
ループは、最初にコードを実行し、条件を確認します。 次のようになります。
int counter = 0;
do
{
Console.WriteLine($"Hello World! The counter is {counter}");
counter++;
} while (counter < 10);
この do
ループと以前の while
ループは同じように動作します。
最後のループ ステートメントに進みましょう。
for ループの処理
C# コードに表示されるもう 1 つの一般的なループ ステートメントは、 for
ループです。 対話型ウィンドウで次のコードを試してください。
for (int counter = 0; counter < 10; counter++)
{
Console.WriteLine($"Hello World! The counter is {counter}");
}
上記の for
ループは、 while
ループおよび既に使用した do
ループと同じ動作をします。 for
ステートメントには、その動作を制御する 3 つの部分があります。
- 最初の部分は for 初期化子です。
int counter = 0;
counter
がループ変数であることを宣言し、その初期値を0
に設定します。 - 中央の部分は for 条件です。
counter < 10
は、カウンターの値が 10 未満である限り、このfor
ループが引き続き実行されることを宣言します。 - 最後の部分は for 反復子です。
counter++
は、for
ステートメントの後にブロックを実行した後にループ変数を変更する方法を指定します。 ここでは、ブロックが実行されるたびにcounter
が 1 ずつインクリメントされることを指定します。
これらの条件を自分で試してください。 次の各変更を試してください。
- 初期化子を別の値から開始するように変更します。
- 条件を変更して、別の値で停止します。
完了したら、学習した内容を使用するコードを自分で記述してみましょう。
このチュートリアルでは説明されていないループ ステートメントが他に 1 つあります。 foreach
ステートメントです。 foreach
ステートメントは、項目のシーケンス内のすべての項目に対してステートメントを繰り返します。 頻繁に コレクションと併用されます。 次のチュートリアルで説明します。
入れ子になったループを作成しました
while
、do
、またはfor
ループを別のループ内に入れ子にして、外側のループ内の各項目と内部ループ内の各項目の組み合わせを使用して行列を作成できます。 行と列を表す一連の英数字ペアを作成します。
1 つの for
ループで行を生成できます。
for (int row = 1; row < 11; row++)
{
Console.WriteLine($"The row is {row}");
}
別のループで列を生成できます。
for (char column = 'a'; column < 'k'; column++)
{
Console.WriteLine($"The column is {column}");
}
一方のループをもう一方のループ内に入れ子にして、ペアを形成することができます。
for (int row = 1; row < 11; row++)
{
for (char column = 'a'; column < 'k'; column++)
{
Console.WriteLine($"The cell is ({row}, {column})");
}
}
外側のループは、内部ループの完全な実行ごとに 1 回インクリメントされることがわかります。 行と列の入れ子を逆にして、その変化を自分で確認してみてください。
分岐とループを結合する
C# 言語で if
ステートメントとループコンストラクトを確認したら、C# コードを記述して、3 で割り切れるすべての整数 1 から 20 の合計を見つけることができるかどうかを確認します。 いくつかのヒントを次に示します。
%
演算子は、除算演算の残りの部分を提供します。if
ステートメントは、数値が合計の一部である必要があるかどうかを確認する条件を提供します。for
ループは、すべての数値 1 から 20 に対して一連の手順を繰り返すのに役立ちます。
自分で試してみてください。 次に、その方法を確認します。 ヒントを出します。答えは 63 になるはずです。
このようなものを思いついたのですか?
"分岐とループ" 対話型チュートリアルを完了しました。 リスト コレクション リンクを選択して次の対話型チュートリアルを開始するか、.NET サイトにアクセスして .NET SDK をダウンロードし、コンピューターにプロジェクトを作成し、コーディングを続けることができます。 「次のステップ」セクションでは、これらのチュートリアルに戻ります。
これらの概念の詳細については、次の記事を参照してください。
.NET