[조건적 실행과 흐름의 분기]
★ if문을 이용한 조건적 실행
- 분기의 가장 기본 : if ~ else문
- if는 독립적으로 사용되어 '조건적 실행'을 가능하게 함.
if(조건)
{
// 조건이 참이면 실행할 문장
}
- if문의 기본 예제
- 설명 : 사용자가 입력한 정수 num이 각 if문의 조건 중 해당하는 것의 문장이 실행됨.
// IfBasic.c
#include <stdio.h>
int main()
{
int num;
printf("정수 입력 : ");
scanf("%d", &num);
if(num < 0) // num이 0보다 작은 경우 아래 문장 실행
printf("입력 값은 0보다 작다.\n");
if(num > 0) // num이 0보다 큰 경우 아래 문장 실행
printf("입력 값은 0보다 크다.\n");
if(num == 0) // num이 0인 경우 아래 문장 실행
printf("입력 값은 0이다.\n");
return 0;
}



- 조건문을 사용한 계산기 프로그램 작성 예제
- 설명 : 사용자가 선택한 연산(opt)가 해당하는 조건의 if문 아래의 문장을 수행함. 여기서는 3번 곱셈을 선택했기 때문에 opt는 3이 되고, 곱셈연산을 수행하게 됨.
- 이 예제의 경우 opt 값이 무슨 값이든 모든 if문의 조건연산(비교)이 실행됨.
- 이러한 불필요한 연산을 수행하지 않기 위해서 if ~ else문을 사용함! ===> 뒤에서 다시 설명!!
if ~ else문은 조건을 만족하는 if문이 발견되면 나머지 if문은 skip!
// CalOne.c 계산기 프로그램
#include <stdio.h>
int main()
{
int opt;
double num_1, num_2, result;
printf("1. 덧셈 | 2. 뺄셈 | 3. 곱셈 | 4. 나눗셈\n");
printf("선택 : ");
scanf("%d", &opt);
printf("두 개의 실수 입력 : ");
scanf("%lf %lf", &num_1, &num_2);
if(opt == 1)
result = num_1 + num_2;
if(opt == 2)
result = num_1 - num_2;
if(opt == 3)
result = num_1 * num_2;
if(opt == 4)
result = num_1 / num_2;
printf("결과 : %f\n", result);
return 0;
}

- 1이상 100미만의 정수 중에서 3의 배수이거나 4의 배수인 정수 순서대로 출력하는 예제
- 설명 : num이 1~100까지 1씩 증가하며 반복하고, num을 3으로 나눴을 때 나머지가 0이 되거나 4로 나눴을 때 나머지가 0이 되면 num을 출력
// Mul3Mul4.c 3의 배수이거나 4의 배수 출력
#include <stdio.h>
int main()
{
int num;
for(num = 1 ; num <= 100 ; num++)
{
if(num % 3 == 0 || num % 4 == 0)
printf("3 또는 4의 배수 : %d\n", num);
}
return 0;
}

.
.
.

★ if~else문을 이용한 흐름의 분기
- else는 독립적으로 사용 불가! if와 함께 사용됨!
- 중괄호 잘 쓰기!!!!! if 따로 ! else 따로 !
if(조건)
{
// 조건이 참일 때 수행할 문장
}
else
{
// if의 조건이 '거짓'인 경우 수행할 문장
}
- if~else문 기본예제
- 설명 : 사용자가 입력한 num이 0보다 작은 경우 if문의 문장을 수행하고, 아닌 경우 else의 문장 수행
// IfElseBasic.c
#include <stdio.h>
int main()
{
int num;
printf("정수 입력 : ");
scanf("%d", &num);
if(num<0)
printf("입력 값은 0보다 작다.\n");
else
printf("입력 값은 0보다 작지 않다.\n");
return 0;
}


★ if ... else if ... else의 구성
- 조건 만족여부 검사는 위에서 아래로 진행
- 조건을 만족하여 해당 블록을 실행하고 나면 마지막 else까지 모두 skip
if (조건 1)
{
// 조건 1 만족 시 실행
}
else if (조건 2)
{
// 조건 2 만족 시 실행
}
else
{
// 위의 조건들 모두 불만족 시 실행
}
- 조건문을 사용한 계산기 프로그램 작성 예제
- 설명 : 앞서 진행한 예제와 동일함. 다른 점은 앞에서는 if문만 사용하여 모든 조건 비교 연산을 진행하지만, 이번 예제는 조건이 해당하는 블록을 진행하면, 나머지는 조건 비교 연산을 진행하지 않는다는 것임.
// CalTwo.c 계산기 프로그램
#include <stdio.h>
int main()
{
int opt;
double num_1, num_2;
double result;
printf("1. 덧셈 | 2. 뺄셈 | 3. 곱셈 | 4. 나눗셈\n");
printf("선택 : ");
scanf("%d", &opt);
printf("두 개의 실수 입력 : ");
scanf("%lf %lf", &num_1, &num_2);
if(opt == 1)
result = num_1 + num_2;
else if(opt == 2)
result = num_1 - num_2;
else if(opt == 3)
result = num_1 * num_2;
else
result = num_1 / num_2;
printf("결과 : %f\n", result);
return 0;
}

★ 조건 연산자: 피 연산자가 세 개인 '삼 항 연산자'
- 조건 연산자의 형태
- 소활호는 이해를 돕기 위한 것 ==> 생략 가능!
- 조건 연산자는 ? 와 : 로 이루어짐.
(num_1 > num_2) ? (num_1) : (num_2) ;
(조건) ? data1 : data2
- 조건이 '참'이면 연산결과로 data1을 반환하고, 조건이 '거짓'이면 연산결과로 data2가 반환됨.
- 따라서, 다음과 같은 형태로 조건 연산자를 구성할 수 있음.
- 우선순위 ==> 조건 연산자 > 대입 연산자 ==> 조건 연산자 먼저 진행
int num_3 = (num_1 > num_2) ? (num_1) : (num_2)
- if 위의 조건 == '참' ==> int num_3 = num_1;
- if 위의 조건 == '거짓' ==> int num_3 = num_2;
- 조건 연산자 사용 예제
- 설명 : num > 0 조건이 '참'이면 abs = num이 되고, '거짓'이면 abs = num*(-1)이 됨. (음수의 절댓값은 -1을 곱해야함)
// ThreeOperand.c 조건 연산자 사용 예제
#include <stdio.h>
int main()
{
int num, abs;
printf("정수 입력 : ");
scanf("%d", &num);
// num>0이 참 ==> abs = num
// num>0이 거짓 ==> abs = num*(-1)
abs = num>0 ? num : num*(-1);
printf("%d의 절댓값 : %d\n", num, abs);
return 0;
}


[반복문의 생략과 탈출: continue & break]
★ break! 이제 그만 빠져나가자!
- break는 반복문을 탈출할 때(=빠져 나갈 때) 사용
- break문을 사용하면 바로 상위에 있는 반복문 하나를 빠져 나감!!!!!!! if문 아님. 절대 아님. 반복문임.
- 1부터 n까지 더하는데, 최초로 5,000을 넘길 때의 n을 구하는 예제
- 설명 : sum_이 5000을 넘어가면 break문을 통해서 무한루프 while문을 빠져나오게 되고, sum과 num을 출력
// break
#include <stdio.h>
int main()
{
int sum_ = 0, num = 0;
while(1)
{
sum_ += num;
if(sum_ > 5000)
break;
num++;
}
printf("sum : %d\n", sum_);
printf("n : %d\n", num);
return 0;
}

★ continue! 나머지 생략하고 반복조건 확인하러 가자!
- 반복문 안에서 continue를 만나면, 실행중인 위치와 상관없이 반복문의 조건검사 위치로 이동!!!!!
- 그리고 검사결과 반복조건이 여전히 '참'이라면 반복영역 다시 실행
- continue문에 걸리면 continue 이후의 문장은 실행 XXXXXX !!!!
- 1이상 20미만의 정수를 출력하되, 2의 배수와 3의 배수를 추력에서 제외시키는 예제
- 설명 : if문 조건에 걸리면 continue를 만나 다시 for문의 조건검사 위치로 이동하여 num이 20보다 작은지 검사하고 '참'이면 다시 for을 계속 실행하고, 프로그램이 계속 진행되다가 num > 20 이 되면, 프로그램 종료됨.
// continue
#include <stdio.h>
int main()
{
int num;
printf("start!!!!\n");
for(num = 1 ; num < 20 ; num++)
{
if(num % 2 == 0 || num % 3 == 0)
{
continue;
}
printf("%d ", num);
}
printf("\nend!!!!\n");
return 0;
}

[switch문에 의한 선택적 실행과 goto문]
공부 예정 핫
'C > 예습' 카테고리의 다른 글
[2025.03.09] (예습) if~else문의 활용_연습문제 (3) | 2025.03.09 |
---|---|
[2025.03.09] (예습) for문_연습문제 (2) | 2025.03.09 |
[2025.03.08] (예습) while문_연습문제 (2) | 2025.03.08 |
[2025.03.08] (예습) 반복실행을 명령하는 반복문 (0) | 2025.03.08 |
[2025.03.08] (예습) scanf 연습문제 풀이 (0) | 2025.03.08 |