제어문 - 조건문
다루는 내용 - 조건문 |
제어문에는 특정 조건에 따라 수행을 하는 구문들이다. 특정 조건이 참과 거짓에 따라 수행하는 조건문과 특정 조건이 참일 동안 반복하는 반복문 그리고, 특정 조건에 있는 값에 따라 수행할 구문을 선택하는 선택문 등으로 구분할 수가 있을 것이다.
먼저, 조건문에 대해서 살펴보자.
1. if ([조건]) statement1; 참인 경우에 statement1을 행하라. 2. if([조건])statement1; else statement2; 참인 경우에 statement1을 행하고 거짓인 경우에 statement2를 행하라.
포맷:
조건문에서 주의해야 할 것은 조건문에 영향을 받는 구문은 바로 뒤에 오는 하나의 구문에 국한된다는 것이다. 그렇지만 블록 문법({로 시작해서 }로 끝나는 것을 블록이라 한다.)을 통해 하나의 블록 구문안에 여러 요소 구문을 정의함으로써 이러한 한계를 극복할 수가 있다.
또한, else는 매핑이 되는 if구문이 앞에 반드시 있어야 한다는 것을 인지해야 한다. 위의 예를 통해 0은 거짓이고 그 외의 것은 참이라는 것을 알 수 있다. else와 짝이 되는 if가 없어서 에러가 났다. 생각을 해 보자. if구문에 영향을 받는 구문은 뒤에 있는 하나의 구문이다. 즉, if(val)에 영향을 받는 구문은 printf("%d\n",val);이며 printf("참입니다.\n");이는 if구문에 영향을 받지 않는다. if구문은 이미 printf("%d\n");에서 끝이 난 것이다. 들여쓰기를 한 것은 가독성을 위해 한 것이지 컴파일러의 번역과는 아무런 연관이 없다. 이와같은 개발 습관으로 인한 논리적인 오류 때문에 집중해야 할 다른 논리를 생각하는 데 지장을 주는 것을 피하고 싶다면 조건문과 반복문처럼 조건이 참일 때 뒤에 하나의 구문만 영향을 받는 곳에 블록을 형성하는 습관을 가지면 될 것이다. 단, 하나의 구문만 수행한다고 해도 말이다. 물론, 바라보는 시각에 따라 이는 논쟁의 여지로 삼을 수 있을 것이라 생각을 하며 각자에게 많은 좋은 습관을 형성하기를 바란다.
Look & Feel & Think
지식의 여신은 쉽게 옷을 벗지 않는다. 우리 인간은 만물의 영장이라 부르며 자신들의 논리 체계의 발달을 자부하고 있다. 하지만, 이로 인해 0과 1밖에 모르는 컴퓨터로 하여금 특정 기능을 수행하게 하는 프로그래밍을 하는 작업을 할 때 창조의 고통이 따르게 된다. 사람들끼리 대화를 할 때에는 논리적 전개가 잘못된 부분이 있다 하더라도 수정해서 해석을 하는 능력이 탁월하지만 컴퓨터는 그렇지 않다. 강의를 하다보면 스스로 문제를 해결하려고 하는 학생들이 '이 길은 내 길이 아닌가봐.', '나는 왜 이리 멍청하지?' 등의 자기 비하에 빠지는 것을 자주 목격하곤 한다. 또한, 남의 작성된 코드를 분석하고 '역시 내 머리는 좋아.', '이해했어.'라고 생각하는 학생들도 보게 된다. 또한, 결국에 가서는 창조의 고통을 느끼지 못한 이들이 한계에 부딪히는 것을 보곤한다. 처음 언어를 배울 때 얼마나 어려운 논리에 해당하는 프로그래밍 문제를 요구를 할까? 당연히 너무도 단순한 논리임에 틀림이 없다. 다만, 우리의 일상에서 꼼꼼한 논리로 살아온 것이 아니라 자신이 논리적인 사람이라고 인정받기를 원하면서 살아왔었기 때문에 스스로 문제를 해결해 나가는 과정이 고통스러운 것일 뿐이다. 걱정하지 마라. 창조의 고통으로 인해 갖게 되는 그 모든 과정이 자신의 엔지니어 능력을 레벨업 해주고 있는 것임에 틀림이 없으니 말이다. 지식의 여신은 쉽게 옷을 벗지 않는다. 하지만, 한 번 벗으면 홀딱 벗는다. 그리고, 지식의 여신과 헤어지고 다시 길을 걸으면 또 다른 지식의 여신을 만나리라.
*참고 : '지식의 여신은 쉽게 옷을 벗지 않는다.'는 지인이 늘상 했던 말로 전산 엔지니어의 삶의 가치는 무엇일까? 에 대해 강한 메시지를 던져준다. 참고로 어마이크로소프트웨어에도 실렸었고 어느 검색 엔진에서도 이에 대한 내용을 쉽게 확인할 수 있다. |
'언어 자료구조 알고리즘 > C 언어 문법' 카테고리의 다른 글
24. 배열의 사용 (0) | 2009.08.19 |
---|---|
23.배열 (0) | 2009.08.19 |
22. 제어문 - 반복문 (0) | 2009.08.19 |
21.제어문 - 선택문 (0) | 2009.08.19 |
19. 기본입출력 - 입력 (0) | 2009.08.19 |
18. 기본 입출력 - 출력 (0) | 2009.08.19 |
17.기본 입출력 개요 (0) | 2009.08.19 |
16. 지시/주소/인덱스/간접연산자 (0) | 2009.08.19 |
15. 비트/ 쉬프트 연산자 (0) | 2009.08.19 |
14. 비교/논리 연산자 (0) | 2009.08.19 |