|
||||||||||||||||
5장에서 살펴본 프로그램 6-1-2를 다시 한번 생각해보자. 이 프로그램에 포함된 while 문의 반복 회수를 추적하기 위해서 count 변수가 사용되었다. 이와 같이 반복 회수를 추적하는 변수를 루프제어변수(loop control variable)라 한다. 다음은 루프제어변수의 관점에서 프로그램 6-1-2를 분석한 구조를 보여준다.
루프제어변수의 관점에서 3가지의 행동이 while 문과 연관되는 것을 알 수 있다: 루프제어변수 초기화, 반복 조건(루프제어변수 포함) 평가, 루프제어변수 변경. while 구조에 진입하기 전에 루프제어변수를 초기화하고, while 문의 각 반복 초기에 반복 계속 여부를 판단하기 위해서 반복 조건을 평가한다. 반복 조건에는 루프제어변수가 반드시 포함된다. 그리고 반복 종료 직전에 루프제어변수를 변경한다. 이러한 루프제어변수의 변경은 반복 조건에 영향을 미치기 위해서 절대적으로 필요하다. 여러분은 루프제어변수의 초기값, 최종값, 변경되는 값을 알면 while 문의 반복 회수를 미리 알 수 있다. 가령, 위의 경우에 루프제어변수 count의 초기값이 0이고, 최종값은 9이며, 각 반복시에 변경되는 값은 1이다. 이 결과로부터 while 문의 반복 회수는 10임을 알 수 있다. C는 반복 회수를 미리 알 수 있는 반복 구조를 while 문 보다 효과적으로 표현할 수 있는 for 문을 제공한다. 다음은 for 문의 일반 형식이다.
초기화리스트에는 루프제어변수에 대한 초기값 설정이 표현되며, 반복 조건은 루프제어변수와 그 최종값을 비교하여 반복의 계속 여부를 판단하는 조건 식이 표현되고, 변경리스트에는 루프제어변수의 값 변경이 표현된다. for 문의 실행 의미는 while 문과 비교하면 쉽게 이해할 수 있다. 다음은 for 문 구조와 while 문 구조를 비교한다.
따라서 for 문의 의미는 다음과 같다: 먼저 초기화리스트를 수행하고, 반복 조건을 평가한다. 반복 조건이 참으로 평가되면, 문장들을 수행하고, 다음에 변경리스트를 수행한 후에 다음번째 반복으로 이동한다. 만약에 반복 조건이 거짓으로 평가되면 for 문을 탈출한다. for 문의 의미는 실로 대응되는 while 문의 의미와 동일하다는 것을 알 수 있다. 따라서 for 문은 항상 의미가 동일한 while 문으로 변환시킬 수 있다. 다음 프로그램은 프로그램 6-1-2에서 while 문 대신에 for 문을 사용하여 다시 작성한 것이다. 프로그램 6-1-5와 6-1-2의 실행 결과는 동일하다. 두 프로그램간에 차이점을 살펴보라.
|
위의 프로그램에서 루프제어변수 count의 증가분은 1이다. 그러나 반드시 1일 필요는 없다. 임의의
값일 수 있다. 다음 프로그램에서는 for 문의 각 반복 종료 직전에 count의 값이 2씩 증가한다.
|
위의 프로그램의 for 문에서 count가 2씩 증가하기 때문에 반복 회수는 프로그램
6-1-5에 비해서 절반으로 줄어든다는 것을 유의하라.
while 문처럼 for 문에서도 break 문과 continue 문을 사용할 수 있다. 다음 프로그램들은 프로그램 6-1-3과 6-1-4를 while 문 대신에 for 문을 사용하여 다시 작성한 것이다.
|
|
프로그램 6-1-7은 6-1-3과
의미가 동일하며, 프로그램 6-1-8은 6-1-4와
의미가 동일하다.
다음은 for 문에 대한 알고리즘 구조를 보여준다.
for 문은 반복 회수를 미리 알고 있고, 따라서 실행시에 반복 회수를 추적해야 하기 때문에, 루프제어변수가 반드시 필요하다. for 문의 알고리즘의 헤더는 루프제어변수의 초기값, 최종값, 증가분을 각각 표현한다. 이 알고리즘 구조는 for 문의 형식과 유사하며, 그 의미도 유사하게 해석된다. 즉, 루프제어변수에 초기값을 설정하고, 루프제어변수의 값이 최종값을 넘어서지 않는지를 판단하고, 그렇다면 본체를 수행하고, 루프제어변수의 값을 증가분만큼 증가시키고, 다음 반복으로 이동한다. 그렇지 않으면 for 구조를 탈출한다. 위의 구조에서 '←' 기호는 배정을 의미한다. 즉, 오른쪽에 위치한 값을 왼쪽에 위치한 변수에 배정한다.
여러분은 프로그램 6-4를 쉽게 이해할 수 있을 것으로 생각한다. for 문의 헤더에서 두 가지 사항을 설명한다. 먼저, 루프제어변수 count 선언이 초기값 설정과 함께 for 문 헤더에 이루어지고 있음을 볼 수 있다. C에서 for 문의 초기화리스트에서 루프제어변수를 선언과 함께 초기화시키는 것은 올바르다. 두 번째는 변경리스트에 관한 것이다. 여러분은 지금까지 count++와 같은 문장을 다루지 않았다. '++'는 증가 연산자로서, 7주차 강의에서 다룰 것이나, 이 연산자가 for 문에서 자주 사용되므로 여기서 간단히 소개한다. 다음 두 문장의 의미는 동일하다.
즉, count의 변수 값을 1만큼 증가시킨다. |
|
[프로그램 단위 입력 실행] 다음 실습창을 통해서 프로그램 6-4의 실행과정을 알아본다 (여러분은 실습창의 왼편에 위치한 '새프로그램 입력' 버튼을 클릭하여 새로운 프로그램을 입력하여 실행시켜 볼 수 있다. ) |
|
[문장 단위 입력 실행] 여러분은 다음 실습창에서 C 프로그램을 한 문장씩 입력하여 실행시켜 볼 수 있다. 새로운 프로그램을 한 문장씩 입력하고 오른쪽 창에서 그 실행 결과를 살펴 보시오. |
사용법
|
1.아래의 실습창중 <
C 문장 입력 > 란을 통하여 C문장 한문장씩 입력하고 Enter
키나 입력 버튼을 클릭하 면 해당 문장에
대한 시각화가 오른쪽에 나타나게 됩니다. 자세한 사용법은 여기를
클릭하여 주십시요
|
![]() |
|