코드론 함수 이해하기
이번 포스팅에서는 함수를 사용하는 방법을 배워보겠습니다. 코드론으로 코딩하기 그림을 그리면서 함수가 무엇인지 알아보겠습니다.
이전 포스팅
코딩을 공부할 때 순차, 반복, 선택, 함수 그리고 변수가 중요하다고 했죠? 함수는 쉽게 말하면 블록을 여러 개 모아서 이름을 붙인 것으로 생각하면 됩니다. 함수를 사용하면 깔끔하고 보기 좋게 코딩을 할 수 있습니다.
함수 이름을 잘 만들어두면 함수 이름만으로도 코드가 어떤 일을 하는지 이해할 수 있습니다. 코드를 수정할 때도 함수에서 고치고 싶은 부분만 바꿔주면 되므로 편리합니다. 함수를 사용해서 아래 그림을 그려보겠습니다.
<변수>-<블록 만들기>를 순서대로 클릭하면 함수를 만들 수 있습니다. 우리가 앞에서 배운 블록도 모두 함수라고 할 수 있습니다.
함수 이름을 씁니다. 그리고 <커맨드>를 클릭하고 <확인>을 선택합니다.
주황색으로 표시한 부분은 MIT에서 만든 스크래치에는 없습니다. MIT 스크래치에서는 한 스프라이트에서 만든 함수를 다른 스프라이트가 사용할 수 없습니다.
다른 스프라이트에서 같은 함수를 사용하려면 다시 코딩해야 합니다. 힘들겠죠? 이 기능은 게임과 같이 복잡한 프로그램 만들 때 매우 편리합니다. <확인>을 선택하면 그림과 같은 화면이 나타납니다. 여기에 원하는 블록을 연결하면 됩니다.
아래 코드가 다각형을 여러 개 그리는 코드입니다.
아랫부분을 떼서 <다각형 여러개 그리기> 함수에 붙입니다. 그러면 <다각형 여러개 그리기> 함수(블록)가 생깁니다.
아래와 같이 코딩하면 앞에서 봤던 그림과 같은 그림이 그려집니다.
함수 이름을 보면 어떤 일을 하는지 알 수 있어서 코드를 더 잘 이해할 수 있습니다. 함수를 흔히 ‘마술상자’에 비유합니다. 마치 재료를 넣어서 물건을 만드는 것과 같이 어떤 값이 들어오면 새로운 값을 만드는 것입니다.
함수에 들어가는 값을 ‘인자’ 또는 ‘매개변수’라고 합니다. 말이 어렵죠? 우리는 그냥 ‘들어가는 값’으로 부르겠습니다.
어떤 다각형부터 그릴지, 길이를 얼마로 할지, 어디까지 그릴지 정할 수 있게 함수(블록)를 바꿀 수 있습니다. <다각형 여러개 그리기> 함수가 매개변수를 받을 수 있게 하면 됩니다. 함수에 마우스 오른쪽 버튼을 누르면 그림과 같이 메뉴가 나옵니다. 여기에서 <편집>을 선택합니다.
다른 방법으로는 블록 팔레트에서 <편집>을 선택해서 함수를 바꿀 수 있습니다.
빨간색 표시한 부분을 클릭합니다.
[다각형 개수] 매개변수를 만듭니다. [다각형 개수] 매개변수 값만큼 반복합니다. 빨간색으로 표시한 곳을 클릭해서 어떤 값을 받을지 정할 수 있습니다.
<아무타입>이 기본값입니다. <아무타입>은 숫자나 문자 등을 매개변수로 받을 수 있습니다. 만약 숫자만 받고 싶으면 <숫자>를 선택합니다. 매개변수의 기본값도 정할 수 있습니다.
[다각형 개수] 매개변수가 생겼습니다. 매개변수를 숫자로 정하면 뒤에 # 기호가 붙습니다.
이 매개변수를 <~번 반복하기> 블록에 넣습니다. 함수를 다 수정했으면 확인을 클릭합니다.
그러면 함수를 바꾸지 않아도 원하는 값만 넣으면 그림을 그릴 수 있습니다.
다각형의 종류와 길이를 정할 수 있게 그림과 같이 함수를 바꿀 수 있습니다.
[시작 다각형] 매개변수를 만들었기 때문에 [각] 변수는 지워도 됩니다.
함수를 사용하면 아래와 같은 그림도 쉽게 그릴 수 있습니다.
얼마만큼 회전하면서 그림을 그릴지 정할 수 있게 함수를 만듭니다. 여기서 <바닥함수>를 사용하겠습니다. <바닥함수>를 사용하면 1보다 작은 값은 버립니다. 5÷2는 2.5인데 <바닥함수>를 사용하면 0.5를 버리므로 2가 됩니다.
2.5번 반복할 수는 없습니다. 1, 2, 3… 이런 식으로 자연수 값만큼 반복할 수 있습니다. <바닥함수>를 사용하면 자연수가 아닌 값을 자연수로 만들 수 있습니다. 30도 회전하면 360 ÷30의 값인 12번 반복하게 됩니다.
마이너스 값은 반대 방향으로 움직입니다. 원래 자리로 돌아오기 위해서 움직인 거리만큼 마이너스 값으로 움직여야 합니다.
완성한 코드입니다. 이렇게 함수를 사용하면 멋진 그림을 더 쉽게 그릴 수 있습니다.
추천 포스팅
'스크래치 > 드론코딩' 카테고리의 다른 글
드론코딩 선택 구조 이해하기 (0) | 2020.08.25 |
---|---|
드론코딩 변수를 사용해서 그림 그리기 (0) | 2020.04.17 |
코딩교육 스크래치로 그림그리기 (0) | 2020.03.13 |
코딩교육 난수로 드론 움직이기 (0) | 2020.03.13 |
드론코딩 순차와 반복 (0) | 2020.03.12 |