ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [무작정 기록] 제어문(선택문/반복문/기타)
    IT/JAVA 2025. 3. 14. 18:42

    제어문

    프로그램의 흐름을 제어하는데 사용한다.

    즉 문장(명령어)의 흐름을 제어 시키는 명령(문장)을 말한다.


    1. 조건문 혹은 선택문(if, switch)

      : 조건에 따라서 동작시키고자 하는 명령(문장)을 선택하는 것을 말한다.

     

     

     

    if문

     

    기본형식

    if(  조건식 ){
    
        참일때에 동작시킬 명령어(들)
    
    }else if( 조건식 ){
    
        추가적인 조건검사시 사용하며, 동작시킬 명령어(들)
    
    }else{
    
        거짓일때에 동작시킬 명령어(들)
    
    }

     

    구분 특징 예제  (a = 1, b = 2)
    기본 if 문 - 동작시킬 명령어가 한개밖에 없으면 중괄호 {} 생략할 수 있다.
    - 하지만 동작시킬 명령어가 여러개라면 중괄호 {} 를 생략하면 안된다.
    - if는 중괄호가 있는 if 순서대로 명령어들을 호출한다.
    - 명령어가 두개 이상있을때 괄호를 하나를 지우면 else 영역부터 에러가 난다.

    - 또한 명령어도 맨 첫번째 하나만 로드하고 나머지는 읽지 못한다.
      (error msg --> Syntax error on token "위치", delete this token)
     if( a < 1 ){
        System.out.print("true");
     }
    중첩 if 문 - if 속에 또다른 if 문이 오는것을 말함
    - 중첩 if문일때에 else 가 오면 가장 근접한  if와 대응이 된다.
     if( a <= 1 ){
        if(b <= 2){
            System.out.print("all true");
        }
     }
    다중 if 문 - 판단해야하는 조건식이 여러개 일때 사용하는 구문
     if( a < 1 ){
        System.out.print("true");
     }else if( a < 2 ){
        System.out.print("false");
     }else{
        System.out.print("?");
     }

     

    판단해야하는 case가 여러가지 일때에 if~else if를 사용할수 있지만, 문장구조가 복잡해지고 읽기가 쉽지 않음

    그럴때는 switch case를 사용하면 좀 더 간결하게 표현 할 수 있다.

     

     

     

     

    switch ~ case 문

     

    기본형식

    switch(항){
    
        case 값1:명령어1; break;
    
        case 값2:명령어2; break;
    
        case 값3:명령어3; break;
    
        default:명령어n;        // 마지막 디폴트는 브레이크를 안 걸어도 무관하다
    
    }

     

    특징 예제  (a = 1, b = 2)
    항 영역에는 변수나
    변수에 변수 끼리 이용한 수식이 올 수있다.
    (수식이 항에는 올 수 없다. 컴파일 오류)
     // [가능] 변수형 항 1
     switch(a){
        ...
     }

     // [가능] 변수형 항 2
     int c = a + b;
     switch(c){
        ...
     }

     // [불가] 변수를 이용한 수식 항
     switch(a = b){
        ...
     }
    case에 부합하는게 없으면 default를 읽는다.
     int c = a + b; // 1 + 2 = 3

     switch (c) {
        case 1:
            System.out.println("결과는 1입니다.");
            break;
        case 2:
            System.out.println("결과는 2입니다.");
            break;
        case 4:
            System.out.println("결과는 4입니다.");
            break;
        default:
            System.out.println("결과는 1, 2, 4가 아닙니다.");
     }
    if문처럼 부합하는걸 찾으면 실행하고 끝나는 것처럼 보이지만,
    case는 끝까지 수직으로 한 사이클을 읽는다.
    (fall through 형식, break 가 없는 식)
     int c = a + b; // 1 + 2 = 3

     switch (c) {
        case 1:
            System.out.println("결과는 1입니다.");
        case 2:
            System.out.println("결과는 2입니다.");
        case 3:
            System.out.println("결과는 3입니다.");
        case 4:
            System.out.println("결과는 4입니다.");
        default:
            System.out.println("결과는 알 수 없습니다.");
     }
    만약 부합하는걸 찾고 나가고 싶으면 break를 써준다.
    (fall through 방지 형식, break 문 추가)
     int c = a + b; // 1 + 2 = 3

     switch (c) {
        case 1:
            System.out.println("결과는 1입니다.");
            break;
        case 2:
            System.out.println("결과는 2입니다.");
            break;
        case 3:
            System.out.println("결과는 3입니다.");
            break;
        case 4:
            System.out.println("결과는 4입니다.");
            break;
        default:
            System.out.println("결과는 알 수 없습니다.");
     }

     

     

     

     


    2. 반복문 (for, while, do~while)

      : 조건에 따라서 동작시키고자 하는 명령(문장)을 선택하는 것을 말한다.

         즉 특정 명령어(들)를 조건이 만족하는 동안 계속하여 반복 수행시키고자 할 때에 사용하는 문장(명령어)를 말한다.

     

     

     

    for문

     

    기본형식

     

    for( 항1 ; 항2 ; 항3 ){          -------> i = 1; i<= 10; i++
    
         반복시킬 명령어(들)      -------> target[i]
    
    }
    
    항1 : 초기값
    항2 : 조건식
    항3 : 증감식
    - 중첩 반복문
    
    for(초기값 ; 조건식; 증감식){
    
        for(초기값 ; 조건식 ; 증감식){
           명령어(들)
        }
           명령어(들)         
    }



     

     

     

    while 문 ( 조건식 이후 body를 실행 )

     

    기본형식

     

    초기값;
    
    while( 조건식 ){
    
        반복시키고자 하는 명령어(들);
    
        증감식;
    }

     

     

     

     

    do~while문 ( body를 실행후 while을 실행한다.

     

    기본형식

     

    초기값;
    
    do{
    
        반복시키고자 하는 명령어(들)
    
        증감식
    
    } while(조건식);

     

     

     

     

    구분 특징 예제  (a = 1, b = 2)
    for 문 반복 횟수가 정해져 있을 때 사용
     for (int i = 0; i < b; i++) {
        System.out.println("i 는 "+ i +"번 수행 됩니다.");
     }
     // 결과
     // i 는 0 번 수행 됩니다.
     // i 는 1 번 수행 됩니다.
    while 문 특정 조건이 'TRUE' 일 동안 반복
     int i = 0;
     while (i < b) {
        System.out.println("i 는 "+ i +"번 수행 됩니다.");
        i++;
     }
     // 결과
     // i 는 0 번 수행 됩니다.
     // i 는 1 번 수행 됩니다.
    do~while 문 조건에 관계없이 최소 한 번은 실행
     // TRUE 일 경우
     int
    i = 0;
     do {
        System.out.println("i 는 " + i + "번 수행 됩니다.");
        i++;
     } while (i < b);
     // 결과
     // i 는 0 번 수행 됩니다.
     // i 는 1 번 수행 됩니다.

     // FALSE 일 경우
     int i = 3
     do {
        System.out.println("이 코드는 최소 한 번은 실행됩니다.");
     } while (i < b);
     // 결과
     // 이 코드는 최소 한 번은 실행 됩니다.

     

    ※ while문과 do~while문의 차이

    처음부터 조건을 만족하지 않는 초기값일때에

    while문은 반복문을 한번도 동작하지 않을 수 있지만

    do~while문은 적어도 반복문을 한번은 실행합니다.

     

     

     

     


    3. 기타( break, continue )

      : 반복문 내의 특정 조건에 따라 흐름을 제어하는 역할을 말한다.

     

    종류 설명
    break - switch, 반복문(for, while, do~while)에서 사용되며 해당 body(중괄호{})를 탈출하는 용도로 사용
    - 반복문 자체를 완전히 종료
    continue - 반복문(for, while, do~while)에서 사용되며, continue를 만나면 반복문의 증감식이나 다음 조건식을 판별하러 가게 한다.
    - 특정 조건에서 현재 반복만 건너뛰고, 다음 반복으로 이동하는것
      (비유하면 게임 중 특정 스테이지를 스킵하고 다음 단계로 넘어가는것)
    - 즉 반복문속에서 continue를 만나면 그 다음 문장들을 동작하지 않고 다음 증감식이나 조건식을 판별하러 간다.
      (특정상황은 제외 시키고자 할 때에 사용)

     

     

     

     

    + 번외

    반복문의 종류가 3가지 있는데 (for, while, do~while) 어떨때 어떤것을 쓰는게 더 좋은지?

    반드시 어떨때 뭐가 더 좋아라는 것은 없지만,

    대체로 횟수가 분명할 때에는 for를 대체로 사용하고

    계속 반복하여 동작시킬때에는 while, do~while을 사용하며

    이때에 적어도 한번 이상 동작시킬 필요가 있다면 do~while문을 사용합니다. >>> do~while은 body영역부터 움직이기 때문

    반응형

    'IT > JAVA' 카테고리의 다른 글

    [무작정 기록] 배열  (0) 2025.04.11
    [무작정 기록] 연산자  (0) 2025.03.11
    [무작정 기록] 데이터 타입  (1) 2025.03.07
    [무작정 기록] JAVA용어 정리  (0) 2025.03.07
    [무작정 기록] 자바란?  (0) 2025.02.12

    댓글

Designed by Tistory.