티스토리 뷰

이전 장들...

1장. 개발환경 세팅하기 (java, eclipse)

2장. Eclipse 기본 사용법

3장. 자바 메인 메소드, 기본 출력

4장. 컴퓨터가 읽지 않는 문자, 주석

5장. 변수와 자료형

6장. 상수

7장. 형 변환

8장. 연산자

9장. 실행 흐름의 컨트롤 - if문, 삼항 연산자

10장. 실행 흐름의 컨트롤 - switch문


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++;

       }

    }

 } 


실행 원리 :


 

  1. num은 1이기에 5 미만의 조건에 충족한다.
  2. "I like Java" 뒤에 1을 붙여 "I like java 1" 을 출력한다.
  3. 복합 연산자를 사용하여 1을 더하여 num은 2가 된다.
    1. num은 2이기에 5 미만의 조건에 충족한다.
    2. "I like Java" 뒤에 2를 붙여 "I like java 2" 을 출력한다.
    3. 복합 연산자를 사용하여 1을 더하여 num은 3이 된다.
      1. num은 3이기에 5 미만의 조건에 충족한다.
      2. "I like Java" 뒤에 3을 붙여 "I like java 3" 을 출력한다.
      3. 복합 연산자를 사용하여 1을 더하여 num은 4가 된다.
        1. num은 4이기에 5 미만의 조건에 충족한다.
        2. "I like Java" 뒤에 4를 붙여 "I like java 4" 을 출력한다.
        3. 복합 연산자를 사용하여 1을 더하여 num은 5가 된다.
          1. num은 5이기에 5 미만의 조건에 충족하지 않는다.
          2. while문을 빠져나와 프로그램을 끝낸다.

결국 출력값은 파란색으로 되어 있는 다음 문자열일 것이다.

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 프로그래밍
국내도서
저자 : 윤성우
출판 : 오렌지미디어 2017.07.05
상세보기


Java의 정석 - 자바의 정석
국내도서
저자 : 남궁성
출판 : 도우출판 2010.01.29
상세보기



다음 장 바로가기 >>

'프로그래밍 > 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
링크
«   2025/01   »
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
글 보관함