Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

나의 IT일지

다중 반복문 본문

프로그래밍 언어/C언어

다중 반복문

세레프 2023. 2. 13. 05:07

  프로그램의 코드 실행은 위에서 아래쪽으로 진행하는 흐름을 가지고 있다. 하지만 이러한 흐름을 제어하는 문법이 있는데,  이를 제어문이라고 한다.

  • 조건문은 제어문의 일종으로, 일정 조건의 만족에 따라 실행문을 실행하는지 말지 결정하는 문법으로, if문과 switch문이 있다.
  • 반복문은 제어문의 일종으로, 일정 조건이 만족되는 동안 실행문을 반복적으로 실행하도록 하는 문법으로, while문과 for문이 있다. 

 특히 제어문에 다른 제어문을 사용하는 경우가 있으며, 이중에 반복 안에 다시 반복이 이루어지는것 다중 반복문가 있다.

 

다중 반복문은 반복문을 반복할 필요가 생긴 상황에서 편하게 처리하기 위한 목적을 가지고 있으며, 반복문 안에 실행할 문장으로 반복문을 포함시켜 사용하면 된다.

 

예시) 구구단 출력하는 프로그램

 구구단을 출력할 수 있는 방법은 여러가지가 있다. 그중에서 우리는 for문을 통한 구구단을 출력하는 코드를 만드는 과정을 단계별로 살펴볼 것이다.

 

 1) 반복되는 기본문장을 구현한다. 구구단의 곱셈 수식을 출력하는 문장이 비슷하게 반복되므로 첫 번째 수식을 출력하는 문장을 만든다.

#include<stdio.h>

void main() {
	printf("2*%d=%d\n" , 1, i * 2);
}

 2) 원하는 횟수만큼 반복할 수 있도록 반복문을 작성한다.

#include<stdio.h>

void main() {
	int i;
	for (i = 1; i <= 9; i++) {
		printf("2*%d=%d\n" , 1, 1 * 2);
	}
}

 3) 반복문이 진행될 때마다 변수 i 의 값이 1씩 증가한다. 이를 이용해 2단의 구구단을 출력하도록 작성한다.

#include<stdio.h>

void main() {
	int i;
	for (i = 1; i <= 9; i++) {
		printf("2*%d=%d\n" , i, i * 2);
	}
}

 4) 2단의 구구단을 출력하도록 작성이 되었다면, 이제 2~9단까지 출력할 수 있도록 작성해야 한다. 이것은 2단의 구구단을 8번 출력하는 것이고, 반복문이 반복할 때마다 변수 j의 값이 1씩 증가하기에 이를 이용해 3~9단으로 맞추어서 수정을 한다.

#include<stdio.h>

void main() {
	int i;
	for (int j = 2; j <= 9; j++) {
		for (i = 1; i <= 9; i++) {
			printf("%d*%d=%d\n", j, i, i * j);
		}
	}
}

 위의 코드에서 i * j를 출력하는데, 변수 i는 1~9로 단을 구성하는 성분을 의미하며, 변수 j는 2~9로 구구단의 단을 의미하기에 단의 범위를 바꿀 때 변경하면 된다.

 

예시) 별찍기 프로그램

 우리는 "*"을 통해 도형을 만드는 프로그램을 다중반복문을 통해 만들 것이다. 우선 3*3인 정사각형 모형을 만드는 프로그램을 만들자.

 

 1) 별 3개를 그린다. (별 1개 그리는 것을 3번 반복한다.) - 변수 i 사용

#include<stdio.h>

void main() {
	for (int i = 1; i <= 3; i++) { // 3번 반복
		printf("*");
	}
}

 

2) 1)번이 끝나면 줄변경하고 1)번을 다시 실행한다. 그리고 이 행위를 2번 반복한다. - 변수 j 사용

#include<stdio.h>

void main() {
	for (int j = 1; j <= 3; j++) {
		for (int i = 1; i <= 3; i++) {
			printf("*");
		}
		printf("\n");
	}
}

 만약, 다른형태의 사각형을 출력하고 싶다면, 변수 i, 변수 j의 비교식 범위를 변경하면 된다. 예를 들어, 2*5인 직사각형을 출력하고 싶다고 하자. 그럼 별의 갯수를 출력하는 변수 i의 비교식 범위를 2번 반복할 수 있도록 변경하고, 줄변경을 4번할 수 있게 변경하면 된다. ("i <= 2" , "j <= 5" 로 변경)

 

 별찍기 시스템은 "범위를 어떻게 잡냐"에 따라 출력되는 도형이 바뀐다. 만약 "1개로 시작해서 5개로 끝나는" 직각삼각형을 만든다고 하자.

 

1) 만들려는 도형의 별의 위치를 변수의 값으로 치환한다

*
**
***
****
*****
0                           0
01                         1
012                       2
0123                     3
01234                   4
출력하려는 도형 "*"을 변수의 값로 치환(왼쪽은 변수 i,오른쪽은  변수 j)

2) 출력하려는 도형을 변수 i를 통해 구한다.

#include<stdio.h>

void main() {
	for (int i = 0; i < 1; i++) {
		printf("*");
	}
	printf("\n");


	for (int i = 0; i < 2; i++) {
	    printf("*");
	}
	printf("\n");
	

	for (int i = 0; i < 3; i++) {
		printf("*");
	}
	printf("\n");
	

	for (int i = 0; i < 4; i++) {
		printf("*");
	}
	printf("\n");
	

	for (int i = 0; i < 5; i++) {
		printf("*");
	}
	printf("\n");
	
}

3) 위의 코드를 for문으로 바꾸기 위해, 변수 i와 변수 j의 관계를 구한다.

#include<stdio.h>

void main() {
	for (int j = 1; j <= 5; j++) {
		for (int i = 1; i <= j; i++) {
			printf("*");
		}
		printf("\n");
	}
}

 

'프로그래밍 언어 > C언어' 카테고리의 다른 글

함수와 변수  (0) 2023.02.15
함수  (0) 2023.02.14
분기문(break문, continue문)  (0) 2023.02.12
반복문(for문)  (0) 2023.02.11
반복문(while문)  (0) 2023.02.10
Comments