java/기본문법

[조건문과 반복문] for문

각시탈코더 2022. 1. 25. 20:24

for문

반복문은 for문과 while문이 있다. for문은 반복횟수를 알고있을 때 사용하고 반대로 while문은 반복횟수를 알 수 없을 때 사용한다. 그중 for문을 알아보자.

 

 

 

for문은 ①초기화 ②조건식 ③수행될 문장 ④증감식 순으로 작성된다. 조건식에서 참이되면 ②,③,④ 순으로 반복되고 조건식에서 거짓이 되면 for문은 끝나게 된다. 이것을 코드문으로 작성하면 아래와 같다.

i의 값이 1이 대입되는 순간부터 "I can do it."이라는 문장이 출력된다. i++에 따라 i의 값이 하나씩 증가하면서 i의 값이 5가 될 때 까지 "I can do it." 문장이 출력된다.

 

초기화

초기화는 처음에 한번만 수행된다. 또한 둘 이상의 변수를 사용할 수 있는데 두 변수의 타입이 같아야 한다.

for(int i=1;i<=10;i++) { ... }		//변수 i의 값을 1로 초기화 한다.
for(int i=1,j=0;,i<=10;i++) { ... }	//int타입의 변수 i와 j를 선언하고 초기화

 

조건식

조건식의 값이 참(true)이면 반복을 계속하고, 거짓(false)이면 반복을 중단하고 for문을 벗어난다. 조건식을 잘못 작성하면 블럭 {} 내의 문장이 한 번도 수행되지 않거나 영원히 반복되는 무한 반복에 빠지기 쉬우므로 주의해야 한다.

 

for(int i=1;i<=10;i++) { ... } 	// 'i<=10'가 참인 동안 블럭{}안의 문장들을 반복

증감식

증감식은 반복문을 제어하는 변수의 값을 증가 또는 감소시키는 식이다. 매 반복마다 변수의 값이 증감식에 의해서 점진적으로 변하다가 결국 조건식이 거짓이 되어 for문을 벗어나게 된다. 변수의 값을 1씩 증가시키는 연산자 '++'이 증감식에 주로 사용되지만, 다음과 같은 다양한 연산자들로 증감식을 작성할 수 있다.

for(int i=1;i<=10;i++) { ... }		//1부터 10까지 1씩 증가
for(int i=10;i>=1;i++) { ... }		//10부터 1까지 1씩 감소
for(int i=1;i<=10;i+=2) { ... }		//1부터 10까지 2씩 증가
for(int i=1;i<=10;i*=3) { ... }		//1부터 10까지 3배씩 증가

 

위의 표현식 중에 'i++'가 포함된 표현을 많이 쓴다.

 

중첩 for문

 if문과 마찬가지로 for문도 중첩 for문을 사용할 수 있다. 중첩 for문은 for문안에 for문을 포함시키는 것을 말한다. 중첩 횟수에는 제한이 없으나 3회 이상 중첩 사용의 빈도가 낮다. 중첩 for문을 이해하는데에는 '별찍기'가 가장 좋다.

 

**********

**********

**********

**********

**********

 

우리는 이전에 배웠던 for문을 활용하여 위의 별찍기를 다음과 같이 표현할 수 있다.

우리는 위의 표현식에서 나타난 System.out.println("**********"); 의 문장을 아래와 같은 표현식으로 바꿀 수 있다.

변형된 식을 기존의 식에 대입하면 아래와 같은 중첩 for문이 완성된다.

 

그렇다면 위와 같은 별찍기를 하려면 어떻게 해야할까? 우선 별을 살펴보면,

 

열(j)의 값을 행(i)값이 따라가는 걸 알 수 있다. 그렇다면 앞서 활용한 중첩의 for문을 참조하여 아래와 같은 식으로 나타낼 수 있다.

 

for(int i=1;i<=5;i++) {
	for(int j=1;j<=i;j++) {
    	System.out.print("*");
    }
    System.out.println();
}

 

앞서 살펴본 중첩 for문을 이용한다면 반복을 줄여주고 코드의 길이를 줄여준다. 즉 효율성이 있다.

 


출처:자바의 정석 기초편(저자:남궁성 출판:도우출판)