웹에플리케이션 만들기 – JS, PHP 프로그래밍 13 : 함수의 기본 문법

이번 시간에는 함수에 대해서 알아보겠습니다 함수라는 말 아마 처음 들어보는 말은 아닐 거예요

언제 들어봤을까요? 기억 못하시는 분들 많겠지만 함수는 우리가 학교 다닐 때 이 수학 시간에 함수라는 걸 배웁니다 수학이라는 체계 안에서 함수는 굉장히 중요하게 다루어지는 그런 체계라고 할 수 가있잖아요? 물론, 저 같은 경우에는 학교 다닐 때 수포자였기 때문에 그게 중요한 건지 몰랐습니다 그런데 이제 학교 다닐 때 배웠던 함수를 저는 어렵게 느꼈는데요 프로그래밍을 공부하고, 프로그래밍을 익히고, 프로그래밍에 함수라는 게 있거든요? 배우기 어렵지도 않습니다 그 함수를 익히고서 수학에서 얘기하는 함수를 보니까 함수가 그렇게 추상적인 게 아니고 굉장히 중요한 도구더라고요

그래서 수학을 잘하면 프로그래밍을 하는데 큰 도움이 됩니다 하지만 프로그래밍을 하면 수학을 좀 더 구체적인 느낌으로 배울 수 가있어요 그래서 수학과 프로그래밍이라는 것은 꼭 뭐를 먼저 해야 한다, 뭐를 나중에 해야 한다는 선후 관계가 아니고 서로가 서로에게 도움을 주는 그런 협력적인 관계이기 때문에 혹시 제 수업을 듣는 분들 중에 수학을 잘못하시는 분들이라고 해서 걱정하실 필요가 없습니다 오히려 수학 공부를 더 잘하는데 큰 도움을 줍니다, 프로그래밍이라고 하는 것이 무엇보다도 우리는 수학을 못하는 사람이 아니고 수학을 잘 할 사람들이잖아요? 그러니까 나중에 언젠가 하면 됩니다

그래서 이번 시간에 배울 함수는 수학에서 배우는 개념과는 완전히 좀 어떤 느낌이 다를 거예요 하지만 본질은 같을 겁니다 그래서 함수를 배울 건데요 함수라는 것을 조금 구체적으로 얘기를 해보자면 자판기가 있어요 그럼 자판기에 우리가 어떤 버튼을 누르면 그 버튼에 해당되는 음료수나 과자나 그런 것들이 튀어나오죠? 그런 것들이 함수의 메커니즘이라고 할 수 있습니다

물론 이건 비유적인 표현이기 때문에 비유는 비유일 뿐이죠 그럼 이제 함수가 무엇인가라는 것에 대한 프로그래밍적인 의미를 우리가 집어볼 때가 됐는데요 여기에 여러 부품들이 있어요 이 부품들, 변수 또 데이터 그리고 또 뭐가 있었나요? 조건문, 반복문, 배열 이런 것들이 다 하나하나의 부품이라고 할 수 가있고 제가 앞서 말씀드린 것처럼 이런 부품들을 이렇게 저렇게 조합해서 우리는 하나의 프로그램을 만들게 됩니다 그런데 프로그램을 만드는 과정에서 수많은 부품들이 사용이 돼요

그러면 그 부품들이 만들어 내는 복잡도로 인해서 프로그램이 더 많은 기능성을 갖는 데에 점점 한계가 나타납니다 그 한계는 누구의 한계냐 하면 기계의 한계가 아니라 사람의 한계입니다 사람은 인지 능력에 한계가 있기 때문에 인간이 감당할 수 있는 복잡도에는 한계가 있어요 그렇기 때문에 이 복잡해지는 이 프로그램에 어떤 질서를 부여하기 위해서 여러 가지 정리정돈의 기술들을 발전시키게 되는 것이죠 그 정리정돈의 기술 중의 하나가 바로 함수입니다

이렇게 서로 연관되어 있는 어떤 부품들, 다시 말해서 변수 또 데이터, 조건문, 반복문 이런 것들을 연관되어있는 것들을 함수라고 하는 테두리로 묶어서 이 부품들을 모아서 하나의 작은 완제품을 만드는 것이 함수라고 할 수가 있습니다 그런데 그 함수는 다시 하나의 부품이 되서 다른 함수나 또는 다른 부품들과 결합 되서 더 큰 프로그램을 만들거나 아니면 이것이 다시 어떤 함수가 되거나 그렇게 되는 겁니다 마치 원자로부터 출발해서 인간이 있는 것이고, 또 인간이나 우리가 보이는 이 모든 물체들이 모여서 지구가 만들어지고, 그런 행성들이 모여서 태양계가 만들어지고 이런 것과 똑같은 원리입니다 이 함수라는 것은 방금 말씀드린 것처럼 부품들을 결합해서 그것들을 하나의 부품으로 만드는 것이 함수라고 할 수 있어요 추상적인 이야기는 여기까지 하고 함수의 문법을 한 번 살펴보죠

함수의 문법은 Javascript나 php나 거의 비슷합니다 이게 함수를 만드는 문법이고요 그리고 이것이 그 만들어진 함수를 사용하는 문법입니다 그래서 함수를 만들 때는 펑션(function)이라고 적어줘요 저거는 약속되어있는 키워드이고요

그 다음에 우리가 만들려고 하는 함수의 이름을 여기에 적습니다 저기는 아무 이름이나 들어와도 됩니다 그리고 괄호가 있고요 그 다음에 중괄호로 시작해서 중괄호로 끝나게 됩니다 그리고 여기에서 만든 함수의 이름을 괄호와 함께 실행하면 우리가 정의한 이 함수의 본체, 본문 부분에 있는 로직들, 조건문일 수도 있고 반복문일 수도 있고 변수일 수도 있는데요, 그 로직들이 실행되게 되는 거예요

그것을 통해서 우리가 중복을 제거하고 재활용성을 높이고 여러 가지 장점들이 생겨나는 것이 바로 함수의 취지라고 할 수 가있습니다 그래서 이 함수의 문법은 Javascript나 php나 거의 똑같기 때문에 하나를 배우면 두 개가 아니라 뭐 열 개, 백 개를 알 수 있는 것이 또 함수라고 할 수 있습니다 12php라고 하는 파일을 만들었어요 그리고 여기에 제가 함수를 Javascript로 먼저 정의해보겠습니다

함수를 정의할 때는, 함수를 만들 때는, 사용할 때가 아니라 만들 때는 제일 먼저 펑션(function)이라고 하는 약속되어있는 키워드를 쓰셔야합니다 그 다음에 멋지지 않은 이름을 하나 정할게요 a 간단하고 좋잖아요? 이렇게 하면 우리가 함수를 하나 정의한 겁니다 이렇게 보면 그러면 이거는 a라는 이름의 함수를 정의한 거고 이 함수의 실제 동작되는 코드는 여기에 위치하게 됩니다

그래서 제가 여기에다가 documentwrite(“Hello Function”) 이라고 적겠습니다 되죠? 그 다음에 여기에서 a 이렇게 하면 어떻게 될까요? 실행해보겠습니다 보시는 것처럼 “Hello Function”이라고 하는 이 내용이 출력되고 있어요 이 내용은 어떻게 출력됐는지를 한 번 살펴보죠

이 Javascript를 Javascript 해석기, Javascript 인터프리터라고 하는 웹브라우저에 들어있는 Javascript를 해석하는 엔진이 해석을 시작합니다 펑션을 만났어요 아! 펑션이 나오네? 그럼 이 다음에 있는 것은 이 사람이 함수를 정의하려고 하는 거구나 이 만큼이라는 걸 알 수 가있겠죠 그리고 그 다음에 있는 a가 아, 그 함수의 이름이고, 그리고 이거는 그냥 쓰는 거라고 생각하세요

이건 쓰임이 있습니다 그 다음에 중괄호와 중괄호 사이에 있는 이 부분은 함수를 호출했을 때 실행되어야 되는 부분이구나 하는 것을 기억해두는 거죠 그리고 이 구문이 끝나면, 여기까지 가면 함수에 대한 정의가 끝난 거예요 함수를 만든 겁니다 그리고 웹브라우저가 이 부분을 만나면 a, 일단 a를 보겠죠? a

a가 뭘까? 뒤에 괄호 열고, 괄호 닫고가 나옵니다 그러면 웹브라우저는 어떻게 생각 하냐면 아, 함수를 호출하는 거구나 라는 것을 알 수 가있어요 만약에 여러분이 여기에 이렇게만 적었다면 이것은 뭐냐면 a라는 변수가 되요 그런데 뒤에다가 이렇게 붙여주면 얘는 바로 이것으로 인해서 변수가아니라 함수라는 것을 웹브라우저가 알 수 가있게 됩니다 그 다음에 여기 있는 이 코드를 제가 copy, copy, copy, copy를 하고 실행을 해보면 어떻게 되겠어요? 저 a라는 함수가 다섯 번 호출되겠죠? 실행

이렇게 됩니다 그럼 이게 반복문이랑 뭐가 다르냐 라는 생각이 드실 수 있어요 다릅니다 반복문은 만약에 여러분이 반복문을 쓴다면 한 곳에서만 사용을 해야 돼요 그런데 여기에 있는 이 함수를 여기에서도 호출할 수 있고, 또는 이 문서의 제일 끝에서 Javascript를 이렇게 정의하고요

이렇게 해서 이 끝에서 또 호출할 수 있다는 거죠 이게 바로 함수입니다 별거 아니죠? 그러면 php에서의 함수도 있다는 우리 간단하게 살펴보죠 php도 펑션 그리고 a, 이렇게 하면 함수에요 그리고 document

write(“Hello Function”); 이렇게 하고, a를 이렇게 하면 결과는, 아이고 죄송합니다 제가 두개를 쓰니까 이렇게 헤깔리네요 이렇게 실행을 하면 보시는 것처럼 펑션이 나오죠? 헤깔리니까 Hello PHP Function, Hello Javascript Function 이렇게 되는 거죠 이게 함수의 기본적인 사용 방법입니다

함수를 정의하고, 함수를 호출하고, 문법도 똑같죠 이렇게 해서 함수에 대한 기본적인 문법을 우리 두 언어 모두 살펴봤는데요 함수는 여기서 끝내면 안 됩니다 조금 더 나가야될 내용들이 있는데 그 내용들이 좀 길어서 일단 여기까지 끊고 다음 영상에서 나머지 이야기 계속 하겠습니다