여행을 개발하다

제어문4. 다중 for문 본문

BackEnd/C++

제어문4. 다중 for문

yhtragramming 2019. 5. 8. 23:45

안녕하세요!

 

지난 포스팅에서 다뤘던 for문.

오늘은 더 나아가 다중 for문에 대해서 포스팅을 하고자 합니다.

 

다중 for문이란 하나의 for문 안에 1개 이상의 for문이 들어가 있는 형태를 말하는데요.

 

프로그램을 짤 때, 모든 알고리즘이 하나의 반복 루프만을 사용한다면 참 다행이겠지만,

안타깝게도(?) 안 그럴 경우가 더 많을꺼에요.

 

그럼 지금부터 다중 for문이란 무엇이고,

사용 예제는 어떤 것들이 있는지 하나하나 살펴보도록 하겠습니다.


1. 형식

for(초기식1 ; 조건식1; 증감식1)

{

for(초기식2 ; 조건식2; 증감식2)

{

실행문장1;

}

실행문장2;

}

- for문 안에 for문을 하나 이상 포함하는 경우를 다중 for문이라고 한다.

- 안쪽 for문은 바깥쪽 for문에 완전히 포함되어야 한다.

- 바깥 for문이 한 번 수행될 때마다 안쪽 for문은 초기식부터 조건식에 만족하는 동안 반복 수행된다.

 

2. 사용 예제

다중 for문을 연습할 때 많이 사용하는 예제는 당연히 '별 찍기' 라고 할 수 있습니다.

아래의 모양이 대표적인 예인데요.

다중 for을 효과적으로 사용한다면, 다음 예제 뿐만 아니라 여러 모양의 별들도 찍어볼 수 있습니다.

 

그러기 위해서는 for문의 구조뿐만 아니라,

반복 루프가 어디까지인지 명확하게 이해하는 과정이 필요합니다.


*

**

***

****

*****

 

*****

****

***

**

*


먼저,

*

**

***

****

*****

이 모양을 한 번 찍어볼까요.

 

이러한 모양을 찍기 위해서는 2개의 반복이 필요할꺼에요.

첫째, 아무것도 없는 5개의 행을 만들 for문 1개.

둘째, 별의 개수가 for문을 거듭할 수록 증가하는 반복문 1개.

 

그래서 main for문은 아무것도 없는 5개의 행을 만들 for문 1개가 되고,

종속된 for문은 별의 개수가 for문을 거듭할 수록 증가하는 반복문 1개가 될꺼에요.

 

편의상 행 반복을 위한 변수 i, 별의 개수를 표시할 변수 j 모두 지역변수가 아닌 전역변수로 선언합니다.

#include <Windows.h>

#include <stdio.h>

#include <time.h>

#include <stdlib.h>

#include <iostream>

using namespace std;

 

void main() {

 

int i, j;

 

 

for(i = 0 ; i < 5; i++){

 

 

cout << "\n";

}

여기까지, 아무 것도 표시하지 않을 행 5개를 만드는 작업을 완료했습니다.

그렇다면 이제는 별 개수를 찍을 for문을 만들어 보겠습니다.

 

별 개수를 찍는 for문은 아무 것도 표시하지 않을 행을 만들 때마다 반복되어야 합니다.

그래서 다중 for문을 사용해야 하며, 루프가 아무 것도 표시하지 않을 행을 만드는 for문에 포함됩니다.

 

또한, 별의 개수는 먼저 선언한 변수 i+1개 만큼 반복하면 되겠죠?

이것을 Visual C++에서 실행한 결과, 별이 하나씩 증가되는 모양이 정상적으로 출력됩니다.

 

이제는 반대로 별이 5개에서 하나씩 감소하는 for문을 만들어보겠습니다.

*****

****

***

**

*

5개의 행을 만든다는 건 동일합니다.

하지만 별을 반복하는 횟수는 1씩 감소하겠네요.

물론 for문의 증감치를 'j--'처럼 사용할 수 있지만,

아무 것도 없는 행의 반복 횟수를 뜻하는 변수 i와 연동시키는 방법을 사용하겠습니다.

 

다시 말해, 행이 1씩 증가할수록 별의 개수는 1씩 감소하면 됩니다.

그래서 총 행의 개수 5에서 행의 반복 횟수를 나타내는 변수 i를 제한 값을 반복 횟수로 설정하겠습니다.

 

실행 결과, 별이 5개에서 한 개씩 감소하는 모양으로 정상 출력됩니다.

이 외에도 여러가지로 별 모양을 찍어볼 수 있습니다.

아래의 소스 코드를 참고하세요!


다중 for문을 연습하기에 이보다 좋은 소스는 없는 것 같습니다.

 

여러모로 다양한 별 찍기 놀이를 해보시면서,

다중 for문을 자기 것으로 만드는데 같이 노력해보아요 : )

 

감사합니다!

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

제어문5. while  (0) 2019.05.09
피보나치 수열(Fibonacci Numbers)  (0) 2019.05.08
제어문3. for  (0) 2019.05.08
제어문2. Switch  (0) 2019.05.08
제어문1. If  (0) 2019.05.08
Comments