C언어 에서 조건문은 간단히 조건이 참 또는 거짓에 따라 구문 안에 있는 값이 실행된다. 대표적으로 If- else 함수와 switch-case 함수가 있으며, 하나의 조건문안에 또 다른 조건문을 넣어 중첩을 만들어 줄 수도 있다.
If - else 함수
if ( Condition){
consequent;
else{
alternative;
}
if 문 안에 있는 조건을 만족한다면, consequent가 실행된다. 그렇지 않은경우 그 대안(alternative)가 실행된다.
Switch case 함수
switch (condition)
{
case 'A' :
consequent 1;
break;
case 'B' :
consequent 2;
break;
default
consequent 3;
}
switch 함수는 입력된 condition이 A일때, consequent 1이 실행된다. 입력된 변수가 B가 될때는 consequent 2가 실행되며, case에 없는 값들이 들어갈 때, default안에 있는 함수가 실행된다.
break는 switch전체에 걸려있으며, 위의 조건들이 만족되면 조건문을 더이상 진행시키지 못하게 하기위한 제동장치이다. 프로그램이A의 조건이 만족되어 consequent 1이 실행되면, 더이상 다른 case로 진행하지 않는다.
아래는 윤년을 계산하는 프로그램이다. If문으로 조건을 만들었는데, 조건을 and(&&)와 or(||) 을 이용하여 "4의 배수이지만, 100의 배수일땐 평년이며, 400의 배수는 윤년"을 표현하였다. 그래서 위의 조건들을 만족한다면 (consequent), 해당 년도가 윤년임을 출력하고, 조건을 만족하지 않는다면(alternative) 평년임을 출력하도록 만들었다.
- 입력받은 해(연도)가 윤년,평년임을 판별하는 프로그램
문자의 입출력에는 printf 함수와 scanf함수를 사용하였고, 이 프로그램의 결과는 아래와 같다.
또, if else라는 구문을 이용하면, 여러개의 조건에 따라, 각각 다른 결과를 만들어 줄 수도 있다.
if(A<=condition)
{
consequence 1;
}
if else (B<=condition)
{
consequence 2;
}
위의 구문 같은 경우엔, 특정 점수대를 분류하여 내거나, 어떤집단을 특정한 수치로 분류할 때, 자주쓰인다. 아래의 코드 입력된 수가 세자릿수를 넘는수인지 판별하는 프로그램이다. 위에 나와있는 if else를 이용하여 만들었다.
- 입력받은 정수가 세자리 정수인지 판별하는 프로그램
이를 이용한 또다른 예제중 하나는, 2차원에서 좌표(X,Y)를 입력받아 해당 좌표가 몇사분면에 위치해 있는지 판별해 주는 프로그램이다. 프로그램은 아래와 같다. 각기 함수에 대한 각주는 파란색으로 적혀있다. 가지고 있는 Vi편집기가 한글을 지원하지 않아, 형편없는 영어실력으로 각주를 작성했다.
- 2차원 평면에서 입력받은 좌표 X,Y가 몇사분면에 위치해 있는지 판별하는 프로그램
- 나이에 따른 소득세를 분류해주는 프로그램
나는 깊이 없이 예제들만 풀어 글을 게시하지만, 조금더 근본적으로 C 언어를 공부하고 싶은 사람들에게 아래의 책을 추천한다.
https://g.co/kgs/Wm6Lgy
책의 PDF를 구하고자 하시는 분들은 저에게 매일을 보내시면 보내드리겠습니다.
Komentar