4주차
1. 선택문
자바 프로그램을 시작하면 main() 메소드의 시작 중괄호 { 에서 시작해서 끝 중괄호 } 까지 위에서 부터 아래로 실행하는 흐름을 가지고 있다.
이러한 실행 흐름을 개발자가 원하는 방향으로 바꿀수 있도록 해주는 것이 흐름 제어문이다. 흐름제어문을 간단히 제어문이라고 한다.
제어문은 조건식과 중괄호 {} 블록으로 구성되는데 조건식의 연산 결과에 따라 블록 내부의 실행 여부가 결정된다.
제어문의 종류는 조건문과 반복문이 있다.
조건문에는 if문, switch문이 있고 반복문에는 for문 ,while문, do-while문이 있다.
if문
if문은 조건식의 결과에 따라 블록 실행 여부가 결정된다.
다음 그림은 if문의 형식과 실행 흐름을 보여준다.
조건식에는 true 또는 false 값을 산출할 수 있는 연산식이나 , boolean 변수가 올 수 있다.
조건식이 true이면 블록을 실행하고 false이면 블록을 실행하지 않는다.
if-else문
if문은 else 블록과 함께 사용되어 조건식의 결과에 따라 실행 블록을 선택한다. if문의 조건식이 true이면 if문의 블록이 실행되고, 조건식이 false이면
else블록이 실행된다. 조건식의 결과에 따라 이 두 개의 블록 중 어느 한 블록의 내용만 실행하고 전체 if문을 벗어나게 된다. 다음은 if-else문의 형식과
실행 흐름을 보여준다.
아까 위의 점수를 if문으로 나눈 것을 else문으로 좀 더 간결하게 나타낼 수 있다.
if-else if-else 문
조건문이 여러개인 if문도 있다. 처음 if문의 조건식이 false일 경우 다른 조건식의 결과에 따라 실행 블록을 선택할 수 있는데, if 블록의 끝에 else if 문을 붙이면 된다.
else if문의 수는 제한이 없으며 여러 개의 조건식 중 true 가 되는 블록만 실행하고 전체 if문을 벗어나게 된다. else if 블록의 마지막에는 else 블록을 추가할 수 있는데, 모든 조건식이 false 일 경우 else 블록을 실행하고 if문을 벗어나게 된다.
이전 예제는 점수가 90점 이상이거나 미만일 경우에만 실행 흐름을 제어했는데, 이번 예제는 조건식 3개를 이용해서 실행 흐름을 제어한다.
중첩 if문
if문의 블록내부에는 또 다른 if문을 사용할 수 있다. 이것을 중첩 if문이라고 부르는데, 중첩의 단계는 제한이 없기 때문에 실행 흐름을 잘 판단해서 작성해야한다.
중첩문을 이용해서 다시 코딩을 해보자
switch문
switch문은 if문과 마찬가지로 조건 제어문이다. 하지만 switch문은 if문처럼 조건식이 true일 경우에 블록 내부의 실행문을실행하는 것이 아니라, 변수가 어떤 값을 갖느냐에 따라 실행문이 선택된다.
switch문은 괄호 안의 값과 동일하게 값을 갖는 case로 가서 실행문을 실행시킨다. 만약 괄호 안의 값과 동일한 값을 갖는 case가 없으면 default로 가서 실행문을 실행 시킨다. default는 생략가능하다.
case 끝에 break; 가 붙어있는 이유는 다음 case를 실행하지 말고 switch문을 빠져나가기 위해서이다.
2. 반복문
for문
프로그램을 작성하다 보면 똑같은 실행문을 반복적으로 실행해야할 경우가 많이 발생한다.
int sum = 0; sum = sum + 1; sum = sum + 2; sum = sum + 3; sum = sum + 4; sum = sum + 5; System.out.println("1~5까지의 합 : "+ sum);
현재는 5까지만 되어있지만 100까지의 합을구하기위해서는 코드낭비가 심해진다.
하지만 for문을 이용하면 코드를 줄일 수 있다.
다음그림은 for문의 실행흐름을 도식화 한것이다.
for문은 또 다른 for문을 내포할 수 있는데, 이것을 중첩된 for문이라고 한다. 이 경우 바깥쪽 for문이 한 번 실행할 때마다 중첩된 for문은 지정된 횟수만큼 반복해서 돌다가 다시 바깥쪽 for문으로 돌아간다. 주로 중첩된 for문의 예로는 구구단 출력이 대표적이다.
또한 for each문도 있는데 향상된 for문이라고도 합니다.
예를 들어 배열에 10개의 값이 있는데 이러한 값들을 하나씩 다 꺼내야한다면
위의 코드와 같이 나타내야 합니다.
하지만
for(변수타입 변수이름 : 배열이름) 을 이용하면
처럼 이용할 수 있습니다.
while문
for문이 정해진 횟수만큼 반복한다면, while문은 조건식이 true일 경우에 계속해서 반복한다.
조건식에는 비교 또는 논리 연산식이 주로 오는데, 조건식이 false가 되면 반복 행위를 멈추고 while문을 종료한다.
while문을 활용하여 1부터 10까지 출력을 해보자
증감연산자를 사용하여 i를 1씩늘리고 i가 11이 될때 while(i<=11) 이 false로 바뀌기 때문에 while문을 넘어가게 된다.
조건식에 true로 해놓으면 무한 루프를 돌게 되기 때문에 제대로 확인해야 한다.
do-while문
do-while문은 조건식에 의해 반복 실행한다는 점에서는 while문과 동일하다.
while문은 시작할 때 부터 조건식을 검사하여 블록 내부를 실행할지 결정하지만, 경우에 따라서는 블록 내부의 실행문을 우선 실행시키고 실행 결과에 따라서 반복 실행을 계속할지 결정하는 경우도 발생한다. 이때 do-while문을 사용할 수 있다.
다음 사진은 do-while문을 이용하여 1부터 10까지 출력하는 코드 이다.
break문
break문은 반복문인 for문, while문, do-while문의 실행을 중지할 때 사용된다.
다음 사진은 while문을 이용해서 주사위 번호 중 하나를 반복적으로 뽑되, 6이 나오면 while문을 종료시킨다.
continue문
continue문은 반복문인 for문, while문, do-while문에서만 사용되는데, 블록 내부에서 continue문이 실행되면 for문의 증감식 또는 while문, do-while문의 조건식으로 이동한다.
continue문은 반복문을 종료하지 않고 계속 반복을 수행한다는 점이 break문과 다르다
break문과 마친가지로 continue문도 대게 if문과 같이 사용되는데, 특정 조건을 만족하는 경우에 continue문을 실행해서 그 이후의 문장을 실행하지 않고 다음 반복으로 넘어간다.
다음 그림은 1에서 10사이의 수 중에서 짝수만 출력하는 코드이다.
참고 문헌
이것이 자바다
참고 블로그
'JAVA' 카테고리의 다른 글
6주차 : 상속 (0) | 2020.12.26 |
---|---|
5주차 : 클래스 (0) | 2020.12.26 |
3주차 : 연산자 (0) | 2020.12.26 |
2주차 : 자바 데이터 타입, 변수 그리고 배열 과제 (0) | 2020.12.26 |
1주차 : JVM은 무엇이며 자바 코드는 어떻게 실행하는 것인가. (0) | 2020.12.26 |