7월 1주차_C Study 3. 조건문

2023. 7. 9. 14:44language : p_study/c language

7월 1주차 학습 할 C언어 study 목차는 다음과 같다.

1. 변수와 자료형
2. 수식자와 연산자.
3. 조건문
4. 반복문 

 

3. 조건문

 

컴퓨터 프로그램을 작성할 때 기본적인 제어구조가 3가지 있다.

 

 

 

1. 순차 구조 : 명령어들이 순차적으로 실행되는 구조

 

2. 선택 구조 : 여러 개 중에서 하나의 명령어를 선택하여 실행되는 구조

 

3. 반복 구조 : 동일한 명령어가 반복되면서 실행되는 구조

✅ if - else 문

왜 선택구조가 필요할까?

선택 구조는 조건을 검사하고 조건에 따라 실행되는 명령어를 다르게 할 수 있다.

예를 들어 비가 올때 지하철로 출근하고 그렇지 않으면 승용차로 출근하는 사람이 있다고 가정하자.

이 경우 조건은 비가 왔는지 오지않았는지 여부이다.

만약에 비가 왔다면 지하철을 타고 출근하고, 비가 오지 않았다면 승용차로 출근한다.

 

      형식                                                                                      예제
 if (조건식) {                                                                        if (number > 0) {
                                                                                                  printf ("양수입니다.\n"
      문장1;                                                                             }                   
}                                                                                         else  {
 else  {                                                                                       printf("음수이거나 0입니다.\n");
      문장2;                                                                              }
}

문제 설명
➡ 만약 조건식이 참이라면 문장 1이 실행되고 그렇지 않으면 문장2가 실행된다. 
조건에 따라 실행되는 문장이 하나일 경우에는 중괄호 생략이 가능하고, else이하도 생략할 수 있다.

 

if -else문 개념을 익혔으니, codeup을 통해 문제를 풀어보자.

 

<codeup_ 1066 : [기초-조건/선택실행구조] 정수 3개 입력받아 짝/홀 출력하기>

세 정수 a, b, c가 입력되었을 때, 짝(even)/홀(odd)을 출력해보자.

참고
if(조건)
{ //코드블록1 시작
  ... 실행...;
  ...
}
else
{ //코드블록2 시작
  ... 다른실행...;
  ...
}
의 조건/선택 실행구조는 주어진 “조건”을 검사해 참인 경우에는 코드블록1을 실행하고,
거짓인 경우에는 코드블록2를 실행한다.

예시
if(a%2==0)
{
  printf(“even”);
}
else
{
  printf(“odd”);
}

** else는 if 없이 혼자 사용되지 않는다. 또한, else 다음에 조건이 없는 이유는?
참이 아니면 거짓이고, 거짓이 아니면 참이기 때문에...
즉 if문의 조건식의 판별 결과는 2가지 경우(참 또는 거짓)로 계산되는데,
else 부분은 if문의 조건식의 결과가 거짓인 경우에 해당하기 때문이다.

** 실행해야 할 명령들이 여러 개일 때 코드블록 기호 { }로 묶어 주는데,
코드블록의 내용이 논리적으로 1개 단위라면 코드블록 기호를 생략할 수 있다.

if(a%2==0) printf("even");
else printf("odd");

 

제출 코드

 

 

출력 결과

 

 

 

오잉? 왜 에러가 떳지? 하고 보니까 마지막꺼가 출력이 안된다.

일단 다시 코드를 수정해보는 거로 해야겠다.

 

 

 

 조건 연산자

조건식       ?        값1       :       값2 

위 조건 연산자는 if-else문과 유사한 기능을 하는 조건 연산자이다.

조건 연산자는 c에서 유일하게 3개의 피연산자를 가지는 삼항 연산자이다.

 

➡ 조건 연산자에서 조건식이 참일 경우 값1이 , 조건식이 거짓일 경우 값2가 반환된다.

 

 

복잡한 조건식을 사용하는 if-else문

 

  논리 연산자

 

논리 연산자는 여러 개의 조건을 조합하여 참인지 거짓인지를 따질 때 사용한다.

논리 연산자의 종류는 다음과 같다.

연산 의미
x && y AND 연산, x와 y가 모두 참이면 참, 그렇지 않으면 거짓
x | | y  OR연산, x나 y중에서 하나만 참이면 참, 모두 거짓이면 거짓
! x NOT연산, x가 참이면 거짓, y가 거짓이면 참

 

AND 와 OR 연산자

 

 

AND와 OR연산자의 쓰임을 알아보자.

예제  ➡  ( age <=30 ) && ( toeic >= 700 )

예제를 살펴보면, 위의 수식에서 age가 30 이하이고 toeic이 700이상인 경우에만 참이 된다.

예를 들어 나이가 29살이고 토익이 800인 경우에는 참이 된다는 뜻이다.

AND연산자의 경우에는 조건 중 하나라도 거짓이면 전체 수식의 값은 거짓이된다.

 

예제  ➡  ( age <=30 ) || ( toeic >= 700 )

같은 예제이지만 논리연산자만 변화되었다.

OR연산자의 경우에는 하나의 피연산자만 참이면 연산 결과가 참이된다.

따라서 나이가 32살이고 toeic점수가 800이거나, 나이가 24살이고 toeic점수가 650이어도 참이 된다는 뜻이다.

 

 

NOT연산자

 

NOT연산자는 피연산자의 값이 참이면 연산의 결과값을 거짓으로 만들고, 피연산자의 값이 거짓이면 연산의 결과값을 참으로 만든다.

 

 

 

개념을 이해했으니 이제 codeup으로 문제를 풀어보자. 

 

<codeup_1054 : [기초-논리연산] 둘 다 참일 경우만 참 출력하기(설명)>

코드

출력 결과

 

 

 

 

<codeup _1055 : [기초-논리연산] 하나라도 참이면 참 출력하기(설명)>

코드

 

출력 결과

 

 

 

 연속적인 if 문

if (조건식 1 ) {
}
else if ( 조건식2 ) {
}
......
else {

위와 같은 연속적인 if문은 3개 이상의 명령문 중에서 하나를 선택해야할 때 사용하는데,

예를 들면 학생들이 몇점 이상일 때 , 학점(등급)을 부여하는 경우에 조건에 맞는 문장을 실행하도록 할 수 있다.

 

 

 

  Switch 문

 

만약 실행 경로가 여러 개인 경우에는 Switch문을 사용하는 것이 좋다.

break문이 없다면 계속해서 다음 case절의 문장들을 실행하게 되기때문에 Switch문에는 반드시 break문이 있어야한다.

 

 

✅ mini project

 

사용자가 신호등의 색깔을 입력하면 정지“,”주의“,”진행과 같은 문장을 출력하는 프로그램을 작성하여보자.

예시) 신호등 색깔 입력(R,G,Y):
         r 정지!

코드

 

예제는 Switch문을 활용하는 문제를 풀어보았다.

 

 

콘솔창

 

조건문도 무난하게 공부하긴 했지만, 이렇게 기본적인 문제에서 나아가 더 다양한 예제를 풀어보고 고민도 해보는 시간이 

필요할 것같다.