if문, 다중 if문, switch 문, 흐름도 (flow chart)
예제 p3_4.c
#include<stdio.h>
int main()
{
int num1, num2, bigger; // 4바이트 정수형 변수 선언
printf("Please enter two intergers: ");
scanf("%d %d", &num1, &num2);
bigger = num1; //num1의 값을 bigger에 대입한다.
if(num1<num2) //num2가 num1보다 클 경우 {}부분이 실행된다.
{
bigger = num2; // num2가 num1보다 클 경우 bigger에 대입된다.
}
printf("The larger number is : %3d\n",bigger);
return 0;
}
흐름도(flow chart)
예제 p3_6.c
#include<stdio.h>
int main()
{
int num1, num2, bigger, smaller;
printf("Please enter two integers: ");
scanf("%d %d", &num1, &num2);
if(num1 < num2) // num2가 num1보다 클 경우 { } 부분 실행
{
bigger = num2;
smaller = num1;
}
else //num1이 num2 보다 작지 않다면 실행
{
bigger = num1;
smaller = num2;
}
printf("%d is larger than %3d\n", bigger, smaller);
return 0;
}
⇒ if와 else는 조건을 나타내는 논리식의 값이 참이면 if 절이 실행되고, 거짓이면 else 절이 실행된다.
⇒ if(num1<num2)
① CPU num1 값을 메모리에서 불러온다.
② CPU num2 값을 메모리에서 불러온다.
③ ALU가 num1과 num2 값을 비교하여 num1이 num2보다 작으면 1(참), 크면 2(거짓)으로 인식한다.
⇒ 비교와 계산은 다르다.
․ 비교할 때 왼쪽에서 오른쪽으로 값을 분석한다.
․ 계산할 때 오른쪽에서 왼쪽으로 값을 분석한다.
⇒ if(0.1), if(100), if(-100)… 등을 넣어보면 모두 참으로 인식되며 if(0)의 값만이 거짓이다. 컴퓨터의 논리는 0 이외에는 모두 참으로 인식되므로 if문 안에 0, 0.1, 10, -100 등을 넣어도 모두 참으로 인식한다는 것이다.
예제 p3_7.c
#include<stdio.h>
int main()
{
int score;
char grade = 'X'; // grade를 X로 초기화 하지 않으면 score 값의 입력이 잘못된 경우에 grade가 미정값을 가져서 마지막 printf문에서 예상할 수 없는 값을 출력할 수 있다.
printf("Please enter examination score: ");
scanf("%d", &score);
if((score <= 100) && (score >= 90)) // 논리 연산자 &&를 이용한 논리식으로 두 조건이 만족되어야 참이 된다.
{
grade = 'A';
}
else if((score < 90) && (score >= 80))
{
grade = 'B';
}
else if((score < 80) && (score >= 70))
{
grade = 'C';
}
else if((score < 70) && (score >= 60))
{
grade = 'D';
}
else if((score < 60) && (score >= 0))
{
grade = 'F';
}
else
{
printf("worng score\n");
}
printf("The grade is %c\n", grade);
return 0;
}
⇒ 이 예제에서 점수가 60점 이하일 경우는 F를 받게 되며, 100점 이상일 경우에는 X를 받게 된다. 일반적으로 시험점수는 0에서 100점 사이지만 사용자가 실수로 100점 이상의 점수를 입력할 수 있다. 이런 실수로 프로그램이 종료되거나 실행시간 오류를 일으키지 않도록 프로그램이 대비되어야 하는데, 이렇게 사용자의 비정상적인 입력에도 프로그램이 정상적으로 작동하는 것을 프로그램의 강건성(robustness)라고 한다.
- 올바른 다중 if문 코드 예
if(height>=160) //165보다 height가 같거나 클 경우 아래를 실행한다.
{
if(height<=195) // 165 <= height <= 195, height가 165보다 크거나 같고 195보다 작거나 같다.
{
pass=1;
}
else // 195 < height, 195보다 height가 클 경우 실행된다.
{
pass=0;
}
- switch 문
#include<stdio.h>
int main()
{
int iNum;
scanf("%d", &iNum);
switch(iNum)
{
case 1 :
printf("1\n");
break;
case 2 :
printf("2\n");
break;
default:
printf("잘못된 입력\n");
break;
}
return 0;
}
⇒ switch()에서 ()안에는 변수, case 다음에 오는 것은 상수로 한다.
⇒ :(라벨)은 표시 역할을 의미
'내장형 하드웨어 > C언어' 카테고리의 다른 글
BricxCC를 이용한 마인드 스톰 구동 첫시간 (0) | 2011.04.05 |
---|---|
반복문 연습, getchar, putchar (0) | 2011.04.05 |
부가 연산자, 복합 부가 연산자, printf, scanf, 제어문 (0) | 2011.04.04 |
C 언어의 연산자 - 산술, 비교, 논리 연산자 (0) | 2011.04.04 |
문자, 문자열, ASCII code (확장 아스키) (0) | 2011.04.04 |