4.1.4 for繰り返し制御文

17893 ワード

for文は繰り返し実行文の繰り返し制御文であり、通常は繰り返し回数を決定する際に使用される.すなわち,for文の構文から何回繰り返されるかを推定できる.for文の基本構文は次のとおりです.
💨クエリーの構成
for(초기식; 조건식; 증감식) {
실행 구문; // 조건식이 true인 동안 실행
}
for:かっこ()には3つの項目があり、各項目にはセミコロン(;)に分かれる.コンパイラは、for文のカッコに2つのセミコロンがあるかどうかを文法的にのみチェックすることについて、後で再検討します.
  • 初期化:for文の開始時に1回のみ実行され、実行されません.したがって、for文でのみ使用される変数は、主に初期式から初期化されます.
  • 条件式:実行文の一意のエントリに入り、その条件式の結果がtrueの場合、文を繰り返し実行します.条件式がfalseの場合、繰り返しは実行されず、for文を終了します.
  • 増減式:for文の実行文がすべて完了すると、閉じたカッコ{}に遭遇すると、繰り返し実行するたびに、次の繰り返し時に再移動する位置に呼び出されます.
  • +)初期式に含まれる変数の宣言位置
    初期式に含まれる変数はfor文の内外で宣言できます.まず外部で変数を宣言し,初期式で初期化のみを行うとfor文が終了しても変数は消えない.
    int i;
    for(i = 0; i < 3; i++) {
    System.out.println("실행");
    }
    System.out.println(i); //3
    逆に、for文の初期式で宣言する場合、for文の内部でのみ変数を使用できます.多くの場合、変数のみを使用して文の繰り返し回数を指定するため、初期式の内部で変数を宣言する方法が主に使用されます.
    for(int i = 0; i < 3; i++) {
    System.out.println("실행");
    }
    System.out.println(i); // 오류
    また、初期式と増減式はカンマ(,)で区切って複数を同時にマークすることができます.
    for(int i = 0, j = 0; (i+j) < 10; i++, j++)
    //...
    }
    増減式を実行して条件式を再チェックし、前の手順を繰り返します.整理for文の実行順序は次のとおりです.
    ステップA:初期式->条件式(真)->構文の実行
    ステップB:カッコオフ->インクリメント->条件式(真)->構文の実行
    ...
    ステップC:カッコオフ->増分->条件式(偽)->終了
    前述したように、コンパイラはfor文のカッコ内に2つのセミコロンしかチェックしません.すなわち,初期条件式増減式を省略しても,セミコロンがあれば文法的誤りは生じない.結果として,いくつかの特殊なfor文形式が可能である.まず、for実行文に入る唯一のエントリ条件式を省略すると、コンパイラは自動的に条件式にtrueを挿入します.つまり、玄関に入った大根はいつも咲いています.したがって、for文で条件式を省略すると、文が繰り返される.
    for文で条件式を省略した場合(無限ループ)
    for (초기식; ; 증감식){
    실행 구문;
    }
    ほとんどの無限ループにはbreakキーワードが挿入され、プログラミングは特定の条件を満たすと無限ループから逃れる.
    breakを使った無限ループ脱出
    for(int i = 0; i++){
    if(i > 10) {
    break;
    }
    System.out.print(i + " "); // 0 1 2 3 4 5 6 7 8 9 10
    }
    無限に繰り返されるコードの後に実行コードを記述すると、構文エラーが発生します.無限ループにブロックされて届かないコードを書いたからだ.また、条件式にfalseを明示的に追加すると、文が常に閉じているため、for文の内容は絶対に実行できません.これは極めて直観的で当然の結果である.
    文が到達できないコードを記述し、エラーを引き起こす例です.
    for( ; ; ) { 
    실행 구문;
    }
    실행 구문; // - 오류 발생
    
    for( ; false ; ) {
    실행 구문; // - 오류 발생
    }

    実習

         // for 문 기본 문법 구조
            int a; // for 문의 반복 횟수를 지정하는 변수를 외부에서 선언
            for(a = 0; a < 3; a++);{
                System.out.print(a + "");
            }
           System.out.println();
    
            for(int i = 0; i < 3; i++) { // for 문의 반복 횟수를 지정하는 변수를 초기식에서 선언
                System.out.print(i + "");
            }
            System.out.println();
    
            for(int i = 0; i < 100; i++) {
                System.out.print(i + "");
            }
            System.out.println();
    
            for(int i = 10; i > 0 ; i--) {
                System.out.print(i + "");
            }
            System.out.println();
    
            for(int i = 0; i < 10 ; i += 2) {
                System.out.print(i + "");
            }
           System.out.println();
    
            for(int i = 0, j = 0; i < 10; i++, j++) {
                System.out.println(i + j + "");
            }
            System.out.println();
    
            //for 문의 특수한 형태 (무한 루프)
          /*  for(int i = 0; ; i++) {
            System.out.print(i + "");
            }
            for(;;) {
            System.out.print("무한 루프");
            }
            */
            System.out.println();
            
            //무한 루프 탈출
            for(int i = 0; ; i++) {
                if(i>10) {
                    break;
                }
                System.out.print(i + "");
            }
            System.out.println("무한 루프 탈출");
    結果