2021年12月10日
川俣晶の縁側ソフトウェアnew_C#入門・全キーワード明快解説!total 933 count

for: 万能無敵の繰り返し制御・強力すぎてごめんなさい

Written By: 川俣 晶連絡先

この章のテーマ §

 列挙の基本、for文(ステートメント)を学びます。ともかく自由度が高く強力ですが、使い方を間違えると一瞬で地獄に行けます。

前提知識 §

Console.WriteLineメソッド, 文字列の基礎, 変数の基礎, 条件演算子, int型, 複文, ++/--演算子

解説 §

 for文は、C#で繰り返しを行う文の中で最も強力です。自由度も高く、whileなど他の繰り返し文のどれの代用も容易にできます。

 しかし自由度が高すぎてトラブルが起きやすいのも事実です。

 for文を正しく理解して、安全に使うことが重要です。

 そのためには、for文でよく使われるパターンを学んで、その枠の中で使うのがお勧めです。

 パターンから外れるのは、パターンを使いこなしてからで十分です。

 さて、筆者がお勧めするパターンは3つあります。

 昇順、降順、無限ループです。

 それぞれ分けてサンプルソースに実例を書いてあります。

  • 昇順 for (型名 変数名 = 0; 変数名 < 終値+1; 変数名++)
  • 降順 for (型名 変数名 = 開始値; 変数名 >= 0; 変数名--)
  • 無限 for (; ; )

 それぞれ、0からカウントする。0までカウントするという形に統一しておくと迷いにくくなります。

 無限ループの場合は永遠に繰り返しますが、if文で判定してbreak文などを実行するとそこでループを脱出することができます。事前に回数が分かっていない繰り返しには便利です。

 for文の正しい書式は以下のようになります。

  • for(初期化; 条件; 更新)

 初期化は変数の宣言または初期値を設定する代入を書きます。

 条件は、繰り返しを継続する条件を示す式を書きます。

 更新は、変数を更新する式を書きます。

 それぞれ全て省略可能です。

 たとえば、勝手に更新されるデータを扱うとき、更新の式は不要です。

罠の数々 §

  • 1からカウントしたい場合もあると思うが、0からカウントするfor文と1からカウントするfor文は紛らわしく間違いやすい。特に終了値を間違いやすい。ビギナーは混用を避けよう
  • Visual Studioだと昇順のパターンはfor[TAB][TAB]で入力できる。降順のパターンはforr[TAB][TAB]で入力できる。入力も楽なので、パターンに沿って使うべき
  • 無限ループはfor(;;)の他にwhile(true)などでも書ける。どれを使うのかは流儀の問題で正解はない

参考リンク §

反復ステートメント (C# リファレンス)

サンプルソース: kw_for §

Console.WriteLine("昇順");

for (int i = 0; i < 10; i++) Console.Write(i);

Console.WriteLine();

Console.WriteLine("降順");

for (int i = 9; i >= 0; i--) Console.Write(i);

Console.WriteLine();

Console.WriteLine("無限ループ");

for (; ; )

{

    if (DateTime.Now.Second % 10 == 0)

    {

        Console.WriteLine("強制脱出!");

        break;

    }

}

Console.WriteLine("Finished!");

実行結果 §

昇順

0123456789

降順

9876543210

無限ループ

強制脱出!

Finished!

リポジトリ §

https://github.com/autumn009/CSharpPrimer2

練習問題 §

 for文で使う変数の型は文字列や実数でも良いのだろうか?

 正しい解釈を選べ。

  1. ループ変数は整数しか使えない。0.5回だけ実行なんてないでしょ?
  2. 型は何でも良い。一文字ずつ追加して合計が10文字を超えたら終わっても良いし、0.1ずつ加算しても良い

[[解答]]

Facebook

キーワード【 川俣晶の縁側ソフトウェアnew_C#入門・全キーワード明快解説!
【new_C#入門・全キーワード明快解説!】の次のコンテンツ
2021年
12月
13日
switch/case: 条件の多い分岐はお任せよ
3days 0 count
total 1105 count
【new_C#入門・全キーワード明快解説!】の前のコンテンツ
2021年
12月
09日
foreach: コレクションの中味の数だけ繰り返せ!
3days 0 count
total 1071 count

このコンテンツを書いた川俣 晶へメッセージを送る

[メッセージ送信フォームを利用する]

メッセージ送信フォームを利用することで、川俣 晶に対してメッセージを送ることができます。

この機能は、100%確実に川俣 晶へメッセージを伝達するものではなく、また、確実に川俣 晶よりの返事を得られるものではないことにご注意ください。

このコンテンツへトラックバックするためのURL

https://mag.autumn.org/tb.aspx/20211210101712
サイトの表紙【new_C#入門・全キーワード明快解説!】の表紙【new_C#入門・全キーワード明快解説!】のコンテンツ全リスト 【new_C#入門・全キーワード明快解説!】の入手全リスト 【new_C#入門・全キーワード明快解説!】のRSS1.0形式の情報このサイトの全キーワードリスト 印刷用ページ

管理者: 川俣 晶連絡先

Powered by MagSite2 Version 0.36 (Alpha-Test) Copyright (c) 2004-2021 Pie Dey.Co.,Ltd.