7. 함수

【배우기】


엔트리로 해보자

파이선으로 해보자

함수란 어떤 일을 수행하는 명령들을 하나로 묶어서 이름을 부여하고 필요할 때마다 그 함수를 호출하여 사용할 수 있는 프로그래밍 방법이다. 반복적으로 사용되는 일을 함수로 만들어 놓으면 그 일의 순서나 방법을 다시 기억할 필요 없이 편리하게 사용할 수 있다.


이미지. 세탁기 버튼 그림
이미지. 전기밥솥 버튼 그림

1엔트리로 해보자

가. 오브젝트 배치
이미지. 공책 오브젝트의 스크린샷

나의 공책 오브젝트를 배경으로 추가한다.

이미지. 공책 오브젝트에 연필오브젝트가 추가된 화면의 스크린샷

도형을 그리기 위한 연필 오브젝트를 추가한다.

이미지. 연필 오브젝트의 중심점을 옮기고 있는 스크린샷

오브젝트를 추가한 후 연필 오브젝트의 가운데 위치한 중심점을 마우스로 드래그하여 연필심 쪽으로 옮겨서 도형을 그리는 모습이 자연스럽게 해주도록 한다.

나. 함수 만들기
1) 묻고 기다리기
이미지. 시작하기 버튼을 클릭했을 때 블록, 몇각형을 그릴까요?를 묻고 대답 기다리기 블록이 연결되어 있는 스크린샷

[예제코드]

[시작] 꾸러미 - [시작하기 버튼을 클릭했을 때] 블록

[자료] 꾸러미 - [O을(를) 묻고 대답 기다리기] 블록 2개 연결하기

[O을(를) 묻고 대답 기다리기]블록의 O에 몇 각형을 그릴까요? 입력

[실행결과]
이미지. 공책 오브젝트에 연필 오브젝트가 놓여져 있고 '몇각형을 그릴까요?'라 적혀져 있다
2) 도형 만들기 함수 만들기
이미지. 시작하기 버튼을 클릭했을 때 블록, 떡볶이 항목을 먹고 싶은 간식에 추가하기 블록, 순대 항목을 먹고 싶은 간식에 추가하기 블록, 만두 항목을 먹고싶은 간식에 추가하기 블록, 핫도그 항목을 먹고 싶은 간식에 추가하기, 라면을 먹고싶은 간식의 1번째에 넣기 블록이 연결되어 있는 스크린샷

[예제코드]

[함수] 꾸러미 - [함수 만들기] 실행

[붓] 꾸러미 - [그리기 시작하기] 블록

[붓] 꾸러미 - [붓의 색을 O(으)로 정하기] 블록

[붓] 꾸러미 - [붓의 굵기를 O(으)로 정하기] 블록

[흐름] 꾸러미 - [O번 반복하기] 블록

[O번 반복하기] 블록의 O에 [함수] 꾸러미의 [문자/숫자 값1] 블록 입력하기

[움직임] 꾸러미 - [이동 방향으로 O 만큼 움직이기] 블록

[이동 방향으로 O 만큼 움직이기] 블록의 O에 50 입력하기

[움직임] 꾸러미 - [이동 방향을 O 만큼 움직이기] 블록

[계산] 꾸러미 - [O/O] 블록으로 [360/문자/숫자 값1] 블록 만들기

[이동 방향을 O 만큼 움직이기] 블록의 O에[360/문자/숫자 값1] 블록 입력하기

[실행결과]
이미지. 도형만들기 함수 동영상의 스크린샷
다. 코딩해보기
1) 함수를 이용해 1부터 입력한 수까지 더한 결과가 얼마인지 말하는 프로그램을 만들어 보자.
이미지. 1부터 입력한 수까지의 결과를 말하는 동영상의 스크린샷
이미지. 함수 정의하기 합 문자/숫자값1 블록, 문자/숫자값 1 번 반복하기 블록에 연결된 수에 1만큼 더하기 블록, 합을 수 값 + 합 값으로 정하기 블록이 있는 스크린샷
이미지. 시작하기 버튼을 클릭했을 때 블록, 1부터 몇까지 더할까요?를 묻고 대답 기다리기 블록, 합 대답 블록 합 값을 4초동당 말하기 블록이 연결되어 있는 스크린샷
2)두 수를 물어보고 답을 들은 후 함수를 이용해 두 수의 합과 곱을 차례대로 말하도록 해 보자
이미지. 두 수를 물어보고 답을 들은 후 합과 곱을 차례대로 말하는 동영상의 스크린샷
이미지. 함수 정의하기 두 수의 합과 곱 문자/ 숫자값1, 문자 숫자값2 블록, 두 수의 합과 문자/숫자값1 + 문자/숫자값2 를 합치기를 2초동안 말하기 블록, 두 수의 곱은와 문자/숫자값1 x 문자/숫자값2 를 합치기를 2초동안 말하기 블록이 연결되어 있는 스크린샷.
이미지. 시작하기 버튼을 클릭했을 때 블록, 첫번째 수를 말해주세요.를 묻고 대답 기다리기 블록, a를 대답으로 정하기 블록, 두번째수를 말해주세요를 붇고 대답 기다리기 블록, b를 대답으로 정하기 블록, 두 수의 합과 곱 a값, b값 블록이 연결되어 있는 스크린샷.

2파이선으로 해보자

가. 함수의 개념

함수란 어떤 일을 수행하는 코드의 묶음을 말한다. 파이선을 처음 시작할 때 “Hello World!”를 화면에 출력하기 위해 print( )라는 함수를 사용했다. 파이선에서는 이렇게 만들어진 함수(내장함수)를 사용할 수도 있고, 직접 함수를 정의하여 사용하는 방법도 있다

나. 함수의 형태

함수는 매개변수를 입력받은 후 그 매개변수를 가공 및 처리한 후에 반환 값을 돌려준다. 커피자판기를 함수의 예로 든다면, 커피자판기에 넣는 동전과 버튼이 매개변수이며, 반환 값으로 커피가 나오는 것이다.

다. 함수 정의하기

def 함수이름(매개변수 목록):

# 코드블록

return 결과

# 기호는 주석을 의미한다. 프로그램에서 # 기호를 만나면 그 줄은 해석하지 않고 무시한다. 주석은 프로그램을 이해하는 데 도움이 되는 내용을 적어두거나 프로그램을 보게 될 다른 사람에게 전달할 내용을 적어두기 위한 메모와 같은 기능으로 사용한다. 따라서 프로그램을 입력할 때 # 기호 이후의 내용은 입력하지 않아도 프로그램의 실행 결과에는 전혀 영향을 미치지 않는다.

def로 함수를 정의할 수 있다. 다음 함수 정의 예시는 아래와 같은 과정으로 실행된다. 다음은 함수 정의하기와 관련된 예제 코드다.

예제코드,7_1.py

##함수 정의

def testhap(v1,v2) :

   result=0

  result=v1+v2

  return result

##변수 선언

a=0

##메인 코드

a=testhap(10,20)

p r i n t ( “ 10 과 20의 testhap() 함수 결과는 %d” % a)

이미지. 7_1.py의 순서도. 시작, a=0, a=testhap(10,20), print( “10과 20의 testhap() 함수 결과는 %d “ %a), 종료, 시작, result=0, result=v1+v2, return result, testhap 종료
실행결과

> 7_1.py

10과 20의 testhap( ) 함수 결과는 30

1) 함수 호출

11행의 testhap(10, 20)으로 함수를 호출하면 10과 20이라는 매개변수를 가지고 testhap( ) 함수를 호출한다.

2) 함수 실행

def로 정의한 testhap 함수는 매개변수 v1과 v2의 합을 result에 대입한 후, return result 문장에 의해 이 함수를 호출했던 11행으로 돌아간다.

3) 결과 반환

함수를 실행하여 얻은 result 값(30)을 testhap( ) 함수를 호출했던 곳으로 반환한다.

4) hap에 반환값 대입

반환된 값 30을 변수 a에 대입한다.

라. 코딩해 보기
1) 입력받은 두 수의 곱을 구하는 함수인 gop을 만드는 프로그램을 코딩해 보자.

def gop(v1,v2) :

  result=0

  result=v1*v2

  return result


a,a1,a2=0,0,0


a1=int(input(“첫 번째 숫자:”))

a2=int(input(“두 번째 숫자:”))

a=gop(a1,a2)


print(“%d * %d = %d” % (a1,a2,a))

2) 입력받은 두 수중 큰 수를 구하는 함수인 kun을 만드는 함수를 코딩해 보자.

def kun(v1,v2) :

  result=0

  if v1>=v2 :

   result=v1

  else :

   result=v2

  return result

a,a1,a2=0,0,0

a1=int(input(“첫 번째 숫자:”))

a2=int(input(“두 번째 숫자:”))

a=kun(a1,a2)

print(“%d , %d 중 큰 수는 %d” % (a1,a2,a))

생각해 보기

1) 주어진 수가 짝수인지 홀수인지 판별해주는 함수를 만들어 보자.

2) 세 정수를 입력받고 입력받은 수의 평균값을 계산해 주는 함수를 만들어 보자.

3) 계산기 함수를 만들어 원하는 연산식(더하기, 빼기, 곱하기, 나누기)을 선택하고 두 수를 입력받으면 자동으로 계산해주는 함수를 만들어 보자.