함수란 뭔가요?

프로시저(procedure)라고 하는데 프로그램의 일부 기능을 담당하는 연속적인 문장들의 묶음입니다

미리 만들어 놓은 처리 절차를 호출하여 사용합니다

스크래치에선 내 블록으로 필요한 함수를 만들어 사용합니다. ‘내 블록카테고리를 클릭해 블록 만들기단추를 클릭하고, 함수 이름을 정합니다. 이때 매개변수(입력값)을 지정해 줄 수 있습니다.

내 블록을 만들면, 호출할 블록도 함께 만들어집니다. 호출할 블록에서 인수(입력값)을 넣으면 함수인 내 블록에 매개변수로 들어갑니다.

 

이해가 잘 안 가요, 예를 하나 들어주세요!

크기라는 이름의 내 블록을 하나 만듭니다

이 스프라이트를 클릭했을 때이벤트 블록에 크기블록을 넣어줍니다

크기 정의하기블록 아래에 크기를 10만큼 바꾸는 동작을 10번 반복하고 다시 크기를 100%로 정하는 작업을 합니다

고양이 스프라이트를 클릭하면, ‘크기가 실행되고, ‘크기블록은 크기 정의하기블록을 호출하여 크기 정의하기블록이 실행되도록 합니다.

 

함수 사용의 예

내 블록을 만들 때 보이는 입력값 추가하기란 뭔가요?

입력값이란 처리의 재료가 되는 값입니다. 보통 인수라고 합니다.

왜 입력값을 추가하나요?

입력값을 바꿔 호출함으로써 하나의 블록에 여러 가지 처리를 시킬 수 있습니다

 

입력값 사용의 예

고양이를 클릭했을 때 크기가 각각 다른 별을 그리고 싶은데 어떻게 해야 하나요?

내 블록으로 을 만드는데 입력값(‘크기’)을 하나 넣을 수 있게 합니다

별 크기 정의하기블록 아래에 별을 그리는 코딩을 합니다

고양이 크기를 30%로 줄이고 난수로 x좌표는 -120에서 120까지 y좌표는 -100에서 100까지 위치로 이동하여 펜을 내리고 색깔을 바꿔가며 블록이 입력값으로 넘겨준 크기만큼 움직이면서 시계 반대방향(혹은 시계방향, 모양이 조금 다릅니다)으로 144도 돌며 5번 반복하여 그립니다.

 

별 그리기 코딩

함수를 사용하는 장점은?

코딩이 간결해집니다

같은 처리를 재이용할 수 있습니다

입력값으로 처리를 변경할 수 있습니다

 

사용자로부터 입력 받아 이동하기 코딩

스페이스 키를 눌렀을 때사용자가 입력한 다각형을 그리려면 어떻게 해야 하나요?

몇 각형으로 그릴지 묻고 기다리기

다각형블록을 만들고 대답을 입력값으로 받습니다

변수 각도를 만들고, ‘각도‘360/모서리 수로 정합니다

변수 반지름을 만들고, ‘대답에 따라 반지름을 정합니다

반지름만큼 움직이고, ‘각도만큼 시계 반대 방향으로 회전하여 모서리 수만큼 반복합니다

 

다각형 그리기 코딩 1

다각형 그리기 코딩 2

다각형 그리기 코딩 효율화

110각형 이상이 되면 다각형이 일그러지는데 어떻게 해야 하나요?
‘길이’ 매개 인수를 (5/대답) * 100으로 합니다.
5각형 기준으로 길이를 100으로 한 것입니다.
시간은 3각형 기준으로 1초 : 3/대답

 

더 좋게 다각형을 그리는 다른 방법은 없나요?

삼각함수를 이용하면 깔끔합니다

원둘레의 x 좌표는 반지름 x cos 각도’, y 좌표는 반지름 x sin 각도로 표현합니다

우선 고양이가 반지름이 100인 원둘레의 왼쪽 방향(90도 방향)으로 가 있도록 합니다(초기 설정)

고양이가 앞으로 그릴 각도의 방향을 보도록 합니다(360각도증가/2). 이것도 초기 설정.

각도를 0으로 초기화합니다. 기존 각도 값을 없애는 것입니다. 그래야 모든 다각형을 이런 기본 상태에서 그릴 수 있습니다.

각도각도증가를 대입하여 사용자가 원하는 각도의 다각형을 그립니다

각도를 바꿔가며 원하는 다각형 모서리 수만큼 반복적으로 작업을 수행합니다.

고양이가 그릴 때 걸리는 시간도 모서리 수가 많으면 많은 만큼 빨리 그리게 하려면?

‘1초 동안 x: y: ()로 이동하기동작 블록을 이용합니다. 1초 대신에 ‘10/대답초로 하면, ‘대답인 모서리 수가 많을 수록 이동하는 시간이 짧아지게 됩니다.

 

삼각함수를 이용한 다각형 그리기 코딩 1 초기 설정

삼각함수를 이용한 다각형 그리기 코딩 2 - 그리기

병렬 처리란 뭔가요?

여러 기능을 동시에 처리하는 것입니다

멀티 태스킹(multi-tasking) : 여러 프로그램 실행

멀티 스레딩(multi-threading) : 프로그램 하나가 여러 작업을 동시에 처리

초록 깃발을 클릭했을 때 이벤트가 발생하면서 고양이가 야옹 소리를 무한 반복하기 시작합니다. 스페이스 바를 눌렀을 때 이벤트가 발생하면서 고양이가 마우스 포인터를 무한히 따라가기 시작합니다.

 

병렬처리

컴퓨팅 사고력이란 뭔가요?

Computational thinking. 모든 문제에 컴퓨터 과학의 기본 개념들을 적용하고 문제 해결을 위해 창의적으로 논리적으로 생각하며 서로 협동하는 자세로 포기하지 않고 오류를 해결하는 사고 방식.

추상화 : 공통되는 특성이나 속성을 추출하고(일반화), 불필요한 요소를 없앰(캡슐화). 무지개 색깔을 모아 저장하는 리스트.

분해 : 처리 가능한 수준의 작업 단위가 될 때까지 계속 쪼개는 작업. 해결 가능한 수준의 문제 단위까지 작게 쪼갬. 모듈화. 함수.

패턴인식 : 인공지능의 한 분야. 사물을 구별할 수 있는 특징들을 모아 패턴을 정의. 2로 나누었을 때 나머지가 0이면 짝수이고 아니면 홀수인 패턴.

알고리즘 : 9세기 페르시아의 수학자인 알-콰리즈미의 이름에서 유래. 어떤 문제를 해결하기 위한 방법. 순서도. 동전 100개 중 무게가 가벼운 동전 1개가 섞여 있습니다. 이 동전을 양팔 저울을 이용해 찾으려면?

동전들을 절반씩 나눠 저울에 달아 가벼운 쪽만 계속 선택.

Posted by 오미자컴
,