코딩 따라가기
이 예제에서 '설명 조각내기'를 중점적으로 다룰것이나, 조각 낼때마다 알려주지 않을것이다. 완성된 코딩을 만든뒤 언제 어떻게 조각냈는지 모아서 설명할 것이다. 강좌를 따라가면서 어떻게 조각내고 있는지 직접 판단해본뒤 설명을 보기 바란다. 더 많은 공부가 될것이다.
598회차 당첨번호를 기준으로 내가 구매한 번호가 몇등인지 판단하는 코드를 작성해보자.
예제는 초보를 기준으로 아주 단순 무식하게 짠다. 그러므로 가장 좋은 코드를 보일것이라 생각하지 말자. 예제의 1차 목적은
설명 조각내기
의 시연이고, 2차 목적은몇가지 문법의 습득
이다.
시작하자
코딩은 app.coffee
파일에 할것이고 그 결과는 console 화면에서 coffee app.coffee
를 실행하여 확인할 것이다.
당첨번호를 준비한다.
프로그램이 내 번호가 몇등인지를 판단하려면 당연히 당첨번호를 알아야 할것이다.
프로그램이 값을 기억 하려면 변수에 저장해두면 된다.
(변수
란 개념에 대해서는 링크에서 설명이 잘 되어 있으니 모를 경우 보고 오기 바란다.)
그럼 프로그램에서 사용하기위해서 당첨번호를 아래처럼 기억시킨다.
WinNumber1 = 4
WinNumber2 = 12
WinNumber3 = 24
WinNumber4 = 33
WinNumber5 = 38
WinNumber6 = 45
WinNumberBonus = 22
알고싶은 것은 내 등수
이 예제의 목적이 내 로또 번호의 등수를 알고싶은 것이다.
그렇다면, 프로그램은 내 등수를 출력해야 할것이고, 아래처럼 지시를 내릴 수 있겠다.
WinNumber1 = 4
WinNumber2 = 12
WinNumber3 = 24
WinNumber4 = 33
WinNumber5 = 38
WinNumber6 = 45
WinNumberBonus = 22
console.log MyRank
물론 이걸 실행한다고 해서 등수가 나오지는 않지만, 프로그램 코드에 내 의도
를 표현했다는데 적지 않은 의의가 있는 것이다.
그럼 내 등수는 어떻게 결정하나?
등수를 결정하려면 일단 내 번호를 알아야 겠다.
그러니 컴퓨터에게 내 번호를 알려주고, 등수를 내 놓으라고 요구를 해야겠다.
여기서는 내 로또 번호를 3,4,23,11,38,36 그리고 보너스 번호를 12로 가정하겠다.
WinNumber1 = 4
WinNumber2 = 12
WinNumber3 = 24
WinNumber4 = 33
WinNumber5 = 38
WinNumber6 = 45
WinNumberBonus = 22
console.log GetMyRank 3,4,23,11,38,36,12
자 그럼 이렇게 지시문을 작성하고 실행시켜서 컴퓨터에게 등수를 출력하게 하자
결과를 위와 같다.
내놓으라는 등수는 안 내어놓고, 오히려 GetMyRank가 먼지 모르곘다고 Error를 내버린다.
만약 이 시점에서 GetMyRank
라는 함수가 있다면 에러가 나지 않고 그 결과를 주었을 것이다. 그러나 GetMyRank
는 내장 함수도 아니고 누군가가 만들어준 함수도 아니다. 단지, 컴퓨터에게 내 등수를 내놓으라는 요구를 표현한 프로그래머의 상상 속 지시
이다.
결국 컴퓨터가 내가 원하는 명령을 수행할줄 모름으로 GetMyRank
를 어떻게 수행해야하는지 풀어서 설명 해줘야한다.
우선 함수를 만든다.
GetMyRank
라는 명령어를 모르니 명령어를 만들어줘야한다.
커피스크립트는 소스에서 ( ... )->
형태가 발견되면 이를 함수 정의로 간주한다.
...
부분에는 아규먼트가 오는데 여러개가 올수도 있고, 없을수도 있다.
그리고 함수를 만들면 이를 변수에 할당하여 사용할수 있다.
즉 아래와 같은 형태로 함수를 정의하고 사용할수 있다.
그리고 함수는 자신의 수행한 결과를 return
문을 사용해 돌려준다.
즉 아래와 같은 형태들로 함수를 정의하고 사용할수 있다.
func1 = ()->
reutrn 0
console.log func1()
func1 = (str)->
reutrn str
console.log func1 "hi~"
func1 = (A, B)->
reutrn A + B
console.log func1(2, 9)
우리는 로또 번호에 대한 등수가 필요함으로 아래처럼 내번호 7개를 아규먼트로 받도록 함수의 형태를 잡으면 되겠다.
WinNumber1 = 4
WinNumber2 = 12
WinNumber3 = 24
WinNumber4 = 33
WinNumber5 = 38
WinNumber6 = 45
WinNumberBonus = 22
GetMyRank = (N1,N2,N3,N4,N5,N6,NBonus)->
return 9
console.log GetMyRank 3,4,23,11,38,36,12
결과를 위와 같다.
일단 에러는 없는데 9등이라고 알려주는 것이 원하는 기능인 것은 아니다.
CONTINUE...