함수와 Input

이번 장에서는 이미 배웠던 함수에 대해서 좀 더 배워볼 겁니다.
그리고 지금까지 배우지 않았던 함수의 Input에 대해서도 배워봅시다.(매개변수, parameter라고도 합니다. 지금 단계에서는 Input으로 부르겠습니다.)

시작하기 전에!
우리가 SOS앱 만들 때 썼던 함수를 기억하시나요?? 기억 하셔야 하는데… 기억이 안나시면 3편! SOS를 한번 더! 살펴보세요~

함수

SOS에서 살펴보았던 함수의 장점은 아래와 같았습니다.
1). 반복을 줄인다.
2). 블록이 간단해져 읽기가 쉽다.
하지만 함수의 진짜 중요한 점이 또 있습니다. 바로 Input입니다.

전화를 거는 역할을 하는 박스가 있다고 가정해 봅시다.
수 많은 전화번호가 존재할텐데 그 번호에 해당되는 박스를 다 만들어야 할까요??

음… 설마…. 그럼 어떻게해야 할까요?? 전화기를 생각해 보면 답을 찾을 수 있습니다.
전화를 거는 박스를 만들고, 전화번호는 직접 입력하게 만들면 되겠죠!
즉, 박스는 전화번호를 받게하고, 받은 번호로 전화를 걸 수 있도록 만드는 겁니다.
수학시간에 배웠던 함수와 위에서 봤던 전화기를 대입해서 살펴봅시다.

그림을 보니 함수와 Input에 대해서 어느정도 느낌이 오시나요?
Input이라는 특정 값을 주어 함수가 하고 있는 역할을 Input값에 따라 할 수 있게 해주는 것이죠.

다시 한번 함수의 장점을 정리해 봅시다.
1). 반복을 줄인다.
2). 블록이 간단해져 읽기가 쉽다.
3). Input 값을 사용하면 반복되는 동작을 Input값에 따라 변화 시킬 수 있다.

위의 1,2번 장점은 이미 확인하였지만, 3번 장점은 처음 보는 것이죠! 사실 함수의 가장 강력한 점 입니다.
과정이 동일하다면, input값만 달리하여 여러 값을 처리 할 수 있다는 것이죠.
마치 수학에서 함수 f(x)에서 변수x에 1을 대입해서 값을 얻을 수 있고, x에 2를 넣어서 계산하여 똑 같은 연산에 값을
다르게 얻듯이요.
사실 무슨 말인지 잘 모르겠죠?? 걱정마시고.
아래에서 우리 한번 해봅시다. 백문이 불여일견.

함수 적용

우리의 어디야 앱에서 Input 사용 함수를 적용할 곳을 찾아 봅시다.
특정 값에 대해 반복되는 행위를 하는 블록군을 찾으면 되겠죠?

Screen2의 빨간 네모박스가 보이시나요?
보시면 call TinyDB1.StoreValue 블록은 공통으로 저장하는 역할을 하며, tag와 valueToStore의 값이 다른 것을
확인 할 수 있습니다.
이를 함수를 사용해서 바꿔보도록 하겠습니다.

우선 공통되는 부분을 함수로 지정하고, input값에 따라 바뀌는 부분을 변수 x, y로 지정합니다.
(사실 변수 이름을 x, y로 하는 것보다, 무엇을 위한 변수인지를 고려하여 이름을 지정하는 것이 바람직한 방법입니다.
하지만, 여기서는 x, y라고 이름 지었습니다.)

이제, 공통된 부분을 함수 블록 안에 넣고, 변수 x, y를 맞춰 넣습니다.

이제 함수를 정의하였습니다. 이 함수는 x 값을 call TinyDB1.StoreValue의 tag값에 적용하고,
y값을 valueToStore에 적용합니다.

이제 Procedures를 클릭하여 call StoreLocationFunc 블록이 생긴 것을 확인합니다.
방금 만든 함수를 새로 생긴 call StoreLocationFunc 로 불러와 사용할 수 있습니다.
이제 만들어진 함수를 사용해 기존의 블록을 바꿔 봅시다.

함수를 사용해 보았습니다. 하지만 이번에 사용한 함수가 정말 효율적이였을까요?? 사실 그렇지 않는 것 같습니다…
오히려 만들어야 할 블록 개수만 많아졌죠. 하지만 우리는 input과 함수를 사용해 보았습니다.
(만드는 것도 중요하지만, 배우는 것도 중요하지 않을까요?ㅋㅋ)

댓글