티스토리 뷰
이전 장들...
이전 장에 이어 이번 장에서는 '실행 흐름의 컨트롤'이라는 개념을 살펴보도록 하겠다.
'실행 흐름의 컨트롤'?
말그대로 프로그램의 실행 흐름을 컨트롤할 수 있다는 의미인 것 같은데, 정확히 어떤 의미일까?
우리는 지금까지 코드를 작성하고, 프로그램이 실행될 때 해당 코드들을 모두 차례대로 컴파일하는 과정을 거친다고 알아왔다. 하지만, 프로그래머가 프로그램의 실행 흐름을 마음대로 컨트롤할 수 있다면 어떨까?
가장 흔한 예로, 만약 사용자가 프로그램을 통해 특정 아이디로 로그인한다는 상황을 가정해 보자.
1. 사용자는 해당 프로그램(또는 프로그램과 연결되는 특정 대상)에 로그인하기 위해 사용자가 설정한 아이디와 패스워드를 생각나는 대로 입력할 것이다.
2. 그러면 그 프로그램은, 사용자가 입력한 아이디와 패스워드가 프로그램에 저장되어 있는 정보와 일치하는지 판단해야 할 것이다.
정보가 일치하지 않는데 로그인 승인을 하면 안 되기 때문이다.
3. 그러면 여기서, '프로그램에 저장되어 있는 정보'와 '사용자가 입력한 정보'가 일치하는지 판단하는 기능과, 만약 일치하면 로그인을 승인하는 기능은 어떻게 구현할 것인가?
3번의 과정에서, 일치한다면 로그인을 승인하고, 일치하지 않는다면 경고 문구를 출력하거나 프로그램을 종료하는 등의 '조건'이 필요할 것이다. 그래서 우리는 '조건문'이라는 것을 알아야 한다.
조건문이 대충 왜 필요한지는 알겠는데, 어떻게 쓰는 건가?
기본적으로 조건문에는 if ~ else if ~ else 문과 switch ~ case ~ default 문이 있다. 여기서 '문'이라는 접미사가 붙은 이유는, '문법'이기 때문이다. 따라서 당연히 알아야 한다는 의미다.
if문!
if문, if ~ else문, if ~ else if ~ else문 등 불리우는 이름은 다양하다.
위에서 언급했듯, 참인지 거짓인지를 판단하여 해당 기능만 수행하는 문법인데, if문은 어떻게 사용하는 것인지 그 기본 형식을 살펴보자.
if (true or false) { // 조건 true 시 실행되는 영역 } |
1번 줄에 if문 괄호 안에 해당 조건이 들어가게 되며, 중괄호 { } 안에 해당 조건이 충족될 경우 실행될 명령을 작성할 수 있다.
만약 if문의 조건이 충족되지 않을 경우 그 if문은 그냥 무시하고 진행하게 된다.
반면, if문의 조건이 충족되지 않을 경우, 또다른 조건을 걸어 다시 다음 조건을 판단하는 형식으로도 작성할 수 있다. 바로 else if문을 사용하는 것인데, 다음 형식을 살펴보자.
if (첫 번째 true or false) { // 첫 번째 조건 true 시 실행되는 영역 } else if (두 번째 true or false) { // 첫 번째 조건이 맞지 않고, 두 번째 조건 true 시 실행되는 영역 } else if (세 번째 true or false) { // 첫 번째 조건, 두 번째 조건이 맞지 않고, 세 번째 조건 true 시 실행되는 영역 } |
약간 복잡한데, 이해하면 그리 복잡할 것도 없다.
우선 구조를 보면, 맨 위 if문이 존재하고, 중괄호가 끝나는 시점에 else if문이 존재한다. 따라서 else if문은 첫 번째 if문의 조건이 충족되지 않을 시 실행되는 구조임을 알 수 있다.
다만, if문은 한 번만 사용할 수 있는데, else if문은 무제한으로 사용할 수 있다는 특징이 있다. 정확히 어떻게 쓸 수 있는지 아래 예제를 통해 알아보자. (클래스명과 main 메소드는 생략한다.)
int a = 10; if (a == 10) { System.out.println("a의 값은 10입니다."); } else if (a != 10) { System.out.println("a의 값은 10이 아닙니다."); } |
먼저 int형의 변수 a에 10을 대입하였고, 변수 a가 10이면 "a의 값은 10입니다"를, a가 10이 아니면 "a의 값은 10이 아닙니다"를 출력하는 프로그램이다.
원한다면 else if를 여러 번 넣어 여러 번 비교할 수 있다.
int a = 10; if (a > 10) { System.out.println("a는 10보다 큽니다."); } else if (a < 10) { System.out.println("a는 10보다 작습니다."); } else if (a == 10) { System.out.println("a는 10입니다."); |
if문이 단순 조건을 비교하는 것이었다면, else if는 if문에서 맞지 않은 조건을 다시 비교하는 역할을 한다는 것을 알 수 있다.
그러면, 아무 조건도 맞지 않을 경우 실행될 수 있는 조건문도 필요하지 않을까? 물론 아무 조건도 맞지 않으면 조건문이 아니지만, 아무것도 맞지 않는다고 아예 실행되지 않을 수는 없다는 말이다. 그래서 else문이 있다. 다음 코드를 보자.
int a = 10; if (a > 10) { System.out.println("a는 10보다 큽니다."); } else if (a < 10) { System.out.println("a는 10보다 작습니다."); } else { System.out.println("a는 10입니다."); |
위 예제에서 맨 아래 else if문을 else문으로 바꾼 예시이다. if문이나 else if문의 조건이 성립되지 않으면 최종적으로 else문을 실행하는 원리라고 이해하시면 되겠다.
if ~ else 문과 유사한 성격의 조건 연산자
if ~ else 문의 경우 조건을 걸고, 해당 조건에 맞으면 그 조건의 명령이 실행되고, 맞지 않으면 다음 조건을 판단하는 문법이란 것을 알았다. 그런데 연산자 중에서도 이렇게 '조건을 판단'하는 연산자가 있다. 바로 '삼항 연산자'라는 것인데, 아래의 형식을 보겠다.
연산자 답지 않게 매우 간단하다. 앞의 조건은 if문의 true or false 의 조건과 같다. 즉, 어떠한 조건이 성립되면 수1을 돌려주고, 성립되지 않으면 수2를 돌려준다고 이해하면 되겠다. 역시 다음 예제를 통해 자세히 알아보겠다.
(1 > 2) ? "big" : "small" |
앞의 조건은 '1이 2보다 큰지'를 묻고 있다. 그래서 당연히 1이 작으니 조건이 성립하지 않아 "small" 문자열을 돌려주게 된다.
다음 장에서는 같은 조건문이지만 형식이 비교적 간단하다고 할 수 있는 'switch ~ case ~ default문'에 대해 알아보겠다.
도움받은 책들 :
|
|
다음 장 바로가기 >>
'프로그래밍 > Java' 카테고리의 다른 글
11장. 실행 흐름의 컨트롤 - 반복문 (0) | 2018.07.31 |
---|---|
10장. 실행 흐름의 컨트롤 - switch문 (0) | 2018.07.30 |
8장. 연산자 (0) | 2018.07.27 |
7장. 형 변환 (0) | 2018.07.27 |
6장. 상수 (0) | 2018.07.27 |
- Total
- Today
- Yesterday
- EC2
- 스타트업
- 도커
- entrypoint
- 디자인
- Container
- dockerhub
- Material
- 메터리얼
- 자격증명
- 머티리얼
- dockerfile
- 컨테이너
- DESIGN
- AWS
- env
- docker
- uiux
- ecr
- 테라폼
- Operator
- main
- 자료형
- Java
- Terraform
- Android
- 안드로이드
- cmd
- 자바
- HCL
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |