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

C# 프로그램 기초 - 08

Roslyn 2024. 1. 9. 14:44
반응형

오늘은 함수를 만들어 볼 겁니다.

이전에 연습하던 프로젝트를 불러옵니다.

 

먼저 if문과 switch 문을 연습했었죠.

온전히 이해하지 못했다 하더라도 괜찮습니다.

프로그램은 머리로 이해하는게 아니라 손으로 이해한다고 생각하세요.

충분히 반복적으로 사용하다보면 어느 순간 자연스럽게 이해하는 순간이 올겁니다.

 

반드시 코드는 직접 타이핑 하셔야 합니다.
자주 반복적으로 연습할 수록 프로그램을 더 빨리 이해하게 되요.

 

 

이제 우리는 먼저 번에 인사를 하는 코드를 하나의 함수로 분리시킬 겁니다.

코드를 다음과 같이 수정해 주세요.

 

internal class Program
{
	static void Main(string[] args)
	{
		Console.WriteLine("안녕, 나는 컴퓨터야.  너는 이름이 뭐니?");
		string msg = Console.ReadLine();
		if (string.IsNullOrWhiteSpace(msg))
		{
			Console.WriteLine("이름을 입력하세요.");
			msg = Console.ReadLine();
			Hello(msg);
		}
		else
		{
			Hello(msg);
		}
	}

	static void Hello(string name)
	{
		switch (name)
		{
			case "roslyn":
				Console.WriteLine("안녕, 로슬린, 만나서 반가워.");
				break;
			default:
				Console.WriteLine("안녕, " + name + "야, 만나서 반가워.");
				break;
		}
	}
}

 

이전에 switch 문을 하나의 함수를 만들어서 분리시켰습니다.

Main함수가 static으로 선언되어 있기 때문에, 동일하게 static으로 만들었으나, 이 개념을 이해못하더라도 그냥 넘어가세요.

직접 Console을 명령어를 호출하기 때문에, 반환값이 없는 void를 선택했습니다.

파라미터로 name 이라는 문자열(string)값을 받는 Hello란 함수를 정의했습니다.

 

이제 Main 함수에서 switch 문이 사라지고, 대신 그 자리에 Hello가 들어감으로써, Main 함수의 코드는 한결 가벼워 졌습니다.

 

함수는 이렇게 특정 기능을 분리 구현함으로써, 반복적으로 재사용이 가능하고 코드의 가독성을 높여줍니다.

 

실행 후에 첫번째 질문에 그냥 엔터키를 치면, 이름을 입력하세요란 메시지가 나오게 됩니다.

 

 

 

하지만 이렇게 하면 이름을 입력하지 않았을 경우에 대해 1번 밖에 대응하지 않아요.

그래서 이름을 입력할 때까지 "반복적으로" 묻도록 수정해 볼께요.

 

namespace Examples.Example01
{
    internal class Program
    {
        static void Main(string[] args)
        {
            string name = GetUserName();
            Hello(name);

            int[] arr = new int[] { 10, 20 };

            foreach(int i in arr)
            {
                Console.WriteLine(arr[i]);
            }
        }

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

                if (string.IsNullOrWhiteSpace(name))
                {
                    Console.WriteLine("이름을 입력하세요.");
                }

            } while (string.IsNullOrWhiteSpace(name));

            return name;
        }

        static void Hello(string name)
        {
            switch (name)
            {
                case "roslyn":
                    Console.WriteLine("안녕, 로슬린, 만나서 반가워.");
                    break;
                default:
                    Console.WriteLine("안녕, " + name + "야, 만나서 반가워.");
                    break;
            }

            string test = "예시코드를 " + 8 + "번 작성합니다.";
            Console.WriteLine(test);
        }
    }
}

 

최초 질문부분도 함수로 분리시켰습니다.

그리고 do while 이라는 반복문으로 사용자가 입력을 할 때까지 질문을 반복하도록 수정했어요.

do while문은 최초에 1번을 수행한 뒤에, 조건이 만족할 때까지 반복하는 명령어입니다.

 

do

{

수행할 내용

} while (조건)

 

여기서 조건이 true 인 동안에는 계속 반복하고, false가 나오면 반복을 중단하게 됩니다.

for 문과 함께 가장 기본적인 반복문의 형태를 가지고 있어요.

 

실행해 보면 이름을 입력할 때까지 계속 반복해서 묻는 걸 볼 수 있습니다.

 

 

우리는 이런 식으로 사용자가 입력한 값을 검증하고, 검증이 끝날때까지 현재 위치를 벗어나지 못하게 처리할 수 있습니다.

 

오늘 중요한 포인트는 다음 두가지 입니다.

 

(1) 함수

특정 기능을 재활용 또는 가독성을 위해 분리 구현하는 것

 

(2) do ~ while문

조건이 만족되는 동안 반복하는 명령어

 

두가지를 잘 기억해 두세요.

반응형

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

C# 프로그램 기초 - 10  (0) 2024.01.11
C# 프로그램 기초 - 09  (0) 2024.01.10
C# 프로그램 기초 - 07  (2) 2024.01.08
C# 프로그램 기초 - 06  (0) 2024.01.08
C# 프로그램 기초 - 05  (0) 2024.01.05