Presentation is loading. Please wait.

Presentation is loading. Please wait.

쉽게 풀어쓴 C언어 Express 제6장 조건문 C Express.

Similar presentations


Presentation on theme: "쉽게 풀어쓴 C언어 Express 제6장 조건문 C Express."— Presentation transcript:

1 쉽게 풀어쓴 C언어 Express 제6장 조건문 C Express

2 이번 장에서 학습할 내용 조건문이란? if 문 if-else 문 중첩 if 문 switch 문 break문 continue문
5장까지는 문장들이 순차적으로 실행된다고 하였다. 하지만 필요에 따라서 조건이 만족되면 문장의 실행 순서를 변경할 수 있는 기능이 제공된다. 조건문이란? if 문 if-else 문 중첩 if 문 switch 문 break문 continue문 goto문

3 조건문 조건에 따라서 여러 개의 실행 경로 가운데 하나를 선택 문장이 실행되는 순서에 영향을 주는 문장
조건에 따라서 여러 개의 같은 처리를 반복

4 일상 생활에서의 조건문의 예 만약 비가 오지 않으면 테니스를 친다. 만약 결석이 1/3이상이면 F학점을 받는다.
만약 시간이 없는 경우에는 택시를 탄다. 만약 날씨가 좋고 공휴일이면 공원에 산책을 간다. 점수가 60점 이상이면 합격이고 그렇지 않으면 불합격이다. 조건문은 프로그램의 흐름을 변경합니다.

5 if 문 조건에 따라서 결정을 내리는 경우에 사용 조건에 따라서 결정을 내리는 경우에 사용 if (조건식) 문장;
조건식이 참으로 계산되면 if (조건식)       문장; 문장이 실행된다.

6 if 문의 예 if (number > 0) printf("양수입니다\n");
if (temperature < 0)    printf("현재 영하입니다.\n");           // 조건이 참일 때만 실행 printf("현재 온도는 %d도 입니다.\n", temperature); // 항상 실행

7 복합문 복합문(compound statement) 중괄호를 사용하여 문장들을 묶은 것 블록(block)이라고도 함
단일문(simple statement) 대신 사용 가능 if (score >= 60)          {       printf("합격입니다.\n");       printf("장학금도 받을 수 있습니다.\n");   } 조건식이 참이면 2개의 문장이 모두 실행된다.

8 예제 #include <stdio.h> int main(void) { int number;
printf("정수를 입력하시오: "); scanf("%d", &number); if (number > 0) printf("양수입니다.\n"); printf("입력된 값은 %d입니다.\n", number); return 0; } 정수를 입력하시오: 25 양수입니다. 입력된 값은 25입니다.

9 예제 // if 문을 사용하여 절댓값을 구하는 프로그램 #include <stdio.h> int main(void)
{         int number;         printf("정수를 입력하시오: ");         scanf("%d", &number);         if (number < 0)                 number = -number;                  printf("절댓값은 %d입니다.\n", number);         return 0; } 만약 사용자가 -5를 입력하였다면 -5 < 0이므로 해당 조건문 실행 정수를 입력하시오: -5 절댓값은 5입니다.

10 if-else 문 if (조건식)        문장1; else         문장2; 조건식이 참이면 실행된다. 조건식이 거짓이면 실행된다.

11 if-else 문 if (score >= 60) printf("합격입니다.\n"); else
{       printf("합격입니다.\n");       printf("장학금도 받을 수 있습니다.\n"); } else       printf("불합격입니다.\n");       printf("공부하세요.\n"); score가 60이상이면 실행 score가 60미만이면 실행

12 복잡한 조건식도 가능 학점 결정 코드 if (score >= 80 && score < 90) grade = 'B';
공백 문자들의 개수를 세는 코드 if (ch == ' ' || ch == '\n' || ch == '\t') white_space++;

13 예제 #1 // if-else 문을 이용하여 홀수와 짝수를 구분한다. #include <stdio.h>
int main(void) {         int number;         printf("정수를 입력하시오: ");         scanf("%d", &number);         if (number % 2 == 0)                 printf("입력된 정수는 짝수입니다.\n");         else                 printf("입력된 정수는 홀수입니다.\n");         return 0; } 2로 나누어서 나머지가 0이면 짝수이다. 정수를 입력하시오: 입력된 정수는 짝수입니다. 50

14 예제 #2 // 나눗셈을 하기 전에 분모가 0인지를 if-else 문을 이용하여 검사
#include <stdio.h> int main(void) {         int n1, n2, n3;         printf("정수를 입력하시오: ");         scanf("%d", &n1);         scanf("%d", &n2);         if (n2 == 0) { // 분모가 0인지 검사                 printf("0으로 나눌 수는 없습니다.\n");         } else {                 n3 = n1 / n2;                 printf("결과는 %d입니다.\n", n3);         }        return 0; } 정수를 입력하시오: 결과는 1입니다. 5 4

15 예제 #3 // 윤년 판단 프로그램 #include <stdio.h> int main(void) {
        int year;                  printf("연도를 입력하시오: ");         scanf("%d", &year);         if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)                 printf("%d년은 윤년입니다.\n", year);         else                 printf("%d년은 윤년이 아닙니다.\n", year);         return 0; } 연도를 입력하시오: 2015년은 윤년이 아닙니다. 2015

16 중첩 if if 문에 다시 if 문이 포함된 경우 if (조건식1 )       if (조건식2 )            문장;

17 if 문 안의 문장 자리에 if-else 문이 들어간 경우
if (score >= 80) if (score >= 90) printf("당신의 학점은 A입니다.\n"); if 문 안의 문장 자리에 if문이 들어간 경우 if (score >= 80) if (score >= 90) printf("당신의 학점은 A입니다.\n"); else printf("당신의 학점은 B입니다.\n"); if 문 안의 문장 자리에 if-else 문이 들어간 경우

18 만약 다른 if 문과 else 절을 매치시키려면 중괄호를 사용하여 블록으로 묶는다.
else 절은 가장 가까운 if 문에 매치된다. Dangling else problem if (score > 80) if (score >= 90) printf("당신의 학점은 A입니다\n"); else printf("당신의 학점은 B입니다\n") 만약 다른 if 문과 else 절을 매치시키려면 중괄호를 사용하여 블록으로 묶는다. if (score >= 80) {    if (score >= 90)        printf("당신의 학점은 A입니다.\n"); } else     printf("당신의 학점은 A나 B가 아닙니다.\n");

19 중첩 if if (score > 80) { if (score > 90)
       printf("당신의 학점은 A입니다.\n");    else         printf("당신의 학점은 B입니다.\n"); } else {   if (score > 70)        printf("당신의 학점은 C입니다.\n");        printf("당신의 학점은 D 또는 F입니다.\n"); } if-else 안에 다른 if-else 문이 포함될 수 있다.

20 정수 3개중의 최솟값 찾기 #include <stdio.h> int main(void) {
int n1, n2, n3, min; printf("정수 3개를 입력하시오:"); scanf("%d %d %d", &n1, &n2, &n3); if (n1 < n2) if (n1 < n3) min = n1; else min = n3; if (n2 < n3) min = n2; printf("제일 작은 수는 %d입니다.\n", min); return 0; } 10 < 20 이고 10 < 30 이므로 실행 정수 3개를 입력하시오: 제일 작은 수는 10입니다.

21 연속적인 if if (조건식1 ) 문장1; else if (조건식2 ) 문장2; else if (조건식3 ) 문장3; else
      문장1; else if (조건식2 )       문장2; else if (조건식3 )       문장3; else       문장4;

22 학점 결정 예제 #include <stdio.h> int main(void) { int score;
                 printf("성적을 입력하시오: ");         scanf("%d", &score);         if (score >= 90)                 printf("합격: 학점A\n");         else if (score >= 80)                 printf("합격: 학점B\n");         else if (score >= 70)                 printf("합격: 학점C\n");         else if (score >= 60)                 printf("합격: 학점D\n");         else                 printf("불합격: 학점F\n");        return 0; } 성적을 입력하시오: 88 합격: 학점B

23 문자 분류 예제 // 문자들을 분류하는 프로그램 #include <stdio.h> int main(void) {
        char ch;                  printf("문자를 입력하시오: ");         scanf("%c", &ch);   if ('A' <= ch && ch <= 'Z’)                        printf("%c는 대문자입니다.\n", ch);         else if ('a' <= ch && ch <= 'z’)                   printf("%c는 소문자입니다.\n", ch);         else if ('0' <= ch && ch <= '9’)                   printf("%c는 숫자입니다.\n", ch);         else                 printf("%c는 기타문자입니다.\n", ch);   return 0; } 문자를 입력하시오: c는 소문자입니다. c

24 계산기 예제 #include <stdio.h> int main(void) { char op;
int x, y, result; printf("수식을 입력하시오.\n"); printf("(예: 2 + 5)\n"); printf(">> "); scanf("%d %c %d", &x, &op, &y); if (op == '+') result = x + y; else if (op == '-') result = x - y; else if (op == '*') result = x * y; else if (op == '/') result = x / y; else if (op == '%') result = x % y; else { printf("지원되지 않는 연산자입니다.\n"); return 1; } printf("%d %c %d = %d\n", x, op, y, result); return 0; 수식을 입력하시오. (예: 2 + 5) >> 2 + 5 2 + 5 = 7

25 switch 문 여러 가지 경우 중에서 하나를 선택하는 데 사용 break는 switch 문을 탈출하는 데 사용합니다.
{ case c1:       문장1;       break; case c2:       문장2;   ... case cn:       문장n; default:       문장d; } 조건식의 값이 c2이면 실행된다. 일치하는 값이 없으면 실행된다. break는 switch 문을 탈출하는 데 사용합니다.

26 예제 int main(void) { int number; printf("정수를 입력하시오: ");
        scanf("%d", &number);         switch (number) {                 case 0:                         printf("없음\n");                         break ;                 case 1:                         printf("하나\n");                 case 2:                         printf("둘\n");                 default:                         printf("많음\n");                         break;         }  return 0; } 정수를 입력하시오: 하나 1

27 break가 생략된 경우 switch (number) { // number = 1 case 0: printf("없음\n");
          default:                 printf("많음\n");                 break; } break를 만날 때까지 계속 문장을 실행합니다.

28 의도적인 break 생략 여러 경우를 하나로 묶어서 처리하기 위하여 이러한 기법을 사용 switch (number) {
                case 0:                         printf("없음\n");                         break;                 case 1:                         printf("하나\n");                 case 2:                 case 3:                         printf("두서너개\n");                 default:                         printf("많음\n");  } 여러 경우를 하나로 묶어서 처리하기 위하여 이러한 기법을 사용

29 default 어떤 case에도 매치되지 않는 경우에 수행 switch (number) { // number = 5
                printf("없음\n");                 break ;           case 1:                 printf("하나\n");           case 2:                 printf("둘\n");           default:                 printf("많음\n");                 break; }

30 switch 문에서 주의할 점 case label에는 정수형 상수 수식만 허용됨 case label들의 값은 서로 달라야 함
switch (number) { case x: // 변수는 사용할 수 없다. printf("x와 일치합니다. "); break; case (x+2): // 변수가 들어간 수식은 사용할 수 없다. printf("수식과 일치합니다. "); case 0.001: // 실수는 사용할 수 없다. printf("실수"); case "001": // 문자열은 사용할 수 없다. printf("문자열"); }

31 switch 문과 if-else 문 switch는 if-else보다 실행 속도가 빠르지만 사용에 제약이 있음
switch (number)  {      case 0:          printf("없음\n");            break;     case 1:            printf("하나\n");      case 2:            printf(“둘\n");      default:            printf("많음\n"); } if (number == 0)       printf("없음\n"); else if (number == 1)       printf("하나\n"); else if (number == 2)       printf("둘\n"); else       printf("많음\n");

32 switch 예제 // 달의 일수를 계산하는 프로그램 #include <stdio.h>
int main(void) {         int month, days;                  printf("달을 입력하시오: ");         scanf("%d", &month);         switch (month) {                 case 2:                         days = 28;                         break;                 case 4: case 6: case 9: case 11:                         days = 30;                 default:                         days = 31;         }         printf("%d월의 일수는 %d입니다.\n", month, days);         return 0; } 달을 입력하시오: 12 12월의 일수는 31입니다.

33 switch 예제 // 학점 부여 프로그램 #include <stdio.h> int main(void) {
int score; char grade; printf("성적을 입력하시오(0~100): "); scanf("%d", &score); switch (score / 10) { case 10: case 9: grade = 'A'; break; case 8: grade = 'B'; break; case 7: grade = 'C'; break; case 6: grade = 'D'; break; default: grade = 'F'; break; } printf("성적 = %d, 학점 = %c\n", score, grade); return 0; 성적을 입력하시오(0~100): 85 성적 = 85, 학점 = B

34 계산기 예제 #include <stdio.h> int main(void) { char op;
int x, y, result; printf("수식을 입력하시오.\n"); printf("(예: 2 + 5)\n"); printf(">> "); scanf("%d %c %d", &x, &op, &y); switch (op) { case '+': result = x + y; break; case '-': result = x – y; break; case '*': result = x * y; break; case '/': result = x / y; break; case '%': result = x % y; break; default: printf("지원되지 않는 연산자입니다.\n"); return 1; } printf("%d %c %d = %d\n", x, op, y, result); return 0; 수식을 입력하시오. (예: 2 + 5) >> 2 + 5 2 + 5 = 7

35 goto문 무조건 어떤 위치로 점프 특별한 경우가 아니면 사용하지 않는 것이 좋음


Download ppt "쉽게 풀어쓴 C언어 Express 제6장 조건문 C Express."

Similar presentations


Ads by Google