1. 조건문 - if, switch

흐름(flow)을 바꾸는 역할을 하는 문장들을 '제어문(control statement)'이라고 한다. 조건문과 반복문이 있으며, 조건문은 조건에 따라 다른 문장이 수행되도록 하고, 반복문은 특정 문장들을 반복해서 수행한다.

1.1 if 문

만일(if) 조건식이 참(true)이면 괄호{} 안의 문장들을 수행하라

if (조건식) {
	//조건식이 참(true)일 때 수행될 문장들을 적는다.
}

1.2 if-else 문

'else'의 뜻이 '그 밖의 다른'이므로 조건식의 결과가 참이 아닐때, 즉 거짓일 때 else블럭의 문장을 수행하라

if (조건식) {
	//조건식이 참(true)일때 수행 될 문장
} else {
	//조건식이 거짓(false)일때 수행될 문장
}

조건식의 결과에 따라 이 두 개의 블럭 {}중 어느 한 블럭 {}의 내용이 수행되고 전체 if 문을 벗어난다.

1.3 if -else if 문

처리 해야 할 경우의 수가 셋 이상인 경우 사용

if (조건식) {
	//조건식1의 연산결과가 참(true)일때 수행될 문장
} else if (조건식 2) {
	//조건식2의 연산결과가 참(true)일때 수행될 문장
} else if (조건식 3) {
	//조건식2의 연산결과가 참(true)일때 수행될 문장
} else { //마지막에는 보통 else블럭으로 끝나며, else블럭으로 생략 가능하다.
	//위의 어느조건식도 만족하지 않을때 수행될 문장
}

if-else if문이 여러 개의 if문을 합쳐 놓은 것이긴 하지만, 그렇다고 해서 조건식을 바꾸지 않고 여러개의 if문으로 쪼개놓기만 하면 전혀 다른 코드가 된다는 점을 유의하자.

1.4 중첩 if 문

중첩의 횟수에는 제한이 없다.

if (조건식1) {
	//조건식1의 연산결과가 true일때 수행될 문장
    if (조건식2) {
    	//조건식1과 조선식2가 모두 true일때 수행될 문장
    } else {
    	//조건식 1이 true이고, 조건식2가 false일 때 수행될 문장
} else {
	//조건식 1이 false일 때 수행되는 문장
}

1.5 switch 문

단 하나의 조건식으로 많은 경우의 수를 처리 할 수 있음.
단 제약조건이 있기 때문에, 경우의 수가 많아도 if문으로 작성해야 하는 경우가 있다.

조건식을 먼저 계산한 다음, 그 결과와 일치하는 case문으로 이동한다.
이동한 case문 아래에 있는 문장들을 수행하며, break문을 만나면 전체 switch문을 빠져나가게 된다.

	switch (조건식) {
		case 값1 :
			//조건식의 결과가 값1과 같을 경우 수행될 문장
			 break;
		case 값2 :
			//조건식의 결과가 값2와 같을 경우 수행될 문장
			break;
		default : 
			//조건식의 결과와 일치하는 Case문이 없을 떄 수행될 문장
	}

삭제 권한,쓰기권한,읽기 권한을 주는 switch문에선 고의적으로 break문을 생략하는 경우가 있다. 로그인한 사용자의 등급을 체크하여 사용자에게 권한을 줄때 사용 할 수 있다.

제약조건
1. 조건식은 결과값이 반드시 정수이어야 하며, 이 값과 일치하는 case문으로 이동하기 때문에 case문의 값 역시 정수이어야 한다.그리고 중복되지 않아야 한다.
2. case문의 값은 반드시 상수이어야 한다. 변수나 실수, 문자열은 case문의 값으로 사용할 수 없다.

2. 반복문 - for, while, do-while

for문이나 while문에 속한 문장은 조건에 따라 한 번도 수행되지 않을 수 있지만 do-while문에 속한 문장은 무조건 최소한 한 번은 수행될 것이 보장된다.
for문은 주로 반복 횟수를 알고 있을 때 사용한다.

2.1 for 문

for(초기화;조건식;증감식) {
	//조건식이 참일 때 수행될 문장들을 적는다.
}

초기화가 수행되고, 조건식이 참인동안 수행될문장, 증감식 순으로 반복된다. 조건식이 거짓이 되면, for문 전체를 빠져 나간다.

for(int i = 1; i < 5, i++)	{
	//1~5번 반복될 문장
}코드를 입력하세요
  • 초기화 : int i = 1;
    반복문에 사용될 변수를 초기화하는 부분이며 처음에 한번만 수행된다.
    보통 변수 하나로 for문을 제어하지만, 둘 이상의 변수가 필요할 때는 아래와 같이 콤마 ','를 구분자로 변수를 초기화하면 된다.
  • 조건식 : i < 5;
    조건식의 값이 참(true)이면 반복을 계속하고, 거짓(flase)이면 반복을 중단하고 for문을 벗어난다. ~하는 동안, 참인동안 반복
  • 증감식 : i++
    반복문을 제어하는 변수의 값을 증가, 감소시키는 식이다.
    i++, i--, i += 2, i += 3

for(;;) {...} //초기화,조건식,증감식 모두 생략 > 조건식 참, 무한 for 문

향상된 for 문

for(타입 변수명 : 배열 또는 컬렉션) {
	//반복할 문장 
}
//예시
int[] arr = {1,2,3,4,5};
//향상된 for문
for(int tmp : arr) {
	System.out.println(tmp);
}

향상된 for문은 일반적인 for문과 달리 배열이나 컬렉션에 저장된 요소들을 읽어오는 용도로만 사용할 수 있다는 제약이 있다.

2.2 while 문

for문에 비해 while문은 구조가 간단하다. 조건식이 '참(true)인 동안', 즉 조건식이 거짓이 될 때까지 블럭{}내의 문장을 반복

while (조건식) {
	//조건식의 연산결과가 참(true)인 동안, 반복될 문장들을 적는다.
}
//1~10까지 정수를 순서대로 출력하는 while문 예시
int i = 1; //초기화
while(i <= 10) { //조건식
	System.out.println(i);
    i++; //증감식
}

for문과 while문은 항상 서로 변환 가능하다. 만일 초기화나 증감식이 필요하지 않은 경우라면, while문이 더 적합할 것이다.

조건식이 항상 참이 되도록 하려변 반드시 true를 넣어야 한다.

while(true) { //조건식이 항상 참
	...
}

블럭{}안에 조건문을 넣어서 특정 조건을 만족하면 무한 반복문을 벗어나도록 해야한다.

2.3 do - while 문

do-while문은 while문의 변형으로 기본적인 구조는 while문과 같으나 조건식과 블럭{}의 순서를 바꿔놓은 것이다. 그래서 while문과 반대로 블럭{}을 먼저 수행한 후에 조건식을 평가한다.

while문은 조건식의 결과에 따라 블럭{}이 한 번도 수행되지 않을 수 있지만, do - while문은 최소한 한번은 수행 될 것을 보장.

2.4 break 문

break문은 자신이 포함된 가장 가까운 반복문을 벗어난다.
주로 if문과 함께 사용되어 특정 조건을 만족하면 반복문을 벗어나도록 한다.

2.5 continue 문

continue문은 반복문 내에서만 사용 될 수 있으며, 반복이 진행되는 도중에 continue문을 만나면 반복문의 끝으로 이동하여 다음 반복으로 넘어간다. for문의 경우 증감식으로 이동하며, while문과 do-while문의 경우 조건식으로 이동한다.

continue문은 반복문 전체를 벗어나지 않고 다음 반복을 계속 수행한다는 점이 break문과는 다르다. 주로 if문과 함께 사용되어 특정 조건을 만족하는 경우에 continue문 이후의 문장들을 수행하지 않고 다음 반복으로 넘어가서 계속 진행하도록 한다.
전체 반복 중에 특정조건을 만족하는 경우를 제외하고자 할 때 유용하다.

2.6 이름 붙은 반복문

중첩 반복문 앞에 이름을 붙이고 break문과 continue문에 이름을 지정해 줌으로써 하나 이상의 반복문을 벗어나거나 반복을 건너뛸 수 있다.

outer:
while(true) {
	...
    for(;;) {
    	...
        if(num == 0) //계산종료. for문 벗어난다
        	break;
        if(num == 99) //전체종료. for문과 while문 모두 벗어남
        	break outer;
        ...
    } // for(;;)
 }//while(true)

선택된 메뉴에서 0을 입력하면 break문으로 for문을 벗어나서 다른 메뉴를 선택할 수 있게 되고, 99를 입력하면 'break outer,'에 의해 for문과 while문 모두를 벗어나 프로그램이 종료된다.

profile
하루하루 최선을

0개의 댓글