본문 바로가기

프로그래밍

C# 난수(Random)를 이용한 숫자 맞추기 Chapter 01

 

제가 저번에 썼던 글을 보시면 알겠지만 코딩을 배우려면 문법을 먼저 보는거보다 프로그램을 먼저 만드는것이 중요하다고 강조한 적이 있습니다. 또한 앞서말하자면 저는 여러분이 코드 예제를 그대로 복사 붙여넣기하는것을 방지하기 위해서 완성된 코드예제를 캡처 하겠습니다. 오늘은 첫 번째 프로그램을 만들어보려고 합니다. 사실 프로그램이라고 하기엔 간단한 것이지만 그 안에는 많은 내용이 담겨 있으니 꼭 천천히 따라와주길 바랍니다. 

 


코드 살펴보기

 

01. '변수' 가방

만약 여러분이 코딩을 처음 한다면 지금 이 코드를 봤을때 어떤 기분인지 짐작이 갑니다. 저 또한 그랬으니까요. 하지만 걱정하지 않으셔도 됩니다. 초보자의 시선에서 같이 하나씩 천천히 살펴보겠습니다. 모든 설명은 입문자에게 맞춰 설명하기 때문에 어려운 단어는 쓰지 않겠습니다.

먼저 이 코드들을 이해 하려면 변수라는 단어를 알아야 합니다. 코딩에서 변수란 내가 쓰고 싶은 물건을 담는 가방 입니다. 예를 들어 도서관에 공부를 하러 가기위해서는 무엇이 필요할까요? 바로 자신이 공부하려는 책과 필기구가 필요할 것입니다. 이렇게 일반적인 가방에는 책과 필기구가 모두 들어갑니다. 하지만 코딩에서의 가방은 가방 하나당 물건 하나가 들어갑니다. 이 가방들은 각자 자신의 타입과 가방의 크기가 정해져 있습니다. 코딩에서는 이것을 변수 타입이라고 부릅니다. 그럼 이제 가방들(변수들)의 타입과 크기를 알아보겠습니다.

 

string input; 이 가방은 string 타입입니다. string은 문자열을 담을 수 있습니다. 그런데 앞에 input이라는게 하나 더 있습니다. 이것은 string변수의 이름 입니다. string이라는 가방을 만들어도 이름을 지어주지않는다면 오류가 뜨게 됩니다. 또한 이름을 쉽게 지어주면 나중에 알아보기도 편합니다. 그래서 저는 input이라는 이름을 string타입에게 지어줬습니다. 
int count = 0; 이 가방도 string과 마찬가지 입니다. 이 가방은 int타입 입니다. int는 숫자를 담을 수 있습니다. 숫자중에서도 음수와 정수사이의 정수를 담을 수 있습니다. 정확한 범위는 나중에 double과 같은 더 큰 가방이 나오게 되면 설명 하겠습니다. 저는 int타입 가방의 이름을 count라고 지어줬습니다. 

 

이런식으로 변수를 선언할때 특정한 패턴이 있습니다. 아래의 표를 보면 더 쉽게 이해가 가능합니다. 꼭 기억 해주세요

 

예시) 타입 + 변수이름 = 데이터;

타입 변수 이름 데이터
int count 0(0이라고 데이터를 삽임)
string input 임의로 만들어진 공간

02. Random(난수)클래스

이번엔 난수(Random)에 대해 알아보겠습니다. 마이크로소프트사에서는 개발자들이 좀 더 편리하게 개발을 할 수 있게 이미 많은 함수와 클래스를 정의해놓고 쉽게 이용할 수 있도록 만들어 놨습니다. Random클래스도 개발자들이 좀 더 편리하게 개발할 수 있도록 정의되어 클래스를 바로 불러와서 사용할 수 있습니다. 한번 타이핑 해보겠습니다.

Random random = new Random();

코드의 패턴을 보면 앞에서 배운 변수 선언할 때의 패턴과 비슷해 보입니다. 하지만 Random 클래스는 변수라고 하지 않고 클래스라고 부릅니다. 이에 대한 설명은 나중에 할 텐데 입문하는 단계에서 더 깊이 들어가면 어려워지니까 지금은 "기본적으로 세팅되어있는 코드를 어딘가에서 불러올 수 있다."라는 추상적인 생각만 가지시길 바랍니다. 

클래스(어딘가에 있는 코드를 불러옴) 클래스 이름(변수 이름이라고 생각) 객체 생성자(new)
Random random new Random();

그런데 앞에 일반 변수와 다르게 객체 생성자라고 쓰여 있습니다. 객체 생성이라는 말은 무엇일까요? 클래스를 불러올 때는 일반 변수를 선언할 때와는 좀 다르게 선언해야 합니다. 이것을 객체의 인스턴스화라고 합니다. 클래스 타입으로 선언되었을 때 객체라고 부르고, 그 객체가 실제 사용될 때 인스턴스라고 부릅니다. 

이렇게 랜덤클래스의 객체를 만들었습니다. 그다음은 클래스 안에 있는 함수를 사용해야 합니다. 복잡하다고 느껴지시겠지만 지금 우리가 불러온 클래스라는 큰 덩어리 안에 함수라는 작은 덩어리를 정확하게 가리킨다라고 생각하시면 됩니다. 그 작은 덩어리가 Next() 함수입니다. 이 함수는 무작위로 정수를 반환하는 함수입니다. 단, 여기서 음수는 포함되지 않습니다. 다시 정리해서 알려드리겠습니다.

클래스 > 함수(메서드) > 변수

Next() 메서드는 임의의 정수를 반환하는 메서드(멤버 함수) 입니다. (음수는 나오지 않음, n>=0)

 

그래서 이번에는 Random 클래스 안에 있는 Next() 함수를 가져오기 위해서
"Random."을 타이핑하여 클래스를 불러옵니다.


그다음 Random. 앞에 Next();라고 타이핑을 하면 Random 클래스 안에 있는 Next() 함수를 가져온 것 입니다. 그리고 그 괄호 안에 1, 10이라고 난수를 정해주면 `1부터 10까지 무작위로 숫자를 정해라`라고 컴퓨터에 말하게 되는 것 입니다.

하지만 이렇게 무작위로 숫자를 정해줬지만 담을 가방을 만들어 줘야 사용할 수있습니다. 다시 한번 생각 해봅시다. 1부터 10까지의 숫자는 정수라고 합니다. 그럼 정수를 담을 수 있는 변수 타입은 'int'가 됩니다. 변수이름은 아무렇게 정해줘도 됩니다. 단, 알아보기 쉽게 정해줘야 합니다. 저는 'Number'라고 변수이름을 정했습니다.

int Number = Random.Next(1, 10);

 

지금까지 배운 코드 정리

이번에는 Random클래스와 변수에 대해서 간략하게 알아봤습니다. 다음 글에서는 while문과 if문에 대해서 알아보겠습니다. 

반응형