안녕하세요.
지난 게시글 https://steemit.com/kr/@leeksnet/code-org-5 까지 진행을 하니
벌써 이만큼이나 배웠습니다.
이제 5단계 수업으로 넘어가 보겠습니다.
5단계에서는 "디버깅"이라는 활동을 배우게 됩니다. 디버깅이란 코딩을 하다가 발생하는 오류(버그)를 수정해서 고치는 작업입니다.
실제로 코딩을 하게되면 단 한번에 문제를 해결하는 경우는 거의 없습니다. 어느정도 프로그램을 짜고 그 다음은 디버깅의 연속입니다. 사람들은 20%가 코딩이고 80%가 디버깅이라고 할 정도입니다.
원래 문제를 해결하기 위해 코딩을 했는데, 여기에도 문제가 있으니 이 것을 바로잡으면서 원래 문제를 해결하도록 하는 고도의 논리작업입니다.
어쨌든 수업내용을 살펴보면, 이미 짜여진 코드를 수정하는 방식입니다.
레벨 1을 보실까요. "코드를 수정해서"라고 안내하고 있네요.
그리고 이미 작성되어 있는 코드는 다음과 같습니다.
"오른쪽"-"오른쪽" 명령이 들어있습니다. 실행을 해보면 앵그리 버드가 돼지에게 가지 못하는 상황입니다.
디버깅을 할 때, 실제로 "실행"을 해보고 어떤 결과가 나타나는지 확인하는 것은 매우 중요합니다. 지금까지 작성된 코드의 내용을 파악할 수 있기 때문입니다. 그래서 디버깅은 코드를 수정하고 실행하고, 수정하고 실행하고, 수정하고 실행하고... 그러면서 결과가 어떻게 변화하는지 살펴보는 과정이라고 할 수 있습니다.
어쨌든 지금 상황에서는 문제 해결을 위해 무언가 명령이 부족하다는 것을 파악하고 기존의 코드를 보완할 수 있도록 이끌어주시기 바랍니다.
(코드를 수정한 뒤에는 화면 왼쪽의 "처음상태로" 버튼을 눌러야 다시 "실행" 해 볼 수 있습니다.)
레벨 2로 넘어가보겠습니다. 역시 이미 작성되어있는 코드가 있습니다.
역시 현재 코드의 상황을 파악하기 위해 "실행"을 해보면
앵그리 버드는 돼지에게 이르지 못했고, 잘못된 명령으로 벽에 부딪혀서 아파하고 있게 됩니다. 이 코드의 문제점은 무엇일까요? 문제 자체는 단순한 문제이지만 "왜" 틀렸는지를 생각하는 것이 중요합니다. 그래야 문제를 올바르게 해결하고 앞으로의 오류를 줄일 수 있습니다.
잘 살펴보고 부족한 명령을 적당한 지점에 더해주면 문제를 해결 할 수 있습니다.
레벨 3은 다음과 같습니다.
실행을 해보면 이제는 명령이 부족한 것이 아니라 너무 많이 주어졌음을 알 수 있습니다. 당연히 명령을 더하는 것만큼이나 빼는 것도 중요합니다. 코딩을 하다보면 "최적화"라는 과정도 있는데, 이 부분은 어떻게 보면 코딩의 꽃이라 할 수 있습니다.
레벨 4를 살펴보겠습니다.
역시 앵그리 버드는 돼지에게 이르지 못하고 있습니다. 사실 이번에는 명령이 부족하거나 넘치지는 않는데, "순서"가 잘못되어있습니다. 앞서 얘기드렸듯이 명령의 "순서"는 코딩의 전부라고 할 수 있습니다.
다시 얘기드리지만 사실 여기서 나오는 문제-앵그리 버드를 돼지에게 보내기-자체가 어려운 것은 아닙니다. 그래서 기존에 만들어진 코드를 모두 지우고(코드 블럭부분 위편에 "다시 시작하기") 그냥 새로 코딩을 해도 어렵지 않습니다. 하지만 이번 레슨에서 하고자 하는것은 기존에 만들어진 코드를 각각 하나하나가 아닌 연결된 상태로 "이해"하고, 문제점을 "파악"하고, 그 문제점을 "수정"하는 것이 요점입니다.
그런 마음으로 이제 레벨 5를 보겠습니다.
기존의 코드가 제법 많이 작성되어 있습니다. 그래도 실행-수정의 반복을 차근차근 해 나가면 어렵지 않게 해결 할 수 있습니다. 다만 앞의 과정에도 나왔지만 중간의 코드 블럭을 움직이면 그 이후의 블럭이 함께 움직이기 때문에, 중간의 블럭 하나만 제외한다든가 하는 작업은 살짝 도와주셔도 괜찮습니다.
레벨 6은 역시 반복학습을 하는 시간입니다.
레벨 7도 마찬가지입니다. 이제 코드가 길다고 겁먹지 않을 겁니다.
레벨 8에서는 다시 명령을 더해서 문제를 해결 하는 부분을 반복하게 됩니다.
레벨 9입니다. 이제 명령을 더할 것 더하고 뺄 것 빼고.. 복합적이지만 딱히 더 드릴 얘기가 없네요 ^^
만약 문제를 해결하는 데 충분한 명령이 있고, 그 뒤에 이어지는 명령이 있으면 이런 식으로 안내가 나타납니다.
즉, 5개의 블럭(처음 "실행하면"블럭 포함, 이동명령 4개)으로 문제가 해결되었는데 그 뒤에 불필요한 명령이 남아있던 것입니다. 앵그리 버드가 돼지에게 갔으니 분명 문제는 해결된 것이지만 그 뒤에 실행하지 않는, 또는 실행할 수 없는 명령이 남아있으면 안되겠지요.
뭔가 더 해드릴 얘기가 없어서 굳이 추가하였습니다. ^^
이제 레벨 10입니다. 조금 더 복잡하지만, 그 뿐입니다.
경험이 점점 쌓이니 레벨 11도 어렵지 않습니다. 이번 레슨에서 코딩블럭 쌓기는 이제 끝입니다!
마지막은 간단한 객관식 문제거든요.
모든 과정을 마치면 역시 도전문제가 기다리고 있습니다. 도전 문제는 말 그대로 도전일 뿐이고 실패해도 괜찮습니다. 오늘 못하면 내일 하면 됩니다.
처음의 얘기드렸듯 "디버깅"은 고도의 논리작업입니다. 머리를 많이 썼으니까 이제 남은건 달콤한 보상이 좋겠습니다. ^^
감사합니다.