반복문(for, while, do-while)

develop.u·2022년 8월 8일
0

반복문이란?

  • 어떤 작업을 반복적으로 할 때 반복 실행 하도록 하는 제어문

반복문의 종류

  • for문
  • while문
  • do ~ while문

1. for문

  • 지정된 횟수만큼 반복 처리하는 구문
1. 초기식으로 초기값을 설정
2. 조건식을 확인하고 참이면 중괄호 안의 내용({…})을 수행
3. 닫는 중괄호( } )를 만나면 증감식으로 이동
4. 조건식을 다시 확인하고 참이면 반복, 거짓이면 for문을 종료

📝for문 형식

For(초기식; 조건식; 증감식){
	조건식이 참일 경우 반복 실행
}

🖥️ 예시1

public class helloWorld{
	public void main(String[] args) {
    // 버거킹 3번 출력하기
	for(int i = 1; i <= 3; i++) { 
			System.out.println(i + ". 버거킹");
		}
 	}
}

결과값

1. 버거킹
2. 버거킹
3. 버거킹

🖥️ 예시2

public class helloWorld{
	public static void main(String[] args) {
		 //1 ~ 5까지의 모든 합 구하기
	    int sum = 0;
	    for(int i = 0; i <= 5; i++) {
	    sum += i;
	    System.out.println("i : " + i + " sum : " + sum);
	    }
	    System.out.println("최종 결과 :" + sum);
	}
 	}

for문의 예외형식
-초기식 생략
-조건식 생략
-증감식 생략
-초기식과 증감식 여러 개 포함 가능

  • 초기식 생략
    : 이미 이전에 값이 초기화 되어 for 내부에서 값을 지정할 필요가 없는 경우
int i = 0; // 먼저 초기화 됨
for(  ; i < 5; i++){ // 초기화식 생략
...
}
  • 조건식 생략
    : 반복 수행에 대한 조건이 수행문 내부에 있는 경우
for(i = 0; ; i++){
int sum += i;
if(sum > 5) break; // 조건식 부분
  • 증감식 생략
    : 증감식에 대한 연산이 복잡하거나 다른 변수의 연산 결과에 의해 결정되는 경우
for(i = 0; i < 5; ){
...
i = (++i) % 10;
}
  • 초기식과 증감식 여러 개 포함
int i, j;
for(i = 0, j = 0; (i + j) < 6 ; i ++, j++){
...
}
  • 요소를 모두 생략했을 경우
    : 무한 반복
for( ; ; )

2. while문

  • 기본 원리는 for문과 동일
  • 단, for문과 달리 소괄호 안에 조건식만 들어감
    for문은 초기식, 조건식, 증감식을 모두 한 줄에 작성
    while문은 초기식과 증감식을 외부에 정의해 주어야 함

📝while문 형식

초기식;
while(조건식) {
	조건식이 참일 경우 반복 실행
    증감식;
}
조건식이 거짓이면 반복문 종료

🖥️ 예시1

public static void main(String[] args) {
		// 1 ~ 5까지 더하기
		// 초기식
		int sum = 0;
		int i = 1;
		
		while(i <= 5) { //while(조건식)
			// 증감식
			sum += i;
			i++; // 생략하면 무한루프
		}
		System.out.println("sum : " + sum);
	}

결과값

sum : 15

🖥️ 예시2

public static void main(String[] args) {
		//시스템이 종료될 때까지 무한 반복
		Scanner sc = new Scanner(System.in);
		int menu = 0;
				
		//5번 누르면 시스템 종료
		while(menu <= 4) { //4 이하의 숫자 입력 시 무한반복
		System.out.println("0 ~ 4번메뉴를 선택하세요(종료 5번) : ");
		menu = sc.nextInt(); //메뉴 입력
		if(menu <= 4) {
		System.out.println(menu + "번 메뉴를 선택하셨습니다.");
		}else {
		System.out.println("시스템을 종료합니다.");
		}
		}
	}

결과값


3. do ~ while문

  • While문과 같이 조건에 따라 반복하지만 조건을 나중에 비교
  • do{…} 안의 문장을 우선적으로 1회 실행하고 조건을 판별
    → 이후 조건식이 참일 때 do반복문 안의 문장을 실행

📝do - while문 형식

초기식;
do {
	1회 무조건 실행, 조건식이 참일 경우 반복실행
    증감식;
} while(조건식);
	조건식이 거짓이면 반복문 종료

🖥️ 예시1

public static void main(String[] args) {
	int i = 5;
	do {
		System.out.println(i + ". 버거킹");
		i++; //증감식 써줘야함
	}while(i < 4);
		System.out.println("종료합니다."); 
}

결과값

5. 버거킹	//1회 우선 출력
종료합니다.	//조건식 판별 후 거짓일 경우 종료

이중반복문(Nested For)

  • 반복문 안에 반복문을 사용하여 이중으로 반복문을 사용하는 것

🖥️ 예시1

public static void main(String[] args) {
	int total = 0;
	
    for(int i = 0; i < 3; i++) {
		System.out.println("i의 값은 : " + i);
		for(int j = 0; j < 5; j++) { //i 1번 출력에 j 5번 출력)
			total = total + 1; 
			System.out.print(total + " ");
		}
				System.out.println(); //안쪽 for문 출력 후 줄바꿈
	}
}

결과값

i의 값은 : 0
1 2 3 4 5 
i의 값은 : 1
6 7 8 9 10 
i의 값은 : 2
11 12 13 14 15 

🖥️ 예시2

public static void main(String[] args) {
// 구구단 2단 출력하기

	for(int dan = 2; dan <= 2; dan++) {
		for(int i = 1; i <= 9; i++) {
        // dan = 2일 때 i는 1 ~ 9까지 반복 후 바깥 for문으로 이동
		System.out.println(dan + " X " + i + " = " + dan * i);
		}
	}
}

결과값

2 X 1 = 2
2 X 2 = 4
2 X 3 = 6
2 X 4 = 8
2 X 5 = 10
2 X 6 = 12
2 X 7 = 14
2 X 8 = 16
2 X 9 = 18

반복문에서 사용 가능한 제어문

  • continue;
    continue 이후의 명령들은 무시되고 반복문 시작으로 돌아감
  • break;
    이 문장이 실행되면 반복문을 무조건 종료

🖥️ continue 예시

public static void main(String[] args) {
		for(int i = 1; i < 5; i++) {
			System.out.println(i + ". 버거킹");
						
			if(i < 3) continue;
			System.out.println(i + ". continue 아래의 문장");
			}
		}

결과값

1. 버거킹
2. 버거킹
3. 버거킹
3. continue 아래의 문장
4. 버거킹
4. continue 아래의 문장

무한루프

  • 증감식이 설정되지 않거나, 증감식이 수행되더라도 조건식이 거짓이 되지 않은 형태
  • 조건식이 항상 참이므로, 반복문이 종료되지 않음
  • 프로그램이 PC의 자원을 매우 많이 사용하게 되므로, 시스템 다운을 발생시킬 수 있음

🖥️ for문 무한루프 예시

public static void main(String[] args) {
	for(int i = 0; i < 10; i--){
	System.out.println(i);
	} //i--로 인해 i 는 계속 10보다 작아서 무한 반복
}

🖥️ while문 무한루프 예시

public static void main(String[] args) {
	int i = 0;	// 반드시 변수 먼저 선언
	while( i < 10 ){
	// 증감식(i = i + 1) 생략
	System.out.println( "무한루프" );
	}
}

0개의 댓글