코딩을 해보자 07 - 변수

in #kr8 years ago (edited)

변수(Variable)


변수는 변할 수 있는 수를 뜻한다
여기서 꼭 숫자만이 아니라 뭐든지 상관없다
그리고 우린 일상생활에서도 변수에 대한 것을 많이 접해왔다

'오늘 경기에 영향을 미칠 변수는 날씨네요'
2x + 3y = 20

이런 것들 말이다
진정한 의미가 뭔가를 따지면 열라 고급스런 안드로메다로 떠나게 되겠지만
프로그래밍에서 변수는 간단하게 저장정리용 상자라고 알아두면 쉽다

뭔가 쉽게 찾고 쓸려고 할때 상자하나에다가 이름 붙이고
넣어두면 굉장히 편리하다

프로그래밍의 변수의 경우는 특히나 그런 상자가 필요하다
실제 환경에서야 그냥 던져놔도 나중에 주으면 되지만
프로그래밍에서 뭔가 정보를 얻고 난후 그 정보를 다시 쓸려고 할때
어디다 놔둘것인가? 놔둘 곳이 없는 것이다.

예를들어 자동으로 투표를 하는 스팀봇을 만든다고 하자
그 방법으로 화면상에서 마우스 클릭할 곳을 찾아내서
자동으로 클릭하게 한다고 하자

일단 아래와 같이 코딩해보자

#SingleInstance force

q::
Click 30, 30, 0
return

x::ExitApp

실행후 q를 눌러보면
마우스 포인터가 갑자기 화면 좌상단으로 슝 날아가버릴 것이다

뭐 명령어 이름만 봐도 대충 감이 오겠지만 마우스 클릭 명령어다
30, 30은 x,y좌표고 뒤의 0은 클릭은 하지 말란 옵션이다 0 빼버리면 클릭도 한다

자 이상태에서 좌표를 주는 명령어가 있다고 가정하자

명령어이름은 퉤에엣 이다..+_+
이넘을 실행하면 x,y 좌표를 뱉어준다. 자 실행해보자

:= 퉤에엣

음.. 진짜 쓰잘데기 없다. 비트코인을 뱉어주는 명령어라 할지라도 뱉어낸게
우주 어딘가로 간다면 뭔 소용인가

그때 좌표라는 이름의 상자를 만들어서 넣는다면 얘기가 달라진다

좌표 := 퉤에엣

놀랍지 않은가? 뱉은게 상자에 쏙 들어갔다... 각도가 안맞다고?.. -ㅅ-...
사실 상자그릴려고 일러스트레이터를 키려다가 왠지 허무해져서
그냥 픽픽이라는 거 그림판급 에디터를 썼는데 상자 회전 기능이 없었다.. -_-
걍 넘어가자

여튼 이제 뱉은게 좌표라는 상자로 들어갔으니 그걸 그대로 사용하면된다

실제로 살짝 체험해보자

#SingleInstance force

x := 100, y := 100
return

a::
Random, x, 300, 1000
Random, y, 300, 1000
return

q::
Click %x%, %y%, 0
return

x::ExitApp

x := 100 이라는 것은 x라는 이름의 상자에 100을 그대로 넣겠다는 의미다
기본적으로 변수는 오른쪽에서 왼쪽으로 들어간다
상자를 먼저 준비하고 거기에 물건을 넣는다는 것이다
하지만 넣는 방식이 꼭 저것만 있는 것은 아니다
Random 명령어의 경우, 형태가 다음과 같다

Random, 상자, 최소값, 최대값

최소값과 최대값 사이의 랜덤한 값을 상자에다가 넣겠다는 소리다
그러므로 x와 y라는 상자, 즉 x변수, y변수는 a를 누를때마다 내용물이 바뀌게 된다
참고로 상자에 뭔가를 넣으면 기존에 있던 것을 덮어쓴다

그럼 상자의 내용물은 어떻게 꺼낼까?
해당 변수의 주위를 %로 감싸주면 내용물이 튀어나온다
즉, x := 100 이라고 하고

MsgBox %x%

라고 하면 팝업창에 적히는 것은 %x% 가 아니라 100이 적혀나온다는 뜻이다

그렇다면 이제

click %x%, %y%, 0

Click x상자값, y상자값 라는 의미라는 것을 알 수 있을 것이다

이제 실행을 해보자
처음 q를 누르면 가장 처음에 정의해준 100,100 좌표로 가고
이후 a를 누르고 q를 누를때마다 랜덤한 좌표로 가는 것을 볼 수 있을 것이다
만약 저짓을 그냥 좌표를 적는 것으로 한다면
Click 명령어를 몇십개 몇백개를 쓰는 노가다를 해야할 것이다

마치며


프로그래밍을 접할때 변수라는 개념에 대해서 상당히 곤란해 하는 사람들이 많다
변하는 수가 왜 필요한가부터 시작해서 할당(넣기)방법 그리고
언어에 따라선 상자 크기별로 전치사를 붙여줘야하는데 외우기 짱나기 때문이다

현재로썬 일단 개념만 잡아봤고
다음편부턴 본격적으로 변수질(...)을 할 것이다

그짓을 하다보면 왜 변수란 것이 필요한지 절절히 느끼게 되고 그게 얼마나
편리한 것인지 알고는 눈물을 흘리게 될것이다(뻥)

Sort:  

여기까지 따라갔습니다^^ 감사합니다~

명령어, 함수, 변수.. 이것만 어느정도 잡히게 되면 이제부턴 자기가 필요한걸 만드는 단계에 들어갑니다. 이제 얼마 안남았어요

Coin Marketplace

STEEM 0.17
TRX 0.13
JST 0.027
BTC 61263.81
ETH 2676.81
USDT 1.00
SBD 2.59