Taking baby-developer steps

6. 반복문 - For문 / 무한루프 /While 문 / 중첩된 반복문/ for문과 while문의 관계 본문

CS 지식/C언어_basic

6. 반복문 - For문 / 무한루프 /While 문 / 중첩된 반복문/ for문과 while문의 관계

Surin Lee 2021. 3. 19. 12:05

반복문

특정 조건이 부합 할 때 특정한 명령어가 반복되게 할 수 있다.

 

For문

For문 내부의 조건에 부합하면(조건이 참이면) 계속해서 특정한 구문을 실행한다. 반복문을 탈출하고자 할 땐 해당 위치에 break 구문을 삽입한다. For문의 구조는 다음과 같다.

for (초기화; 조건; 반복 끝 명령어){
	//반복적으로 실행 할 부분
}

초기화는 있을 수도, 없을 수도 있다. 일단 조건을 만족하면, 특정한 부분(반복적으로 실행할 부분)을 실행한 후, 특정 부분이 끝나면 다시 돌아와, 반복 끝 명령어를 수행하게 된다. 그 다음 다시 조건을 만족하는지 확인해서 만족하면 반복해서 실행을 계속 한다.

+사실 전통적인 C언어에서는 for문 안에서 초기화를 시키는게 금지(for문 전에 미리 선언 및 초기화를 해야함)되어 있으나, 현대의 C언어 컴파일러들은 이를 허용하기 때문에 쓸 수 있다.

 

무한루프

무한루프(infinite loop)란 종료 조건 없이 한 없이 반복되는 반복문을 의미한다. 일부러 무한 루프를 발생시키는 경우도 있지만, 일반적인 경우 개발자의 실수로 인해 발생한다.

for(초기화; 조건; 반복 끝 명령어){
	// 조건이 항상 참(True)인 경우 무한 루프 발생
}

무한루프를 일부러 발생시키는 경우, 무한루프를 탈출 할 수 있는 구멍(특정한 시점에서의 break)을 만들어서 프로그램 상의 오류를 없애야한다.

 

While문

While문은 조건에 부합하면(조건이 참이면) 계속해서 특정한 구문을 실행한다. 반복문을 탈출하고자 하는 위치에 break 구문을 삽입한다.

while (조건){
	// 반복적으로 실행할 부분
}

아래 와 같은 while문 구문이 빈번하게 사용된다.

while문을 이용해 N번 출력하기

while (n--){
	printf("Hello World!")
}

-> 이경우 반복할 동작(출력)이 n번 만큼 실행이 된다. 맨 처음 조건(n)이 참 값인지(입력시 컴퓨터는 0은 거짓, 그외 모든 수는 참으로 인식한다.) 확인하고, 참 값인 경우 아래 구문이 실행되고 나가서 다시 들어오는 순간, n에서 1만큼 감소 된다. 그 감소된 n이 여전히 참 값이라면 반복을 실행한다. 즉 0이 될때까지 "Hello World!"가 출력되므로, n번만큼 출력된다.

--> 이런 식으로, 특정 조건문에 있는 내용이 반복적으로 검사가 이루어지면서 값이 거짓이 되는 순간 바깥으로 탈출하게 된다.

 

중첩된 반복문

중첩된 반복문이란 반복문 내부에 다른 반복문이 존재하는 형태의 반복문이다. 반복문이 중첩될 수록 연산 횟수는 제곱 형태로 늘어난다. 반복문을 활용하면 짧은 소스코드로 많은 내용을 출력할 수 있다. 특히 행렬, 그래프 등의 연산에 있어서 이중 반복문이 매우 많이 활용된다.

For문과 While문의 관계

모든 For문은 While문과 서로(상호) 치환이 가능하다. C언어 소스코드가 최적화(컴파일)되면서, 어셈블리어 단에서는(즉, 기계어로 변환이 되었을 때는) 동일한 명령어로 동작하기 때문에, 사실 내부적으론 for문과 while은 동일하다고 볼 수 있다.

 

 

 

Comments