[JAVA] 제어문

봄봄·2022년 2월 10일
0

공부해봄

목록 보기
15/17

제어문이란?

자바 인터프리터는 위에서 아래로 오른쪽에서 왼쪽으로 프로그램을 읽어간다.

그런 프로그램의 흐름을 변경할 수 있는게 제어문이다.

제어문의 종류에는 조건문과 반복문이 있다.

1. 조건문 (if, switch)

주로 if문이 많이 사용된다. 처리할 경우의 수가 많을 때는 if문보다 switch문이 효율적이지만, switch문은 if문보다 제약이 많다.

조건을 참과 거짓으로 구별하는 if문과 달리 변수의 값에 따라 결과값이 결정되는 switch문

은 주사위를 굴려서 나오는 번호를 뽑을때 나오는 결과값을 예제로 들면 설명이 쉽습니다.

- if

if문

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

if-else문

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

if-else if문

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

중첩 if문

if (조건식) {
	// 조건식1이 참(true)일 때 수행될 문장들을 적는다.
	if (조건식2) {
		// 조건식1과 조건식2가 모두 참일 떄 수행될 문장들
	} else {
		// 조건식 1이 참이고, 조건식2가 거짓일 때 수행되는 문장들
	} 
} else {
	// 조건식이 거짓(false)일 때 수행될 문장들을 적는다.
}

- switch

switch문은 단 하나의 조건식으로 많은 경우의 수를 처리할 수 있고, 표현도 간결하므로 알아보기 쉽다. 다만, switch문은 제약조건이 있기 때문에, 경우의 수가 많아도 어쩔 수 없이 if문으로 작성해야 하는 경우가 있다.

switch문의 진행 순서

  1. 조건식을 계산한다.
  2. 조건식의 결과와 일치하는 case문으로 이동한다.
  3. 이후의 문장들을 수행한다.
  4. break문이나 switch문의 끝을 만나면 전체를 빠져나간다.
switch (조건식) {
		case1 :
					// 조건식의 결과가 값1과 같을 경우 수행될 문장들
					// ...
					break;
		case2 :
					// 조건식의 결과가 값2와 같을 경우 수행될 문장들
					// ...
					break; //switch문을 벗어난다.
		// ...
		default :
					// 조건식의 결과와 일치하는 case문이 없을 때 수행될 문장들
					// ...
}

만일 조건식의 결과와 일치하는 case문이 하나도 없는 경우에는 default문으로 이동한다.

switch문에서 break문은 각 case문의 영역을 구분하는 역할을 하는데, 만일 brack문을 생략하면 case문 사이의 구분이 없어지므로 다른 breack문을 만나거나 switch문 블럭{ }의 끝을 만날 때까지 나오는 모든 문장들을 수행한다.

if문처럼 switch문도 중첩이 가능하다.

switch문의 제약조건

  1. switch문의 조건식 결과는 정수 또는 문자열이어야 한다.
  2. case문의 값은 정수 상수만 가능하며, 중복되지 않아야 한다.

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

for문이나 while문에 속한 문장은 조건에 따라 한 번도 수행되지 않을 수 있지만, do-while문에 속한 문장은 무조건 최소한 한 번은 수행될 것이 보장된다.

for문과 while문은 구조와 기능이 유사하여 어느 경우에나 서로 변환이 가능하다. for문은 주로 반복 횟수를 알고 있을 때 사용한다.

- for

for문은 반복 횟수를 알고 있을 때 적합하다.

for문의 구조

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

초기화

반복문에 사용될 변수를 초기화 하는 부분이며 처음에 한 번만 수행된다. 보통 변수 하나로 for문을 제어하지만, 둘 이상의 변수가 필요할 때에는 콤마를 구분자로 변수를 초기화 하면 된다.

단, 두 변수의 타입은 같아야 한다.

조건식

조건식의 값이 참이면 반복을 계속하고, 거짓이면 반복을 중단하고 for문을 벗어난다. for의 뜻이 ‘~하는 동안’ 이므로 조건식이 참인 동안 반복을 계속한다고 생각하면 된다.

초기화, 조건식, 증감식은 필요하지 않으면 생략이 가능하다.(모두 생략도 가능)

for (;;){ ... } // 초기화, 조건식, 증감식 모두 생략. 조건식은 참이된다.

조건식이 생략된 경우, 참으로 간주되어 무한 반복문이 된다.

- while

while문은 조건식이 참인동안, 즉 조건식이 거짓이 될 때까지 블럭{ }내의 문장을 반복한다.

while (조건식) {
			// 조건식의 연산결과가 참인 동안, 반복될 문장들을 적는다.
}

while문의 조건식은 생략 할 수 없다.

while ( ) { // 에러. 조건식이 없음
			...
}

- do-while

while문과 반대로 블럭{ }을 먼저 수행 한 후에 조건식을 평가한다.

do {
		// 조건식의 연산결과가 참일 때 수행될 문장들을 적는다.
} while (조건식);

0개의 댓글