[C#] 프로그래밍의 꽃 if문
우리가 프로그래밍을 구현함에 있어서 가장 중요한 점 중 하나는 특정 상황에 따라 맞는 행동을 해주는 것입니다. 그럴 때 사용하는 것이 바로 if문입니다.
if 문은 영어의 뜻 그대로 "만약 ~ 한다면" 이라는 의미를 가지고 있습니다.
하나를 예로 들어보도록 하죠.
- 만약에 인터넷을 더블클릭 한다면 -> 인터넷이 시작될 것이다.
- 만약에 키보드 엔터 버튼을 누른다면 -> 다음 줄로 넘어갈 것이다.
이러한 형태로 만약 ~한다면, ~할 것이다. 라는 형태를 이루고 있습니다.
우리가 사용하고 있는 대부분의 프로그램 또한 무언가를 클릭하면 무언가가 선택이 되거나 그에 맞는 행동을 하기 마련입니다.
if 문의 일반적인 사용 방법
if ( 우리가 원하는 조건, 10보다 큰 숫자라면 )
{
10보다 큰 숫자가 왔을 때의 행동
Console.WriteLine("나는 10보다 크다!");
}
의 형태처럼 사용할 수 있습니다.
위의 코드를 조금 더 자세한 코드로 바꾸어서 이야기하자면,
if ( num > 10 )
{
Console.WriteLine("10보다 큰 숫자입니다!");
}
num이라는 숫자가 10보다 크다면, { } 안의 코드가 실행되는 형태입니다. 만약에 num > 10 이 거짓이라면 { } 안의 코드는 실행되지 않습니다.
자 그래서 if 문의 기본 형태는
if ( 참(true)인지 거짓(false))
{
참이면 실행되는 명령
}
의 형태를 이루고 있습니다. 여기서 용어의 통일을 위해서 우리는 { } 괄호 안의 감싸져 있는
코드를 '코드 블럭(Code Block)'이라고 부릅니다.
그리고 if ( 이곳에 있는 문장을 '조건식' ) 이라 합니다.
if문의 형태는 기본적으로 조건식을 검사한 뒤에, 나머지 코드 블럭에 있는 문장을 실행하는 형태로 코드를 진행하고 있습니다.
간단한 실습
자 그럼 위에서 배운 대로 간단한 실습을 해보도록 하겠습니다.
using System;
namespace MyFirstApp
{
class Program
{
static void Main(string[] args)
{
int num = 10;
if ( num == 8 )
{
Console.WriteLine("이곳은 출력되지 않는 공간입니다.");
}
}
}
}
위의 코드는 if문을 활용하는 하나의 코드 형태입니다. if문 안에 있는 코드블럭은 실행되지 않습니다.
조건식에 들어있는 문장이 false(거짓)이기 때문이죠.
위의 코드를 같은 의미이지만 다른 형태로 바꾸어보면 이렇게 바꾸어 볼 수도 있습니다.
using System;
namespace MyFirstApp
{
class Program
{
static void Main(string[] args)
{
int num = 10;
if ( false )
{
Console.WriteLine("이곳은 출력되지 않는 공간입니다.");
}
}
}
}
조건식 안에 있는 문장 자체를 false로 바꾸어주었습니다.
원래 num == 8 (여기서 == 는 두 개의 값이 같은지 틀린지를 확인한 뒤에, true와 false를 반환해줍니다.) 에서 false를 반환받아서 최종적으로는
if ( false )의 형태가 됩니다.
if문은 중첩해서 사용할 수 있으므로 if문의 코드블럭 안에 다시 if문을 무한정으로 할 수 있다는 장점이 있습니다. 초반에 프로그래밍에 잘 모를 때는 여러가지 방법을 이용해서 나에게 주어진 문제를 풀어보면서 프로그래밍을 익혀나가야 하기에, 효율적인 프로그래밍 보다는 여러 방식으로 도전해보는 것을 추천드립니다.
if와 else if 그리고 else
자 그렇다면, 사람이 조건식을 판단할 때는, 단순하게 만약에 ~ 하다면 -> 하지만 그렇지 않다면 ~ 할거다.
라는 논리를 이야기합니다. 이러한 논리적 흐름을 C#에서도 마찬가지로 구현해두었습니다.
그것이 바로 if와 else if 그리고 else문 입니다.
먼저, if와 else
if와 else문은 조건식이 참이라면, if 문 안에 있는 코드블럭을 실행하고, 그렇지 않다면 else문을 실행하는 형태입니다. 둘 중에 하나는 무조건 실행되는 구조라 생각할 수 있습니다.
if (조건식)
{
실행할 코드
}
else
{
실행할 코드
}
이러한 기본 형태로 사용합니다.
- if문이 실행안되면, else문이 실행되며
- if문이 실행되면, else문은 실행이 되지 않는 구조입니다.
if 가 참(true)이면 if문을 실행한다. / if문이 거짓이라면 else 문을 실행한다.
의 형태로 진행되는 것이지요. 그래서 else문에는 조건식이 없습니다. if문이 아니라면 실행될 뿐인거죠.
if - else if - else
우리의 현실 세계는 if - else 문 만으로는 표현할 수 없습니다. 조금 더 복잡한 조건을 표현할 녀석이 필요한 것이지요. 그래서 존재하는 것이 if - else if - else 입니다.
먼저, 예제 코드부터 보도록 하겠습니다.
int number = 75;
if ( number > 90)
{
Console.WriteLine("A입니다.");
}
else if ( number < 90 && number >= 80 )
{
Console.WriteLine("B입니다.");
}
else if ( number < 80 && number >= 70 )
{
Console.WriteLine("C입니다.");
}
else if ( number < 70 && number >= 60 )
{
Console.WriteLine("D입니다.");
}
else
{
Console.WriteLine("F입니다.");
}
입력된 성적을 바탕으로 성적을 산출하는 프로그램입니다. 현재 성적은 75점으로 if문을 거쳐서 else if문을 계속해서 체크하며 C 성적까지 가고 있습니다.
여기서 조건식은 number < 80 && number >=70 는 80점 미만, 70점 이상을 의미하며,
부등식으로 사용되었던, 70 <= number < 80을 의미합니다. 고등학교 1학년 때 배운, 부등식을 말로 표현한 형태입니다. 주로 사이에 있는 값은 && (그리고 혹은 and)값으로 표현해서 나타냅니다.
만약, number > 80 || number < 70 이면 (여기서 작대기처럼 보이는( || ) 것은 or(또는)을 의미합니다.
80보다 크고, 70보다 작다를 의미합니다.
else if문은 if문이 실행안되면, else if문에 있는 조건식을 체크하고 -> 참이면 코드블럭을 실행, 거짓이면 다음 else if문의 조건식을 확인하는 형태로 진행하고 있습니다.
모든 조건식이 거짓을 가리키고 있으면 기본으로 else문에 있는 코드블럭을 실행하는 형태인 것이죠.
이렇게 기본 형태를 가질 수 있는 것이죠. 여기서 if - else if - else 문은 당연히 중첩된 구조를 가질 수 있으며 다양한 형태로 활용이 가능합니다.
다음 시간에는 switch문의 활용에 대해 살펴보도록 하겠습니다. 감사합니다.