제어문(control statment)은 프로그램의 흐름(flow)을 바꾸는 역할을 하는 문장
- 제어문의 종류는 조건문과 반복문
- 조건문은 조건에 따라 다른 문장이 수행되고
if문은 가장 기본적인 조건문이다.
의미는 '만일(if) 조건식이 참(true)이면, 괄호{ } 안의 문장을 수행하라' 입니다.
if문에 사용되는 조건식은 비교 연산자와 논리 연산자로 구성되며, 조건식의 결과는 반드시 true 또는 false.
괄호{ }를 이용해서 여러 문장을 하나의 단위로 묶는 것을 블럭(block)
블럭 안에는 여러 문장을 넣을 수 있으며, 한 문장만 넣거나, 아무것도 넣지 않을 수 있다.
만약, 블럭 안에 문장이 하나뿐일 경우, 괄호{ }는 생략가능하다.
if-else if문에서는 한 문장에 여러 개의 조건식을 사용가능하다.
if-else 문 처리과정
① 결과가 참인 조건식을 만날 때까지 첫번째 조건식부터 순서대로 평가한다.
② 참인 조건식을 만나면, 해당 블럭{ }의 문장을 수행한다.
③ if-else if문 전체를 빠져나온다.
중첩 if문은 if문의 블럭 내에
또 다른 if문을 포함시키는 것을 말하며,
중첩의 횟수는 제한이 없습니다.
switch문은 단 하나의 조건식으로 많은 경우의 수를 처리할 수 있으며, 간결하여 알아보기 쉬우나, 제약조건이 존재한다.
switch문의 구조
switch(조건식) {
case 1:
~~
break;
case 2:
~~
break;
default:
~~
}
switch문의 처리 과정
① 조건식을 계산합니다.
② 조건식의 결과와 일치하는 case문으로 이동.
③ 해당하는 문장을 수행.
④ break문이나 switch문이 끝나면, switch문 전체를 빠져나간다.
- 만약, 조건식의 결과와 일치하는 case문이 없는 경우, default문으로 이동.
switch문의 제약조건
① switch문의 조건식의 결과는 정수 또는 문자열
② case문의 값은 정수, 상수(문자 포함), 문자열만 가능하며 중복 불가능하다.
임의의 수(난수)를 얻기 위해 Math.random()을 사용한다.
이 메소드는 0.0과 1.0사이 하나의 double값을 반환합니다.
0.0 < Math.random() < 1.0
ex) 1부터 10사이 임의의 정수 구하기
① 각 변에 10을 곱한다.
0.0 < Math.random()*10 < 10.0
② 각 변을 int형으로 변환한다.
0 <= (int)(Math.random()*10) < 10
③ 각 변에 1을 더한다.
1 <= (int)(Math.random()*10)+1 < 11
반복문은 어떤 작업이 반복적으로 수행되도록 할 때 사용
반복문의 종류는 for문, while문, 그리고 do-while문이 있다.
for문과 while문의 구조와 기능이 유사하여 서로 변환이 가능하며, 반복 횟수를 알고 있는 경우 for문을 사용한다.
(1) for문의 구조와 수행순서
<for문의 구조와 수행순서>
(2) 초기화
반복문에 사용될 변수를 초기화하는 부분이며, 처음 한번만 수행다.
(3) 조건식
조건식이 참(true)이면 반복을 계속하고, 거짓(false)이면 반복을 중단하고, for문을 탈출한다.
(4) 증감식
반복문을 제어하는 변수의 값을 증가 또는 감소시기는 식.
for문 안에 또 다른 for문을 포함시키는 것
중첩 횟수에는 제한이 없다.
while문의 구조와 수행순서
<while문의 구조와 수행순서>
① 조건식이 참(true)이면, 블럭{ }안으로 거짓(false)이면, while문 밖으로 벗어난다.
② 블럭{ }의 문장을 수행하고 다시 조건식으로 돌아간다.
do-while문은 while문에서 조건식과 블럭{ }의 순서를 바꾼 것
while문과는 달리 블럭{ }을 먼저 수행한 후, 조건식을 평가한다.
그래서 do-while문은 최소한 한번은 블럭{ }이 수행된다.
continue문은 반복문에서만 사용이 가능하다.
반복이 진행되는 도중에 continue를 만나면 끝으로 이동하여 다음 반복으로 넘어간다.
for문은 증감식으로, while문과 do-while문은 조건식으로 이동한다.