선택 제어문과 반복 제어문
프로그램 언어의 제어구조 파악.
선택제어문과 반복제어문 그리고 프로그램을 통해 제어구조 파악.
학습 목표
- 프로그램 제어구조를 이해할 수 있음.
- 선택제어문의 종류와 그 기능 이해.
- 반복제어문의 종류와 그 기능 이해.
- 기타제어문의 기능 이해.
프로그램 언어의 제어 구조
- 순차적 제어 : 특별한 지정이 없는 한, 위에서 아래로 수행되는 제어구조.
- 선택적 제어 : 주저징 조건에 따라 특정 부분으로 수행을 옮기는 분기 제어 구조.
- 반복적 제어 : 특정 부분을 일정한 횟수만큼 반복 수행하는 반복 제어 구조.
선택 제어문
선택 제어문의 종류
단순 제어 if
주어진 조건에 따라 명령문을 수행한다.
형식
if( 조건 ) 명령문 1; 명령문 2;
if( 조건 ) { 명령문 1; ... 명령문 n; } ...
단순 if 문의 조건에 따른 분기
단순 if문의 사용 예
#include <stdio.h>
int main()
{
int a = 10, b = 20;
if (a > b)
{
a = a + 20;
printf("a = %d\n", a);
}
b = b + 20;
printf("b = %d\n", b);
return 0;
}
if-else
주어진 조건에 따라 다른 명령문을 수행한다.
형식
if( 조건 ) 명령1; else 명령2;
단순 if 문의 조건에 따른 분기
if-else 문의 사용 예
#include <stdio.h> #pragma warnig(disable : 4996) int main() { int a, b, max; printf("\ninsert a >> "); scanf("%d", &a); printf("\ninsert b >> "); scanf("%d", &b); if (a >= b) max = a; else max = b; printf("max = %d\n", max); return max; }
다중 if - else 문
주어진 조건 1과 2에 따라 수행하는 명령이 다르다.
형식
if( 조건1 ) if( 조건2 ) 명령문1; else 명령문2; else 명령문3;
다중 if - else 문의 조건에 따른 분기
다중 if - else 문의 예
#include <stdio.h> #pragma warnig(disable : 4996) int main() { int a; printf("\ninsert a number : "); scanf("%d", &a); if (a >= 0) if (a == 0) printf("ZERO\n"); else printf("OVER ZERO\n"); else printf("UNDER ZERO\n"); return 0; }
다중 if - else if - else
형식
if( 조건1 ) 명령1; else if( 조건2 ) 명령2; else if( 조건3) 멸령3; else 명령4;
다중 if-else if-else 문의 조건에 따른 분기
다중 if - else if - else if - else 문의 예
#include <stdio.h> #pragma warning(disable : 4996) int main() { int score = 0; printf("\n성적 입력 : "); scanf("%d", &score); if (score >= 90) printf("A\n"); else if (score >= 80) printf("B\n"); else if (score >= 70) printf("C\n"); else if (score >= 60) printf("D\n"); else printf("F\n"); return 0; }
switch - case
주어진 값에 따라 여러 곳 중 한 곳으로 분기하여 실행
형식 :
switch( 수식 ) { case 값1 : 명령어1; case 값2 : 명령어2; ... default : 명령어; }
switch - case 문의 처리 순서도
swtich - case 문의 사용 예 (break 미사용)
#include <stdio.h> #pragma warning(disable : 4996) int main() { int n; printf("\ninsert a number : "); scanf("%d", &n); printf("\n n %% 5 = %d\n", n % 5); switch (n % 5) { case 0: printf("remainder : 0\n"); case 1: printf("remainder : 1\n"); case 2: printf("remainder : 2\n"); default: printf("remainder : 3 or etc..\n"); } return 0; }
swtich - case 문의 사용 예 (break 사용)
#include <stdio.h> #pragma warning(disable : 4996) int main() { int n; printf("\ninsert a number : "); scanf("%d", &n); printf("\n n %% 5 = %d\n", n % 5); switch (n % 5) { case 0: printf("remainder : 0\n"); break; case 1: printf("remainder : 1\n"); break; case 2: printf("remainder : 2\n"); break; default: printf("remainder : 3 or etc..\n"); } return 0; }
goto
무조건 적인 분기문
기능 : 프로그램 수행 도중에 원하는 곳으로 제어를 무조건적으로 옮긴다.
형식
Label : goto Label
goto 사용 예
#include <stdio.h> #pragma warning(disable : 4996) int main() { int i, n, c = 'A'; while (1) { printf("\n num : "); scanf("%d", &n); for (i = 1; i <= n; i++) { printf("%c", c); if (c == 'Z') goto end; else if (c == 'Q') goto findQ; c++; } } end: printf("\n>> FIN <<\n"); findQ: printf("\n>> I FIND F!! <<\n"); return 0; }
goto 문이 사용 될 수 없는 경우
- label의 위치가 특정 함수(if, for) 안에 있을 경우
반복 제어문
for
기능 : 주어진 조건이 만족되는 동안 루프문을 반복 수행한다.
형식
for( 초기식; 조건식; 증감식 ) { 반복 실행될 문장; }
for 문의 처리 순서
사용 예
#include <stdio.h> int main() { int i, sum = 0; for (i = 0; i <= 10; i++) sum = sum + i; printf("SUM OF from 1 to %d = %d\n", i - 1, sum); return 0; }
다중 for 문
기능 : 주어진 조건이 만족되는 동안 푸르문을 반복 수행한다.
형식
for( 초기식; 조건식; 증감식 ){ for( 초기식; 조건식; 증감식 ){ for( 초기식; 조건식; 증감식 ){ // 반복 실행될 문장 } } }
ex
#include <stdio.h> int main() { int a, b; for (a = 1; a <= 3; ++a) { printf("a = %d\n", a); for (b = 0; b <= 4; b++) printf("\tb = %d", b); putchar('\n'); } return 0; }
while
기능 : 주어진 조건이 만족되는 동안 반복문을 수행
형식 :
while( 조건식 ) { // 반복 수행괼 문장; }
처리 순서
사용 예
#include <stdio.h> int main() { int i = 0, sum = 0; while (i <= 100) { sum = sum + i; i++; } printf("SUM OF FROM 1 TO 100 = %d\n", sum); return 0; }
다중 while 예
#include <stdio.h> int main() { int i = 2, j; while (i < 10) { j = 1; while (j < 10) { printf("%d x %d = %d \n", i, j, i * j); j++; } printf("\n"); i++; } return 0; }
do - while
기능 : 반복문 내의 명령을 실행한 후, 주어진 조건을 검사, 반복 여부를 결정함.
형식 :
do { 반복_수행_문장; } while( 조건식 );
do - while의 처리 순서
ex )
#include <stdio.h> #pragma warning(disable : 4996) int main() { int i = 0, sum = 0, n; printf("\n>> insert n : "); scanf("%d", &n); do { sum = sum + i; i++; } while (i <= n); printf("i = %d\n", i); printf("SUM OF FROM i TO %d : %d\n", n, sum); return 0; }
기타 제어문
break
for, while, do - while, switch 블록등을 강제적으로 벗어날 때 사용.
자신이 포함된 반복문만 빠져 나온다.
사용 예
#include <stdio.h> #pragma warning(disable : 4996) int main() { int num, sum = 0; while (1) { printf("insert num (end:0): "); scanf("%d", &num); if (num == 0) break; sum = sum + num; } printf("\nsum = %d\n", sum); return 0; }
continue
반복문 중에 다음 반복문을 실행하고자 할 때 사용.
#include <stdio.h> #include <math.h> #pragma warning(disable : 4996) int main() { int num = 1; while (num != 0) { printf("\n num : "); scanf("%d", &num); if (num < 0) { printf("0 : Negative Number!\n"); continue; } printf("Square root of %d = %f\n", num, sqrt(num)); } printf("\n>> BYE <<\n"); return 0; }
'Language > C' 카테고리의 다른 글
[C] 함수와 기억 클래스 - 2 (0) | 2020.12.25 |
---|---|
[C] 함수와 기억 클래스 - 1 (0) | 2020.12.20 |
[C] 입출력 함수와 연산자 - 2 (0) | 2020.12.20 |
[C] 입출력 함수와 연산자 - 1 (0) | 2020.12.15 |
[C] 자료형과 선행 처리기 (0) | 2020.12.14 |