프로그래밍공부/C#기초

C# 프로그램 기초 - 07

Roslyn 2024. 1. 8. 14:58
반응형

오늘의 주제는 IF 문 입니다.

앞서도 한번 언급한 적 있는 IF문을 이번에는 코드 수준에서 다뤄봅시다.

 

먼저 그 동안 연습해온 코드를 다시 봅니다.

 

Console.WriteLine("안녕, 나는 컴퓨터야.  너는 이름이 뭐니?");
string msg = Console.ReadLine();
Console.WriteLine("안녕, " + msg + "아, 만나서 반가워.");

 

우리는 이와 같이 사용자로부터 값을 입력받아 인삿말을 건네는 콘솔앱을 만들었습니다.

하지만 사용자는 항상 우리의 의도대로 움직여주지 않습니다.

사용자가 값을 입력했는지 확인을 할 필요가 있습니다.

그래서 우리는 if문을 이용해 사용자가 값을 제대로 입력했는지 확인하고, 그에 따라 "분기"를 하고자 합니다.

 

Console.WriteLine("안녕, 나는 컴퓨터야.  너는 이름이 뭐니?");
string msg = Console.ReadLine();

if (string.IsNullOrWhiteSpace(msg))
{
	Console.WriteLine("이름을 입력하세요.");
	//처음으로 돌아가기
}
else
{
	Console.WriteLine("안녕, " + msg + "아, 만나서 반가워.");
}

 

여러분 이번 코드에는 // 로 시작하는 문자열이 보이실 거예요.
이는 "주석"이라는 개념으로 거의 모든 프로그램에서 공통적으로 사용되는 개념이랍니다.
주석은 프로그래밍 코드에서 사용되는 특별한 문장으로, 컴퓨터가 이해하지 않지만 사람이 코드를 읽을 때 도움이 되도록 작성하는 것이에요. 이것은 주로 코드에 설명이나 메모를 남기기 위해 사용돼요. 예를 들어, 초콜릿을 만들기 위한 레시피가 있다고 상상해봐요. 레시피에는 어떤 재료를 사용해야 하는지, 어떤 순서로 진행해야 하는지 등이 적혀 있을 거에요. "//" 주석은 마치 그 레시피에 쓰여진 메모처럼, 코드에 어떤 일이 일어나는지에 대한 설명을 적을 때 사용돼요.

 

코드를 위와 같이 수정해 봅시다.

if 문 다음에 괄호() 안에 if 문에서 판단할 조건을 넣어줍니다.

여기서는 string.IsNullOrWhiteSpace 라는 함수를 호출하고 있습니다.

이 함수는 전달된 파라미터(msg) 가 Null 이거나 또는 비어있거나(Empty), 공백문자열(WhiteSpace) 인지를 판단해 줍니다.

안에 공백문자열이나 null, 또는 비어있으면 참(True)를 반환하고, 그렇지 않을 경우 거짓(False)을 반환합니다.

 

여기서 잠깐!

Null 이라는 생소한 표현을 만났습니다.  Null과 Empty는 기본적으로 비슷한 표현이지만 엄연히 다른 존재입니다.
가장 흔한 비유로 화장실 휴지를 많이 사용하곤 합니다.



위 그림에서 왼쪽 그림을 보면, 휴지가 꽃혀져 있지만 실제 내용물이 없습니다.
이같은 상태를 엠프티(Empty), 즉 비어있는 상태라고 표현합니다.
오른쪽에는 아예 휴지 자체가 꽃혀 있지 않습니다.
이 상태를 널(Null), 아예 존재하지 않는 상태를 의미합니다.

 

if 문 아래 코드블럭은 조건이 참인 경우 수행되고, else 문 아래 코드블럭은 조건이 거짓인 경우에 수행됩니다.

그럼 실행시켜 볼까요?

 

 

실행시킨 다음에 이름을 입력하지 않고, 엔터를 치자, 이름을 입력하세요란 메시지가 보입니다.

다시 실행해서 이번에는 이름을 입력해 봅니다.

 

 

 

이번에는 Roslyn이란 이름을 입력하자, 원래대로 인삿말이 출력됩니다.

이처럼 if 문을 이용해서 사용자가 입력했는지 여부에 따라 분기하는 코드를 작성해 봤습니다.

 

if 문과 비슷한 것으로 switch 문이 있습니다.

 

static void Main(string[] args)
{
	Console.WriteLine("안녕, 나는 컴퓨터야. 너는 이름이 뭐니?");
	string msg = Console.ReadLine();

	if (string.IsNullOrWhiteSpace(msg))
	{
		Console.WriteLine("이름을 입력하세요.");
		//처음으로 돌아가기
	}
	else
	{
		switch (msg)
		{
			case "roslyn":
				Console.WriteLine("안녕, 로슬린, 만나서 반가워.");
				break;
			default:
				Console.WriteLine("안녕, " + msg + "아, 만나서 반가워.");
				break;
		}
	}
}

 

위 코드는 switch 문을 이용하여 추가적으로 분기하였습니다.

사용자가 영어로 roslyn 이라고 입력하면, 한글로 로슬린이라고 인사하도록 말이죠.

실행시켜 볼까요?

 

 

위와 같이 영어로 roslyn을 입력하자 한글로 로슬린이라고 인사하네요.

switch문을 통해 case "roslyn":으로 분기된 것입니다.

 

 

switch 문은 다음에 따라오는 괄호()안에 조건이 어떤 값이냐를 case 문으로 분기하도록 합니다.

그리고 모든 case에 해당하지 않으면 default 문을 수행하게 됩니다.

 

작성 규칙은 case 다음에 콜론(:) 을 넣고, 마지막에 break;를 넣어줍니다.

break의 의미는 여기서 중단한다는 의미로, 해당 break문을 넣지 않으면 다음 case 문이 실행되어 버립니다.

이런 경우에 대해서는 추후에 다시 사례를 통해 안내할 것이니, 지금은 기본적으로 항상 break 문을 포함한다고 이해하면 됩니다.

 

이번 장에서 중요한 개념은 다음과 같습니다.

 

(1) Null

비어있는 상태(Emtpy)와는 다르게 아예 존재하지 않는 것을 의미합니다.

 

(2) IF ~ Else

다음 괄호()안에 조건이 참(True)이냐 거짓(False)이냐에 따라 분기하는 명령어 입니다.

 

(3) Switch ~ Case

다음 괄호()안에 값에 따라 Case로 분기하는 명령어 입니다.

 

 

우리는 이와 같은 방법으로 코드를 분기하며, 사용자를 프로그램의 흐름대로 따라갈 수 있도록 유도하거나, 사용자에게 질문을 던져 필요한 정보를 획득하는등 다양한 상황에서 다양한 명령어를 활용하게 됩니다.

 

반응형

'프로그래밍공부 > C#기초' 카테고리의 다른 글

C# 프로그램 기초 - 09  (0) 2024.01.10
C# 프로그램 기초 - 08  (0) 2024.01.09
C# 프로그램 기초 - 06  (0) 2024.01.08
C# 프로그램 기초 - 05  (0) 2024.01.05
C# 프로그램 기초 - 04  (2) 2024.01.04