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 문은 반복문 작성시 보통 아래와 같은 부분을 고려한다는 점에 코드를 간결하게 만들어 주는 문법을 취한다.
- 반복문의 최초 시작 시 처리
- 반복문을 한바퀴 돌았을 때 처리
- 반복문을 계속할지 판단
문법:
for (반복 시작 처리 ; 반복문 계속할지 판단 ; 반복문을 한바퀴 돌았을 때 처리) {
}
; 으로 세부분으로 구분됨
예)
int i;
for (i = 0; i < 10; i++) {
printf("%d\n", 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 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
조건문이 참(true) 인 동안 반복
}
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. 코드 실행 후 2번으로 이동
2. 조건문 확인
2.1. 참이면 1번으로 이동
2.2 거짓이면 3번으로 이동
3. 루프 빠져나옴
예)
#include <stdio.h>
int main() {
char c;
do {
c = getchar();
} while (c != 'q');
}
예)
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 빠져나옴
엔터를 입력하면 다시 조건문으로 이동
그 외는 화면에 입력한 값을 출력함
}
실행:
$ ./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 빠져나옴
엔터를 입력하면 다시 조건문으로 이동
그 외는 화면에 입력한 값을 출력함
댓글 없음:
댓글 쓰기