일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 이진수
- 공리
- 증명
- Syntax
- C언어
- primitive notion
- Binary
- 정리
- It
- structure
- Engineering
- Programming
- Developer
- 문법
- Engineer
- 프로그래밍
- 구조체
- University
- 컴공
- 코딩
- computer
- coding
- c++
- Axiom
- 개발자
- language
- Proposition
- C
- Mathmetics
- proof
- Today
- Total
Study Note
[C/C++ Syntax] #008 조건문(Conditional statement) 본문
[C/C++ Syntax] #008 조건문(Conditional statement)
mymir 2021. 1. 6. 06:46코딩을 하다보면 이전 글에서와 같이 한 문장씩 차례로 수행하는 구조만으론 문제를 해결하기 어려운 상황이 많이 발생합니다. 이렇게 문장의 수행 순서를 바꿔야 하는 경우 사용하는 문장을 제어문(control statement)이라고 합니다. 이번 글에서는 제어문 중 하나인 조건문(conditional statement)에 대해 배워보도록 하겠습니다.
조건문이란?
대부분의 프로그램은 프로그래머 혹은 사용자의 입력 데이터를 연산해가며 실행됩니다. 즉, 하나의 프로그램이 각각의 초기 데이터의 따라 다른 상황으로 흘러갈 수 있다는 것이죠. 이런 대부분의 프로그램 중 또 대다수는 각기 다른 상황에서 각각 다른 수행을 해야합니다. 이렇게 일종의 평행세계를 열어주는 문장을 조건문이라고 합니다.
조건문은 크게 if문과 switch-case문 두 가지 형태로 나뉘어 사용합니다.
if 문
if문은 세 가지 키워드 if, else, else if로 구성되며 사용 형식은 다음과 같습니다.
이렇게 조건과 그에 포함되는 문장의 나열의 구조로 가장 if부터 else까지 한 세트이며 하향식으로 조건을 판별하여 조건이 참인 부분의 문장만을 수행하고 이하의 문장은 읽지 않습니다.
먼저 검정색의 if 부분은 생략이 불가능한 문장이고 단 한 번만 사용이 가능한 문장으로, 조건A의 값이 참인 경우 문장 A-n에 해당하는 모든 문장을 수행하고 이하 else if, else가 있는 경우 모두 생략합니다. 조건A의 값이 거짓인 경우 문장 A-n에 해당하는 모든 문장을 수행하지 않고 다음의 else if 또는 else가 있으면 넘어갑니다.이때, 중괄호로 묶어주어야 여러 문장을 모두 조건하에 수행할 수 있으며, 중괄호로 묶지 않은 경우 if 이후 첫 문장만 수행하게 됩니다. (수행할 문장이 하나인 경우 중괄호를 안 써도 됩니다.)
이후 푸른색의 else if부분은 생략이 가능한 문장이고 여러번의 사용이 가능한 문장으로, 상단의 조건들이 거짓이면 해당 else if의 조건이 참인지 거짓인지 판별하여 문장을 수행합니다. 예를 들어 조건B의 else if는 조건A가 거짓인 상태에서 읽히는 문장으로 조건B가 참이면 문장 B-n에 해당하는 모든 문장을 수행하고 이하 else if, else가 있는 경우 모두 생략합니다. 조건 B의 값이 거짓인 경우 문장 B-n에 해당하는 모든 문장을 수행하지 않고 다음의 else if 또는 else가 있으면 넘어갑니다.
마지막으로 else 부분은 생략이 가능한 문장이고 단 한번만 사용이 가능한 문장으로, 상위 모든 조건이 거짓인 경우에 문장 Z-n에 해당하는 모든 문장을 수행합니다.
이렇게 한 세트의 조건문은 여러 문장을 포함하는 하나의 문장으로 처리되기 때문에 조건문 안에 조건문이 들어가는 중첩의 형태도 존재합니다. if문을 이용하여 학생의 성적을 나타내는 프로그램을 하나 작성해보도록 하겠습니다.
#include <iostream>
using namespace std;
int main() {
int score;
cout << "성적을 입력하시오. : ";
cin >> score;
if (score >= 90)
if (score < 95)
cout << "A";
else
cout << "A+";
else if (score >= 80)
if (score < 85)
cout << "B";
else
cout << "B+";
else
cout << "C+";
cout << "학점" << endl;
}
switch - case 문
상황에 따라 조건이 참과 거짓이 아니라 여러 상태에 의해 나눠질 수 있는 경우도 있습니다. 예를 들면 날씨라는 변수가 있다고 가정하면 날씨가 가질 수 있는 상태는 맑음, 비, 흐림 등이 있습니다. 물론 if문을 사용해도 분기가 가능하지만 이를 위해 조금더 간편하게 만든 문장이 switch-case문 입니다. 이런 switch-case문의 사용 형식은 다음과 같습니다.
우선 제어식의 값이 각 case의 값과 일치하는지 하향식으로 판단합니다. 같으면 해당 문장을 읽고 같지 않으면 다음 값을 판단합니다. 여기서 주의해야 할 점은 case의 값으로는 정수형태의 상수만 사용할 수 있다는 점입니다. 그리고 break라는 키워드가 있는데, 현재 수행하고 있는 문장을 탈출하라는 의미로, switch-case문 내에서 break가 읽히면 switch-case문을 탈출하게 됩니다. 그런데 값2에 해당하는 부분처럼 break를 생략하게 되면 이후 더 이상의 제어식과 값의 일치를 판단하지 않고 이후 break가 나오거나 break가 없다면 switch-case문의 끝까지 모든 내부 문장을 다 수행하게 됩니다. 이후 마지막엔 default가 보이는데요, else와 마찬가지로 제어식이 위 case의 값들과 일치하는 값이 없으면 실행되는 부분입니다. default는 어차피 switch-case의 마지막 부분이므로 break를 생략하여도 됩니다.
위 구조를 의미로 살펴보면 제어식의 값이 값1인 경우 문장 A-n들을 수행, 값2인 경우 문장 B-n들과 C-n들을 수행, 값3인 경우 문장 C-n들을 수행, 일치하는 값이 없는 경우 문장 Z-n들을 수행하고 switch-case문이 종료됩니다. switch-case문을 사용하여 각 달의 일수를 출력하는 프로그램을 작성해보면서 글을 마치겠습니다.
#include <iostream>
using namespace std;
int main() {
int m = 0;
cout << "월을 입력하시오. : ";
cin >> m;
switch (m) {
case 2:
cout << "28일";
break;
case 4:
case 6:
case 9:
case 11:
cout << "30일";
break;
default:
cout << "31일";
break;
}
cout << "입니다." << endl;
}
'- 프로그래밍 언어(Programming Language) > C\C++' 카테고리의 다른 글
[C/C++ Syntax] #010 함수(Function) (0) | 2021.01.09 |
---|---|
[C/C++ Syntax] #009 반복문(Repetitive statement) (0) | 2021.01.08 |
[C/C++ Syntax] #007 입출력(Input & Output) (0) | 2021.01.05 |
[C/C++ Syntax] #006 형변환(Type conversion) (0) | 2021.01.03 |
[C/C++ Syntax] #005 수식(Expression)과 연산자(Operator) (0) | 2021.01.03 |