2015년 8월 15일 토요일

C 언어 - if, for, whlie, do while

if


어떠한 조건에 따른 프로그램 흐름의 변화

조건문


비교 
  • 수식 비교 : == > < >= <= !=
  • 논리 값 : 0 또는 0 이 아닌 값

예) 수식 비교
if (sum > 10) {
    printf("greater than 10\n");
} else {
    printf("less than or equals to 10\n");
}

예) 논리 비교

if (0) { // 0 은 거짓 (false)
    printf("False!\n"); // 이 코드는 절대 불리지 않는다.
}

if (1) { // 0이 아닌 값은 참(true)
    printf("True!\n"); // 이 코드는 항상 불린다.
}

if, else if, else


if (조건문1) {
} else if (조건문2) { // 조건문1 이 거짓이면
} else if (조건문3) { // 조건문1 과 조건문2 가 거짓이면
} else { // 위 모든 조건이 거짓이면
}

흔히 하는 실수


같은 값인지 비교하는 구문은 == 인데 = (대입문) 으로 혼동하는 경우가 많다.
문제는 컴파일러가 오류로 판정하지 않기 때문에 스스로 문제를 찾아야 한다는 점이다.


for


반복 처리 작업

반복문


컴퓨터 프로그래밍은 최대한 중복을 줄이는 노력의 일환의 산물이다.
반복된 일의 규칙을 정하고 반복 횟수를 정하는 식의 특정 조건까지 반복하도록 할 수 있는 기능이다.



for 문은 반복문 작성시 보통 아래와 같은 부분을 고려한다는 점에 코드를 간결하게 만들어 주는 문법을 취한다.

  • 반복문의 최초 시작 시 처리
  • 반복문을 한바퀴 돌았을 때 처리
  • 반복문을 계속할지 판단
문법:

for (반복 시작 처리 ; 반복문 계속할지 판단 ; 반복문을 한바퀴 돌았을 때 처리) {
}

; 으로 세부분으로 구분됨

예)
int i;
for (i = 0; i < 10; i++) {
    printf("%d\n", i);
}
  • i = 0 : i 값을 0으로 초기화 한다. (for 문 시작 시 한번만 불림)
  • i < 10 : i 값이 10 보다 작으면 반복문을 계속한다. (반복문 한바퀴 돌기전 불림)
  • i++ : 반복문을 한바퀴 돌면 i 에 1을 더한다. (반복문 한바퀴 돌면 불림)

예)
#include <stdio.h>

int main() {
    int i;
    for (printf("initialize\n"), i = 0; printf("condition\n"), i < 5; printf("++\n"), i++) {
        printf("%d\n", i);
    }
}

실행:
$ ./for
initialize
condition
0
++
condition
1
++
condition
2
++
condition
3
++
condition
4
++
condition


while


조건문이 참(true) 인 동안 반복

문법:

while(조건문) {
}

1. 조건문 확인
1.1. 참이면 2번으로 이동
1.2 거짓이면 3번으로 이동
2. 코드 실행 후 1번으로 이동
3. 루프 빠져나옴

예)
#include <stdio.h>

int main() {
    int done = 0;
    while (!done) {
        char c;
        c = getchar();
        if (c == 'q') {
            done = 1;
        }
    }
}

q 를 입력할 때 까지 반복
q 를 입력하면 done = 1 로 되어 다음 순차에 false 로 처리되어 loop 를 빠져 나옴

무한 loop

while (1) {
    // 무한 반복
}


프로그램 실행시 의도치 않은 무한 loop 는 오류로 여겨진다.

do while


while 문과 다르게 먼저 한번 코드를 수행하고 조건문 확인함

1. 코드 실행 후 2번으로 이동
2. 조건문 확인
2.1. 참이면 1번으로 이동
2.2 거짓이면 3번으로 이동
3. 루프 빠져나옴

예)
#include <stdio.h>

int main() {
    char c;
    do {
        c = getchar();
    } while (c != 'q');
}

break 와 continue



  • break : 반복문 실행 중간에 조건을 확인하지 않고 loop 를 빠져나옴
  • continue : 반복문 실행 중 더 진행하지 않고 바로 조건문 확인으로 이동



예)
while (1) {

    char c = getchar();
    if (c == 'q') {
        break;
    }
}

q 를 입력하면 loop 빠져나옴

while (1) {
    
    char c = getchar();
    if (c == 'q') {
        break;
    }
    if (c == '\n') {
        continue;
    }
    printf("You entered: %c\n", c);
}

q 를 입력하면 loop 빠져나옴
엔터를 입력하면 다시 조건문으로 이동
그 외는 화면에 입력한 값을 출력함


댓글 없음:

댓글 쓰기