2020년 12월 12일 토요일

정원사 로봇 리보그(초급) - 3. 연못가 탐색

 

연못가 탐색

   컴퓨터 프로그램을 작성하면서 발생하는 버그를 "제거"하거나 "수정"하는 방법을 알아봅니다. 코드를 단계별로 실행하면서 버그를 찾아 수정합니다. 그리고 좌회전 명령어도 익혀봅니다.

여러분의 임무

사용 move()기능과 turn_left()호수 주변 Reeborg 거리를 만들기 위해 기능. 무슨 일이 일어나는지보기 위해 의도적으로 잘못된 일을 해보자. 예를 들어, 리보 그가 호수로 걸어 들어가도록합니다. 호수에서 오류 메시지가 무엇인지 확인합니다.

여러분이 알아야 할 것은

  • move(), turn_left()

난이도

  •  ⭐

조건

    현재 로봇은 (x, y) = (1, 1)에 위치해 있고, 싣고 있는 물건은 없습니다.

목표 달성

    로봇의 최종위치는 반드시 (x, y) = (1, 1) 이어야 합니다.



1. 리보그의 임무

  리보그는 연못 주변에서 정원에 필요한 물을 대거나 식물을 심을 장소도 알아볼 겸 정원 주변의 연못을 탐색하는 임무를 맡게 되었습니다. 이를 위해 왼쪽으로 회전하는 동작이 필요하게 되었습니다.

 

2. 리보그의 버그

  컴퓨터 전문 용어인 버그는 프로그램이 우리가 의도하지 못한 방식으로 작동하게 되는 오류입니다. 여러분이 컴퓨터 프로그램을 작성하는 동안 누구나 언젠가는 버그를 만나게 될 것입니다. 훌륭한 프로그래머는 프로그램이 예기치 않게 작동하는 것을 발견하는 즉시 버그를 "제거"하거나 "수정" 합니다.

  리보그에는 몇 가지 바르지 못한 기능들이 있는데, 리보그를 판매한 회사에서는 '버그'가 아니라 리보그의 독특한 기능이라고 주장하고 있습니다.

  리보그에 대해 알려진 몇 가지 문제점은 다음과 같습니다.

  1) 리보그 기름 누출

    리보그에는 기름이 새고 있습니다. 오일 누출은 환경에 해를 끼치고 작업을 수행 하느라 바쁘지 않을 때 공급품을 보충해야 하는 리보그 사용자에게는 불편한 상태입니다. 리보그를 판매한 회사는 모든 프로그래머가 프로그램을 "추적"하는 방법을 배울 수 있는 것처럼 사용자가 리보그의 이동 경로를 추적 수 있도록 하는 기능이라고 주장합니다.

  2) 왼쪽으로만 회전할 수 있는 불편함

    리보그의 방향 전환 기능은 제대로 작동하지 않습니다. 어떤 문제인가 하면 왼쪽으로만 돌 수 있다는 것입니다. 리보그 제작자는 이것이 파이썬 기능에 대해 배울 수 있는 기회를 제공하는 기능이라고 주장합니다. 그런 기능이 에너지를 낭비하는 일이지만 우회전 할 수 있도록 해결 방법을 프로그래밍하는 방법을 곧 배우게 된다고 합니다. 오른쪽으로 회전하는 기능은 절대 안 넣겠다고 합니다.

  3) 나침반 기능

  리보그에는 나침반이 있어 어느 방향을 향하고 있는지 확인할 수 있습니다. 안타깝게도 리보그가 나침반에서 정보를 얻을 수 있도록 하는 프로그램에는 버그가 있습니다. 리보그가 북쪽을 향하고 있는지 여부만 알려줍니다. 여러분은 해결 방법을 구현하는 방법을 배우게 하려고 그렇게 만들었다는 리보그 판매 회사의 억지 주장을 받게 됩니다.

  4) 벽 확인 기능

    리보그는 벽이 그 앞에 있는지 확인할 수 있으며, 벽이 있는지 확인하기 위해 머리를 오른쪽으로 돌릴 수도 있습니다. 그러나 리보그 프로그램은 머리를 왼쪽으로 돌릴 때 벽을 제대로 확인하지 못합니다. 이 또한 리보그 회사에서는 여러분의 프로그래밍 실력을 높이기 위해 그렇게 만들었다는 황당 주장을 하고 있는 실정입니다.


3. 코드의 단계별 실행

  때로는 버그의 원인을 찾기 위해 프로그램의 정상적인 흐름을 깨트리는 것이 도움이 될 수 있습니다. 이를 위해 다음 중 하나 이상을 수행 할 수 있습니다.

    1) 일시 중지 버튼을 눌러 실행중인 프로그램을 일시 중지 할 수 있습니다 . 이것은 사람들이 컴퓨터 프로그램에서 중지하는 코드를 넣어 설정하는 것과 비슷합니다.

    2) 실제로 일시 중지 버튼을 누르는 대신 pause()명령어를 프로그램 내부의 어느 지점이든 입력하면 그 부분에서 리보그가 일시 중지되며 계속 실행하는 신호를 기다립니다.

    3) 한 명령 실행 및 일시 중지 또는 단계 버튼을 눌러 한 번에 한 명령 씩 프로그램을 단계별로 실행할 수 있습니다. 실행될 줄이 강조 표시됩니다. 코드 편집기 위에 있는 버튼을 클릭하여 강조 표시를 끌 수 있습니다.

    4) 중지 버튼을 눌러 언제든지 프로그램을 중지 할 수 있습니다. 불행히도 리보그의 제어를 벗어난 무한 루프를 생성하면 작동하지 않을 수 있습니다. 더 나빠질 경우 언제든지 웹 페이지를 다시 로드 할 수 있습니다.

 

4. 여러분의 차례

 다음 링크를 열어 문제를 불러옵니다.

코드 작성 http://reeborg.ca/reeborg.html?lang=ko-en&mode=python&menu=worlds%2Fmenus%2Fsk_menu_ko.json&name=3%20%EB%8B%A8%EA%B3%84&url=worlds%2Fsk_ko%2Fstep3.json

  위에서 언급했듯이 리보그는 한 방향 (왼쪽)으로만 회전 할 수 있습니다. 리보그에게 회전을 지시하려면 turn_left()기능을 사용할 수 있습니다 .



원문 출처: https://cs20.ca/ConstrainedLanguage/Step3.html
 

댓글 없음:

댓글 쓰기