[CS_study] 반복문

나라리야·2021년 4월 23일
0

CS_study

목록 보기
6/18
post-thumbnail

반복문

for문

가장 많이 사용되는 반복문!

1) FOR문 내부의 조건에 부합하면 계속해서 특정한 구문을 실행합니다.
2) 반복문을 탈출하고자 하는 위치에 break 구문을 삽입합니다.

for (초기화; 조건; 반복 끝 명령어) { 
   		// 반복적으로 실행할 부분
}

// 초기화 구문은 없을 수도 있다. 조건이 만족하면 구문을 실행하고, 반복 끝 명령어를 실행한다. 

예제1) 1부터 100까지의 정수 출력하기

#include <stdio.h>

int main(void) {
for (int i = 0; i <= 100; i++) {
    printf("%d\n", i);
  }
  system("pause");
}

//i가 0의 초기값을 만족하고  100보다 같거나 작은 수의 조건을 만족하며 +1씩 증감된 수가 차례로 출력이된다. 

예제2) 1부터 N까지의 합 출력하기

#define _CRT_SECURE_NO_WARNINGS //사용자로부터 수를 입력받는다는 뜻 
#include <stdio.h>

int main(void) {
int n, sum = 0;
printf("n을 입력하세요. "); 
scanf("%d", &n);
for (int i = 1; i <= n; i++) {
	sum = sum + i; 
}
printf("%d\n", sum);
system("pause");
}

// 5라는 정수를 입력받으면 1+2+3+4+5 > 15가 출력된다. 

무한루프 (Infinite Loop)

1) 무한 루프(Infinite Loop)란 종료 조건 없이 한없이 반복되는 반복문을 의미합니다.
2) 일부러 무한 루프를 발생시키는 경우도 있지만 일반적인 경우 개발자의 실수로 인해 발생합니다.

 for (초기화; 조건; 반복 끝 명령어) {
		// 조건이 항상 참(True)인 경우 무한 루프 발생
}

무한루프 예제1)

#include <stdio.h>

int main(void) {
for (;;) {
// 조건문의 내용이 없으면(비어있다면) 항상 참(True)
    printf("Hello World!\n");
  }
system("pause"); 
}

무한루프 예제2)

#include <stdio.h>

int main(void) {
for (int i = 0; i <= 100; i--) {
    printf("Hello World!\n");
  }
  system("pause");
}

// i--이기 때문에 계속적으로 작은 음수가 무한루프 될 것 이다. 

무한루프 탈출하는 예제1) -1이 입력될 때까지 더하기

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void) {
  int sum = 0;
  for (; 1;) {
int x;
scanf("%d", &x);
	if (x == -1) break; 
    sum += x;
  }
  printf("%d\n", sum);
  system("pause");
}

// -1이 되기 전까지의 더한 값들만 출력이된다. 

while문

1) WHILE문의 조건에 부합하면 계속해서 특정한 구문을 실행합니다.
2) 반복문을 탈출하고자 하는 위치에 break 구문을 삽입합니다.

while (조건) {
	// 반복적으로 실행할 부분
}

예제1) 특정 문자를 N번 출력하기

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void) {
  int n; // 정수
  char a; //문자 
  scanf("%d %c", &n, &a);
  while (n--) {
	printf("%c ", a); 
  }
  system("pause");
  return 0; 
}

//10 F 를 입력하면 F가 10번 출력이된다. 

예제2) 특정 숫자의 구구단 출력하기

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void) {
  int n;
  scanf("%d", &n);
  int i = 1; //초기값 
  while (i <= 9) {
	printf("%d * %d = %d\n", n, i, n * i);
	i++; 
  }
  system("pause");
}

//7을 입력하면 i가 9가 될때까지의 반복적인 출력내용이 나오면서 
//7*1 = 7 ... 7*9 =63까지 출력된다. 

중첩된 반복문

1) 중첩된 반복문이란 반복문 내부에 다른 반복문이 존재하는 형태의 반복문입니다.
2) 반복문이 중첩될수록 연산 횟수는 제곱 형태로 늘어납니다.

예제1) 구구단 출력하기 (WHILE문) > 전체구구단 출력

#include <stdio.h>

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

예제2) 구구단 출력하기 (FOR문) > 전체구구단 출력

#include <stdio.h>

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

FOR문과 WHILE문의 관계

1) 모든 FOR문은 WHLE문으로 변경할 수 있으며 모든 WHILE은 FOR문으로 변경할 수 있습니다.
2) C언어 소스코드가 최적화 되면서 어셈블리어 단에서는 동일한 명령어로 동작하기 때문입니다.

반복문
1) 반복문의 종류로는 FOR문과 WHILE문이 있으며 상호 치환이 가능합니다.
2) 의도하지 않은 무한 반복이 발생하지 않도록 유의해야 합니다.
3) 행렬, 그래프 등의 연산에 있어서 이중 반복문이 매우 많이 활용됩니다.

profile
Code의 美를 추구하는 개발자 🪞

0개의 댓글