Chapter 7. 조건문
조건문 조건문 (if) 어떠한 조건을 만족하면 그에 해당하는 일이 처리되는 문장 예. 만일 이번 학기 성적이 4.3이 넘으면 장학금을 받는다. 조건 : 만일 이번 학기 성적이 4.3이 넘으면 결과 : 장학금을 받는다. 성적이 4.3이 넘으면 거짓 참 장학금을 받는다
조건문 if 문법 문법 예제 “이번 학기 성적이 4.3 이상이면 장학금을 받는다.” 조건 if(express) { statement … } 조건에 해당하는 결과 if(express) { statement } if(이번 학기 성적 >= 4.3) {장학금을 받는다} if(grade >= 4.3) { printf(“장학금을 받는다.\n”); }
표현식 (express) if (표현식) 조건을 나타냄 이 표현식은 참과 거짓을 구별하는 평가값을 가져야 하며, 이러한 표현식에는 다양한 연산자 즉 관계, 논리, 산술 연산자 등을 사용 표현식은 정수형에서 0은 거짓을 의미하며 0이 아닌 모든 수는 참을 의미 다음과 같은 실수, 문자도 가능 자료형 참 거짓 정수형 0 이외의 값 실수형 0.0 이외의 값 0.0 문자형 \0 (NULL) 이외의 문자 \0 (NULL) 문자
예제 : 장학금 #include <stdio.h> /* 성적을 입력받아 성적이 4.3 이상일 때, 장학금을 받고 등록금을 면제받는다는 문구를 출력하는 프로그램 작성 */ int main() { float grade = 0; // 성적을 입력할 실수형 변수 printf(“이번 학기 성적을 입력하세요 : “); scanf(“%f”, &grade); // 성적을 입력받는다. printf(“당신의 이번 학기 성적은 %f 입니다. \n”, grade); // 조건문 시작 if( ) // 조건문의 표현식 printf(“당신은 장학금을 받습니다. \n 등록금도 면제입니다. \n”); // 결과 } return 0; grade >= 4.3
키워드 else 표현식을 만족하지 않는 경우는? else 키워드를 사용하여 표현식을 만족하지 않는 경우 실행할 구문을 구성
구문 else “이번 학기 성적이 4.3 이상이면 장학금을 받는다. 그렇지 않으면 장학금을 받지 못한다.” if(express1) { statement1 } else { statement2 } if(이번 학기 성적 >= 4.3) {장학금을 받는다} else {장학금을 받지 못한다} if(grade >= 4.3) { printf(“장학금을 받는다.\n”); } else { printf(“장학금을 받지 못한다.\n”); }
예제 : 양수 음수 #include <stdio.h> // 임의의 정수를 입력받아 그 수가 양수인지, 음수인지 구분하는 프로그램 작성 int main() { int number = 0; // 입력받을 임의의 정수 printf(“임의의 정수를 입력하세요 : ”); scanf(“%d”, &number); printf(“입력하신 숫자 %d 는 ”, number); if( ) // number가 양수 이면 printf(“양수 입니다. \n”); } else // 그렇지 않으면 printf(“음수 입니다. \n”); return 0; number > 0
조건문과 조건 연산자 조건문을 조건 연산자로 if 문은 간단히 조건 연산자를 이용한 문장으로 변환이 가능 앞의 예 if (number > 0) { max = “양수입니다.”; } else { max = “음수입니다.”; max = (number > 0) ? “양수입니다.” : “음수입니다.”;
else if 표현식이 둘 이상인 경우는 예. 양수 이거나, 음수 이거나, 0인 경우 if(양수 이거나) {…}
예제 : 양수, 음수, 0 #include <stdio.h> // 임의의 정수를 입력받아 그 수가 양수인지, 음수인지, 0인지 구분하는 프로그램 작성 int main() { int number = 0; // 입력받을 임의의 정수 printf(“임의의 정수를 입력하세요 : ”); scanf(“%d”, &number); printf(“입력하신 숫자 %d 는 ”, number); if( ) // 입력받은 수가 양수 이면 printf(“양수 입니다. \n”); } else if( ) // 음수이면 printf(“음수 입니다. \n”); else // 그렇지 않으면 printf(“0 입니다. \n”); return 0; number > 0 number < 0
중첩된 조건문 중첩된 if if 문장 내부에 다른 if 문이 나오는 문장을 중첩(nested)된 if 문 위 문장은 아래 문장과 같은 의미 – 논리 연산자 사용(&&, ||, !) if(number > 0) { if(number < 20) } if(number > 0 && number < 20) { }
switch 조건문의 표현식이 등호식으로 표현되는 경우 switch 문 사용 가능 switch(variable) { case value1 : 명령문1; … break; case value2 : 명령문2; default: 명령문n; } 조건문의 if 에 해당 if 조건문에 대한 명령문 조건문의 else if에 해당 else if 조건문에 대한 명령문 조건문의 else 에 해당 else 조건문에 대한 명령문 각 case를 종료하기 위한 키워드. 빠지면 안됨.
switch 사용 시 주의 사항 키워드 switch 문에서 switch, case, break, default는 키워드이며, expression과 value는 반드시 정수나 정수 수식이어야 한다. case 다음의 value 값은 중복되어서는 안된다. switch 문의 정확한 실행 순서는 switch 문의 표현식을 평가 위 표현식에서 계산된 값과 일치하는 상수 값을 갖는 case의 값을 위에서부터 찾는다. 일치된 case 값을 만나면 case 내부의 문장을 실행 break를 만나면 switch 문을 종료, 또는 switch 몸체의 마지막 문장을 수행하면 switch 문을 종료 일치된 case 값을 만나지 못하여 default를 만나면 default 내부의 문장을 실행
예제 소스 : if #include <stdio.h> // 임의의 정수를 입력받아 덧셈, 나눗셈을 수행하는 프로그램 작성 int main() { int number1 = 0; int number2 = 0; // 입력받을 임의의 정수 char op = ‘’; // 사칙연산자 printf(“연산자(+,-) 중 하나를 선택하세요 : ”); scanf(“%c”, &op); printf(“임의의 두 정수를 공백 단위로 입력하세요 : ”); scanf(“%d %d”, &number1, &number2); if( ) // 덧셈 연산자 이면 printf(“+ 연산자를 선택하였습니다. %d + %d의 결과는 %d 입니다.\n”, number1, number2, number1+number2); } else if( ) // 뺄셈 연산자 이면 printf(“- 연산자를 선택하였습니다. %d - %d의 결과는 %d 입니다.\n”, number1, number2, number1-number2); else // 그 이외 이면 printf(“%c 는 지원하지 않는 연산자입니다.\n”, op); op == ‘+’ op == ‘-’
예제 소스 : switch #include <stdio.h> // 임의의 정수를 입력받아 덧셈, 나눗셈을 수행하는 프로그램 작성 int main() { int number1 = 0; int number2 = 0; // 입력받을 임의의 정수 char op = ‘’; // 사칙연산자 printf(“연산자(+,-) 중 하나를 선택하세요 : ”); scanf(“%c”, &op); printf(“임의의 두 정수를 공백 단위로 입력하세요 : ”); scanf(“%d %d”, &number1, &number2); switch( ) printf(“+ 연산자를 선택하였습니다. %d + %d의 결과는 %d 입니다.\n”, number1, number2, number1+number2); printf(“- 연산자를 선택하였습니다. %d - %d의 결과는 %d 입니다.\n”, number1, number2, number1-number2); break; printf(“%c는 지원하지 않는 연산자입니다.\n”, op); } op case ‘+’ : break; case ‘-’ : default :
실습 : 홀수, 짝수 임의의 정수 하나를 입력받아 그 값이 홀수인지 짝수인지 검사하는 프로그램 입력받은 정수가 홀수이면, “홀수입니다.” 출력 홀수 중 10보다 크면, “10보다 큰 홀수입니다.” 출력 짝수이면, “짝수입니다.” 출력 짝수 중 10보다 작으면, “10보다 작은 짝수입니다.” 출력 중첩된 조건문 사용 논리연산자를 이용한 조건문 사용