8강. 제어의 흐름 이해하기(2)

철새·2022년 2월 8일
0
  • Do it! 자바 프로그래밍 입문 온라인 강의를 수강하며 작성하였습니다.
  • Section 0. 자바 기본 익히기
  • 8강 "제어의 흐름 이해하기(2)"
  • 반복문 > while문 > do-while문 > for문 > 무한 반복 > 중첩 반복문 > continue문 > break문

반복문

  • 주어진 조건이 만족할 때까지 수행문을 반복적으로 수행한다.
  • while, do-while, for문이 있다.
  • 조건의 만족과 반복 가능 여부에 대해 정확한 코딩을 해야한다.

while문

  • 하나의 조건에 대해 반복수행이 이루어질 때 사용한다.
  • 조건이 맞지 않으면 수행문이 수행되지 않는다.
  • 주로 조건식이 true, false로 나타난다.
while(조건문){
	수행문1;
    수행문2;
}

while문의 기본 문법이며, 무한 루프가 돌지 않도록 수행문 안에 조건문이 벗어날 수 있도록 코딩해주어야 한다.

public class WhileExample {
	public static void main(String[] args) {
		int num = 1;
		int sum = 0;
		while(num <= 10) {
			sum += num;
			num++;
		}
		System.out.println("num : " + num);
		System.out.println("sum : " + sum);	
	}
}

while문 출력
while문을 통해 1부터 10까지 더하는 코드를 작성해 보았다.
num이 11이 되어 while문을 벗어났고, sum은 55로 정상 출력되었다.

do-while문

  • while문과 동일하지만, 먼저 수행문을 한 번 수행하고 조건식을 체크한다.
  • 수행문이 반드시 한 번 수행되어야 하는 경우에 사용한다.
do{
	수행문1;
    수행문2;
} while(조건식);

do-while문의 기본 문법이며, while문과 다르게 조건식을 만족하지 않더라도 do에 쓰여있는 수행문이 무조건 한 번 수행되고, 조건식이 참일 경우 다시 do에 쓰여있는 수행문이 수행된다.

public class WhileExample {
	public static void main(String[] args) {
		int num = 1;
		int sum = 0;
		do {
			sum += num;
			num++;
		}while(num < 1);
		
		System.out.println("do-while문의 결과는 " + sum + "입니다.");
	}
}

do-while문 출력
while에 쓰여있는 조건식이 거짓이지만 do에 쓰인 수행문이 한 번 수행되어 sum의 값이 1인 것을 확인할 수 있다.

for문

  • 반복문 중 가장 많이 사용하는 반복문이다.
  • 수의 특정 범위, 횟수와 관련한 반복수행에서 주로 사용한다.
  • 초기화식, 조건식, 증감식을 한꺼번에 작성한다.
for(초기화식; 조건식; 증감식){
	수행문1;
    수행문2;
}

for문의 기본 문법이며, 초기화식의 변수는 for문 밖에서 선언할 수도 있고, 초기화식을 쓰면서 선언할 수도 있다.
최초에 한 번만 초기화식을 수행하고, 그 후로는 조건식이 참이면 수행문을 수행한 후 증감식이 수행되는 것을 반복하다가 조건식이 거짓이면 for문을 벗어난다.

public class ForExample {
	public static void main(String[] args) {
		int sum = 0;
		for(int num=0; num<=10; num++) {
			sum += num;
		}
		System.out.println("sum : " + sum);
	}
}

위 코드는 while문 예시와 똑같이 작동하며, 변수 num은 초기화식에서 선언했기 때문에 for문을 벗어난 곳에서는 사용할 수 없다.

무한 반복

while(true){
	수행문;
}

do{
	수행문;
}while(true);    

for(;;){
	수행문;
}

위 코드들은 무한 반복을 수행하는 코드이다. 무한 반복은 주로 while문을 이용한다.

중첩 반복문

  • 반복문 내부에 또 반복문이 사용되는 것을 말한다.
  • 반복문이 중첩될 때, 초기화되는 변수가 있다면 초기화한 후 반복문이 수행되도록 유의해야 한다.
public class TimesTableExample {
	public static void main(String[] args) {
		for(int dan = 2; dan <= 9; dan++) {
			for(int times = 1; times <= 9; times++) {
				System.out.println(dan + "X" + times + "=" + dan*times);
			}
			System.out.println();
		}
	}
}

for문을 이용하여 구구단을 출력하는 코드이다. 출력 결과는 너무 길어서 생략한다.
이것을 while문으로 작성한 코드는 다음과 같다.

public class TimesTableExample {
	public static void main(String[] args) {
		int dan = 2;
		int times = 1;
		while(dan <= 9) {
			times = 1;	//내부 while문이 수행되기 위해 times를 초기화
			while(times <= 9) {
				System.out.println(dan + "X" + times + "=" + dan*times);
				times++;
			}
			dan++;
			System.out.println();
		}
	}
}

while문으로 작성하면 코드도 길어지고, 내부 반복문을 수행하기 위해 초기화를 별도로 해줘야 한다는 점, 조건식을 벗어나기 위한 코드도 별도로 작성해줘야 하는 점 등이 불편했다.

coutinue문

  • 반복문과 함께 쓰이며, 반복문 내부 continue문을 만나면 이후 반복되는 부분을 수행하지 않고 조건식이나 증감식을 수행한다.
public class ContinueExample {
	public static void main(String[] args) {
		int total = 0;
		for(int num = 1; num <= 100; num++) {
			if(num%2 == 1) {
				continue;	//num이 홀수인 경우 증감식을 수행함
			}
			total += num;
		}
		System.out.println(total);
	}
}

continue를 이용해 반복문에서 짝수만 모두 더하는 코드를 작성해보았다.

break문

  • 반복문에서 break문을 만나면 더이상 반복을 수행하지 않고 반복문을 빠져나온다.
  • 중첩된 반복문 내부에 break문이 있는 경우에는 가장 가까운 반복문 하나만 빠져나온다.
public class BreakExample {
	public static void main(String[] args) {
		int num=1;
		int sum = 0;
		while(true) {
			sum += num;
			if(sum >= 100) {
				break;
			}
			num++;
		}
		System.out.println("num : " + num);
		System.out.println("sum : " + sum);
	}
}

위 코드는 1부터 몇까지 더했을 때 총합이 100이 넘는지 확인하는 코드이다.
break문을 통해 sum이 100이 넘으면 반복문을 벗어나게 할 수 있다.

profile
효율성을 추구하며 세상을 떠도는 철새입니다.

0개의 댓글