본문 바로가기

Theory/Lecture

[C/C++] 반복문 while, do-while, for


본 자료는 국립 창원대학교 메카트로닉스 공학부 학생을 대상으로 한 컴퓨터 언어 응용 수업 자료입니다. 본 자료는 수업의 교재인 (핵심요약판) C++로 시작하는 객체지향 프로그래밍 (Y. Daniel Liang 저, 권기형 / 김응성 공역) 의 내용을 재구성한 것으로 수업보조 자료 이외의 목적이 없음을 알립니다.


while 문
반복문은 같은 동작을 여러번 수행하기 위해 준비된 것입니다. 그 중 while문을 살펴보면
 


위 그림과 같이 while안에 loop-continuation-condition이 참일때 해당 statement를 반복 실행하게 됩니다.

 
위 예제를 보면 continueLoop이라는 char형 변수에 Y를 저장해두고 while문을 실행합니다. 그 안에서 continueLoop이 계속 Y라면 while문을 계속실행합니다. 내부에서 cin으로 사용자에게 실행여부를 묻는데 그때 사용자가 Y이외의 문자를 입력하면 while문을 마치게 됩니다.

do - while
위에서 배운 while문은 while문 내부의 statement를 실행하기 전에 조건을 선검색을 합니다. 그러나 일단 조건과 관계없이 statement를 한번은 최소한 실행하고서 조건을 검사하게 할 수 있습니다. 그것이 do-while문입니다.

 
위 그림의 오른쪽 순서도를 보면 알 수 있는데, 먼저 실행하고 조건을 검색하는 것을 볼 수 있습니다. 

for 문


아마 모르긴 몰라도 가장 많이 사용하는 반복문이지 않을까 하는데요. 초기값(initial-action)에서부터 조건(loop-continuation-condition)을 만족할때까지, 어떤일(action-after-each-iteration)을 수행하도록 설정합니다. 예를들면,

for (int i=0; i<10; i++)

위에서 처럼입니다. 정수형 i가 0부터 10미만이 즉, 9가 될때까지 1씩 증가하면서 수행하게 됩니다. 

예제
반복문으로 while을 쓸건지 do-while, 혹은 for문을 쓸것인지는 사용자의 몫일 겁니다. 위 셋은 약간의 길이의 차이가 있을진 몰라도 분명 서로 변환이 가능합니다. 지금 다룰 예제는 두 정수의 최대공약수를 찾는 프로그램입니다.

<예제코드>
#include <iostream>
using namespace std;

int main()
{
  // Prompt the user to enter two integers
  cout << "Enter first integer: ";
  int n1;
  cin >> n1;

  cout << "Enter second integer: ";
  int n2;
  cin >> n2;

  int gcd = 1;
  int k = 1;
  while (k <= n1 && k <= n2)
  {
    if (n1 % k == 0 && n2 % k == 0)
      gcd = k;
    k++;
  }

  cout << "The greatest common divisor for " << n1 << " and "
       << n2 << " is " << gcd;
  system("pause");
  return 0;
}

<예제코드처리결과>



참고자료:

[2009] 04.pdf



반응형