티스토리 뷰
이전 장들...
9~10장에서는 실행 흐름의 컨트롤 중 '조건문'이라는 문법을 알아보았다. 조건문은 말그대로 실행 흐름 중에 조건을 걸어 해당 조건이 성립되면 성립될 시 해당하는 코드를 실행하고, 성립되지 않을 시 해당 코드를 건너뛰는 형식의 문법을 말한다.
이번 장에서는 실행 흐름의 컨트롤 중 '빈복문'이라는 문법을 알아볼 텐데, 이 문법도 말그대로 '반복한다'는 의미를 가진다. 프로그래머가 프로그램을 만들 때 그 프로그램이 특정한 기능을 반복해야 한다고 생각해 보자. 프로그래머는 그 '반복'의 기능을 손수 하나하나 반복하도록 만들어주어야 할 것이다. 이때 프로그래머의 반복 작업을 줄여 주는 기능이 '반복문'이다.
그래서 반복문은 어떻게 쓰는데?
조건문에도 if문, switch문이 있듯 반복문에도 for문, do~while문, while문이 있다. 우선 while문부터 사용 형식에 대해 알아보자.
사용 형식은 위와 같다. if문과 동일하게 while 뒤 괄호 안에 반복 조건을 쓰고, 중괄호 사이에 해당 반복 조건이 성립되었다는 가정 하에 반복될 명령을 작성한다. 그러면 위 코드의 실행 결과는 어떻게 될까? (num의 초기값은 1로 가정한다.)
소스 코드 :
class WhileTest { public static void main(String[] args) { int num = 1; while (num < 5) { System.out.println("I like Java" + num); num++; } } } |
실행 원리 :
|
I like Java 1 I like Java 2 I like Java 3 I like Java 4 |
do ~ while문
while문과 비슷하지만, 바로 while문이 나오지 않고 앞에 do 문이 나오면서 먼저 중괄호 내 영역을 실행하고 while문의 조건에 따라 반복 여부를 결정한다.
앞의 예제와 코드 순서만 다르다고 보면 된다. 앞의 예제에서는 while문으로 조건을 명시하고 그 조건이 충족할 시 명령을 실행했는데, 이 예제에서는 우선 반복문을 실행하고 뒤에 while문을 통해 반복 여부를 결정하는 원리이다. 순서만 바뀐 원리이니 출력값도 같다.
원래 코드는 아래 소스 코드이다.
class WhileTest { public static void main(String[] args) { int num = 1; do { System.out.println("I like Java" + num); num++; } while (num < 5); } } |
for문
for문은 같은 반복문이지만, while문과 생김새가 약간 다르다.
for (반복할 변수의 초기값; 조건; 반복 후 연산) { // 실행할 내용 } |
while문이 "아닐 때까지 반복"이었다면 for문은 "~부터 ~까지 어떻게 반복" 이라고 할 수 있다.
위에 쓰여진 바와 같이, 괄호 안에 3가지가 들어가게 되는데, 다음 코드로 예시를 들어 보겠다.
소스 코드
for (int i = 1; i <= 10; i++) { System.out.println(i); } |
실행 결과
1 2 3 4 5 6 7 8 9 10 |
아주 간단한 예시이다. 그냥 i = 1로 초기값을 선언하고, 10보다 작거나 같을 때까지(크면 해당X) 1씩 증가하면서 출력하는 예시이다.
for문과 while문의 비교
같은 반복의 역할을 하는 반복문이라도 생김새가 다르니, 같은 문제의 예제로 비교분석해 보겠다.
문제 : while문과 for문을 사용하여, num 변수가 0부터 4까지 출력하도록 하시오.
소스 코드 :
1. while문
class whileEx { public static void main(String[] args) { int num = 0;
while (num < 5) { System.out,println(num); num++; } } } |
2. do ~ while문
class doWhileEx { public static void main(String[] args) { int num = 0;
do { System.out.println(num); num++; } while (num < 5); } } |
3. for문
class forEx { public static void main(String[] args) { int num = 0;
for (num = 0; num < 5; num++) { System.out.println(num); } } |
무한루프
어떠한 조건이 맞다는 가정 하에 반복하는 반복문도 있는 반면, 아무런 조건도 없이 무한으로 반복을 실행하는 반복문도 있다. 특정한 문법이 있는 것도 아니라서 for문과 while문, do~while문으로 모두 구현할 수 있다.
해당 방법은, 조건문에 조건을 넣지 않고 "true"만 넣으면 되는데, 각각 아래 코드로 구현된다.
1. for문
for ( ; ; ) { System.out.println("반복"); } |
2. while문
while (true) { System.out.println("반복"); } |
1. do~while문
do { System.out.println("반복"); } while (true); |
무한이라니 굉장히 어려울 것 같았는데, 실제로 위 코드들로 무한 루프가 가능하다. 그냥 "반복" 텍스트만 무한으로 출력된다.
램(RAM)이 많지 않은 PC일 경우 무리하게 무한루프를 가동하면 PC가 셧다운될 수 있으니 주의하기 바란다.
다음 장에서는 '반복문의 중첩'에 대해 알아보겠다.
도움받은 책들 :
|
|
다음 장 바로가기 >>
'프로그래밍 > Java' 카테고리의 다른 글
10장. 실행 흐름의 컨트롤 - switch문 (0) | 2018.07.30 |
---|---|
9장. 실행 흐름의 컨트롤 - if문, 삼항 연산자 (0) | 2018.07.30 |
8장. 연산자 (0) | 2018.07.27 |
7장. 형 변환 (0) | 2018.07.27 |
6장. 상수 (0) | 2018.07.27 |
- Total
- Today
- Yesterday
- 자료형
- Container
- uiux
- 자격증명
- 컨테이너
- 안드로이드
- Terraform
- main
- 테라폼
- AWS
- 자바
- 머티리얼
- Android
- 디자인
- docker
- EC2
- HCL
- 메터리얼
- dockerhub
- cmd
- Operator
- Java
- ecr
- dockerfile
- 도커
- entrypoint
- DESIGN
- 스타트업
- env
- Material
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |