仕事で使っているWebやシステム開発関連の情報を掲載しています。開発に使用するソフトウェアの使用方法やシステム開発に必要な技術的情報。トラブル解決方法等を掲載してるサイトです。While、Goto)について解説風に記録しておく。Next処理中に先頭に強制的に戻す。Loopから強制的に抜けるGoto:指定したラベルまで一気に処理を飛ばす。制御構造とは制御構造は、指定条件によって処理を変えたり、指定条件が満たされているもしくは、満たされなくなった場合、特定の処理を繰り返し実行したりすることができる。条件分岐if~then:条件分岐により処理を分ける処理を特定の条件で分けたいとき、if~thenを使用する。制御文の中では一番使用される。Console.WriteLine("分類は、書籍です。Console.WriteLine("分類は、書籍です。Console.WriteLine("分類は、書籍です。Console.WriteLine("分類は、マッチしません。Thenを繋げていく。caseと同じように処理を分けることができます。Console.WriteLine("分類は、書籍です。Console.WriteLine("分類は、文具です。Console.WriteLine("分類は、健康器具です。Console.WriteLine("分類は、マッチしません。thenやelseのブロックにさらにifを入れることができる。これは、入れ子(ネスト)と言います。Console.WriteLine("分類は、ビジネス書です。Console.WriteLine("分類は、漫画です。Case:条件式の結果に応じて処理を分岐する1つの式の複数の結果に対して、それぞれ処理を分岐させることができる。caseの後に一致する式を記載するまた、caseは複数書くことができる。Elseは条件がマッチしなかった場合の処理であるが、省略することもできる。Console.WriteLine("分類コード01は、書籍です。Console.WriteLine("分類コード02は、文具です。Console.WriteLine("分類コードは、分類不能です。Select繰り返し指定された回数繰り返すFor~Nextステートメントと、条件により処理を繰り返すWhile~ステートメントについて解説。Next:決められた回数の処理を繰り返すToで指定した回数分処理を繰り返します。Stepでカウント数を変更をすることができる。あれば1.2.3とカウントしていく。2であればカウントは2.4.6とカウントしていく。1.2.3とカウントする。'ブロック外でもカウンター変数にアクセスできる。iブロック外では、カウンター変数にアクセスできない。iカウンター変数名の定義カウンター変数の名前は、「i」を使用します。複数のカウンター変数を使用する場合は、i、j、k・・・とアルファベット順に使用する。書式2で定義したカウンター変数は、Forのブロック内でしか使用できない。書式1でカウンター変数をブロック外で定義した場合は、ブロック外でも変数を使用することができる。Nextのループ内にループを入れることができます。二重ループと呼び、別名として入れ子、ネストという言い方をする。ネスト数は3重、4重...と多重にすることができる。用途としては、データベースからレコードを取得して、画面に一覧として表示する時等に使われる。Next(フォー・イーチ・ネクスト)ステートメント」を利用します。これもデータベースからレコードを取得し、1レコードずつ処理して画面に表示するなどの利用が多い。Next処理中に先頭に強制的に戻す。Forステートメントを使用する。i出力結果は、0~5まで出力されるが2はContinueで戻されているため出力されない。Whileは条件式が真(True)の場合、処理を繰り返します。Whileステートメントを使用する。TryWhile:無限ループwhileの条件式にTrueを指定すると、処理が無限に繰り返します。条件が常に真(True)となる条件を指定しても無限ループになります。Whileを実行する。'ifの条件が満たされたらWhileループを抜ける。1'カウンターが10になったら、Whileを終了させる。While~Loop:条件式がTrueの間処理を繰り返す条件式が真(True)の間だけ処理を繰り返す。While:条件式がTrueの間処理を繰り返す条件式が真(True)の間だけ処理を繰り返す。While~Loopと異なる点は、処理をしてからループ判定をすることである。Loopステートメントでは、条件が偽(False)である限り同じ処理が繰り返され、条件が真(True)になったところで繰り返し処理が終わります。IfLoopGoto:指定したラベルまで一気に処理を飛ばす。特定の処理の位置から、指定したラベルの位置まで処理が一気にジャンプしたい場合は、Gotoを使用する。多重ループから一気に処理を抜ける場合は便利である。多用は注意が必要である、処理の可読性がかなり悪くなる。'procexit:ラベルにジャンプする。ネストは、2重から3重程度にしておく。これは、ソースコードの可読性が悪くなり処理が把握しづらくなる。4重、5重以上となる場合は、関数化するかメソッドとして切り出すようにするとよい。所感:いまだに現場では・・・さて、どの言語、どのプロジェクトや現場でもそうだが、今だに4重以上のネストしているシステムが多い。ネストは、ifやfor等を含めても2重か3重程度にしておくほうがよい。case文が巻物のようになると、メンテナンスする場合に処理の内容が把握しづらくなり、ミスを誘発する。コーディングした者がシステムの寿命を迎えるまで、メンテナンスし続けることはかなり稀である。途中で、転職や異動等で他者に担当が変わる。月日が進むことにより開発者自身の記憶もあいまいになり、ソースコードを追っかけることになる。システムリリース後や運用フェーズで、最適化する方法もあるがあまりやりたがらない、一度、正常に動いているものに手を入れるということは、コストもかかる、何より問題があった場合に顧客との契約上のトラブルが発生する。そのため、大抵は後の祭り状態となりメンテナンス時に苦労することになる。開発時にしっかりとコードレビューで防止することが望ましい。