관리 메뉴

정리왕

내가 프로그램을 만들 수 있을까? 본문

카테고리 없음

내가 프로그램을 만들 수 있을까?

정리합니다 2020. 12. 5. 21:06
반응형

프로그램을 막 시작하려는 사람이 맨 먼저 부딪히게 되는 벽은 아마도 다음과 같지 않을까?

 

"문법은 어느 정도 알겠고, 책 내용도 대부분 이해된다. 하지만 이러한 지식을 바탕으로 내가 도대체 어떤 프로그램을 만들 수 있을까?"

 

이럴 때는 '어떤 프로그램을 짜야지'라는 생각보다는 다른 사람들이 만든 프로그램 파일을 자세히 들여다보고 분석하는 데서 시작하는 것이 좋다. 그러다 보면 다른 사람들의 생각도 읽을 수 있고 거기에 대해 뭔가 새로운 아이디어가 떠오를 수도 있다. 하지만 여기에서 가장 중요 한 것은 자신의 수준에 맞는 소스를 찾는 일이다. 그래서 이 장에서는 아주 쉬운 예제부터 시작해서 차츰 수준을 높여 실용적인 예제까지 다루려고 노력하겠다. 배운 내용을 어떻게 활용하는가는 독자의 몫이다.

 

필자는 예전에 프로그래밍을 막 시작한 사람에게 구구단 프로그램을 짜 보라고 한 적이 있다.

쉬운 과제이고 파이썬 문법도 다 공부한 사람이었는데 프로그램을 어떻게 만들어야 할지 전혀 갈파를 잡지 못했다.

그래서 필자는 다음과 같은 해결책을 알려 주었다.

 

프로그램을 만들려면 가장 먼저 '입력'과 '출력'을 생각하라.

 

가령 구구단 프로그램 중 2단을 만든다면 2를 입력값으로 주었을 때 어떻게 출력되어야 할지 생각해 보라고 했다.

그래도 그림이 그려지지 않는 것 같아 직접 연습장에 적어 가며 설명해 주었다.

 

함수 이름은 ? GuGu 로 짓자
입력 받는 값은 ? 2
출력하는 값은? 

 

 

독자들도 함께 따라 해 보기 바란다.

 

 

1. 먼저 에디터를 열고 다음과 같이 입력한다.

GuGu라는 함수에 2를 입력값으로 주면 result 라는 변수에 결과값을 넣으라는 뜻이다.

 

 

 

 

2. 이제 결과값을 어떤 형태로 받을 것인지 고민해 보자.

2단이니까 2, 4, 6, .... 18까지 갈 것이다.

이런 종류의 데이터는 리스트는 자료형이 딱이다.

따라서 result = [2, 4, 6, 8, 10, 12, 14, 16, 18] 같은 결과를 얻는 것이 좋겠다는 생각을 먼저하고 나서 프로그래밍을 시작하는 것이 필요하다.

이런 식으로 머릿속에 그림이 그려지기 시작하면 의외로 생각이 가볍게 좁혀지는 것을 느낄 수 있을 것이다.

 

 

 

3. 어떻게 만들지 생각해 봤으니 1번에서 입력한 문장은 지우고 진짜 프로그램을 짜 보자.

일단 이름은 GuGu로 지은 함수를 다음과 같이 만든다.

 

 

 

4. 이제 결과값을 담을 리스트를 하나 생성하자.

앞에서 작성한 print(n)입력이 잘 되는지를 확인하기 위한 것이었으므로 지워도 좋다.

 

 

 

 

5. 다음으로 result에 2, 4, 6, .... 18을 어떻게 넣어야 할지 생각 해 보자.

필자는 다음과 같이 리스트에 요소를 추가하는 append 내장 함수를 사용하기로 결정했다.

정말 무식한 방법이지만 입력값 2를 주었을 때 원하는 결과값을 얻을 수 있었다.

 

 

 

 

6. 그런데 위 함수는 반복이 너무 많다.

가만히 보면 result.append(n * □)의 □위치에 1부터 9까지 숫자만 다르게 들어갈 있다는 것을 알 수 있다.

똑같은 일을 반복할 때는 '반복문'을 사용한다고 했다.

그렇다면 1부터 9까지 출력해 주는 반복문을 만들면 되지 않을까?

대화형 인터프리터를 열고 다음과 같이 테스트해 보았다.

아주 만족스러운 결과이다.

이제 위 소스 코드를 GuGu 함수에 적용해 보자.

 

 

 

7. 이상의 생각을 바탕으로 완성한 GuGu 함수는 다음과 같다.

 

결과는 대만족이다.

 

 

사실 GuGu 함수는 위와 같은 과정을 거치지 않고도 바로 만들 수 있는 독자들이 많을 것이다.

하지만 더 복잡한 함수를 만들 때는 위와 같이 구체적이고 단계적으로 접근하는 방식이 매우 도움이 된다.

프로그래밍을 할 땐 구체적으로 접근해야 머리가 덜 아프다는 것을 기억하자.

자, 이제 다양한 예제를 접해 보며 여러분 나름대로 멋진 생각을 해보기 바란다.

 

 

 

반응형
Comments