본문 바로가기
학습/IT

[IT] C언어 입문(6) Control flow, 제어흐름 - While문, For문, If문, do-while문 등 루프문

by 개성공장 2021. 8. 24.
반응형

□ flow of control (control flow)

 

 * While Statement

 - while_statement ::= while (expr) statement

1. expr is evaluated

2. if it is nonzero(true), then statement is executed

3. Control is passed back to the beginning of the while statement

 - 'while' statement is executed repeatedly until expr is zero

 - example

int i = 1, f = 1, n = 10;
while(i<n) {
	f = f * 1;
	i = i + 1;
}

 => i가 10이 될 때까지, 9번 루프 반복, f는 팩토리얼의 값을 나타냄, 9!

 

 * For Statement

 - for statement ::= for ( expr ; expr ; expr ) statement

1. The first expr is evaluated

2. The second expr is evaluated

3. If it is nonzero, then statement is executed

4. The third expr is evaluated

5. Control is passed back to the beginning of the while statement (first expr is skipped)

 - example

for ( i=1; i<=n; i++) {
	f = f * i;
}

 => 팩토리얼 계산

 

 - 여러번 반복해야 하는 작업은 for문이 유리. 조건식이 복잡한 경우에는 while문이 유리

 

 * Do Statement

 - do_statement ::= do statement while ( expr );

1. statement is executed

2. the expr is evaluated

3. if it is nonzero, then control is passed back to the beginning of the do statement

 - example

i = 0;
sum = 0;
do {
	sum = sum + i;
	i = i + 1;
} while ( i > 0 );

 

 * Break Statement

 - break;

 - Causes an exit from the innermost enclosing loop or switch statement

 - example

while(1) {     // 무한루프를 의미
	scanf("%lf", &x);
	if (x<0.0)
		break;
	printf("%f\n", x+x);   // 중간의 break에서 루프가 끝나 출력되지 않음
}

 

 * Continue Statement

 - continue를 만나면 그 밑의 부분을 무시하고 루프의 처음으로 돌아감

 

 * Switch Statement

 - switch_statement ::= switch ( integral_expression ) '{' { case statement | default_statement | switch_block } '}'

 - example (character 변수도 정수 변수처럼 다룰 수 있음)

switch ( c ) {
	case 'a' :                   // 아무것도 실행하지 않는 것이 아닌, 밑의 break까지 실행
	case 'A' :
		a_cnt = a_cnt + 1;
		break;
	case 'b' :
	case 'B' :
		b_cnt = b_cnt + 1;
		break;
	default:
		other_cnt = other_cnt + 1;
}

 - 여러개의 if 구문(if, else if, else if ...)을 이용해서 표현할 수도 있으나 복잡하고 가독성 측면에서 불리

※ C언어 입문 시리즈
1. Introduction - C언어의 역사와 기본 개념
2. Variables - 변수, 대입연산자, 구문규칙, 데이터타입 등
3. Data types, 데이터 타입(자료형)
4. Operators, 연산자 - scanf, 산술연산자, 관계연산자, 증감연산자, 대입연산자, 동등연산자 등
5. Operators, 연산자 - 논리연산자, 단축평가, 대입연산자, if문 및 while문 활용
6. Control flow, 제어흐름 - While문, For문, If문, do-while문 등 루프문
7. Function, 함수 - Goto문, getchar와 putchar, 함수 정의와 프로토타입 선언
8. Scope rules/recursion, 변수의 영역규칙과 재귀호출, 난수생성 예시
9. Array와 Pointers, 배열과 포인터
10. Pointer, 역참조, swap 함수 활용, 배열과 포인터 비교
11. File operation 파일연산, String, 다차원 배열 예시
12. structure, union, enumerated types - 구조체, 공용체, 열거체
13. 자료구조(data structure) 예시 - 연결리스트(linked list)
14. C 전처리기(C preprocessor), 함수 포인터(function pointer)
반응형

댓글