[강좌] 프로그래밍 초급훈련 06 - 변수와 상수

이번에는 변수와 상수에 대해서 알아보겠습니다.

1 + 1 = 2

만약 이런 덧셈을 할 수 있는 프로그램을 짜려면 어떻게 짜야할까요?

이제까지 배운 것으로 짜려면 아래와 같이 짜면 되겠습니다.

Console.WriteLine("{0} + {1} = {2}", 1, 1, 1 + 1);

간단하게 짤 수 있겠죠? 하지만 이것 만으로는 살아있는 프로그램을 만들 수 없습니다. 위 프로그램은 상수만을 가지고 프로그램을 만들었습니다. 상수가 무엇일까요? 

상수 : 영어로는 Constant, 한자로는 常數(항상 상, 셈 수), 즉 변하지 않는 수를 의미함.

우리가 학교에서 배운 수학 지식을 사용하면 어떻게 하면 될까요?

x + y = z

이런 미지수를 이용하여 식을 만들어놓고, 값을 채워넣으면 되겠죠? 그렇다면 위 식이 일종의 공식이 됩니다. 프로그래밍에서도 위와 같이 공식을 만든다고 생각하면 쉽습니다.

이제 진짜 프로그램같은 프로그램을 만들어보겠습니다. 아주 기초적이긴 하지만 이것으로 많은 것을 응용할 수 있습니다.

숫자 두개를 입력받아 덧셈을 한 뒤, 결과값을 출력해주는 프로그램을 만들어보겠습니다. 일단 무엇을 더 알아야 만들 수 있을까요? 수학의 미지수를 프로그래밍에서 어떻게 사용하는지, 숫자 입력은 어떻게 받는지 알아야 합니다. (일단 최대한 필요없는 것들을 배제하고 학습하기 위하여 우리는 한동안은 정수만 다루도록 하겠습니다.)

수학에서의 미지수는 컴퓨터에서는 변수라고 부릅니다. 변수는 무엇일까요?

변수 : 영어로는 Variable, 한자로는 變數(변할 변, 셈 수), 즉 변하는 수를 의미함

C#에서는 변수를 사용하려면 선언이라는 것을 해줘야 합니다. 내가 어떤 변수를 어떤 이름으로 쓰겠다는 선언입니다. 선언을 하지 않으면 컴퓨터가 이해하지 못합니다. 선언할 수 있는 변수의 종류는 여러가지가 있지만 일단 우리는 문자열 변수, 정수형 변수 두가지만 배우도록 하겠습니다.

int x;
int y;
int z;

string first = "첫번째 숫자를 입력하세요 : ";
string second = "두번째 숫자를 입력하세요 : ";

Console.Write(first);
x = int.Parse(Console.ReadLine());
Console.Write(second);
y = int.Parse(Console.ReadLine());

z = x + y;

Console.WriteLine("{0} + {1} = {2}", x, y, z);

위 소스코드를 실행한뒤, 첫번째 숫자를 입력하고 엔터, 두번째 숫자를 입력하고 엔터를 치시면 결과값은 아래와 같이 출력됩니다.



위 소스에서 정수형 변수 x, y, z를 선언했습니다. int 키워드는 integer라는 의미의 약자이고, 문자열 변수를 선언하는 키워드는 string 입니다. 소스와 같이 키워드를 입력하고, 내가 사용할 변수명을 입력하면 코드 한줄이 완성됩니다. (코드 한줄을 마무리하려면 맨 마지막에 세미콜론 ";"을 입력해야 합니다.)

컴퓨터는 첫줄부터 실행하면서 다음과 같이 이해할 것입니다.

1. 정수형 변수 x를 선언했네
2. 정수형 변수 y를 선언했네
3. 정수형 변수 z를 선언했네
4. 문자열 변수 first를 선언하고, 값을 "첫번째 숫자를 입력하세요 : " 라는 문자열로 초기화했네
5. 문자열 변수 second를 선언하고, 값을 "두번째 숫자를 입력하세요 : "라는 문자열로 초기화 했네
6. 변수 first를 출력하네

여기까지는 이해하실텐데 갑자기 복잡한 코드가 나옵니다.

x = int.Parse(Console.ReadLine());

이것은 문장으로 풀어보면 "콘솔로 부터 입력받은 문자를 숫자로 변환한 뒤, x에 넣어라" 입니다. Console.ReadLine()은 키보드 값을 입력받는 메서드입니다. 따라서 실행되면 사용자로부터 키를 입력받을때까지 기다리게 됩니다. 키를 입력하고 엔터를 치게 되면 Console.ReadLine()은 문자열 형태로 키보드값을 돌려줍니다.

string temp = Console.ReadLine();
Console.WriteLine(temp);

위 소스를 실행해보시면 이해가 가실겁니다. 사용자가 입력한 키보드 값을 그대로 출력해줍니다. 그리고 int.Parse() 메서드는 문자로 되어있는 숫자를, 계산이 가능한 숫자로 바꿔주는 메서드입니다. 이미 [강좌] 프로그래밍 초급 훈련 05 - 숫자출력 강좌에서 설명드렸듯이 문자를 숫자로 변환해주어야 합니다. 소스를 풀어서 써보면 아래와 같습니다.

string temp = Console.ReadLine();
x = int.Parse(temp);

입력을 받았으니 입력받은 수를 더해서 z 변수에 넣을 차례입니다. 잘 보시면 수학에서의 등호 "="과는 조금 다르다는걸 느끼시는 분들이 계실것 같습니다. 프로그래밍에서 쓰이는 등호 "="은 같다라는 의미가 아니고 "넣어라" 라는 의미로 해석해야 합니다. 같다는 의미의 기호는 "=="와 같이 등호를 두개 붙여서 씁니다. 물론 프로그래밍 언어별로 약간씩 다르지만 큰 흐름은 "우변의 결과값을 좌변에 넣어라" 라고 해석하면 됩니다. 그럼 다시 식을 보겠습니다.

z = x + y;

위 코드를 해석해보면 "x 더하기 y의 결과값을 z에 넣어라" 입니다. 좀더 나아가서 초보자가 가장 헷갈리는 식을 하나 보여드리겠습니다.

a = a + 1;

수학적으로 생각해서는 이해할 수 없는 코드입니다. 위 코드는 "a 더하기 1의 결과값을 a에 넣어라" 입니다. 기존 a안에 있는 값과 1을 더한 후 다시 a 변수에 집어넣는다는 뜻입니다. 이해가 잘 안가신다면 나중에 위 코드가 나올때 다시 자세하게 다뤄 보겠습니다. 계산이 끝났으니 마지막에 최종 결과물을 출력하는 코드만 남아있습니다. x의 값, y의 값, z의 값을 모두 출력하는 코드입니다.

이해가 좀 되셨나요? 만약 전부 이해되지 않았다면 일단은 그냥 진도를 나가는 방법도 나쁘지 않은 방법입니다. 프로그래밍 지식은 절대 차곡차곡 블럭 쌓듯이 쌓이지 않습니다. 프로그래밍은 블럭 쌓기 보다는 퍼즐 맞추기와 더 흡사합니다. 퍼즐을 왼쪽 위 첫 피스부터 차례대로 맞추는 사람은 없으니까요. 왼쪽 모서리 맞추다 다시 오른쪽 맞추다가, 밑부분 하다가 다시 왼쪽하다가 이런식으로 그림을 완성해 나가듯이 프로그래밍도 대충 따라하면서 해보고, 다시 돌아와서 보면 안보이던 것들이 다시 보이고, 다시 보면 또 다른 내용이 보이고 합니다. 어렵다면 일단 그부분은 건너 뛰셔도 괜찮습니다. 진도 나가다가 다시 돌아와서 보시면 쉽게 이해되실 수도 있으니까요.

절대 포기하지 마시기 바랍니다. 

다음엔 100번 1000번 쉽게 반복할 수 있는 방법을 알아보겠습니다.
[강좌] 프로그래밍 초급훈련 06 - 변수와 상수 [강좌] 프로그래밍 초급훈련 06 - 변수와 상수 Reviewed by Tae-seob Shin on 10월 07, 2018 Rating: 5

댓글 없음:

Powered by Blogger.