본문 바로가기
배운 것들 메모/따라 배우는 C언어

[홍정모의 따라하며 배우는 C언어] 6.8 for 루프 소개(For Loop)

by 야속한 낭만 2024. 10. 11.

6.8 for 루프 소개(For Loop)

Indefinite Loop vs Counting Loop

 

for문이나 while문은 위의 Indefinete Loop나 counting Loop를 다 구현할 수 있다.

다만, 두 루프를 구현하는 데 있어서, 어느 쪽이 더 적절한지에 따라 차이가 있다.

미리 말하자면 for문은 counting Loop가 표현하기 쉽고, while문은 indefinite Loop가 쉽다.

Counting 루프를 만들기 위해서는 3가지 조건이 필요하다.

옆에 적혀 있는 것들은 제가 제멋대로 해석한 거임.

  1. Counter initialization - 변수 초기화
    반복을 통제하는 제어 변수를 초기화한다. 루프가 시작될 때 한 번만 수행한다.
  2. Counter check - 조건 확인(검사)
    루프를 실행할 조건을 지정한다. 이 조건이 참인 동안 루프는 지속된다.
  3. Counter change 변수 변경
    루프를 한 번 돌 때마다 제어 변수를 바꾼다.

예시를 통해 알아보자.

사실 우리는 일전에 while문을 통해 Counting Loop를 만든 적이 있다.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main()
{
	int i = 5;
	while (i)
		printf("%d is true \n", i--);
	printf("%d is false\n", i);
}

(True & False 주소)

여기서 어디가 어느 조건인지 다 주석으로 달아두자면

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main()
{
	int i = 5; // Counter initialization
	while (i) // Counter check
		printf("%d is true \n", i--); // Counter change
}

이런 식으로 되어있다.

while문만 배운 입장에서는 사실 깔끔하게 보일 수 있지만, 이것은 for문에 비하면 직관적이지는 않다.

 

for문으로 결과 값이 똑같도록 작성을 해보자면

#include <stdio.h>

int main()
{
	for (int i = 5; i > 0; i--)
		printf("%d is true \n", i);

}

이런 식이다.

for문은 ( ) 안에 3가지 조건이 다 들어가 있다.

i를 5로 초기화하고, i의 조건식 그리고 i의 증감여부까지 모두 다 ( ) 안에 있는 것이다.

 

한 번 둘의 차이 점을 알아보자.

 

 

둘 다 엄청난 차이가 있는 것은 아니다.

i ++;가 어느 위치에 있는 지에 차이가 있긴 하다.

 

출처:  홍정모의 따라배우는 C언어

강의 외의 추가된 것들은 책 그리고 인터넷 조사해서 얻었음