본문 바로가기
C++/이론

[C++] 무한 루프 (for문, while문, goto문)

by 씐 2023. 10. 1.
728x90

무한루프

 

무한루프란?

  • 무한 루프는 프로그램의 실행이 종료되지 않고 끝없이 수행되어지는 상태를 말한다.
  • 무한 루프는 주로 게임 프로그래밍을 할 때 사용한다.
  • 무한 루프를 종료시키기 위해서는 <Enter>를 눌러 강제 종료시켜야 한다.

 

 

for문을 이용한 무한 루프

//무한루프
for(; ;){
  ...
  ...
}

//해결 방법
for(; ;){
  문장;
  if(조건);
    break;
}
  • for문은 세미콜론(;)만 2번 기술하면 문법적으로 문제가 없이 무한 루프가 됨.
  • 이런 경우 조건이 참으로 가정되어 끊임없이 문장을 수행해서 무한 루프에 빠짐.
  • 무한 루프의 수행을 멈추려면 반복문 내부에 조건을 제시하여 조건에 만족할 경우 수행할 문장 안에 break문이나 return문을 넣어 강제로 종료시켜줘야함.

 

 

while문을 이용한 무한 루프

//무한루프
while(true){
  ...
  ...
}

//해결 방법
while(true){
  문장;
  if(조건)
    break;
}
  • while문을 이용한 무한 루프는 일반적으로 조건식에 true를 기술해서 표현
  • while문도 for문과 마찬가지로 반복문 안에 if문으로 조건을 기술해서 해당 조건을 만족하면 반복문을 벗어나게 프로그래밍함.

 

 

goto문

//다중 for문에서의 goto문
바깥쪽 for문{
  안쪽 for문{
    goto exit_out_for; //exit_out_for은 레이블이다.
    ...
  }
  ...
}
exit_out_for : 문장 1;

//while문에서의 goto문
#include <iostream>
using namespace std;
int main()
{
  int i = 0;
  while(true){
    cout << ++i;
    if ( i % 10 == 0)
      goto exit_while; //exit_while은 레이블
  }
  exit_while : cout << "\n >> ----The End---- << \n";
}
  • goto문은 프로그램의 실행 순서를 레이블이 위치한 곳으로 강제로 옮겨주기 위해서 사용한다.
  • 레이블이란 실행 순서를 옮겨 놓을 위치를 지명하는 이름으로 사용자가 정해준다.
  • goto문은 논리적인 의미를 갖지 못하고 무조건 분기하므로 goto문을 많이 사용하여 프로그램을 작성하면 프로그램을 이해하기 힘들다.
  • 가급적이면 goto문은 사용하지 않는 것이 바람직한다.
  • goto문이 효과적으로 사용되는 경우도 있다.
    • 다중 반복문에서는 break문이 사용되었을 경우에 가장 근접한 반복문만을 벗어난다.
    • 경웨 따라서는 안쪽 반복문만 벗어나지 않고 바깥쪽 반복문 밖으로 벗어나도록 해야하는데, 이럴 때 goto문을 사용한다.

본 게시물은 "C++ 하이킹 객체지향과 만나는 여행"을 기준으로 작성함을 알립니다.

'C++ > 이론' 카테고리의 다른 글

[C++] 함수(2)  (0) 2024.09.24
[C++] 함수(1)  (5) 2024.09.20
[C++] 보조 제어문 (break문, continue문)  (0) 2023.09.30
[C++] 반복문 (for문, while문)  (0) 2023.09.29
[C++] 제어문과 선택문(if~else 문, switch 문)  (0) 2023.09.28