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

[C++] 반복문 (for문, while문)

by 씐 2023. 9. 29.
728x90

for문

 

for문이란?

  • 특정 부분의 문장을 지정된 횟수만큼 반복해서 수행하게 하는 문장을 말한다.
  • 반복되는 횟수는 특정 값의 범위로 정해지기도 하고, 참이나 거짓에 의해서도 정해진다.
  • 같은 수의 누적과 같은 반복적인 작업을 간단하게 해결할 수 있다.

 

 

for문 기본 형식

for(<초기식>; <조건식>; <증감식>){
  문장1;
}

다음 문장;
  • <초기식>, <조건식>, <증감식>은 세미콜론(;)으로 구분된다.
  • 다른 제어문처럼 <문장>이 한 행일 경우 {}(중괄호)를 생략할 수 있다.
  • <초기식> : for문을 제어하는 제어변수(control variable)를 초기화함. <초기식>은 단 한번만 사용된다.
  • <조건식> : 결과값이 참인지 거짓인지를 검사. 참인 경우 <문장>을 수행하고, 거짓이면 for문을 빠져나와 <다음 문장>을 수행한다.
  • <증감식> : 문장을 수행한 후에 제어변수를 증감한다.
  • 증감한 후의 변숫값을 적용해도 <조건식>을 만족하는지 검사해서 참이면 또다시 <문장>을 수행한다.

 

 

for문의 필수 구성 요소

int i = 1; //초기식을 for문 밖으로
for( ; i < = 10;) { //조건식만
  total += 1;
  i++; //증감식을 문장으로
}
  • for문은 초기식, 조건식, 증감식으로 구성되지만 반드시 이 3가지를 기술해야하는 것은 아님.
  • for문은 소괄호 안에 세미콜론 2개만 기술하면 문법적으로 오류가 없는 완벽한 문장이 된다.

 

 

다중 for문

#include <iostream>
using namespace std;
int main()
{
  int out, in;
  for(out = 1; out <= 3; out++){ //바깥 for문
    out += 1; //문장 1
    for(in = 1; in <= 5; in++){ //안쪽 for문
      in += 1; //문장 2
    }
    cout << out << in; //문장 3
  }
}
  • 문장 1과 문장 3은 바깥 for문의 반복 횟수만큼만 반복 수행된다.
  • 문장 2는 (바깥 for문의 반복 횟수) * (안쪽 for문의 반복 횟수)만큼 반복한다.
    • 왜냐면 바깥 for문이 안쪽 for문을 반복 수행하고, 안쪽 for문이 문장 2를 반복 수행하기 때문
  • 이 관계는 마치 분침과 시침같은데, 바깥 for문의 제어변수가 시침이 되고, 안쪽 for문의 제어변수는 분침이 된다.
  • 다중 for문을 사용할 경우 바깥 쪽 제어변수와 안쪽 제어변수 값이 어떻게 변화되는지 그 값을 유추할 수 있어야 한다.

 

//다중 for문을 이용해서 특정 구구단 출력하기
#include <iostream>
using namespace std;
int main()
{
  for (int i = 2; i <= 9; i++) //바깥 for문
    for(int j = 1; j < 10; j++) //안쪽 for문
      cout << i << "*" << j << "=" << i*j <<"\n";
}
  • 바깥 for문은 i가 2부터 9일 때까지 1씩 증가해서 8번 반복 수행한다.
  • 안쪽 for문은 i = 2 일 때 j가 1일 때부터 9일 때까지 1씩 증각해서 9번 반복 수행한다. 그 다음 i = 3일 때 다시 j = 1부터 9까지 반복 수행한다.

while 문

 

while 문이란?

  • 조건이 만족하는 동안 문장을 반복 수행하는 것
  • for문과 비교해보면 <초기식>과 <증감식>이 없고, <조건식>만 있는 형태

 

 

for문을 while문으로 표현하기

//while문
#include <iostream>
using namespace std;
int main()
{
  int total;
  int i = 1;
  while(i <= 10){
    total += i;
    i++;
  }
  cout << total;
}
//for문
#include <iostream>
using namespace std;
int main()
{
  int total;
  int i;
  for(i = 1; i <= 10; i++){
    total += i;
  }
  cout << total;
}
  • 위에 있는 두 개의 코드는 같은 결과값을 가짐. (결과값 : 55)
  • for문은 초기식과 증감식을 기술하는 위치가 정해져 있지만 while문은 그렇지 않기 때문에 for문과 같은 결과를 얻으려면 for문의 초기식에 해당되는 문장과 for문의 증감식에 해당되는 문장을 적당한 위치에 기술.
  • for문과 while문의 공통점은 반복 처리할 수 있다는 점.
  • for문과 while문의 차이점은 for문은 반복 횟수가 정해져 있고, while문은 반복횟수가 정해지지 않은 반복문에서 사용함.

do~while문

 

do~while문이란?

  • do~while문은 while문과 비슷하지만 while문 앞에 do라는 지정어가 추가되는 것
  • 반복되는 문장을 일단 한번은 실행하고 그 다음에 조건을 검사해 조건이 참이면 계속 반복하고 거짓이면 while문은 빠져나옴.
  • while문은 조건이 거짓이면 한 번도 실행하지 않는 반면, do~while문은 조건 검사를 나중에 하므로 조건이 거짓이더라도 한 번은 실행됨.

 

 

do~while문의 기본 형식

do{
  문장;
} while(조건식);
  • <문장>을 먼저 실행하고 <조건식>을 검사.
  • <조건식>이 참이면 다시 <문장>을 수행하고, 다시 <조건식>을 검사. 참일 때까지 문장을 반복 수행
  • <조건식>이 거짓이면, do~while문을 빠져나온다.
  • <문장>에는 제어 변수를 증감하는 문장이 들어가야 함.
  • while문 마지막에는 반드시 세미콜론을 붙여야 함.

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

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

[C++] 무한 루프 (for문, while문, goto문)  (0) 2023.10.01
[C++] 보조 제어문 (break문, continue문)  (0) 2023.09.30
[C++] 제어문과 선택문(if~else 문, switch 문)  (0) 2023.09.28
[C++] 연산자  (0) 2023.09.07
[C++] 자료형  (0) 2023.09.06