주인장의 프로그래밍 개발 공부방

[Chapter 4 조건문] 2. for문을 알아보자. 본문

프로그래밍 기본 지식/Chapter 4 반복문

[Chapter 4 조건문] 2. for문을 알아보자.

거신 2019. 6. 28. 13:26

반복문의 대표주자인 for문에 대해서 알아보도록 하자.

이제는 조금은 머리를 써야하는 내용이 찾아왔다.

for문까지 배운다면 어느정도는 있어보이는 프로그램을 만들 수 있을 것이라고 생각한다.

 

목표 : for문의 정의와 구조에 대해서 정확하게 이해할 수 있다.

 

1. for문이란?

 

반복문에는 3가지가 존재한다고 했었다.

그 중에서 가장 많이 사용하는 것이 바로 for문이라고 했는데

for문은 어떤 녀석인지에 대해서 자세하게 알아보도록 하자.

 

앞서 우리가 잠시 알아봤지만 for문은 반복문의 종류 중 하나이다.

반복문이라면 같은 동작을 반복하는 명령어를 뜻하는데

for문은 그 중에서도 반복문의 대표라고 할 수 있다.

for문은 조금은 특이한 구조를 가지고 있는데 조건이 3개씩이나 필요하다.

그렇기 때문에 정확하게, 자세하게 이해해야 한다는 점을 기억하자.

 

2. for문의 구조

 

그렇다면 for문의 구조에 대해서 알아보자.

for문을 사용하기 위해서는 3개의 식이 필요하다.

3개씩이나 필요하기 때문에 복잡할 수도 있지만 꼭 필요한 것이니

이해하길 바란다.

그렇담 전체적인 for문의 틀을 알아보자.

 

구조)

for(변수 초기화(시작점); 조건식(도착점 및 반복 횟수); 증감식(보폭)) {
	조건식이 true일 때 실행되는 구현부
}

위의 형태가 for문의 대략적인 틀이 되겠다.

위에서 중요하게 봐야하는 부분은 for 뒤에 붙은 ( )가 되겠다.

처음부터 순서대로 변수 초기화, 조건식, 증감식이 들어간다고 되어있는데

이 식들은 ;으로 구분지어서 사용한다.

3개의 식이 무엇을 뜻하는지는 뒤에 있는 ( )안의 내용들을 참고하면 되겠다.

일단 전체적인 틀을 알아봤으니 세세한 부분보다는

for문을 사용한 예시를 먼저 본 다음에 안에 들어있는 것들을

세밀하게 알아보도록 하자.

그렇게 하는게 이해하는데 조금은 더 쉽지 않을까 생각한다.

 

예시)

int num = 0;
for(int i = 0; i < 5; i++) {
	num++;
    System.out.println(num);
}

이 코드로 실행을 하면 콘솔창에

 

결과)

1

2

3

4

5

 

으로 출력되는 것을 확인할 수 있다.

num이라는 변수를 1씩 증가시켜서 출력하는 것 뿐이지만

우리가 for문을 사용하지 않고 위의 결과를 출력하려면

 

num++;

System.out.println(num);

 

이라는 두 줄의 코드를 5번을 써야만 동일하게 출력이 될 것이다.

하지만 for문은 위의 2줄만으로 10줄을 쓴 것과 동일한 결과를 나타내준 것이다.

그렇다면 for문의 예시도 봤고 결과도 봤으니 이제

안의 내용들을 자세하게 뜯어서 살펴보자.

 

3. 변수의 초기화

 

우리가 이전 변수 단원에서 만났던 것이다.

변수의 초기화.

초기화란 다시 한 번 상기시켜보자면

변수에 값을 처음 저장하는 것을 말한다.

단지 그 뿐이다.

초기화라고 해서 0이나 ' '과 같은 기본값을 넣는 것이 초기화가 아니라

단순히 '처음' 값을 저장하는 것이 초기화라는 뜻이다.

만약 0을 넣는다면 기본값으로 '초기화'한다라고 하는 것이 정확하다.

 

그런데 앞서 for문의 형태에서 변수의 초기화는 시작점이라고 했다.

for문에서 시작점이 무슨 의미일까?

말그대로 초기화한 값부터 시작한다는 뜻이다.

왜 이렇게 비유를 한 것이냐면

글쓴이는 for문은 우리가 달리기를 하는 것과 굉장히 비슷하다고 생각하기 때문이다.

 

우리가 출발점에서 시작해 도착점까지 달리는 것을 생각해보자.

어느 지점에 있는 출발점에서 달리기 시작해서

어느 지점에 있는 도착점까지 달려갈텐데

달린다는 똑같은 동작을 계속해서 반복할 것이다.

그리고 우리는 비슷한(같은) 보폭으로 달려간다는 것을 생각할 수 있다.

 

따라서 for문에서 변수의 초기화를 한다는 것

우리가 어느 지점에 시작점을 그려놓는 것과 똑같다고 생각하면 되는 것이다.

앞의 예시에서 int i = 0으로 초기화를 했는데

i라는 달리기 선수가 0이라는 시작점 앞에 서있는 것이다.

그럼 당연히 0부터 시작한다는 것을 알 수 있을 것이다.

여기에서는 어떤 값을 넣든 본인의 자유지만

for문을 사용하는데 있어서 여러 값을 넣을 수 있다는 것은

단순히 i가 반복 횟수를 표현할 수도 있고 for문 안에서 i를 활용할 수 있다는 것도 알아야 한다.

이 부분은 다음에 좀 더 심화된 내용으로 알아보자.

 

4. 조건식

 

변수의 초기화다음에 등장하는 것은 조건식이다.

for문이 동작하는데 있어서 핵심이라고 할 수 있는데

이 조건식이 true(참)냐 false(거짓)냐에 따라서 for문이 동작하거나 하지 않을 수 있기 때문이다.

조건식은 도착점 또는 반복 횟수라고 표현했었다.

앞서 변수의 초기화가 시작점이니 당연히 끝나는 부분이 필요하다.

만약 끝나는 부분이 없다면 무한하게 반복할테니 말이 되질 않는다.

그렇다면 반복 횟수는 무엇을 뜻하는가?

 

예시를 다시보자

i < 5

라고 작성했는데 일단 조건식이라는 것은 알 수 있다.

변수 i에 0을 집어넣었으니 i는 0부터 시작한다는 것은 알 수 있고

위의 조건식은 i가 5보다 작을 때(미만)까지는 계속 결과가 true라는 것을 알 수 있다.

따라서 변수 i가 5가 되기 전(정수로는 4까지)까지 반복한다는 뜻이다.

지금은 i가 int타입이기 때문에 등장할 수 있는 숫자는

0, 1, 2, 3, 4

가 될 것이다.

그렇기 때문에 도착점으로는 4가 될 것이고 반복 횟수로는 5번이라는 것도 알 수 있다.

그렇기 때문에 for문에서 조건식은 도착점 또는 반복 횟수라고 말할 수 있다.

 

5. 증감식

 

그리고 마지막으로 등장하는 것이 바로 증감식이다.

증감식은 우리가 잘 알고 있는 ++ 또는 --를 사용하는 것인데

증감연산자만 들어올 수 있는 건 아니다.

대표적으로 ++, --가 들어오는 것이지

값이 증감하는 식은 어떤 것이든 들어올 수 있다.

 

증감식보폭이라고 했었는데

말그대로 이 보폭만큼 for문이 동작하는 것이다.

우리가 달리기를 할 때도 시작점부터 도착점까지 자신의 보폭으로

5걸음만큼 갈 수 있는 거리라면 5걸음 뒤에 도착점에 도착할 수 있을 것이다.

그것과 똑같다고 보면 된다.

증감식에 따라서 for문이 얼마나 반복할지 결정할 수도 있는데

일반적으로 ++나 --를 사용하기 때문에 1씩 증감한다고 생각하면 편하다.

 

위의 예시에서도 i++이라고 작성했는데 i가 1바퀴 돌 때마다 1씩 증가하기 때문에

조건식에서 i가 0, 1, 2, 3, 4로 변하는 것이다.

 

6. for문 코드 해석 순서

 

다른 부분에서는 없었던 내용인데 for문에서는 꼭 알아야하는 부분이기 때문에

알아보려고 한다.

일반적으로 프로그래밍 코드는 위에서부터 순서대로 한 줄씩 읽어가는 형태이다.

그런데 for문은 다른 명령어들과 달리

식을 3개씩이나 가지고 있기 때문에 코드를 해석하는 순서가 꽤나 복잡하다.

천천히 순서를 읊어가면서 해석해보자.

다시 위의 예시를 가져와보자.

 

예시)

int num = 0;
for(int i = 0; i < 5; i++) {
	num++;
    System.out.println(num);
}

이 코드의 결과가 어떻게 출력되는지는 잘 알고 있을 것이다.

그런데 코드를 해석하려고 하니 식이 3개씩이나 등장해서

어떤 순서로 읽어야할지 모를 것이다.

개략적으로 코드를 읽는 순서를 적어보자면 다음과 같다.

 

순서)

변수의 초기화 -> 조건식 -> (조건식이 true일 때)구현부 -> 증감식

-> 조건식 -> (조건식이 true일 때)구현부 -> 증감식

-> 조건식이 false가 될 때 까지 위의 순서를 계속 반복....

-> 조건식이 false가 되면 for문 종료

 

이런 순서로 for문을 반복하게 된다.

뭔가 굉장히 복잡해 보이지만 순서대로 따라가보면

그리 어렵지는 않을 것이다.

물론 처음에는 헷갈릴 수도 있지만

연습장에서 순서대로 적어가면서 코드를 해석해보길 권장한다.

안써보면 절대 모른다.

꼭 쓰면서 읽어보길 바란다.

 

이 부분은 나중에 등장할 중첩 for문에서 굉장히 중요하게 다가올테니

지금 정확하게 이해하길 바란다.

 

그런데 여기에서 눈여겨봐야하는 부분이 있다.

바로 변수의 초기화 부분이다.

for문에서는 변수의 초기화단 한 번만 실행된다.

맨 처음 딱 한 번이다.

이 부분을 기억하고 있길 바란다.

 

7. 마무리

 

이번 시간에는 for문의 형태와 그 안에 가지고 있는 요소들에 대해서 알아봤다.

대표적인 반복문인 for문

for(변수 초기화(시작점); 조건식(도착점 및 반복 횟수); 증감식(보폭)) {
	조건식이 true일 때 실행되는 구현부
}

의 형태를 가지고 있는데

( )안의 내용에 따라서 몇 번을 반복할지가 결정된다.

3개의 식들은 각각 ;으로 구분짓는데

변수 초기화는 시작점이라고 할 수 있다.

int i = 0과 같이 i를 0부터 시작한다는 의미가 되겠다.

조건식은 도착점 또는 반복 횟수라고 할 수 있는데

해당 조건식이 true가 되는 조건에서는 for문을 계속해서 반복하게 된다.

마지막으로 증감식은 초기화했던 변수 i를 증감시키는 역할인데

보폭이라고 생각하면 편할 것이다.

Comments